Third class transfer quests.

This commit is contained in:
MobiusDev 2016-02-13 20:33:02 +00:00
parent 1f60ad6abb
commit 770dc2f187
140 changed files with 2776 additions and 16 deletions

View File

@ -45357,14 +45357,13 @@ INSERT INTO `spawnlist` VALUES
-- Aden Vanguard Member
("25_18", 1, 33165, 185732, 20407, -3371, 0, 0, 62180, 60, 0, 0, 0),
-- Aden Vanguard Corpse
("25_18", 1, 33166, 177302, 19336, -3248, 0, 0, 0, 60, 0, 0, 0),
("25_18", 1, 33166, 182652, 25613, -3168, 0, 0, 0, 60, 0, 0, 0),
-- Aden Vanguard Corpse
("25_18", 1, 33167, 178702, 18197, -3224, 0, 0, 0, 60, 0, 0, 0),
("25_18", 1, 33167, 181225, 15107, -3168, 0, 0, 0, 60, 0, 0, 0),
-- Aden Vanguard Corpse
("25_18", 1, 33168, 178107, 22111, -3248, 0, 0, 0, 60, 0, 0, 0),
("25_18", 1, 33168, 180461, 25535, -3168, 0, 0, 0, 60, 0, 0, 0),
("25_18", 1, 33168, 180444, 25544, -3168, 0, 0, 0, 60, 0, 0, 0),
-- Aden Vanguard Corpse
("25_18", 1, 33169, 179984, 23914, -3168, 0, 0, 0, 60, 0, 0, 0),
("25_18", 1, 33169, 183818, 17387, -3168, 0, 0, 0, 60, 0, 0, 0),
-- Rotating Dimensional Door
("25_18", 1, 33405, 193353, 22608, -3616, 0, 0, 36900, 60, 0, 0, 0),
-- Quartermaster
@ -49702,7 +49701,7 @@ INSERT INTO `spawnlist` VALUES
-- Parnassus
INSERT INTO `spawnlist` VALUES
('Parnassus', 1, 33044, 149369, 174231, -896, 0, 0, 48000, 60, 0, 0, 0), --Fioren
('Parnassus', 1, 33044, 149369, 174231, -896, 0, 0, 48000, 60, 0, 0, 0), -- Fioren
('Parnassus', 1, 33523, 148296, 172792, -976, 0, 0, 48000, 60, 0, 0, 0), -- Crystal Prison Entrance
('Parnassus', 1, 33522, 150463, 172791, -952, 0, 0, 48000, 60, 0, 0, 0), -- Entrance Portal to Crystal Caverns
('Parnassus', 1, 33569, 149806, 173646, -952, 0, 0, 48000, 60, 0, 0, 0), -- Hermuncus Minion GK

View File

@ -1,4 +1,4 @@
<html><body>Aden Vanguard Corpse:<br>
Another Aden Soldier's been killed! Eugh - it was horrible!<br>
Yet another sad loss of life. Well, at least he went out with a fight.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -1,4 +1,4 @@
<html><body>Aden Vanguard Corpse:<br>
Another Aden Soldier's been killed! Eugh - it was horrible!<br>
Another fallen Aden Vanguard soldier found dead... however demonstrating the most dexterous rigor mortis ever seen.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -1,4 +1,4 @@
<html><body>Aden Vanguard Corpse:<br>
Another Aden Soldier's been killed! Eugh - it was horrible!<br>
What a loss of a fine Aden Soldier. Looks like he went out fighting.<br>
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
</body></html>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<instance name="Incubator of Evil" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
<allowSummon val="false" />
<emptyDestroyTime val="5" />
<exitPoint x="185798" y="20400" z="-3345" />
<doorlist>
<door doorId="16240001" />
<door doorId="16240002" />
</doorlist>
<spawnlist>
<group name="general">
<spawn npcId="33170" x="56168" y="-172664" z="-7980" heading="49151" respawn="0" />
<spawn npcId="33171" x="56280" y="-172632" z="-7980" heading="49151" respawn="0" />
<spawn npcId="33172" x="56376" y="-172632" z="-7980" heading="49151" respawn="0" />
<spawn npcId="33173" x="56056" y="-172632" z="-7980" heading="49151" respawn="0" />
<spawn npcId="33174" x="55976" y="-172632" z="-7980" heading="49151" respawn="0" />
<spawn npcId="33416" x="56280" y="-176296" z="-7980" heading="16383" respawn="0" />
<spawn npcId="33416" x="56072" y="-176296" z="-7976" heading="16383" respawn="0" />
<spawn npcId="33416" x="56504" y="-176296" z="-7980" heading="16383" respawn="0" />
<spawn npcId="33416" x="55880" y="-176296" z="-7980" heading="16383" respawn="0" />
</group>
</spawnlist>
</instance>

View File

@ -0,0 +1,142 @@
/*
* 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 instances.IncubatorOfEvil;
import com.l2jmobius.gameserver.instancemanager.InstanceManager;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.instancezone.InstanceWorld;
import com.l2jmobius.gameserver.model.quest.QuestState;
import instances.AbstractInstance;
import quests.Q10341_DayOfDestinyHumansFate.Q10341_DayOfDestinyHumansFate;
import quests.Q10342_DayOfDestinyElvenFate.Q10342_DayOfDestinyElvenFate;
import quests.Q10343_DayOfDestinyDarkElfsFate.Q10343_DayOfDestinyDarkElfsFate;
import quests.Q10344_DayOfDestinyOrcsFate.Q10344_DayOfDestinyOrcsFate;
import quests.Q10345_DayOfDestinyDwarfsFate.Q10345_DayOfDestinyDwarfsFate;
import quests.Q10346_DayOfDestinyKamaelsFate.Q10346_DayOfDestinyKamaelsFate;
/**
* Incubator of Evil Instance Zone.<br>
* TODO: Implement this!
* @author Mobius
*/
public final class IncubatorOfEvil extends AbstractInstance
{
// NPCs
private static final int OFFICER = 19155;
// Locations
private static final Location START_LOC = new Location(56180, -172898, -7952);
@SuppressWarnings("unused")
private static final Location FIGHT_LOC = new Location(56177, -175627, -7952);
@SuppressWarnings("unused")
private static final Location EXIT_LOC = new Location(185798, 20400, -3345);
// Misc
private static final int TEMPLATE_ID = 185;
protected class IOE extends InstanceWorld
{
}
public IncubatorOfEvil()
{
super(IncubatorOfEvil.class.getSimpleName());
addStartNpc(OFFICER);
addTalkId(OFFICER);
addFirstTalkId(OFFICER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.equals("enter_instance"))
{
if (getPlayerQuestState(player) == null)
{
return null;
}
enterInstance(player, new IOE(), "IncubatorOfEvil.xml", TEMPLATE_ID);
return null;
}
final InstanceWorld tmpworld = InstanceManager.getInstance().getPlayerWorld(player);
if ((tmpworld == null) || !(tmpworld instanceof IOE))
{
return null;
}
@SuppressWarnings("unused")
final IOE world = (IOE) tmpworld;
switch (event)
{
}
return super.onAdvEvent(event, npc, player);
}
@Override
public void onEnterInstance(L2PcInstance player, InstanceWorld world, boolean firstEntrance)
{
if (firstEntrance)
{
world.setStatus(1);
world.addAllowed(player.getObjectId());
}
teleportPlayer(player, START_LOC, world.getInstanceId());
}
private QuestState getPlayerQuestState(L2PcInstance player)
{
QuestState qs = null;
switch (player.getRace())
{
case HUMAN:
{
qs = player.getQuestState(Q10341_DayOfDestinyHumansFate.class.getSimpleName());
break;
}
case ELF:
{
qs = player.getQuestState(Q10342_DayOfDestinyElvenFate.class.getSimpleName());
break;
}
case DARK_ELF:
{
qs = player.getQuestState(Q10343_DayOfDestinyDarkElfsFate.class.getSimpleName());
break;
}
case ORC:
{
qs = player.getQuestState(Q10344_DayOfDestinyOrcsFate.class.getSimpleName());
break;
}
case DWARF:
{
qs = player.getQuestState(Q10345_DayOfDestinyDwarfsFate.class.getSimpleName());
break;
}
case KAMAEL:
{
qs = player.getQuestState(Q10346_DayOfDestinyKamaelsFate.class.getSimpleName());
break;
}
}
return qs;
}
}

