Addition of story quest buffs.

This commit is contained in:
MobiusDevelopment
2019-11-12 20:29:37 +00:00
parent 275048f1b4
commit 7f543d23e9
5 changed files with 67 additions and 54 deletions

View File

@@ -37,13 +37,11 @@ public class AdventurersGuide extends AbstractNpcAI
33950,
};
// Items
private static final int ADENA = 57;
private static final int GEMSTONE_R = 19440;
private static final int ADENA = 57;
private static final int GEMSTONE_R = 19440;
// Skills
private static final SkillHolder BLESS_PROTECTION = new SkillHolder(5182, 1); // Blessing of Protection
private static final SkillHolder FANTASIA = new SkillHolder(32840, 1); // Fantasia Harmony - Adventurer
private static final SkillHolder[] GROUP_BUFFS =
{
new SkillHolder(15642, 1), // Horn Melody (Adventurer)
@@ -54,16 +52,16 @@ public class AdventurersGuide extends AbstractNpcAI
new SkillHolder(15652, 1), // Daring Sonata (Adventurer)
new SkillHolder(15653, 1), // Refreshing Sonata (Adventurer)
};
private static final SkillHolder[] DONATE_BUFFS =
{
new SkillHolder(15642, 4), // Horn Melody (Adventurer)
new SkillHolder(15643, 4), // Drum Melody (Adventurer)
new SkillHolder(15644, 4), // Pipe Organ Melody (Adventurer)
new SkillHolder(15645, 4), // Guitar Melody (Adventurer)
new SkillHolder(15651, 1), // Prevailing Sonata (Adventurer)
new SkillHolder(15652, 1), // Daring Sonata (Adventurer)
new SkillHolder(15653, 1), // Refreshing Sonata (Adventurer)
};
private static final SkillHolder[] DONATE_BUFFS =
{
new SkillHolder(15642, 4), // Horn Melody (Adventurer)
new SkillHolder(15643, 4), // Drum Melody (Adventurer)
new SkillHolder(15644, 4), // Pipe Organ Melody (Adventurer)
new SkillHolder(15645, 4), // Guitar Melody (Adventurer)
new SkillHolder(15651, 1), // Prevailing Sonata (Adventurer)
new SkillHolder(15652, 1), // Daring Sonata (Adventurer)
new SkillHolder(15653, 1), // Refreshing Sonata (Adventurer)
};
// Misc
private static int MAX_LEVEL_BUFFS = 99;
private static int MIN_LEVEL_PROTECTION = 40;
@@ -113,49 +111,49 @@ public class AdventurersGuide extends AbstractNpcAI
case "fantasia":
{
if (player.getLevel() > MAX_LEVEL_BUFFS)
{
return "guide-noBuffs.html";
}
for (SkillHolder holder : GROUP_BUFFS)
{
SkillCaster.triggerCast(npc, player, holder.getSkill());
}
{
return "guide-noBuffs.html";
}
for (SkillHolder holder : GROUP_BUFFS)
{
SkillCaster.triggerCast(npc, player, holder.getSkill());
}
htmltext = applyBuffs(npc, player, FANTASIA.getSkill());
break;
}
case "fantasia_donate_adena":
{
if (getQuestItemsCount(player, ADENA) >= 3000000)
{
takeItems(player, ADENA, 3000000);
for (SkillHolder holder : DONATE_BUFFS)
{
SkillCaster.triggerCast(npc, player, holder.getSkill());
}
htmltext = applyBuffs(npc, player, FANTASIA.getSkill());
}
else
{
htmltext = "guide-noItems.html";
}
break;
{
takeItems(player, ADENA, 3000000);
for (SkillHolder holder : DONATE_BUFFS)
{
SkillCaster.triggerCast(npc, player, holder.getSkill());
}
htmltext = applyBuffs(npc, player, FANTASIA.getSkill());
}
else
{
htmltext = "guide-noItems.html";
}
break;
}
case "fantasia_donate_gemstones":
{
if (getQuestItemsCount(player, GEMSTONE_R) >= 5)
{
takeItems(player, GEMSTONE_R, 5);
for (SkillHolder holder : DONATE_BUFFS)
{
SkillCaster.triggerCast(npc, player, holder.getSkill());
}
htmltext = applyBuffs(npc, player, FANTASIA.getSkill());
}
else
{
htmltext = "guide-noItems.html";
}
break;
{
takeItems(player, GEMSTONE_R, 5);
for (SkillHolder holder : DONATE_BUFFS)
{
SkillCaster.triggerCast(npc, player, holder.getSkill());
}
htmltext = applyBuffs(npc, player, FANTASIA.getSkill());
}
else
{
htmltext = "guide-noItems.html";
}
break;
}
}
return htmltext;

