Addition of quest Recertification of Value (482).

Contributed by override.
This commit is contained in:
MobiusDev
2019-03-04 08:46:02 +00:00
parent 191ce5d414
commit ba67c1548e
140 changed files with 2898 additions and 7 deletions

View File

@@ -1,4 +1,3 @@
482 Recertification of Value
504 Competition for the Bandit Stronghold
655 A Grand Plan for Taming Wild Beasts
744 The Alligator Hunter returns

View File

@@ -0,0 +1,334 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package quests.Q00482_RecertificationOfValue;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.QuestType;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.skills.SkillCaster;
import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import quests.Q10353_CertificationOfValue.Q10353_CertificationOfValue;
/**
* Recertification Of Value (482)
* @author Zeusx
*/
public class Q00482_RecertificationOfValue extends Quest
{
// NPCs
private static final int RIEYI = 33406;
private static final int KYUORI = 33358;
// Monsters
private static final int[] TOI_MONSTERS =
{
23044,
23045,
23046,
23047,
23048,
23049,
23050,
23051,
23052,
23053,
23054,
23055,
23056,
23057,
23058,
23059,
23060,
23061,
23062,
23063,
23064,
23065,
23066,
23067,
23068,
23101,
23102,
23103,
23104,
23105,
23106,
23107,
23108,
23109,
23110,
23111,
23112
};
// Buffs
private static final SkillHolder[] WARRIOR_BUFFS =
{
new SkillHolder(4322, 1), // Adventurer's Wind Walk
new SkillHolder(4323, 1), // Adventurer's Shield
new SkillHolder(5637, 1), // Adventurer's Magic Barrier
new SkillHolder(4324, 1), // Adventurer's Blessed Body
new SkillHolder(4325, 1), // Adventurer's Vampiric Rage
new SkillHolder(4326, 1), // Adventurer's Regeneration
};
private static final SkillHolder[] MAGE_BUFFS =
{
new SkillHolder(4322, 1), // Adventurer's Wind Walk
new SkillHolder(4323, 1), // Adventurer's Shield
new SkillHolder(5637, 1), // Adventurer's Magic Barrier
new SkillHolder(4328, 1), // Adventurer's Blessed Soul
new SkillHolder(4329, 1), // Adventurer's Acumen
new SkillHolder(4330, 1), // Adventurer's Concentration
new SkillHolder(4331, 1), // Adventurer's Empower
};
private static final SkillHolder[] SUMMON_BUFFS =
{
new SkillHolder(4322, 1), // Adventurer's Wind Walk
new SkillHolder(4323, 1), // Adventurer's Shield
new SkillHolder(5637, 1), // Adventurer's Magic Barrier
new SkillHolder(4324, 1), // Adventurer's Blessed Body
new SkillHolder(4325, 1), // Adventurer's Vampiric Rage
new SkillHolder(4326, 1), // Adventurer's Regeneration
new SkillHolder(4328, 1), // Adventurer's Blessed Soul
new SkillHolder(4329, 1), // Adventurer's Acumen
new SkillHolder(4330, 1), // Adventurer's Concentration
new SkillHolder(4331, 1), // Adventurer's Empower
};
private static final SkillHolder HASTE = new SkillHolder(4327, 1); // Adventurer's Haste
private static final SkillHolder HASTE2 = new SkillHolder(5632, 1); // Adventurer's Haste
private static final SkillHolder CUBIC = new SkillHolder(4338, 1); // Adventurer's Life Cubic
// Item
private static final int TOWER_OF_INSOLENCE_TOKEN = 17624;
public Q00482_RecertificationOfValue()
{
super(482);
addStartNpc(RIEYI);
addTalkId(RIEYI, KYUORI);
addKillId(TOI_MONSTERS);
addCondMinLevel(48, "liason_starter2_q0482_02.htm");
addCondCompletedQuest(Q10353_CertificationOfValue.class.getSimpleName(), "liason_starter2_q0482_02.htm"); // TODO: Need proper Name
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return null;
}
String htmltext = null;
switch (event)
{
case "liason_starter2_q0482_05.htm":
case "liason_starter2_q0482_06.htm":
case "liason_starter2_q0482_07.htm":
{
htmltext = event;
break;
}
case "liason_starter2_q0482_08.htm":
{
qs.startQuest();
qs.setMemoState(1);
htmltext = event;
break;
}
case "oman_cuori_q0482_02.htm":
{
qs.setCond(2, true);
qs.setMemoState(2);
htmltext = event;
break;
}
case "oman_cuori_q0482_07.htm":
{
qs.exitQuest(QuestType.DAILY, true);
addExpAndSp(player, 1_500_000, 360);
giveItems(player, TOWER_OF_INSOLENCE_TOKEN, 1);
htmltext = event;
break;
}
case "EXIT": // TODO: Need make Instance Kamaloka (Hall of Abyss).
{
player.teleToLocation(new Location(114312, 13413, -5096));
break;
}
case "BUFF_PLAYER":
{
npc.setTarget(player.getPet());
if (player.isInCategory(CategoryType.MAGE_GROUP))
{
for (SkillHolder skill : MAGE_BUFFS)
{
SkillCaster.triggerCast(npc, npc, skill.getSkill());
}
if ((player.getLevel() >= 16) && (player.getLevel() <= 34))
{
SkillCaster.triggerCast(npc, npc, CUBIC.getSkill());
}
}
else
{
for (SkillHolder skill : WARRIOR_BUFFS)
{
SkillCaster.triggerCast(npc, npc, skill.getSkill());
}
if ((player.getLevel() >= 6) && (player.getLevel() <= 39))
{
SkillCaster.triggerCast(npc, npc, HASTE.getSkill());
}
else if ((player.getLevel() >= 40) && (player.getLevel() <= 75))
{
SkillCaster.triggerCast(npc, npc, HASTE2.getSkill());
}
else if ((player.getLevel() >= 16) && (player.getLevel() <= 34))
{
SkillCaster.triggerCast(npc, npc, CUBIC.getSkill());
}
}
break;
}
case "BUFF_SUMMON":
{
for (L2Summon servitors : player.getServitorsAndPets())
{
for (SkillHolder skill : SUMMON_BUFFS)
{
SkillCaster.triggerCast(npc, servitors, skill.getSkill());
}
if ((player.getLevel() >= 6) && (player.getLevel() <= 39))
{
SkillCaster.triggerCast(npc, servitors, HASTE.getSkill());
}
else if ((player.getLevel() >= 40) && (player.getLevel() <= 75))
{
SkillCaster.triggerCast(npc, servitors, HASTE2.getSkill());
}
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = getNoQuestMsg(player);
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
return htmltext;
}
switch (npc.getId())
{
case RIEYI:
{
switch (qs.getCond())
{
case 0:
{
htmltext = qs.isNowAvailable() ? "liason_starter2_q0482_03.htm" : "liason_starter2_q0482_01.htm";
break;
}
case 1:
{
htmltext = "liason_starter2_q0482_09.htm";
break;
}
}
break;
}
case KYUORI:
{
if (qs.isCompleted())
{
htmltext = "oman_cuori_q0482_03.htm";
}
switch (qs.getCond())
{
case 1:
{
htmltext = "oman_cuori_q0482_01.htm";
break;
}
case 2:
{
if (qs.getInt("23044") < 1)
{
htmltext = "oman_cuori_q0482_05.htm";
}
else if ((qs.getInt("23044") > 1) && (qs.getInt("23044") < 10))
{
htmltext = "oman_cuori_q0482_06.htm";
}
break;
}
case 3:
{
htmltext = "oman_cuori_q0482_07.htm";
break;
}
}
break;
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final QuestState st = getQuestState(killer, false);
if ((st != null) && st.isCond(1))
{
int npcId = npc.getId();
String variable = String.valueOf(npcId); // i3
int currentValue = st.getInt(variable);
if (currentValue < 10)
{
st.set(variable, String.valueOf(currentValue + 1)); // IncreaseNPCLogByID
if (currentValue >= 10)
{
st.setCond(3, true);
}
else
{
playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addNpc(npcId, st.getInt("23044"));
killer.sendPacket(log);
}
}
return super.onKill(npc, killer, isSummon);
}
}

View File

@@ -0,0 +1,5 @@
<html><body>Rieyi:<br>
Well hello again, friend. HowΞ²β¬β„Άs it going? DonΞ²β¬β„Άt suppose you are up to help out the Krasis again? ItΞ²β¬β„Άs nothing special... just a little like what you did last time. No, IΞ²β¬β„Άm lying. ItΞ²β¬β„Άs exactly what you did last time. But, hey at least you know youΞ²β¬β„Άre getting yourself into this time.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue liason_starter2_q0482_05.htm">"Details Rieyi, details."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue liason_starter2_q0482_08.htm">"Okay."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Rieyi:<br>
No, no. I'm sorry, but I'm afraid you'll get hurt out there.<br>
(Only characters whose level is greater than 48 and who have completed the Certification of Value quest can perform this quest.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Rieyi:<br>
Excellent job, as I expected. Stop by again some time. Our Krasis may have further need for your talents.<br>
(You can only perform this quest once a day. This quest is reset daily at 6:30 AM.)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Rieyi:<br>
Honestly, I'm sorry, but I just don't think you're up for this high-risk task. You need to mature a bit more. Build up your skills, then come see me again.<br>
(Only characters who have finished the [Name of Prequest] quest can take this quest.)
</body></html>

View File

@@ -0,0 +1,6 @@
<html><body>Rieyi:<br>
DidnΞ²β¬β„Άt we already have this discussion? Like a million times already? Or was that someone elseΞ²β¬Β¦ never mind, I guess I can tell you again.<br>
Our Krasis is basically a group of Dark Elves who specialize in making problems... disappear. We mostly hire out to the notabilities, and work behind the scenes. We've been around since the moon was young. Why we've been the silent power behind many of the most dramatic events in history.<br>
We've always guarded the knowledge of our existence very carefully, but with the current crisis with Shilen, we've decided that we need to step into the light and take a more prominent role.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue liason_starter2_q0482_06.htm">"So, what is it that you want me to do?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Rieyi:<br>
If we want to win in this war against Shilen, we need to slap the power from her hands to give us an extra edge. SheΞ²β¬β„Άs the one whoΞ²β¬β„Άs behind the recent plethora of disasters and in order to fight her we need someone to get their hands a little dirty to win. We have an operative located at the <font color="LEVEL">Tower of Insolence</font> ready to brief you if you want to take the gig. WeΞ²β¬β„Άre running low on resources so we canΞ²β¬β„Άt send her in to handle the task if that was what you were thinking.<br>
Krasis has given the okay to allow contract adventures to assist us in our missions. Unfortunately, there is no financial compensation, but youΞ²β¬β„Άll get experience performing these types of missions and earn all types of credit with the Krasis.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue liason_starter2_q0482_07.htm">"What do I need to do at the Tower of Insolence?"</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Rieyi:<br>
You have already met Kyuori in the Tower of Insolence, have you not? She is also a member of Krasis, like me. Get more details from her when you find her. It's not anything particularly different, I assure you.<br>
Don't worry, I've seen you fight. It's nothing you and your friends can't handle.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue liason_starter2_q0482_08.htm">"How exciting..."</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Rieyi:<br>
If you help Krasis, I will also help you all I can. I can tell you now that you will benefit just as much, if not more.<br>
I can give you buffs and, if necessary, even teleport you to the front of the Tower of Insolence where you are to carry out the mission. Feel free to tell me whatever you wish to say.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue BUFF_PLAYER">"Can I get a newbie buff?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue BUFF_SUMMON">"Give me a servitor buff."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue EXIT">"I want to leave the instanced zone and teleport to the Tower of Insolence."</Button>
</body></html>

View File

@@ -0,0 +1,7 @@
<html><body>Rieyi:<br>
If you agree to help our Krasis, I can help you out with a little support magic or a quick teleport to the Cruma Tower.<br>
What would you like to do?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue BUFF_PLAYER">"Can I get a newbie buff?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue BUFF_SUMMON">"Give me a servitor buff."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue EXIT">"I want to leave the instanced zone and teleport to the Tower of Insolence."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Rieyi:<br>
Oh. Is this Dummy - Quest Item 1? I'm glad that I brought it. I will give you compensation.<br><br><br>
(In case there is no compensation link, additional handling is needed!!!)
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Kyuori:<br>
IΞ²β¬β„Άm so bored. I saw an adventurer meet the business end of an Exhausted Vengeful SpiritΞ²β¬β„Άs sword an hour agoΞ²β¬Β¦ that was good for a quick laugh, but now IΞ²β¬β„Άm back to being bored again.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue oman_cuori_q0482_02.htm">"Rieyi sent meΞ²β¬Β¦ again."</Button>
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Kyuori:<br>
Hah, I knew it would have to be something like that! Nobody would come to this place for a party. Well, I suppose you're here to take out some monsters in the Tower of Insolence.<br>
Go on, then! You aren't scared, are ya?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q00482_RecertificationOfValue oman_cuori_q0482_04.htm">"CanΞ²β¬β„Άt tell if you are serious or just patronizing."</Button>
</body></html>

View File

@@ -0,0 +1,4 @@
<html><body>Kyuori:<br>
I like your devotion! However, a quest can only be done once, and you're needed elsewhere.<br>
(You have already completed this quest.)
</body></html>

View File

@@ -0,0 +1,5 @@
<html><body>Kyuori:<br>
Relax kid, itΞ²β¬β„Άs a monster clean up gig. Same deal as the last time. Kill about 10 creatures from this list and return back to me for your reward.<br>
(On the List):<br1>
<font color="LEVEL">Exhausted Vengeful Spirit, Wings of Viciousness, Baron's Knight, Terestian, Drill Demon, Knight's Vengeful Spirit, Royal Guard Knight Vengeful Spirit, Baron's Priest, Evil Shadow, Brutal Warrior, Dark Knight, Priest of Darkness, Vampire Queen, Bonehead Slave, Platinum Tribe Soldier, Platinum Tribe Archer, Platinum Tribe Warrior, Platinum Tribe Shaman, Platinum Tribe Overlord, Heaven's Palus Knight, Heaven's Palace Fighter, Heaven's Palace Terminator, Heaven's Palace Priest, Heaven's Palace Judge, Heaven's Palace Sniper, Slaughter Bathin, Bathin's Knight, Bathin's Wizard, Elmoreden's Lady, Elmoreden's Archer Escort, Elmoreden's Maid, Elmoreden's Guardian Warrior, Binder, Bound Warrior, Bound Archer, Heaven's Palace Seraphim, and Heaven's Palace Seraphim Escort.</font>
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Kyuori:<br>
Those creatures aren't going to fall on their own swords, so I suggest you go ahead and get a move on it. Remember, 10 Creatures should be enough.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Kyuori:<br>
Not enough! You couldn't get more? Is 10 too much? Or are you afraid? Or... are you too dumb to count numbers? Stop whining and kill 10 monsters from Tower of Insolence.
</body></html>

View File

@@ -0,0 +1,3 @@
<html><body>Kyuori:<br>
Bravo, your performance was as grand as the last one, quick and predictable. As promised here is another <font color="LEVEL">Token of Insolence</font>. Remember, Ende over here is crazy for these coins and is willing to trade some of her wares in exchange for them.
</body></html>

View File

@@ -119,6 +119,7 @@ import quests.Q00472_ChallengeSteamCorridor.Q00472_ChallengeSteamCorridor;
import quests.Q00473_InTheCoralGarden.Q00473_InTheCoralGarden;
import quests.Q00474_WaitingForTheSummer.Q00474_WaitingForTheSummer;
import quests.Q00476_PlainMission.Q00476_PlainMission;
import quests.Q00482_RecertificationOfValue.Q00482_RecertificationOfValue;
import quests.Q00483_IntendedTactic.Q00483_IntendedTactic;
import quests.Q00485_HotSpringWater.Q00485_HotSpringWater;
import quests.Q00488_WondersOfCaring.Q00488_WondersOfCaring;
@@ -566,6 +567,7 @@ public class QuestMasterHandler
Q00473_InTheCoralGarden.class,
Q00474_WaitingForTheSummer.class,
Q00476_PlainMission.class,
Q00482_RecertificationOfValue.class,
Q00483_IntendedTactic.class,
Q00485_HotSpringWater.class,
Q00488_WondersOfCaring.class,