View File

@ -37,6 +37,7 @@ import instances.HarnakUndergroundRuins.HarnakUndergroundRuins;
import instances.HideoutOfTheDawn.HideoutOfTheDawn;
import instances.IceQueensCastle.IceQueensCastle;
import instances.IceQueensCastleBattle.IceQueensCastleBattle;
import instances.IncubatorOfEvil.IncubatorOfEvil;
import instances.JiniaGuildHideout1.JiniaGuildHideout1;
import instances.JiniaGuildHideout2.JiniaGuildHideout2;
import instances.JiniaGuildHideout3.JiniaGuildHideout3;
@ -83,6 +84,7 @@ final class InstanceLoader
ChamberOfDelusionWest.class,
IceQueensCastle.class,
IceQueensCastleBattle.class,
IncubatorOfEvil.class,
JiniaGuildHideout1.class,
JiniaGuildHideout2.class,
JiniaGuildHideout3.class,

View File

@ -0,0 +1,4 @@
<html><body>High Priest Orven:<br>
Hum, has the time come? Your name is quite well-known throughout these parts. They say your star is rising, and that we can entrust you with our clan's future. Those that are an a new stage normnally seek new strength. It is time you demonstrated that you are worthy of such expectations.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 30857-02.htm">"I'm ready!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>High Priest Orven:<br>
I have been given a divine revelation of a new destiny for all who are qualified to represent the Einhasad Temple. I judge you to be qualified in all aspects.<br>
The Einhasad Temple is in a dire situation, and we need more candidates like you if we are to redeem ourselves for following the Goddess of Destruction. If you are ready to receive new powers and restore honor to our clan, accept this mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 30857-03.htm">"What's the mission?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>High Priest Orven:<br>
You have surely heard of the Seal of Shilen, near to Aden Castle? The Goddess or Destruction has opened her evil eyes, and is strengthening her dark powers. She has already filled that place with evil energy, and her spirits are looking for an opportunity to take over Aden Castle.<br>
The Vanguard went to the underground lair where they believe the Spirits are coming from, but nothing has been heard from them in days. We are about to deploy a search team, and we would like you to accept the mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 30857-04.htm">"I accept with pride."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>High Priest Orven:<br>
A person of your abilities, I don't doubt that you are well suited for this mission. From here, head toward the Seal of Shilen and the Cemetery, and look for the vanguard near the Evil Incubator. Don't forget that every step you take could change the future of our clan.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 30857-05.html">"Count me in."</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>High Priest Orven:<br>
I'll explain again about the mission. First, go to Shilen's Seal and the Cemetary, find the vanguard, and help them. The quartermaster will probably be waiting for you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>High Priest Orven:<br>
Adolph has told me all about you. You were truly a sight to behold, I see. Well, it's time for you to be granted a new path, perhaps.<br>
I'll tell you more if you wish. Otherwise, I have a gift for you.<br>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate transfer_info">"Yeah, I do want to know more."</Button> -->
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 30857-07.html">"No no, just give me the stuff, and I'll transfer."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>High Priest Orven:<br>
So, you are ready? Absolutely sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 30857-08.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>High Priest Orven:<br>
New destiny will open up your path.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Aden Vanguard Member:<br>
High priest Orven, sent you to help, right? Great. The Captain ordered me to direct you to the underground crypt when you arrived. The soldiers are already there, battling monsters. Please hurry, they're going to need all the help they can get.<br>
Powerfull monsters are encamped there right now. So let me teleport you there. Otherwise, it would be too dangerous.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest IncubatorOfEvil enter_instance">"Enter"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Finally I've been waiting for Aden to send me backup for ages. Captain Adolph and his soldiers all went to the underground Evil Incubator to see about the monsters that have been flooding out of it, and I need help.<br>
Can you help?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 33407-02.html">"That's what I'm here for."</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
So many monsters have broken through our lines, Captain Adolph and his men have pushed them back through a valiant fight, but casualties were unavoidable.<br>
We must pay the dead the respect of bringing their personal possessions back to their families, but we have no numbers to spare. Please, could you bring back 4 keepsakes from the bodies of Aden Vanguard Members in the Cemetary?<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your best bet would be to check the corners or the square guarded by the Grave Guards. It's between the Seal or Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Many Aden Vanguard Members have died at the Cemetary. Please bring back 4 keepsakes from their bodies.<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your be bet would be to check the corners of the square guarded by the Grave Guards. It's between the Seal of Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Yes, these are our fallen comrades' dog tags. Thank you. I'm sure the families will appreciate your hard work. Our heroes deserve to be remembered.<br>
Now, I don't think there's much else for you to do here. I'm worried about captain Adolph and the soldiers that went ahead to the monsters' base. I'm sure they could use some help there.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate 33407-05.html">"I'll find the captain."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Captain Adolph's team is in the underground crypt near the Cemetery, fighting monsters that resurrected through Shilen. Go and help him if you can. Powerful creatures are blocking the entrance to the crypt, so you'd better teleport through the Aden Vanguard Member standing behind me.<br>
Good luck, warrior of Aden.
</body></html>

View File