View File

@@ -148,13 +148,14 @@ public class Q11025_PathOfDestinyProving extends Quest
if (qs.isCond(6))
{
giveAdena(player, 5000, true);
showOnScreenMsg(player, NpcStringId.CLASS_TRANSFER_IS_AVAILABLE_NCLICK_THE_CLASS_TRANSFER_ICON_IN_THE_NOTIFICATION_WINDOW_TO_TRANSFER_YOUR_CLASS, ExShowScreenMessage.TOP_CENTER, 10000);
qs.exitQuest(false, true);
if (CategoryData.getInstance().isInCategory(CategoryType.SECOND_CLASS_GROUP, player.getClassId().getId()) || //
(CategoryData.getInstance().isInCategory(CategoryType.FIRST_CLASS_GROUP, player.getClassId().getId()) && (player.getRace() == Race.ERTHEIA)))
{
showOnScreenMsg(player, NpcStringId.CLASS_TRANSFER_IS_AVAILABLE_NCLICK_THE_CLASS_TRANSFER_ICON_IN_THE_NOTIFICATION_WINDOW_TO_TRANSFER_YOUR_CLASS, ExShowScreenMessage.TOP_CENTER, 10000);
player.sendPacket(ExRequestClassChangeUi.STATIC_PACKET);
}
giveStoryBuffReward(npc, player);
htmltext = event;
break;
}

View File

@@ -115,7 +115,7 @@ public class Q11031_TrainingBeginsNow extends Quest
{
qs.setCond(3, true);
player.sendPacket(new ExTutorialShowId(25)); // Adventurers Guide
// TODO: Buff player support in Quest class.
giveStoryBuffReward(npc, player);
htmltext = event;
break;
}

View File

@@ -124,6 +124,8 @@ public class Q11032_CurseOfUndying extends Quest
{
if (qs.isCond(2))
{
addExpAndSp(player, 787633, 708);
qs.exitQuest(false, true);
// Ertheias do not change.
if (player.getRace() != Race.ERTHEIA)
{
@@ -133,8 +135,7 @@ public class Q11032_CurseOfUndying extends Quest
player.sendPacket(ExRequestClassChangeUi.STATIC_PACKET);
}
}
addExpAndSp(player, 787633, 708);
qs.exitQuest(false, true);
giveStoryBuffReward(npc, player);
htmltext = event;
break;
}

View File

@@ -112,7 +112,17 @@ public class Quest extends AbstractScript implements IIdentifiable
private static final int RESET_HOUR = 6;
private static final int RESET_MINUTES = 30;
private static final SkillHolder STORY_QUEST_BUFF_REWARD = new SkillHolder(27580, 1);
private static final SkillHolder[] STORY_QUEST_BUFFS =
{
new SkillHolder(15642, 1), // Horn Melody (Adventurer)
new SkillHolder(15643, 1), // Drum Melody (Adventurer)
new SkillHolder(15644, 1), // Pipe Organ Melody (Adventurer)
new SkillHolder(15645, 1), // Guitar Melody (Adventurer)
new SkillHolder(15651, 1), // Prevailing Sonata (Adventurer)
new SkillHolder(15652, 1), // Daring Sonata (Adventurer)
new SkillHolder(15653, 1), // Refreshing Sonata (Adventurer)
new SkillHolder(32840, 1), // Fantasia Harmony - Adventurer
};
/**
* @return the reset hour for a daily quest, could be overridden on a script.
@@ -3298,11 +3308,14 @@ public class Quest extends AbstractScript implements IIdentifiable
}
public void giveStoryQuestReward(Npc npc, PlayerInstance player)
public void giveStoryBuffReward(Npc npc, PlayerInstance player)
{
if (Config.ENABLE_STORY_QUEST_BUFF_REWARD)
{
SkillCaster.triggerCast(npc, player, STORY_QUEST_BUFF_REWARD.getSkill());
for (SkillHolder holder : STORY_QUEST_BUFFS)
{
SkillCaster.triggerCast(npc, player, holder.getSkill());
}
}
}
}