@ -0,0 +1,378 @@
/*
* 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.Q10341_DayOfDestinyHumansFate;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.cache.HtmCache;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import com.l2jmobius.gameserver.model.events.annotations.RegisterType;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* Day of Destiny: Human's Fate (10341)
* @author Mobius
*/
public class Q10341_DayOfDestinyHumansFate extends Quest
{
// NPCs
private static final int ORVEN = 30857;
private static final int QUARTERMASTER = 33407;
private static final int DEAD_SOLDIER_1 = 33166;
private static final int DEAD_SOLDIER_2 = 33167;
private static final int DEAD_SOLDIER_3 = 33168;
private static final int DEAD_SOLDIER_4 = 33169;
private static final int VANGUARD_MEMBER = 33165;
// Items
private static final int DEAD_SOLDIER_TAGS = 17748;
// Rewards
private static final int STEEL_DOOR_GUILD_COIN = 37045;
private static final int M_SOULSHOT_S = 22576;
private static final int M_SPIRITSHOT_S = 22607;
// Requirement
private static final int MIN_LEVEL = 76;
public Q10341_DayOfDestinyHumansFate()
{
super(10341, Q10341_DayOfDestinyHumansFate.class.getSimpleName(), "Day of Destiny: Human's Fate");
addStartNpc(ORVEN);
addTalkId(ORVEN, QUARTERMASTER, DEAD_SOLDIER_1, DEAD_SOLDIER_2, DEAD_SOLDIER_3, DEAD_SOLDIER_4, VANGUARD_MEMBER);
registerQuestItems(DEAD_SOLDIER_TAGS);
addCondMinLevel(MIN_LEVEL, "no_level.html");
addCondRace(Race.HUMAN, "no_race.html");
}
@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 "30857-02.htm":
case "30857-03.htm":
case "30857-04.htm":
case "30857-06.html":
case "30857-07.html":
{
htmltext = event;
break;
}
case "30857-05.html":
{
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
htmltext = event;
break;
}
case "33407-02.html":
{
if (qs.isCond(1))
{
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "dead_collect.html":
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
qs.set("" + npc.getId(), 1);
giveItems(player, DEAD_SOLDIER_TAGS, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
final int count = qs.getMemoState() + 1;
if (count >= 4)
{
qs.setCond(3, true);
qs.unset("" + DEAD_SOLDIER_1);
qs.unset("" + DEAD_SOLDIER_2);
qs.unset("" + DEAD_SOLDIER_3);
qs.unset("" + DEAD_SOLDIER_4);
htmltext = "dead_complete.html";
}
else
{
qs.setMemoState(count);
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addItem(DEAD_SOLDIER_TAGS, count);
player.sendPacket(log);
htmltext = event;
}
}
break;
}
case "33407-05.html":
{
if (qs.isCond(3))
{
takeItems(player, DEAD_SOLDIER_TAGS, -1);
qs.setCond(4, true);
htmltext = event;
}
break;
}
case "transfer_info":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
// TODO: Return detail htmls.
}
}
break;
}
case "30857-08.html":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
// Gladiator -> Duelist
case 2:
{
player.setBaseClassId(88);
player.setClassId(88);
break;
}
// Warlord -> Dreadnought
case 3:
{
player.setBaseClassId(89);
player.setClassId(89);
break;
}
// Paladin -> Phoenix Knight
case 5:
{
player.setBaseClassId(90);
player.setClassId(90);
break;
}
// Dark Avenger -> Hell Knight
case 6:
{
player.setBaseClassId(91);
player.setClassId(91);
break;
}
// Treasure Hunter -> Adventurer
case 8:
{
player.setBaseClassId(93);
player.setClassId(93);
break;
}
// Hawkeye -> Sagitarius
case 9:
{
player.setBaseClassId(92);
player.setClassId(92);
break;
}
// Sorcerer -> Archmage
case 12:
{
player.setBaseClassId(94);
player.setClassId(94);
break;
}
// Necromancer -> Soultaker
case 13:
{
player.setBaseClassId(95);
player.setClassId(95);
break;
}
// Warlock -> Arcana Lord
case 14:
{
player.setBaseClassId(96);
player.setClassId(96);
break;
}
// Bishop -> Cardinal
case 16:
{
player.setBaseClassId(97);
player.setClassId(97);
break;
}
// Prophet -> Hierophant
case 17:
{
player.setBaseClassId(98);
player.setClassId(98);
break;
}
}
rewardItems(player, STEEL_DOOR_GUILD_COIN, 87);
rewardItems(player, M_SOULSHOT_S, 1);
rewardItems(player, M_SPIRITSHOT_S, 1);
addExpAndSp(player, 2050000, 0);
player.broadcastUserInfo();
qs.exitQuest(false, true);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.STARTED:
{
switch (npc.getId())
{
case ORVEN:
{
if (qs.isCond(1))
{
htmltext = "30857-05.html";
}
else if (qs.isCond(13))
{
htmltext = "30857-06.html";
}
break;
}
case QUARTERMASTER:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "33407-01.html";
break;
}
case 2:
{
htmltext = "33407-03.html";
break;
}
case 3:
{
htmltext = "33407-04.html";
break;
}
case 4:
{
htmltext = "33407-05.html";
break;
}
}
break;
}
case DEAD_SOLDIER_1:
case DEAD_SOLDIER_2:
case DEAD_SOLDIER_3:
case DEAD_SOLDIER_4:
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
htmltext = "dead_soldier.html";
}
else
{
htmltext = "dead_collect.html";
}
}
else if (qs.isCond(3))
{
htmltext = "dead_complete.html";
}
break;
}
case VANGUARD_MEMBER:
{
if ((qs.getCond() > 3) && (qs.getCond() < 13))
{
htmltext = "33165-01.html";
}
break;
}
}
break;
}
case State.CREATED:
{
if ((npc.getId() == ORVEN) && !player.isSubClassActive() && !player.isDualClassActive() && (player.getClassId().level() == 2))
{
htmltext = "30857-01.htm";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final L2PcInstance player = event.getActiveChar();
if ((player.getLevel() >= MIN_LEVEL) && (player.getRace() == Race.HUMAN))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "scripts/quests/Q10341_DayOfDestinyHumansFate/announce.html"));
player.sendPacket(html);
}
}
}
}

View File

@ -0,0 +1,6 @@
<html><body>High Priest Orven:<br>
So the Goddess of Death has opened her malicious eyes, at last. Shilen's vile creatures are rampaging all over Aden Castle. I heard a vanguard force from Aden Castle set out to eradicate those monsters and found an underground lair near the <font color="LEVEL">Seal of Shilen</font>. But the problem is that we haven't heard anything from them since then. So we're arranging to send a search party after them, and I hope you who of renown could help us with this mission. If you do, I'll help you gain greater powers.<br>
I shall be waiting for you in the <font color="LEVEL">Einhasad Temple</font> in the <font color="LEVEL">Town of Aden</font>. Do not be led astray from your fated duty.<br>
(When your level is <font color="LEVEL">76</font> or higher, you can complete the <font color="LEVEL">third class transfer</font>)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate close_window">Close Window.</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected the dog tag from this soldier.)
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected a dog tag from the corpse. You now have all you need and can return to the Aden Supplier.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Aden Vanguard Corpse:<br>
(It looks like this is one of the fallen soldiers the Vanguard quartermaster was talking about.)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10341_DayOfDestinyHumansFate dead_collect.html">Collect his belongings</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>I don't talk to youngsters. Come back when you've grown up a bit more.<br>
(This quest can only be taken by a character of level 76 or above.)
</body></html>

View File

@ -0,0 +1 @@
<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Winonin:<br>
Hum, has the time come? Your name is quite well-known throughout these parts. They say your star is rising, and that we can entrust you with our clan's future. Those that are an a new stage normnally seek new strength. It is time you demonstrated that you are worthy of such expectations.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 30856-02.htm">"I'm ready!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Magister Winonin:<br>
I have been given a divine revelation of a new destiny for all who are qualified to represent the Mystic Guild. I judge you to be qualified in all aspects.<br>
The Mystic Guild is in a dire situation, and we need more candidates like you if we are to redeem ourselves for following the Goddess of Destruction. If you are ready to receive new powers and restore honor to our clan, accept this mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 30856-03.htm">"What's the mission?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Magister Winonin:<br>
You have surely heard of the Seal of Shilen, near to Aden Castle? The Goddess or Destruction has opened her evil eyes, and is strengthening her dark powers. She has already filled that place with evil energy, and her spirits are looking for an opportunity to take over Aden Castle.<br>
The Vanguard went to the underground lair where they believe the Spirits are coming from, but nothing has been heard from them in days. We are about to deploy a search team, and we would like you to accept the mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 30856-04.htm">"I accept with pride."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Winonin:<br>
A person of your abilities, I don't doubt that you are well suited for this mission. From here, head toward the Seal of Shilen and the Cemetery, and look for the vanguard near the Evil Incubator. Don't forget that every step you take could change the future of our clan.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 30856-05.html">"Count me in."</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Grand Magister Winonin:<br>
I'll explain again about the mission. First, go to Shilen's Seal and the Cemetary, find the vanguard, and help them. The quartermaster will probably be waiting for you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Grand Magister Winonin:<br>
Adolph has told me all about you. You were truly a sight to behold, I see. Well, it's time for you to be granted a new path, perhaps.<br>
I'll tell you more if you wish. Otherwise, I have a gift for you.<br>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate transfer_info">"Yeah, I do want to know more."</Button> -->
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 30856-07.html">"No no, just give me the stuff, and I'll transfer."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Magister Winonin:<br>
So, you are ready? Absolutely sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 30856-08.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Grand Magister Winonin:<br>
New destiny will open up your path.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Aden Vanguard Member:<br>
High priest Orven, sent you to help, right? Great. The Captain ordered me to direct you to the underground crypt when you arrived. The soldiers are already there, battling monsters. Please hurry, they're going to need all the help they can get.<br>
Powerfull monsters are encamped there right now. So let me teleport you there. Otherwise, it would be too dangerous.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest IncubatorOfEvil enter_instance">"Enter"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Finally I've been waiting for Aden to send me backup for ages. Captain Adolph and his soldiers all went to the underground Evil Incubator to see about the monsters that have been flooding out of it, and I need help.<br>
Can you help?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 33407-02.html">"That's what I'm here for."</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
So many monsters have broken through our lines, Captain Adolph and his men have pushed them back through a valiant fight, but casualties were unavoidable.<br>
We must pay the dead the respect of bringing their personal possessions back to their families, but we have no numbers to spare. Please, could you bring back 4 keepsakes from the bodies of Aden Vanguard Members in the Cemetary?<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your best bet would be to check the corners or the square guarded by the Grave Guards. It's between the Seal or Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Many Aden Vanguard Members have died at the Cemetary. Please bring back 4 keepsakes from their bodies.<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your be bet would be to check the corners of the square guarded by the Grave Guards. It's between the Seal of Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Yes, these are our fallen comrades' dog tags. Thank you. I'm sure the families will appreciate your hard work. Our heroes deserve to be remembered.<br>
Now, I don't think there's much else for you to do here. I'm worried about captain Adolph and the soldiers that went ahead to the monsters' base. I'm sure they could use some help there.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate 33407-05.html">"I'll find the captain."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Captain Adolph's team is in the underground crypt near the Cemetery, fighting monsters that resurrected through Shilen. Go and help him if you can. Powerful creatures are blocking the entrance to the crypt, so you'd better teleport through the Aden Vanguard Member standing behind me.<br>
Good luck, warrior of Aden.
</body></html>

View File

@ -0,0 +1,350 @@
/*
* 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.Q10342_DayOfDestinyElvenFate;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.cache.HtmCache;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import com.l2jmobius.gameserver.model.events.annotations.RegisterType;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* Day of Destiny: Elven Fate (10342)
* @author Mobius
*/
public class Q10342_DayOfDestinyElvenFate extends Quest
{
// NPCs
private static final int WINONIN = 30856;
private static final int QUARTERMASTER = 33407;
private static final int DEAD_SOLDIER_1 = 33166;
private static final int DEAD_SOLDIER_2 = 33167;
private static final int DEAD_SOLDIER_3 = 33168;
private static final int DEAD_SOLDIER_4 = 33169;
private static final int VANGUARD_MEMBER = 33165;
// Items
private static final int DEAD_SOLDIER_TAGS = 17749;
// Rewards
private static final int STEEL_DOOR_GUILD_COIN = 37045;
private static final int M_SOULSHOT_S = 22576;
private static final int M_SPIRITSHOT_S = 22607;
// Requirement
private static final int MIN_LEVEL = 76;
public Q10342_DayOfDestinyElvenFate()
{
super(10342, Q10342_DayOfDestinyElvenFate.class.getSimpleName(), "Day of Destiny: Elven Fate");
addStartNpc(WINONIN);
addTalkId(WINONIN, QUARTERMASTER, DEAD_SOLDIER_1, DEAD_SOLDIER_2, DEAD_SOLDIER_3, DEAD_SOLDIER_4, VANGUARD_MEMBER);
registerQuestItems(DEAD_SOLDIER_TAGS);
addCondMinLevel(MIN_LEVEL, "no_level.html");
addCondRace(Race.ELF, "no_race.html");
}
@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 "30856-02.htm":
case "30856-03.htm":
case "30856-04.htm":
case "30856-06.html":
case "30856-07.html":
{
htmltext = event;
break;
}
case "30856-05.html":
{
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
htmltext = event;
break;
}
case "33407-02.html":
{
if (qs.isCond(1))
{
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "dead_collect.html":
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
qs.set("" + npc.getId(), 1);
giveItems(player, DEAD_SOLDIER_TAGS, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
final int count = qs.getMemoState() + 1;
if (count >= 4)
{
qs.setCond(3, true);
qs.unset("" + DEAD_SOLDIER_1);
qs.unset("" + DEAD_SOLDIER_2);
qs.unset("" + DEAD_SOLDIER_3);
qs.unset("" + DEAD_SOLDIER_4);
htmltext = "dead_complete.html";
}
else
{
qs.setMemoState(count);
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addItem(DEAD_SOLDIER_TAGS, count);
player.sendPacket(log);
htmltext = event;
}
}
break;
}
case "33407-05.html":
{
if (qs.isCond(3))
{
takeItems(player, DEAD_SOLDIER_TAGS, -1);
qs.setCond(4, true);
htmltext = event;
}
break;
}
case "transfer_info":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
// TODO: Return detail htmls.
}
}
break;
}
case "30856-08.html":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
case 20:
{
// Temple Knight -> Eva's Templar
player.setBaseClassId(99);
player.setClassId(99);
break;
}
case 21:
{
// Sword Singer -> Sword Muse
player.setBaseClassId(100);
player.setClassId(100);
break;
}
case 23:
{
// Plains Walker -> Wind Rider
player.setBaseClassId(101);
player.setClassId(101);
break;
}
case 24:
{
// Silver Ranger -> Moonlight Sentinel
player.setBaseClassId(102);
player.setClassId(102);
break;
}
case 27:
{
// Spellsinger -> Mystic Muse
player.setBaseClassId(103);
player.setClassId(103);
break;
}
case 28:
{
// Elemental Summoner -> Elemental Master
player.setBaseClassId(104);
player.setClassId(104);
break;
}
case 30:
{
// Elven Elder -> Eva's Saint
player.setBaseClassId(105);
player.setClassId(105);
break;
}
}
rewardItems(player, STEEL_DOOR_GUILD_COIN, 87);
rewardItems(player, M_SOULSHOT_S, 1);
rewardItems(player, M_SPIRITSHOT_S, 1);
addExpAndSp(player, 2050000, 0);
player.broadcastUserInfo();
qs.exitQuest(false, true);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.STARTED:
{
switch (npc.getId())
{
case WINONIN:
{
if (qs.isCond(1))
{
htmltext = "30856-05.html";
}
else if (qs.isCond(13))
{
htmltext = "30856-06.html";
}
break;
}
case QUARTERMASTER:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "33407-01.html";
break;
}
case 2:
{
htmltext = "33407-03.html";
break;
}
case 3:
{
htmltext = "33407-04.html";
break;
}
case 4:
{
htmltext = "33407-05.html";
break;
}
}
break;
}
case DEAD_SOLDIER_1:
case DEAD_SOLDIER_2:
case DEAD_SOLDIER_3:
case DEAD_SOLDIER_4:
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
htmltext = "dead_soldier.html";
}
else
{
htmltext = "dead_collect.html";
}
}
else if (qs.isCond(3))
{
htmltext = "dead_complete.html";
}
break;
}
case VANGUARD_MEMBER:
{
if ((qs.getCond() > 3) && (qs.getCond() < 13))
{
htmltext = "33165-01.html";
}
break;
}
}
break;
}
case State.CREATED:
{
if ((npc.getId() == WINONIN) && !player.isSubClassActive() && !player.isDualClassActive() && (player.getClassId().level() == 2))
{
htmltext = "30856-01.htm";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final L2PcInstance player = event.getActiveChar();
if ((player.getLevel() >= MIN_LEVEL) && (player.getRace() == Race.ELF))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "scripts/quests/Q10342_DayOfDestinyElvenFate/announce.html"));
player.sendPacket(html);
}
}
}
}

View File

@ -0,0 +1,6 @@
<html><body>Grand Magister Winonin:<br>
So the Goddess of Death has opened her malicious eyes, at last. Shilen's vile creatures are rampaging all over Aden Castle. I heard a vanguard force from Aden Castle set out to eradicate those monsters and found an underground lair near the <font color="LEVEL">Seal of Shilen</font>. But the problem is that we haven't heard anything from them since then. So we're arranging to send a search party after them, and I hope you who of renown could help us with this mission. If you do, I'll help you gain greater powers.<br>
I shall be waiting for you in the <font color="LEVEL">Dark Elf Guild</font> in the <font color="LEVEL">Town of Aden</font>. Do not be led astray from your fated duty.<br>
(When your level is <font color="LEVEL">76</font> or higher, you can complete the <font color="LEVEL">third class transfer</font>)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate close_window">Close Window.</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected the dog tag from this soldier.)
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected a dog tag from the corpse. You now have all you need and can return to the Aden Supplier.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Aden Vanguard Corpse:<br>
(It looks like this is one of the fallen soldiers the Vanguard quartermaster was talking about.)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10342_DayOfDestinyElvenFate dead_collect.html">Collect his belongings</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>I don't talk to youngsters. Come back when you've grown up a bit more.<br>
(This quest can only be taken by a character of level 76 or above.)
</body></html>

View File

@ -0,0 +1 @@
<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Master Oltran:<br>
Hum, has the time come? Your name is quite well-known throughout these parts. They say your star is rising, and that we can entrust you with our clan's future. Those that are an a new stage normnally seek new strength. It is time you demonstrated that you are worthy of such expectations.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 30862-02.htm">"I'm ready!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Master Oltran:<br>
I have been given a divine revelation of a new destiny for all who are qualified to represent the Dark Elf Clan. I judge you to be qualified in all aspects.<br>
Our Dark Elf Clan is in a dire situation, and we need more candidates like you if we are to redeem ourselves for following the Goddess of Destruction. If you are ready to receive new powers and restore honor to our clan, accept this mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 30862-03.htm">"What's the mission?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Grand Master Oltran:<br>
You have surely heard of the Seal of Shilen, near to Aden Castle? The Goddess or Destruction has opened her evil eyes, and is strengthening her dark powers. She has already filled that place with evil energy, and her spirits are looking for an opportunity to take over Aden Castle.<br>
The Vanguard went to the underground lair where they believe the Spirits are coming from, but nothing has been heard from them in days. We are about to deploy a search team, and we would like you to accept the mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 30862-04.htm">"I accept with pride."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Master Oltran:<br>
A person of your abilities, I don't doubt that you are well suited for this mission. From here, head toward the Seal of Shilen and the Cemetery, and look for the vanguard near the Evil Incubator. Don't forget that every step you take could change the future of our clan.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 30862-05.html">"Count me in."</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Grand Master Oltran:<br>
I'll explain again about the mission. First, go to Shilen's Seal and the Cemetary, find the vanguard, and help them. The quartermaster will probably be waiting for you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Grand Master Oltran:<br>
Adolph has told me all about you. You were truly a sight to behold, I see. Well, it's time for you to be granted a new path, perhaps.<br>
I'll tell you more if you wish. Otherwise, I have a gift for you.<br>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate transfer_info">"Yeah, I do want to know more."</Button> -->
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 30862-07.html">"No no, just give me the stuff, and I'll transfer."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Grand Master Oltran:<br>
So, you are ready? Absolutely sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 30862-08.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Grand Master Oltran:<br>
New destiny will open up your path.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Aden Vanguard Member:<br>
High priest Orven, sent you to help, right? Great. The Captain ordered me to direct you to the underground crypt when you arrived. The soldiers are already there, battling monsters. Please hurry, they're going to need all the help they can get.<br>
Powerfull monsters are encamped there right now. So let me teleport you there. Otherwise, it would be too dangerous.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest IncubatorOfEvil enter_instance">"Enter"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Finally I've been waiting for Aden to send me backup for ages. Captain Adolph and his soldiers all went to the underground Evil Incubator to see about the monsters that have been flooding out of it, and I need help.<br>
Can you help?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 33407-02.html">"That's what I'm here for."</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
So many monsters have broken through our lines, Captain Adolph and his men have pushed them back through a valiant fight, but casualties were unavoidable.<br>
We must pay the dead the respect of bringing their personal possessions back to their families, but we have no numbers to spare. Please, could you bring back 4 keepsakes from the bodies of Aden Vanguard Members in the Cemetary?<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your best bet would be to check the corners or the square guarded by the Grave Guards. It's between the Seal or Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Many Aden Vanguard Members have died at the Cemetary. Please bring back 4 keepsakes from their bodies.<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your be bet would be to check the corners of the square guarded by the Grave Guards. It's between the Seal of Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Yes, these are our fallen comrades' dog tags. Thank you. I'm sure the families will appreciate your hard work. Our heroes deserve to be remembered.<br>
Now, I don't think there's much else for you to do here. I'm worried about captain Adolph and the soldiers that went ahead to the monsters' base. I'm sure they could use some help there.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate 33407-05.html">"I'll find the captain."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Captain Adolph's team is in the underground crypt near the Cemetery, fighting monsters that resurrected through Shilen. Go and help him if you can. Powerful creatures are blocking the entrance to the crypt, so you'd better teleport through the Aden Vanguard Member standing behind me.<br>
Good luck, warrior of Aden.
</body></html>

View File

@ -0,0 +1,343 @@
/*
* 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.Q10343_DayOfDestinyDarkElfsFate;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.cache.HtmCache;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import com.l2jmobius.gameserver.model.events.annotations.RegisterType;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* Day of Destiny: Dark Elf's Fate (10343)
* @author Mobius
*/
public class Q10343_DayOfDestinyDarkElfsFate extends Quest
{
// NPCs
private static final int OLTRAN = 30862;
private static final int QUARTERMASTER = 33407;
private static final int DEAD_SOLDIER_1 = 33166;
private static final int DEAD_SOLDIER_2 = 33167;
private static final int DEAD_SOLDIER_3 = 33168;
private static final int DEAD_SOLDIER_4 = 33169;
private static final int VANGUARD_MEMBER = 33165;
// Items
private static final int DEAD_SOLDIER_TAGS = 17750;
// Rewards
private static final int STEEL_DOOR_GUILD_COIN = 37045;
private static final int M_SOULSHOT_S = 22576;
private static final int M_SPIRITSHOT_S = 22607;
// Requirement
private static final int MIN_LEVEL = 76;
public Q10343_DayOfDestinyDarkElfsFate()
{
super(10343, Q10343_DayOfDestinyDarkElfsFate.class.getSimpleName(), "Day of Destiny: Dark Elf's Fate");
addStartNpc(OLTRAN);
addTalkId(OLTRAN, QUARTERMASTER, DEAD_SOLDIER_1, DEAD_SOLDIER_2, DEAD_SOLDIER_3, DEAD_SOLDIER_4, VANGUARD_MEMBER);
registerQuestItems(DEAD_SOLDIER_TAGS);
addCondMinLevel(MIN_LEVEL, "no_level.html");
addCondRace(Race.DARK_ELF, "no_race.html");
}
@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 "30862-02.htm":
case "30862-03.htm":
case "30862-04.htm":
case "30862-06.html":
case "30862-07.html":
{
htmltext = event;
break;
}
case "30862-05.html":
{
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
htmltext = event;
break;
}
case "33407-02.html":
{
if (qs.isCond(1))
{
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "dead_collect.html":
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
qs.set("" + npc.getId(), 1);
giveItems(player, DEAD_SOLDIER_TAGS, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
final int count = qs.getMemoState() + 1;
if (count >= 4)
{
qs.setCond(3, true);
qs.unset("" + DEAD_SOLDIER_1);
qs.unset("" + DEAD_SOLDIER_2);
qs.unset("" + DEAD_SOLDIER_3);
qs.unset("" + DEAD_SOLDIER_4);
htmltext = "dead_complete.html";
}
else
{
qs.setMemoState(count);
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addItem(DEAD_SOLDIER_TAGS, count);
player.sendPacket(log);
htmltext = event;
}
}
break;
}
case "33407-05.html":
{
if (qs.isCond(3))
{
takeItems(player, DEAD_SOLDIER_TAGS, -1);
qs.setCond(4, true);
htmltext = event;
}
break;
}
case "transfer_info":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
// TODO: Return detail htmls.
}
}
break;
}
case "30862-08.html":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
// Shillien Knight -> Shillien Templar
case 33:
{
player.setBaseClassId(106);
player.setClassId(106);
break;
}
// Bladedancer -> Spectral Dancer
case 34:
{
player.setBaseClassId(107);
player.setClassId(107);
break;
}
// Abyss Walker -> Ghost Hunter
case 36:
{
player.setBaseClassId(108);
player.setClassId(108);
break;
}
// Phantom Ranger -> Ghost Sentinel
case 37:
{
player.setBaseClassId(109);
player.setClassId(109);
break;
}
// Spellhowler -> Storm Screamer
case 40:
{
player.setBaseClassId(110);
player.setClassId(110);
break;
}
// Shillien Elder -> Shillien Saint
case 43:
{
player.setBaseClassId(112);
player.setClassId(112);
break;
}
}
rewardItems(player, STEEL_DOOR_GUILD_COIN, 87);
rewardItems(player, M_SOULSHOT_S, 1);
rewardItems(player, M_SPIRITSHOT_S, 1);
addExpAndSp(player, 2050000, 0);
player.broadcastUserInfo();
qs.exitQuest(false, true);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.STARTED:
{
switch (npc.getId())
{
case OLTRAN:
{
if (qs.isCond(1))
{
htmltext = "30862-05.html";
}
else if (qs.isCond(13))
{
htmltext = "30862-06.html";
}
break;
}
case QUARTERMASTER:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "33407-01.html";
break;
}
case 2:
{
htmltext = "33407-03.html";
break;
}
case 3:
{
htmltext = "33407-04.html";
break;
}
case 4:
{
htmltext = "33407-05.html";
break;
}
}
break;
}
case DEAD_SOLDIER_1:
case DEAD_SOLDIER_2:
case DEAD_SOLDIER_3:
case DEAD_SOLDIER_4:
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
htmltext = "dead_soldier.html";
}
else
{
htmltext = "dead_collect.html";
}
}
else if (qs.isCond(3))
{
htmltext = "dead_complete.html";
}
break;
}
case VANGUARD_MEMBER:
{
if ((qs.getCond() > 3) && (qs.getCond() < 13))
{
htmltext = "33165-01.html";
}
break;
}
}
break;
}
case State.CREATED:
{
if ((npc.getId() == OLTRAN) && !player.isSubClassActive() && !player.isDualClassActive() && (player.getClassId().level() == 2))
{
htmltext = "30862-01.htm";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final L2PcInstance player = event.getActiveChar();
if ((player.getLevel() >= MIN_LEVEL) && (player.getRace() == Race.DARK_ELF))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "scripts/quests/Q10343_DayOfDestinyDarkElfsFate/announce.html"));
player.sendPacket(html);
}
}
}
}

View File

@ -0,0 +1,6 @@
<html><body>Grand Master Oltran:<br>
So the Goddess of Death has opened her malicious eyes, at last. Shilen's vile creatures are rampaging all over Aden Castle. I heard a vanguard force from Aden Castle set out to eradicate those monsters and found an underground lair near the <font color="LEVEL">Seal of Shilen</font>. But the problem is that we haven't heard anything from them since then. So we're arranging to send a search party after them, and I hope you who of renown could help us with this mission. If you do, I'll help you gain greater powers.<br>
I shall be waiting for you in the <font color="LEVEL">Dark Elf Guild</font> in the <font color="LEVEL">Town of Aden</font>. Do not be led astray from your fated duty.<br>
(When your level is <font color="LEVEL">76</font> or higher, you can complete the <font color="LEVEL">third class transfer</font>)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate close_window">Close Window.</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected the dog tag from this soldier.)
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected a dog tag from the corpse. You now have all you need and can return to the Aden Supplier.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Aden Vanguard Corpse:<br>
(It looks like this is one of the fallen soldiers the Vanguard quartermaster was talking about.)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10343_DayOfDestinyDarkElfsFate dead_collect.html">Collect his belongings</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>I don't talk to youngsters. Come back when you've grown up a bit more.<br>
(This quest can only be taken by a character of level 76 or above.)
</body></html>

View File

@ -0,0 +1 @@
<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>

View File

@ -0,0 +1,4 @@
<html><body>High Prefect Ladanza:<br>
Hum, has the time come? Your name is quite well-known throughout these parts. They say your star is rising, and that we can entrust you with our clan's future. Those that are an a new stage normnally seek new strength. It is time you demonstrated that you are worthy of such expectations.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 30865-02.htm">"I'm ready!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>High Prefect Ladanza:<br>
I have been given a divine revelation of a new destiny for all who are qualified to represent the Orc Clan. I judge you to be qualified in all aspects.<br>
Our Orc Clan is in a dire situation, and we need more candidates like you if we are to redeem ourselves for following the Goddess of Destruction. If you are ready to receive new powers and restore honor to our clan, accept this mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 30865-03.htm">"What's the mission?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>High Prefect Ladanza:<br>
You have surely heard of the Seal of Shilen, near to Aden Castle? The Goddess or Destruction has opened her evil eyes, and is strengthening her dark powers. She has already filled that place with evil energy, and her spirits are looking for an opportunity to take over Aden Castle.<br>
The Vanguard went to the underground lair where they believe the Spirits are coming from, but nothing has been heard from them in days. We are about to deploy a search team, and we would like you to accept the mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 30865-04.htm">"I accept with pride."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>High Prefect Ladanza:<br>
A person of your abilities, I don't doubt that you are well suited for this mission. From here, head toward the Seal of Shilen and the Cemetery, and look for the vanguard near the Evil Incubator. Don't forget that every step you take could change the future of our clan.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 30865-05.html">"Count me in."</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>High Prefect Ladanza:<br>
I'll explain again about the mission. First, go to Shilen's Seal and the Cemetary, find the vanguard, and help them. The quartermaster will probably be waiting for you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>High Prefect Ladanza:<br>
Adolph has told me all about you. You were truly a sight to behold, I see. Well, it's time for you to be granted a new path, perhaps.<br>
I'll tell you more if you wish. Otherwise, I have a gift for you.<br>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate transfer_info">"Yeah, I do want to know more."</Button> -->
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 30865-07.html">"No no, just give me the stuff, and I'll transfer."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>High Prefect Ladanza:<br>
So, you are ready? Absolutely sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 30865-08.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>High Prefect Ladanza:<br>
New destiny will open up your path.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Aden Vanguard Member:<br>
High priest Orven, sent you to help, right? Great. The Captain ordered me to direct you to the underground crypt when you arrived. The soldiers are already there, battling monsters. Please hurry, they're going to need all the help they can get.<br>
Powerfull monsters are encamped there right now. So let me teleport you there. Otherwise, it would be too dangerous.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest IncubatorOfEvil enter_instance">"Enter"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Finally I've been waiting for Aden to send me backup for ages. Captain Adolph and his soldiers all went to the underground Evil Incubator to see about the monsters that have been flooding out of it, and I need help.<br>
Can you help?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 33407-02.html">"That's what I'm here for."</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
So many monsters have broken through our lines, Captain Adolph and his men have pushed them back through a valiant fight, but casualties were unavoidable.<br>
We must pay the dead the respect of bringing their personal possessions back to their families, but we have no numbers to spare. Please, could you bring back 4 keepsakes from the bodies of Aden Vanguard Members in the Cemetary?<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your best bet would be to check the corners or the square guarded by the Grave Guards. It's between the Seal or Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Many Aden Vanguard Members have died at the Cemetary. Please bring back 4 keepsakes from their bodies.<br>
It's horrible, but we haven't been able to retrieve the bodies. They're scattered all over the Cemetary, but your be bet would be to check the corners of the square guarded by the Grave Guards. It's between the Seal of Shilen and the Cemetary.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Quartermaster:<br>
Yes, these are our fallen comrades' dog tags. Thank you. I'm sure the families will appreciate your hard work. Our heroes deserve to be remembered.<br>
Now, I don't think there's much else for you to do here. I'm worried about captain Adolph and the soldiers that went ahead to the monsters' base. I'm sure they could use some help there.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate 33407-05.html">"I'll find the captain."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Quartermaster:<br>
Captain Adolph's team is in the underground crypt near the Cemetery, fighting monsters that resurrected through Shilen. Go and help him if you can. Powerful creatures are blocking the entrance to the crypt, so you'd better teleport through the Aden Vanguard Member standing behind me.<br>
Good luck, warrior of Aden.
</body></html>

View File

@ -0,0 +1,329 @@
/*
* 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.Q10344_DayOfDestinyOrcsFate;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.cache.HtmCache;
import com.l2jmobius.gameserver.enums.QuestSound;
import com.l2jmobius.gameserver.enums.Race;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.events.EventType;
import com.l2jmobius.gameserver.model.events.ListenerRegisterType;
import com.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import com.l2jmobius.gameserver.model.events.annotations.RegisterType;
import com.l2jmobius.gameserver.model.events.impl.character.player.OnPlayerLevelChanged;
import com.l2jmobius.gameserver.model.quest.Quest;
import com.l2jmobius.gameserver.model.quest.QuestState;
import com.l2jmobius.gameserver.model.quest.State;
import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
/**
* Day of Destiny: Orc's Fate (10344)
* @author Mobius
*/
public class Q10344_DayOfDestinyOrcsFate extends Quest
{
// NPCs
private static final int LADANZA = 30865;
private static final int QUARTERMASTER = 33407;
private static final int DEAD_SOLDIER_1 = 33166;
private static final int DEAD_SOLDIER_2 = 33167;
private static final int DEAD_SOLDIER_3 = 33168;
private static final int DEAD_SOLDIER_4 = 33169;
private static final int VANGUARD_MEMBER = 33165;
// Items
private static final int DEAD_SOLDIER_TAGS = 17751;
// Rewards
private static final int STEEL_DOOR_GUILD_COIN = 37045;
private static final int M_SOULSHOT_S = 22576;
private static final int M_SPIRITSHOT_S = 22607;
// Requirement
private static final int MIN_LEVEL = 76;
public Q10344_DayOfDestinyOrcsFate()
{
super(10344, Q10344_DayOfDestinyOrcsFate.class.getSimpleName(), "Day of Destiny: Orc's Fate");
addStartNpc(LADANZA);
addTalkId(LADANZA, QUARTERMASTER, DEAD_SOLDIER_1, DEAD_SOLDIER_2, DEAD_SOLDIER_3, DEAD_SOLDIER_4, VANGUARD_MEMBER);
registerQuestItems(DEAD_SOLDIER_TAGS);
addCondMinLevel(MIN_LEVEL, "no_level.html");
addCondRace(Race.ORC, "no_race.html");
}
@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 "30865-02.htm":
case "30865-03.htm":
case "30865-04.htm":
case "30865-06.html":
case "30865-07.html":
{
htmltext = event;
break;
}
case "30865-05.html":
{
qs.startQuest();
qs.setCond(2); // arrow hack
qs.setCond(1);
htmltext = event;
break;
}
case "33407-02.html":
{
if (qs.isCond(1))
{
qs.setCond(2, true);
htmltext = event;
}
break;
}
case "dead_collect.html":
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
qs.set("" + npc.getId(), 1);
giveItems(player, DEAD_SOLDIER_TAGS, 1);
playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET);
}
final int count = qs.getMemoState() + 1;
if (count >= 4)
{
qs.setCond(3, true);
qs.unset("" + DEAD_SOLDIER_1);
qs.unset("" + DEAD_SOLDIER_2);
qs.unset("" + DEAD_SOLDIER_3);
qs.unset("" + DEAD_SOLDIER_4);
htmltext = "dead_complete.html";
}
else
{
qs.setMemoState(count);
final ExQuestNpcLogList log = new ExQuestNpcLogList(getId());
log.addItem(DEAD_SOLDIER_TAGS, count);
player.sendPacket(log);
htmltext = event;
}
}
break;
}
case "33407-05.html":
{
if (qs.isCond(3))
{
takeItems(player, DEAD_SOLDIER_TAGS, -1);
qs.setCond(4, true);
htmltext = event;
}
break;
}
case "transfer_info":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
// TODO: Return detail htmls.
}
}
break;
}
case "30865-08.html":
{
if (qs.isCond(13))
{
switch (player.getClassId().getId())
{
// Destroyer -> Titan
case 46:
{
player.setBaseClassId(113);
player.setClassId(113);
break;
}
// Tyrant -> Grand Khavatari
case 48:
{
player.setBaseClassId(114);
player.setClassId(114);
break;
}
// Overlord -> Dominator
case 51:
{
player.setBaseClassId(115);
player.setClassId(115);
break;
}
// Warcryer -> Doom Cryer
case 52:
{
player.setBaseClassId(116);
player.setClassId(116);
break;
}
}
rewardItems(player, STEEL_DOOR_GUILD_COIN, 87);
rewardItems(player, M_SOULSHOT_S, 1);
rewardItems(player, M_SPIRITSHOT_S, 1);
addExpAndSp(player, 2050000, 0);
player.broadcastUserInfo();
qs.exitQuest(false, true);
}
break;
}
}
return htmltext;
}
@Override
public String onTalk(L2Npc npc, L2PcInstance player)
{
final QuestState qs = getQuestState(player, true);
String htmltext = getNoQuestMsg(player);
switch (qs.getState())
{
case State.STARTED:
{
switch (npc.getId())
{
case LADANZA:
{
if (qs.isCond(1))
{
htmltext = "30865-05.html";
}
else if (qs.isCond(13))
{
htmltext = "30865-06.html";
}
break;
}
case QUARTERMASTER:
{
switch (qs.getCond())
{
case 1:
{
htmltext = "33407-01.html";
break;
}
case 2:
{
htmltext = "33407-03.html";
break;
}
case 3:
{
htmltext = "33407-04.html";
break;
}
case 4:
{
htmltext = "33407-05.html";
break;
}
}
break;
}
case DEAD_SOLDIER_1:
case DEAD_SOLDIER_2:
case DEAD_SOLDIER_3:
case DEAD_SOLDIER_4:
{
if (qs.isCond(2))
{
if (qs.get("" + npc.getId()) == null)
{
htmltext = "dead_soldier.html";
}
else
{
htmltext = "dead_collect.html";
}
}
else if (qs.isCond(3))
{
htmltext = "dead_complete.html";
}
break;
}
case VANGUARD_MEMBER:
{
if ((qs.getCond() > 3) && (qs.getCond() < 13))
{
htmltext = "33165-01.html";
}
break;
}
}
break;
}
case State.CREATED:
{
if ((npc.getId() == LADANZA) && !player.isSubClassActive() && !player.isDualClassActive() && (player.getClassId().level() == 2))
{
htmltext = "30865-01.htm";
}
break;
}
case State.COMPLETED:
{
htmltext = getAlreadyCompletedMsg(player);
break;
}
}
return htmltext;
}
@RegisterEvent(EventType.ON_PLAYER_LEVEL_CHANGED)
@RegisterType(ListenerRegisterType.GLOBAL)
public void OnPlayerLevelChanged(OnPlayerLevelChanged event)
{
if (Config.DISABLE_TUTORIAL)
{
return;
}
final L2PcInstance player = event.getActiveChar();
if ((player.getLevel() >= MIN_LEVEL) && (player.getRace() == Race.ORC))
{
final QuestState qs = getQuestState(player, false);
if (qs == null)
{
final NpcHtmlMessage html = new NpcHtmlMessage();
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "scripts/quests/Q10344_DayOfDestinyOrcsFate/announce.html"));
player.sendPacket(html);
}
}
}
}

View File

@ -0,0 +1,6 @@
<html><body>High Prefect Ladanza:<br>
So the Goddess of Death has opened her malicious eyes, at last. Shilen's vile creatures are rampaging all over Aden Castle. I heard a vanguard force from Aden Castle set out to eradicate those monsters and found an underground lair near the <font color="LEVEL">Seal of Shilen</font>. But the problem is that we haven't heard anything from them since then. So we're arranging to send a search party after them, and I hope you who of renown could help us with this mission. If you do, I'll help you gain greater powers.<br>
I shall be waiting for you in the <font color="LEVEL">Orc Guild</font> in the <font color="LEVEL">Town of Aden</font>. Do not be led astray from your fated duty.<br>
(When your level is <font color="LEVEL">76</font> or higher, you can complete the <font color="LEVEL">third class transfer</font>)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate close_window">Close Window.</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected the dog tag from this soldier.)
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Aden Vanguard Corpse:<br>
(You collected a dog tag from the corpse. You now have all you need and can return to the Aden Supplier.)
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Aden Vanguard Corpse:<br>
(It looks like this is one of the fallen soldiers the Vanguard quartermaster was talking about.)<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10344_DayOfDestinyOrcsFate dead_collect.html">Collect his belongings</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>I don't talk to youngsters. Come back when you've grown up a bit more.<br>
(This quest can only be taken by a character of level 76 or above.)
</body></html>

View File

@ -0,0 +1 @@
<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Head Blacksmith Ferris:<br>
Hum, has the time come? Your name is quite well-known throughout these parts. They say your star is rising, and that we can entrust you with our clan's future. Those that are an a new stage normnally seek new strength. It is time you demonstrated that you are worthy of such expectations.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10345_DayOfDestinyDwarfsFate 30847-02.htm">"I'm ready!"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Head Blacksmith Ferris:<br>
I have been given a divine revelation of a new destiny for all who are qualified to represent the Blacksmith Guild. I judge you to be qualified in all aspects.<br>
The Blacksmith Guild is in a dire situation, and we need more candidates like you if we are to redeem ourselves for following the Goddess of Destruction. If you are ready to receive new powers and restore honor to our clan, accept this mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10345_DayOfDestinyDwarfsFate 30847-03.htm">"What's the mission?"</button>
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Head Blacksmith Ferris:<br>
You have surely heard of the Seal of Shilen, near to Aden Castle? The Goddess or Destruction has opened her evil eyes, and is strengthening her dark powers. She has already filled that place with evil energy, and her spirits are looking for an opportunity to take over Aden Castle.<br>
The Vanguard went to the underground lair where they believe the Spirits are coming from, but nothing has been heard from them in days. We are about to deploy a search team, and we would like you to accept the mission.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10345_DayOfDestinyDwarfsFate 30847-04.htm">"I accept with pride."</button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Head Blacksmith Ferris:<br>
A person of your abilities, I don't doubt that you are well suited for this mission. From here, head toward the Seal of Shilen and the Cemetery, and look for the vanguard near the Evil Incubator. Don't forget that every step you take could change the future of our clan.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10345_DayOfDestinyDwarfsFate 30847-05.html">"Count me in."</button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Head Blacksmith Ferris:<br>
I'll explain again about the mission. First, go to Shilen's Seal and the Cemetary, find the vanguard, and help them. The quartermaster will probably be waiting for you.
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Head Blacksmith Ferris:<br>
Adolph has told me all about you. You were truly a sight to behold, I see. Well, it's time for you to be granted a new path, perhaps.<br>
I'll tell you more if you wish. Otherwise, I have a gift for you.<br>
<!-- <Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10345_DayOfDestinyDwarfsFate transfer_info">"Yeah, I do want to know more."</Button> -->
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10345_DayOfDestinyDwarfsFate 30847-07.html">"No no, just give me the stuff, and I'll transfer."</Button>
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Head Blacksmith Ferris:<br>
So, you are ready? Absolutely sure?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Q10345_DayOfDestinyDwarfsFate 30847-08.html">"I'm ready."</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Head Blacksmith Ferris:<br>
New destiny will open up your path.
</body></html>

View File

@ -0,0 +1,5 @@
<html><body>Aden Vanguard Member:<br>
High priest Orven, sent you to help, right? Great. The Captain ordered me to direct you to the underground crypt when you arrived. The soldiers are already there, battling monsters. Please hurry, they're going to need all the help they can get.<br>
Powerfull monsters are encamped there right now. So let me teleport you there. Otherwise, it would be too dangerous.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest IncubatorOfEvil enter_instance">"Enter"</button>
</body></html>

Some files were not shown because too many files have changed in this diff Show More