From d394184c4c542407402a17bf87187277b82c67c2 Mon Sep 17 00:00:00 2001 From: mobius <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 21 Feb 2015 21:45:17 +0000 Subject: [PATCH] Quest Start of Fate (10331). --- trunk/dist/game/data/html/default/32978.htm | 4 + .../game/data/instances/LabyrinthOfBelis.xml | 34 ++ .../AdventurersGuide/AdventurersGuide.java | 8 +- .../scripts/instances/InstanceLoader.java | 2 + .../instances/LabyrinthOfBelis/19155-01.html | 7 + .../instances/LabyrinthOfBelis/19155-02.html | 7 + .../instances/LabyrinthOfBelis/19155-03.html | 8 + .../instances/LabyrinthOfBelis/19155-04.html | 6 + .../instances/LabyrinthOfBelis/19155-05.html | 6 + .../instances/LabyrinthOfBelis/19155-06.html | 3 + .../instances/LabyrinthOfBelis/33215-01.html | 5 + .../instances/LabyrinthOfBelis/33215-02.html | 3 + .../instances/LabyrinthOfBelis/33215-03.html | 3 + .../instances/LabyrinthOfBelis/33216-01.html | 3 + .../LabyrinthOfBelis/LabyrinthOfBelis.java | 510 ++++++++++++++++ .../quests/Q10331_StartOfFate/32146-01.htm | 5 + .../quests/Q10331_StartOfFate/32146-02.htm | 5 + .../quests/Q10331_StartOfFate/32146-03.htm | 4 + .../quests/Q10331_StartOfFate/32146-04.html | 4 + .../quests/Q10331_StartOfFate/32146-05.html | 8 + .../quests/Q10331_StartOfFate/32146-06.html | 8 + .../quests/Q10331_StartOfFate/32146-07.html | 4 + .../quests/Q10331_StartOfFate/32146-08.html | 4 + .../quests/Q10331_StartOfFate/32147-01.htm | 5 + .../quests/Q10331_StartOfFate/32147-02.htm | 5 + .../quests/Q10331_StartOfFate/32147-03.htm | 4 + .../quests/Q10331_StartOfFate/32147-04.html | 4 + .../quests/Q10331_StartOfFate/32147-05.html | 13 + .../quests/Q10331_StartOfFate/32147-06.html | 13 + .../quests/Q10331_StartOfFate/32147-07.html | 4 + .../quests/Q10331_StartOfFate/32147-08.html | 4 + .../quests/Q10331_StartOfFate/32147-09.html | 4 + .../quests/Q10331_StartOfFate/32147-10.html | 4 + .../quests/Q10331_StartOfFate/32150-01.htm | 5 + .../quests/Q10331_StartOfFate/32150-02.htm | 5 + .../quests/Q10331_StartOfFate/32150-03.htm | 4 + .../quests/Q10331_StartOfFate/32150-04.html | 4 + .../quests/Q10331_StartOfFate/32150-05.html | 8 + .../quests/Q10331_StartOfFate/32150-06.html | 13 + .../quests/Q10331_StartOfFate/32150-07.html | 4 + .../quests/Q10331_StartOfFate/32150-08.html | 4 + .../quests/Q10331_StartOfFate/32150-09.html | 4 + .../quests/Q10331_StartOfFate/32153-01.htm | 5 + .../quests/Q10331_StartOfFate/32153-02.htm | 5 + .../quests/Q10331_StartOfFate/32153-03.htm | 4 + .../quests/Q10331_StartOfFate/32153-04.html | 4 + .../quests/Q10331_StartOfFate/32153-05.html | 13 + .../quests/Q10331_StartOfFate/32153-06.html | 18 + .../quests/Q10331_StartOfFate/32153-07.html | 4 + .../quests/Q10331_StartOfFate/32153-08.html | 4 + .../quests/Q10331_StartOfFate/32153-09.html | 4 + .../quests/Q10331_StartOfFate/32153-10.html | 4 + .../quests/Q10331_StartOfFate/32153-11.html | 4 + .../quests/Q10331_StartOfFate/32157-01.htm | 5 + .../quests/Q10331_StartOfFate/32157-02.htm | 5 + .../quests/Q10331_StartOfFate/32157-03.htm | 4 + .../quests/Q10331_StartOfFate/32157-04.html | 4 + .../quests/Q10331_StartOfFate/32157-05.html | 13 + .../quests/Q10331_StartOfFate/32157-06.html | 4 + .../quests/Q10331_StartOfFate/32157-07.html | 4 + .../quests/Q10331_StartOfFate/32160-01.htm | 5 + .../quests/Q10331_StartOfFate/32160-02.htm | 5 + .../quests/Q10331_StartOfFate/32160-03.htm | 4 + .../quests/Q10331_StartOfFate/32160-04.html | 4 + .../quests/Q10331_StartOfFate/32160-05.html | 13 + .../quests/Q10331_StartOfFate/32160-06.html | 13 + .../quests/Q10331_StartOfFate/32160-07.html | 4 + .../quests/Q10331_StartOfFate/32160-08.html | 4 + .../quests/Q10331_StartOfFate/32160-09.html | 4 + .../quests/Q10331_StartOfFate/32160-10.html | 4 + .../quests/Q10331_StartOfFate/32972-01.html | 6 + .../quests/Q10331_StartOfFate/32972-02.html | 5 + .../quests/Q10331_StartOfFate/32972-03.html | 5 + .../quests/Q10331_StartOfFate/32972-04.html | 5 + .../quests/Q10331_StartOfFate/32972-05.html | 5 + .../quests/Q10331_StartOfFate/32972-06.html | 5 + .../quests/Q10331_StartOfFate/32972-07.html | 5 + .../quests/Q10331_StartOfFate/32977-01.html | 4 + .../quests/Q10331_StartOfFate/32977-02.html | 6 + .../quests/Q10331_StartOfFate/32978-01.html | 5 + .../quests/Q10331_StartOfFate/32978-02.html | 5 + .../quests/Q10331_StartOfFate/32978-03.html | 4 + .../quests/Q10331_StartOfFate/32978-04.html | 5 + .../quests/Q10331_StartOfFate/32978-05.html | 4 + .../Q10331_StartOfFate.java | 570 ++++++++++++++++++ .../quests/Q10331_StartOfFate/no_level.html | 3 + .../Q10331_StartOfFate/no_prequest.html | 3 + .../scripts/quests/QuestMasterHandler.java | 2 + .../game/data/stats/items/17800-17899.xml | 7 +- .../dist/game/data/stats/npcs/19100-19200.xml | 22 +- .../dist/game/data/stats/npcs/22900-23000.xml | 70 ++- .../dist/game/data/stats/npcs/33200-33300.xml | 5 +- trunk/dist/game/data/zones/damage.xml | 14 + 93 files changed, 1671 insertions(+), 24 deletions(-) create mode 100644 trunk/dist/game/data/html/default/32978.htm create mode 100644 trunk/dist/game/data/instances/LabyrinthOfBelis.xml create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-01.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-02.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-03.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-04.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-05.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-06.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-01.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-02.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-03.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33216-01.html create mode 100644 trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/LabyrinthOfBelis.java create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-01.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-02.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-03.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-01.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-02.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-03.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-09.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-10.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-01.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-02.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-03.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-09.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-01.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-02.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-03.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-09.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-10.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-11.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-01.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-02.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-03.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-01.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-02.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-03.htm create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-08.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-09.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-10.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-06.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-07.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-01.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-02.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-03.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-04.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-05.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/Q10331_StartOfFate.java create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_level.html create mode 100644 trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_prequest.html diff --git a/trunk/dist/game/data/html/default/32978.htm b/trunk/dist/game/data/html/default/32978.htm new file mode 100644 index 0000000000..f2130cc18b --- /dev/null +++ b/trunk/dist/game/data/html/default/32978.htm @@ -0,0 +1,4 @@ +Sebion:
+It's taking my injuries so long to heal. I don't think I could move if I tried.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/instances/LabyrinthOfBelis.xml b/trunk/dist/game/data/instances/LabyrinthOfBelis.xml new file mode 100644 index 0000000000..dd7bcfa597 --- /dev/null +++ b/trunk/dist/game/data/instances/LabyrinthOfBelis.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/ai/npc/AdventurersGuide/AdventurersGuide.java b/trunk/dist/game/data/scripts/ai/npc/AdventurersGuide/AdventurersGuide.java index 5859279bb4..0f428e3c17 100644 --- a/trunk/dist/game/data/scripts/ai/npc/AdventurersGuide/AdventurersGuide.java +++ b/trunk/dist/game/data/scripts/ai/npc/AdventurersGuide/AdventurersGuide.java @@ -31,8 +31,12 @@ import com.l2jserver.gameserver.model.skills.Skill; */ public final class AdventurersGuide extends AbstractNpcAI { - // NPC - private static final int ADVENTURERS_GUIDE = 32327; + // NPCs + private static final int[] ADVENTURERS_GUIDE = + { + 32327, + 33454, // Newbie Helper + }; // Skills private static final SkillHolder BLESS_PROTECTION = new SkillHolder(5182, 1); // Blessing of Protection private static final SkillHolder KNIGHT = new SkillHolder(15648, 1); // Knight's Harmony (Adventurer) diff --git a/trunk/dist/game/data/scripts/instances/InstanceLoader.java b/trunk/dist/game/data/scripts/instances/InstanceLoader.java index 02d3dc8ad6..b7d1759961 100644 --- a/trunk/dist/game/data/scripts/instances/InstanceLoader.java +++ b/trunk/dist/game/data/scripts/instances/InstanceLoader.java @@ -41,6 +41,7 @@ import instances.JiniaGuildHideout2.JiniaGuildHideout2; import instances.JiniaGuildHideout3.JiniaGuildHideout3; import instances.JiniaGuildHideout4.JiniaGuildHideout4; import instances.Kamaloka.Kamaloka; +import instances.LabyrinthOfBelis.LabyrinthOfBelis; import instances.LibraryOfSages.LibraryOfSages; import instances.MithrilMine.MithrilMine; import instances.MonasteryOfSilence1.MonasteryOfSilence1; @@ -86,6 +87,7 @@ public final class InstanceLoader JiniaGuildHideout3.class, JiniaGuildHideout4.class, Kamaloka.class, + LabyrinthOfBelis.class, LibraryOfSages.class, MithrilMine.class, MonasteryOfSilence1.class, diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-01.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-01.html new file mode 100644 index 0000000000..94345d3024 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-01.html @@ -0,0 +1,7 @@ +Terian:
+Lakcis spoke of you.
+I am Terian, and I have come to help you through the Labyrinth of Belis.
+Now, when we open this door, enemies win rush toward us. We must defeat them and go on to the next room.
+Ready?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-02.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-02.html new file mode 100644 index 0000000000..38a1a16d65 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-02.html @@ -0,0 +1,7 @@ +Terian:
+You're better than you look!
+Now, this is the second room. I've already checked the place out, and I think they did something to the device in the middle of the room.
+If we activate it, I'm sure the door will open.
+Ready?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-03.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-03.html new file mode 100644 index 0000000000..394e3329a4 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-03.html @@ -0,0 +1,8 @@ +Terian:
+We reached the final room! Excellent!
+This will be the most difficult challenge, and will test us both to our limits.
+There is a powerful current flowing through this room, which you cannot pass. I can, but only with special equipment, and even then, I can only last a little while.
+I want you to watch over me while I destroy the circuit breaker, ok? As soon as I start, enemies will come pouring in, so keep them off me!
+Ready?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-04.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-04.html new file mode 100644 index 0000000000..d4b31b4b68 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-04.html @@ -0,0 +1,6 @@ +Terian:
+Alright!
+One door left, and I have no idea what's behind it. Good luck, friend.
+Are you ready?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-05.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-05.html new file mode 100644 index 0000000000..fae2cc9816 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-05.html @@ -0,0 +1,6 @@ +Terian:
+What happened?
+Someone scary has been resurrected. Let's go back to town! I'll move you.
+Are you ready? + + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-06.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-06.html new file mode 100644 index 0000000000..d78bbd0fb5 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/19155-06.html @@ -0,0 +1,3 @@ +Terian:
+Focus on the battle. We'll talk later. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-01.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-01.html new file mode 100644 index 0000000000..c53bc636cd --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-01.html @@ -0,0 +1,5 @@ +Belis Verification System:
+To open the door to the next room, you will need to insert Belis' Mark in order to confirm authorization.
+3 Marks of Belis Required.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-02.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-02.html new file mode 100644 index 0000000000..00720af63d --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-02.html @@ -0,0 +1,3 @@ +Belis Verification System:
+All necessary Belis' Marks entered. Electric current device activating... + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-03.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-03.html new file mode 100644 index 0000000000..fe01100e23 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33215-03.html @@ -0,0 +1,3 @@ +Belis Verification System:
+3 Belis' Mark required. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33216-01.html b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33216-01.html new file mode 100644 index 0000000000..7d51be995c --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/33216-01.html @@ -0,0 +1,3 @@ +Electricity Generator:
+-Intrusion Alert- + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/LabyrinthOfBelis.java b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/LabyrinthOfBelis.java new file mode 100644 index 0000000000..467eb9dc22 --- /dev/null +++ b/trunk/dist/game/data/scripts/instances/LabyrinthOfBelis/LabyrinthOfBelis.java @@ -0,0 +1,510 @@ +/* + * Copyright (C) 2004-2015 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack 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. + * + * L2J DataPack 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 . + */ +package instances.LabyrinthOfBelis; + +import instances.AbstractInstance; + +import java.util.List; + +import quests.Q10331_StartOfFate.Q10331_StartOfFate; + +import com.l2jserver.gameserver.ai.CtrlIntention; +import com.l2jserver.gameserver.enums.ChatType; +import com.l2jserver.gameserver.instancemanager.InstanceManager; +import com.l2jserver.gameserver.instancemanager.ZoneManager; +import com.l2jserver.gameserver.model.Location; +import com.l2jserver.gameserver.model.actor.L2Attackable; +import com.l2jserver.gameserver.model.actor.L2Character; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.actor.instance.L2QuestGuardInstance; +import com.l2jserver.gameserver.model.instancezone.InstanceWorld; +import com.l2jserver.gameserver.model.quest.QuestState; +import com.l2jserver.gameserver.model.zone.L2ZoneType; +import com.l2jserver.gameserver.network.NpcStringId; +import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage; + +/** + * Labyrinth of Belis Instance Zone. + * @author Mobius + */ +public final class LabyrinthOfBelis extends AbstractInstance +{ + // Npcs + private static final int OFFICER = 19155; + private static final int NEMERTESS = 22984; + private static final int EMBRYO_HANDYMAN = 22997; + private static final int EMBRYO_OPERATIVE = 22998; + private static final int VERIFICATION_SYSTEM = 33215; + private static final int ELECTRICITY_GENERATOR = 33216; + private static L2QuestGuardInstance terian; + private static L2Npc generator; + private List savedSpawns; + // Items + private static final int SARIL_NECKLACE = 17580; + private static final int BELIS_MARK = 17615; + // Locations + private static final Location TERIAN_SPAWN_LOC = new Location(-119063, 211160, -8592, 32000); + private static final Location TERIAN_ROOM_2_CORIDOR = new Location(-117996, 211484, -8596); + private static final Location TERIAN_ROOM_2_WAIT_LOC = new Location(-117041, 212521, -8592); + private static final Location TERIAN_ROOM_3_CORIDOR = new Location(-116818, 213281, -8596); + private static final Location TERIAN_ROOM_3_WAIT_LOC = new Location(-117873, 214233, -8592); + private static final Location TERIAN_ROOM_3_INSIDE = new Location(-118248, 214676, -8590); + private static final Location TERIAN_ROOM_3_MONSTER_SPAWN = new Location(-116669, 213220, -8594); + private static final Location TERIAN_ROOM_4_CORIDOR = new Location(-119180, 214033, -8592); + private static final Location TERIAN_ROOM_4_WAIT_LOC = new Location(-119153, 213732, -8595); + private static final Location TERIAN_ROOM_4_INSIDE = new Location(-118336, 212973, -8680); + private static final Location GENERATOR_SPAWN_LOC = new Location(-118253, 214706, -8584, 57541); + private static final Location NEMERTESS_SPAWN_LOC = new Location(-118336, 212973, -8680); + private static final Location START_LOC = new Location(-119942, 211142, -8591); + private static final Location EXIT_LOC = new Location(-111733, 231790, -3168); + // Misc + private static final int TEMPLATE_ID = 178; + private static final int DOOR_1 = 16240001; + private static final int DOOR_2 = 16240002; + private static final int DOOR_3 = 16240003; + private static final int DOOR_4 = 16240004; + private static final int DOOR_5 = 16240005; + private static final int DOOR_6 = 16240006; + private static final int DOOR_7 = 16240007; + private static final int DOOR_8 = 16240008; + private static final int DAMAGE_ZONE_ID = 10331; + private boolean assistPlayer = false; + + protected class LOBWorld extends InstanceWorld + { + } + + public LabyrinthOfBelis() + { + super(LabyrinthOfBelis.class.getSimpleName()); + addStartNpc(OFFICER); + addFirstTalkId(OFFICER, VERIFICATION_SYSTEM, ELECTRICITY_GENERATOR); + addKillId(EMBRYO_OPERATIVE, EMBRYO_HANDYMAN, NEMERTESS); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + final QuestState qs = player.getQuestState(Q10331_StartOfFate.class.getSimpleName()); + if (qs == null) + { + return null; + } + + switch (event) + { + case "enter_instance": + { + enterInstance(player, new LOBWorld(), "LabyrinthOfBelis.xml", TEMPLATE_ID); + break; + } + case "officer_wait_1": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + if (world.getStatus() == 1) + { + showOnScreenMsg(player, NpcStringId.LET_ME_KNOW_WHEN_YOU_RE_ALL_READY, ExShowScreenMessage.TOP_CENTER, 4000); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.LET_ME_KNOW_WHEN_YOU_RE_ALL_READY, 1000); + startQuestTimer("officer_wait_1", 5000, terian, player); + } + break; + } + case "room_1": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + openDoor(DOOR_2, player.getInstanceId()); + world.setStatus(3); + assistPlayer = true; + startQuestTimer("assist_player", 3000, terian, player); + return null; + } + case "assist_player": + { + if (assistPlayer) + { + terian.setIsRunning(true); + if (player.isInCombat() && (player.getTarget() != null) && player.getTarget().isMonster() && !((L2MonsterInstance) player.getTarget()).isAlikeDead()) + { + if (terian.calculateDistance(player.getTarget(), false, false) > 50) + { + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, player.getTarget().getLocation()); + } + else if (terian.getTarget() != player.getTarget()) + { + terian.addDamageHate((L2Character) player.getTarget(), 0, 1000); + } + } + else + { + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player); + } + startQuestTimer("assist_player", 1000, terian, player); + } + break; + } + case "officer_goto_2": + { + if (terian.calculateDistance(TERIAN_ROOM_2_CORIDOR, false, false) > 10) + { + terian.setIsRunning(true); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_2_CORIDOR); + startQuestTimer("officer_goto_2", 1000, terian, player); + } + else + { + startQuestTimer("officer_wait_2", 1000, terian, player); + } + break; + } + case "officer_wait_2": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + if (terian.calculateDistance(TERIAN_ROOM_2_WAIT_LOC, false, false) > 10) + { + terian.setIsRunning(true); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_2_WAIT_LOC); + startQuestTimer("officer_wait_2", 1000, terian, player); + } + else + { + terian.setHeading(terian.getHeading() + 32500); + terian.broadcastInfo(); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.HEY_YOU_RE_NOT_ALL_BAD_LET_ME_KNOW_WHEN_YOU_RE_READY, 1000); + world.setStatus(4); + } + break; + } + case "room_2": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + world.setStatus(5); + openDoor(DOOR_4, player.getInstanceId()); + showOnScreenMsg(player, NpcStringId.MARK_OF_BELIS_CAN_BE_ACQUIRED_FROM_ENEMIES_NUSE_THEM_IN_THE_BELIS_VERIFICATION_SYSTEM, ExShowScreenMessage.TOP_CENTER, 5000); + assistPlayer = true; + startQuestTimer("assist_player", 3000, terian, player); + return null; + } + case "insert_belis_marks": + { + if (getQuestItemsCount(player, BELIS_MARK) > 2) + { + takeItems(player, BELIS_MARK, 3); + openDoor(DOOR_5, player.getInstanceId()); + assistPlayer = false; + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.COME_ON_ONTO_THE_NEXT_PLACE, 1000); + startQuestTimer("officer_goto_3", 5000, terian, player); + return "33215-02.html"; + } + return "33215-03.html"; + } + case "officer_goto_3": + { + if (terian.calculateDistance(TERIAN_ROOM_3_CORIDOR, false, false) > 10) + { + terian.setIsRunning(true); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_3_CORIDOR); + startQuestTimer("officer_goto_3", 1000, terian, player); + } + else + { + startQuestTimer("officer_wait_3", 1000, terian, player); + } + break; + } + case "officer_wait_3": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + if (terian.calculateDistance(TERIAN_ROOM_3_WAIT_LOC, false, false) > 10) + { + terian.setIsRunning(true); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_3_WAIT_LOC); + startQuestTimer("officer_wait_3", 1000, terian, player); + } + else + { + terian.setHeading(terian.getHeading() + 32500); + terian.broadcastInfo(); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.READY_LET_ME_KNOW, 1000); + world.setStatus(6); + } + break; + } + case "room_3": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + world.setStatus(7); + generator.setState(1); + final L2ZoneType dmgZone = ZoneManager.getInstance().getZoneById(DAMAGE_ZONE_ID); + if (dmgZone != null) + { + dmgZone.setEnabled(true); + } + openDoor(DOOR_6, player.getInstanceId()); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_3_INSIDE); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.DON_T_COME_BACK_HERE, 1000); + startQuestTimer("room_3_spawns", 10000, terian, player); + return null; + } + case "room_3_spawns": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + + showOnScreenMsg(player, NpcStringId.BEHIND_YOU_THE_ENEMY_IS_AMBUSHING_YOU, ExShowScreenMessage.TOP_CENTER, 4000); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.DON_T_COME_BACK_HERE, 1000); + // TODO: + /* + * if (getRandomBoolean()) { showOnScreenMsg(player, NpcStringId.IF_TERAIN_DIES_THE_MISSION_WILL_FAIL, ExShowScreenMessage.TOP_CENTER, 4000); } + */ + + final L2Npc invader; + if (getRandomBoolean()) + { + invader = addSpawn(EMBRYO_HANDYMAN, TERIAN_ROOM_3_MONSTER_SPAWN, false, 0, true, world.getInstanceId()); + } + else + { + invader = addSpawn(EMBRYO_OPERATIVE, TERIAN_ROOM_3_MONSTER_SPAWN, false, 0, true, world.getInstanceId()); + } + invader.setSpawn(null); + ((L2Attackable) invader).addDamageHate(terian, 0, 1000); + invader.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_3_INSIDE); + invader.setRunning(); + + if (world.getStatus() < 12) + { + startQuestTimer("room_3_spawns", 12000, terian, player); + } + else + { + final L2ZoneType dmgZone = ZoneManager.getInstance().getZoneById(DAMAGE_ZONE_ID); + if (dmgZone != null) + { + dmgZone.setEnabled(false); + } + if (generator != null) + { + generator.deleteMe(); + } + openDoor(DOOR_7, player.getInstanceId()); + showOnScreenMsg(player, NpcStringId.ELECTRONIC_DEVICE_HAS_BEEN_DESTROYED, ExShowScreenMessage.TOP_CENTER, 4000); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.DEVICE_DESTROYED_LET_S_GO_ONTO_THE_NEXT, 1000); + startQuestTimer("officer_goto_4", 1000, terian, player); + } + break; + } + case "officer_goto_4": + { + if (terian.calculateDistance(TERIAN_ROOM_4_CORIDOR, false, false) > 10) + { + terian.setIsRunning(true); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_4_CORIDOR); + startQuestTimer("officer_goto_4", 1000, terian, player); + } + else + { + startQuestTimer("officer_wait_4", 1000, terian, player); + } + break; + } + case "officer_wait_4": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + if (terian.calculateDistance(TERIAN_ROOM_4_WAIT_LOC, false, false) > 10) + { + terian.setIsRunning(true); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_4_WAIT_LOC); + startQuestTimer("officer_wait_4", 1000, terian, player); + } + else + { + terian.setHeading(terian.getHeading() + 32500); + terian.broadcastInfo(); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.SOMETHING_OMINOUS_IN_THERE_I_HOPE_YOU_RE_REALLY_READY_FOR_THIS_LET_ME_KNOW, 1000); + world.setStatus(13); + } + break; + } + case "room_4": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + world.setStatus(14); + player.showQuestMovie(43); + openDoor(DOOR_8, player.getInstanceId()); + startQuestTimer("spawn_boss", 47000, terian, player); + break; + } + case "spawn_boss": + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + addSpawn(NEMERTESS, NEMERTESS_SPAWN_LOC, false, 0, false, world.getInstanceId()); + break; + } + case "exit_instance": + { + if (terian != null) + { + terian.deleteMe(); + } + final InstanceWorld world = InstanceManager.getInstance().getWorld(player.getInstanceId()); + world.removeAllowed(player.getObjectId()); + teleportPlayer(player, EXIT_LOC, 0); + break; + } + } + + return super.onAdvEvent(event, npc, player); + } + + @Override + public String onFirstTalk(L2Npc npc, L2PcInstance player) + { + if (npc.getId() == OFFICER) + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(npc.getInstanceId()); + switch (world.getStatus()) + { + case 1: + { + world.incStatus(); + return "19155-01.html"; + } + case 2: + { + return "19155-01.html"; + } + case 4: + { + return "19155-02.html"; + } + case 6: + { + return "19155-03.html"; + } + case 13: + { + return "19155-04.html"; + } + case 15: + { + return "19155-05.html"; + } + default: + { + return "19155-06.html"; + } + } + } + else if (npc.getId() == VERIFICATION_SYSTEM) + { + return "33215-01.html"; + } + else if (npc.getId() == ELECTRICITY_GENERATOR) + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(npc.getInstanceId()); + if (world.getStatus() < 12) + { + return "33216-01.html"; + } + } + return null; + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) + { + final InstanceWorld world = InstanceManager.getInstance().getWorld(npc.getInstanceId()); + if (world instanceof LOBWorld) + { + switch (npc.getId()) + { + case EMBRYO_OPERATIVE: + { + if ((world.getStatus() > 6) && (world.getStatus() < 12)) + { + world.incStatus(); + } + else + { + savedSpawns.remove(0); + if ((world.getStatus() == 3) && savedSpawns.isEmpty()) + { + assistPlayer = false; + openDoor(DOOR_3, npc.getInstanceId()); + broadcastNpcSay(terian, ChatType.NPC_GENERAL, NpcStringId.ALL_RIGHT_LET_S_MOVE_OUT, 1000); + startQuestTimer("officer_goto_2", 100, terian, killer); + } + } + break; + } + case EMBRYO_HANDYMAN: + { + if ((world.getStatus() > 6) && (world.getStatus() < 12)) + { + world.incStatus(); + } + else + { + if (getRandomBoolean()) + { + npc.dropItem(killer, BELIS_MARK, 1); + } + } + break; + } + case NEMERTESS: + { + world.incStatus(); + npc.deleteMe(); + killer.showQuestMovie(44); + terian.setIsRunning(true); + terian.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, TERIAN_ROOM_4_INSIDE); + final QuestState qs = killer.getQuestState(Q10331_StartOfFate.class.getSimpleName()); + if (qs == null) + { + return null; + } + giveItems(killer, SARIL_NECKLACE, 1); + qs.setCond(5); + break; + } + } + } + + return super.onKill(npc, killer, isSummon); + } + + @Override + public void onEnterInstance(L2PcInstance player, InstanceWorld world, boolean firstEntrance) + { + if (firstEntrance) + { + world.setStatus(1); + world.addAllowed(player.getObjectId()); + terian = (L2QuestGuardInstance) addSpawn(OFFICER, TERIAN_SPAWN_LOC, false, 0, false, world.getInstanceId()); + terian.setSpawn(null); + savedSpawns = spawnGroup("room_1", world.getInstanceId()); + generator = addSpawn(ELECTRICITY_GENERATOR, GENERATOR_SPAWN_LOC, false, 0, false, world.getInstanceId()); + openDoor(DOOR_1, world.getInstanceId()); + startQuestTimer("officer_wait_1", 5000, terian, player); + } + teleportPlayer(player, START_LOC, world.getInstanceId()); + } +} \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-01.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-01.htm new file mode 100644 index 0000000000..d8c8f4fa13 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-01.htm @@ -0,0 +1,5 @@ +Grand Master Valfar:
+Considering your skills, I don't believe you're ready to take on missions outside the own yet. However, I would like to awaken your potential so as to accelerate your path to the wider world.
+If you're interested, I have a task for you.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-02.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-02.htm new file mode 100644 index 0000000000..b785ef5e27 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-02.htm @@ -0,0 +1,5 @@ +Grand Master Valfar:
+As you know, the Talking Island changed a great deal after the sky island fell, and the monsters on it awoke. Now it is more dangerous outside of the town than ever before, especially so in and around the giants' relics. We sent a team there to research the site, but I've started to fear for their lives.
+This is a big ask, but I would like you to go there and find the team. If you complete the mission, I'll transfer your class. What do you say?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-03.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-03.htm new file mode 100644 index 0000000000..f56a9e6ad1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-03.htm @@ -0,0 +1,4 @@ +Grand Master Valfar:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-04.html new file mode 100644 index 0000000000..f56a9e6ad1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-04.html @@ -0,0 +1,4 @@ +Grand Master Valfar:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-05.html new file mode 100644 index 0000000000..7a39b877c4 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32146-05.html @@ -0,0 +1,8 @@ +Grand Master Valfar:
+Are you ready to change to your new class?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-02.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-02.htm new file mode 100644 index 0000000000..59f9b96e81 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-02.htm @@ -0,0 +1,5 @@ +Grand Master Rivian:
+As you know, the Talking Island changed a great deal after the sky island fell, and the monsters on it awoke. Now it is more dangerous outside of the town than ever before, especially so in and around the giants' relics. We sent a team there to research the site, but I've started to fear for their lives.
+This is a big ask, but I would like you to go there and find the team. If you complete the mission, I'll transfer your class. What do you say?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-03.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-03.htm new file mode 100644 index 0000000000..465545a549 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-03.htm @@ -0,0 +1,4 @@ +Grand Master Rivian:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-04.html new file mode 100644 index 0000000000..465545a549 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-04.html @@ -0,0 +1,4 @@ +Grand Master Rivian:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-05.html new file mode 100644 index 0000000000..849bb1c2d9 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32147-05.html @@ -0,0 +1,13 @@ +Grand Master Rivian:
+Which path interests you?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-02.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-02.htm new file mode 100644 index 0000000000..af883aa944 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-02.htm @@ -0,0 +1,5 @@ +High Prefect Took:
+As you know, the Talking Island changed a great deal after the sky island fell, and the monsters on it awoke. Now it is more dangerous outside of the town than ever before, especially so in and around the giants' relics. We sent a team there to research the site, but I've started to fear for their lives.
+This is a big ask, but I would like you to go there and find the team. If you complete the mission, I'll transfer your class. What do you say?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-03.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-03.htm new file mode 100644 index 0000000000..e8cd3e99ee --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-03.htm @@ -0,0 +1,4 @@ +High Prefect Took:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-04.html new file mode 100644 index 0000000000..e8cd3e99ee --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-04.html @@ -0,0 +1,4 @@ +High Prefect Took:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-05.html new file mode 100644 index 0000000000..4235fece3c --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32150-05.html @@ -0,0 +1,8 @@ +High Prefect Took:
+Are you ready to change to your new class?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-02.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-02.htm new file mode 100644 index 0000000000..57db5a503b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-02.htm @@ -0,0 +1,5 @@ +High Priest Franco:
+As you know, the Talking Island changed a great deal after the sky island fell, and the monsters on it awoke. Now it is more dangerous outside of the town than ever before, especially so in and around the giants' relics. We sent a team there to research the site, but I've started to fear for their lives.
+This is a big ask, but I would like you to go there and find the team. If you complete the mission, I'll transfer your class. What do you say?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-03.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-03.htm new file mode 100644 index 0000000000..eb28444fe7 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-03.htm @@ -0,0 +1,4 @@ +High Priest Franco:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-04.html new file mode 100644 index 0000000000..eb28444fe7 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-04.html @@ -0,0 +1,4 @@ +High Priest Franco:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-05.html new file mode 100644 index 0000000000..474a091fd4 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32153-05.html @@ -0,0 +1,13 @@ +High Priest Franco:
+Which path interests you?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-02.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-02.htm new file mode 100644 index 0000000000..54773e08df --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-02.htm @@ -0,0 +1,5 @@ +Head Blacksmith Moka:
+As you know, the Talking Island changed a great deal after the sky island fell, and the monsters on it awoke. Now it is more dangerous outside of the town than ever before, especially so in and around the giants' relics. We sent a team there to research the site, but I've started to fear for their lives.
+This is a big ask, but I would like you to go there and find the team. If you complete the mission, I'll transfer your class. What do you say?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-03.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-03.htm new file mode 100644 index 0000000000..5ded99d8d4 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-03.htm @@ -0,0 +1,4 @@ +Head Blacksmith Moka:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-04.html new file mode 100644 index 0000000000..5ded99d8d4 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-04.html @@ -0,0 +1,4 @@ +Head Blacksmith Moka:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-05.html new file mode 100644 index 0000000000..a3c070bf11 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32157-05.html @@ -0,0 +1,13 @@ +Head Blacksmith Moka:
+Which path interests you?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-02.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-02.htm new file mode 100644 index 0000000000..11f67c6ec9 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-02.htm @@ -0,0 +1,5 @@ +Grand Magister Devon:
+As you know, the Talking Island changed a great deal after the sky island fell, and the monsters on it awoke. Now it is more dangerous outside of the town than ever before, especially so in and around the giants' relics. We sent a team there to research the site, but I've started to fear for their lives.
+This is a big ask, but I would like you to go there and find the team. If you complete the mission, I'll transfer your class. What do you say?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-03.htm b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-03.htm new file mode 100644 index 0000000000..8a36b63de1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-03.htm @@ -0,0 +1,4 @@ +Grand Magister Devon:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-04.html new file mode 100644 index 0000000000..8a36b63de1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-04.html @@ -0,0 +1,4 @@ +Grand Magister Devon:
+Lakcis is at the entrance of the Ruins of Ye Sagira. Help him with his relic research. Dusty work, but interesting.
+Oh, you can get there by talking to Gatekeeper Milia. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-05.html new file mode 100644 index 0000000000..7d6930e3dd --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32160-05.html @@ -0,0 +1,13 @@ +Grand Magister Devon:
+Which path interests you?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-02.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-02.html new file mode 100644 index 0000000000..397aa0bf24 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-02.html @@ -0,0 +1,5 @@ +Pantheon:
+This... this is the necklace I gave to Saril many months ago. Oh... Saril... +Thank you for giving me this. It may not seem like much, but now that my daughter is dead, anything that belonged to her means a great deal to me.
+You should find High Priest Franco in the Administration Office. I think your work on this island is done. I think it's time you were prepared for the world. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-03.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-03.html new file mode 100644 index 0000000000..873c0cb54d --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-03.html @@ -0,0 +1,5 @@ +Pantheon:
+This... this is the necklace I gave to Saril many months ago. Oh... Saril... +Thank you for giving me this. It may not seem like much, but now that my daughter is dead, anything that belonged to her means a great deal to me.
+You should find Grand Master Rivian in the Administration Office. I think your work on this island is done. I think it's time you were prepared for the world. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-04.html new file mode 100644 index 0000000000..891c8c524b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-04.html @@ -0,0 +1,5 @@ +Pantheon:
+This... this is the necklace I gave to Saril many months ago. Oh... Saril... +Thank you for giving me this. It may not seem like much, but now that my daughter is dead, anything that belonged to her means a great deal to me.
+You should find Grand Magister Devon in the Administration Office. I think your work on this island is done. I think it's time you were prepared for the world. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-05.html new file mode 100644 index 0000000000..43a57cab23 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-05.html @@ -0,0 +1,5 @@ +Pantheon:
+This... this is the necklace I gave to Saril many months ago. Oh... Saril... +Thank you for giving me this. It may not seem like much, but now that my daughter is dead, anything that belonged to her means a great deal to me.
+You should find High Prefect Took in the Administration Office. I think your work on this island is done. I think it's time you were prepared for the world. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-06.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-06.html new file mode 100644 index 0000000000..198cef0cf8 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-06.html @@ -0,0 +1,5 @@ +Pantheon:
+This... this is the necklace I gave to Saril many months ago. Oh... Saril... +Thank you for giving me this. It may not seem like much, but now that my daughter is dead, anything that belonged to her means a great deal to me.
+You should find Head Blacksmith Moka in the Administration Office. I think your work on this island is done. I think it's time you were prepared for the world. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-07.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-07.html new file mode 100644 index 0000000000..e03fc522c9 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32972-07.html @@ -0,0 +1,5 @@ +Pantheon:
+This... this is the necklace I gave to Saril many months ago. Oh... Saril... +Thank you for giving me this. It may not seem like much, but now that my daughter is dead, anything that belonged to her means a great deal to me.
+You should find Grand Master Valfar in the Administration Office. I think your work on this island is done. I think it's time you were prepared for the world. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-01.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-01.html new file mode 100644 index 0000000000..6e69c7fb00 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-01.html @@ -0,0 +1,4 @@ +Lakcis:
+Ahh... The reckless adventurer we all heard about was you? Are you still planning on entering the labyrinth and fighting the huge monster everyone else is terrified of?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-02.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-02.html new file mode 100644 index 0000000000..71c3ba8395 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32977-02.html @@ -0,0 +1,6 @@ +Lakcis:
+Oh!
+The Labyrinth of Belis, a terrifying lair that's home to the largest of the monsters, is in Exploration zone 5. You'll find it at the end of the ruins, along with ranger Sebion. Ask him, and he'll let you enter the labyrinth.
+I'll send you to Exploration zone 5, if you're ready?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-01.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-01.html new file mode 100644 index 0000000000..bc76757074 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-01.html @@ -0,0 +1,5 @@ +Sebion:
+They shoved up a few weeks ago, a group & humans acting secretive and weird. I followed them into the Labyrinth and spied on them a bit, long enough to see that they had a large Evil Fragment.
+There was one, who seemed to be the leader, doing some kind & magical ritual on the fragment. Probably trying to hatch it. Can you even imagine what will happen if they manage that? The whole place might collapse again. This is why I sent to town for help, and it seems like you're the one they dispatched. So, what do you say? Will you help me?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-02.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-02.html new file mode 100644 index 0000000000..70513110ac --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-02.html @@ -0,0 +1,5 @@ +Sebion:
+Whoa, whoa, whoa, hold up there! This place is dangerous--someone died in here recently. We can't let just anyone go waltzing in and out. Ahh... You're the ranger dispatched from the town. You can go on your way, but you'll want to know a couple & things first.
+I haven't been able to investigate, because I'm recovering from an injury, but there've been rumors or strangers going in and out or the underground area, and also of suspicious intruders in the Museum. Are these things linked?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-03.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-03.html new file mode 100644 index 0000000000..3c7f98ea0a --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-03.html @@ -0,0 +1,4 @@ +Sebion:
+Well, I did some research into the group I spied on in the Labyrinth, and managed to rind out that the one performing the ritual was Nemertess, the same one who killed my good friend Saril.
+If you want to help, I can send you inside the Labyrinth or Belis, and you can stop whatever evil plan they're cooking up--and avenge my friend in the process.
+ \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-04.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-04.html new file mode 100644 index 0000000000..ec93e473d6 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-04.html @@ -0,0 +1,5 @@ +Sebion:
+Remember: you're to defeat Nemertess, the scientist trying to awaken the monster in the labyrinth.
+When you're ready, I can send you to the Labyrinth.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-05.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-05.html new file mode 100644 index 0000000000..60cf95df1b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/32978-05.html @@ -0,0 +1,4 @@ +Sebion:
+You're saying that Nemertess managed to finish part of his plan before you could get rid of him? That is no good, no good at all. Pantheon needs to know, so we can inform the town. Go to the Museum in town, and report this to him. Ah, and this Necklace that you found... it is Saril's. I think you should give that to Pantheon, as well.
+When you use the Scroll of Escape, It will take you immediately back to town. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/Q10331_StartOfFate.java b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/Q10331_StartOfFate.java new file mode 100644 index 0000000000..adbe5b9889 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/Q10331_StartOfFate.java @@ -0,0 +1,570 @@ +/* + * Copyright (C) 2004-2015 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack 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. + * + * L2J DataPack 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 . + */ +package quests.Q10331_StartOfFate; + +import com.l2jserver.gameserver.data.xml.impl.MultisellData; +import com.l2jserver.gameserver.model.Location; +import com.l2jserver.gameserver.model.actor.L2Npc; +import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.quest.Quest; +import com.l2jserver.gameserver.model.quest.QuestState; +import com.l2jserver.gameserver.model.quest.State; +import com.l2jserver.gameserver.network.NpcStringId; +import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage; +import com.l2jserver.gameserver.network.serverpackets.TutorialShowHtml; + +/** + * Start of Fate (10331) + * @author Mobius + */ +public class Q10331_StartOfFate extends Quest +{ + // Npcs + private static final int FRANCO = 32153; + private static final int VALFAR = 32146; + private static final int RIVIAN = 32147; + private static final int TOOK = 32150; + private static final int MOKA = 32157; + private static final int DEVON = 32160; + private static final int PANTHEON = 32972; + private static final int LAKCIS = 32977; + private static final int SEBION = 32978; + // Items + private static final int SARIL_NECKLACE = 17580; + private static final int BELIS_MARK = 17615; + private static final int PROOF_OF_COURAGE = 17821; + // Other + private static final Location LAKCIS_TELEPORT_LOC = new Location(-111774, 231933, -3160); + + public Q10331_StartOfFate() + { + super(10331, Q10331_StartOfFate.class.getSimpleName(), "Start of Fate"); + addStartNpc(FRANCO, VALFAR, RIVIAN, TOOK, MOKA, DEVON); + addTalkId(FRANCO, VALFAR, RIVIAN, TOOK, MOKA, DEVON, PANTHEON, LAKCIS, SEBION); + registerQuestItems(SARIL_NECKLACE, BELIS_MARK); + addCondMinLevel(18, "no_level.html"); + // addCondCompletedQuest(Q10330_RuinsStatusUpdate.class.getSimpleName(), "no_prequest.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 "32153-02.htm": + case "32147-02.htm": + case "32160-02.htm": + case "32150-02.htm": + case "32157-02.htm": + case "32146-02.htm": + case "32977-02.html": + case "32978-02.html": + { + htmltext = event; + break; + } + case "32153-03.htm": + case "32147-03.htm": + case "32160-03.htm": + case "32150-03.htm": + case "32157-03.htm": + case "32146-03.htm": + { + showOnScreenMsg(player, NpcStringId.GO_TO_THE_ENTRANCE_OF_THE_RUINS_OF_YE_SAGIRA_THROUGH_GATEKEEPER_MILIA_IN_TALKING_ISLAND_VILLAGE, ExShowScreenMessage.TOP_CENTER, 5000); + qs.startQuest(); + qs.setCond(2); + qs.setCond(1); + htmltext = event; + break; + } + case "LakcisTeleport": + { + if (qs.isCond(1)) + { + qs.setCond(2); + } + player.teleToLocation(LAKCIS_TELEPORT_LOC); + return null; + } + case "32978-03.html": + { + if (qs.isCond(2)) + { + qs.setCond(3); + } + break; + } + case "pantheon_send_to_master": + { + if (!qs.isCond(5)) + { + return null; + } + switch (player.getRace()) + { + case HUMAN: + { + qs.setCond(6); + htmltext = "32972-02.html"; + break; + } + case ELF: + { + qs.setCond(7); + htmltext = "32972-03.html"; + break; + } + case DARK_ELF: + { + qs.setCond(8); + htmltext = "32972-04.html"; + break; + } + case ORC: + { + qs.setCond(9); + htmltext = "32972-05.html"; + break; + } + case DWARF: + { + qs.setCond(10); + htmltext = "32972-06.html"; + break; + } + case KAMAEL: + { + qs.setCond(11); + htmltext = "32972-07.html"; + break; + } + } + break; + } + } + + if (event.startsWith("change_to_")) + { + if (qs.getCond() < 6) + { + return null; + } + final int classId = Integer.parseInt(event.replace("change_to_", "")); + player.setClassId(classId); + switch (classId) + { + case 1: + { + htmltext = "32153-09.html"; + break; + } + case 4: + { + htmltext = "32153-10.html"; + break; + } + case 7: + { + htmltext = "32153-11.html"; + break; + } + case 11: + { + htmltext = "32153-07.html"; + break; + } + case 15: + { + htmltext = "32153-08.html"; + break; + } + case 19: + { + htmltext = "32147-09.html"; + break; + } + case 22: + { + htmltext = "32147-10.html"; + break; + } + case 26: + { + htmltext = "32147-07.html"; + break; + } + case 29: + { + htmltext = "32147-08.html"; + break; + } + case 32: + { + htmltext = "32160-09.html"; + break; + } + case 35: + { + htmltext = "32160-10.html"; + break; + } + case 39: + { + htmltext = "32160-07.html"; + break; + } + case 42: + { + htmltext = "32160-08.html"; + break; + } + case 45: + { + htmltext = "32150-08.html"; + break; + } + case 47: + { + htmltext = "32150-09.html"; + break; + } + case 50: + { + htmltext = "32150-07.html"; + break; + } + case 54: + { + htmltext = "32157-06.html"; + break; + } + case 56: + { + htmltext = "32157-07.html"; + break; + } + case 125: + { + htmltext = "32146-08.html"; + break; + } + case 126: + { + htmltext = "32146-07.html"; + break; + } + } + giveAdena(player, 799, true); + giveItems(player, PROOF_OF_COURAGE, 40); + addExpAndSp(player, 200000, 48); + player.sendPacket(new TutorialShowHtml(npc.getObjectId(), "..\\L2Text\\QT_009_enchant_01.htm", TutorialShowHtml.LARGE_WINDOW)); + MultisellData.getInstance().separateAndSend(717, player, npc, false); + qs.exitQuest(false, true); + } + + return htmltext; + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = null; + + switch (qs.getState()) + { + case State.STARTED: + { + switch (npc.getId()) + { + case FRANCO: + { + if (qs.isCond(1)) + { + htmltext = "32153-04.html"; + } + else if (qs.isCond(6)) + { + if (player.isMageClass()) + { + htmltext = "32153-05.html"; + } + else + { + htmltext = "32153-06.html"; + } + } + break; + } + case RIVIAN: + { + if (qs.isCond(1)) + { + htmltext = "32147-04.html"; + } + else if (qs.isCond(7)) + { + if (player.isMageClass()) + { + htmltext = "32147-05.html"; + } + else + { + htmltext = "32147-06.html"; + } + } + break; + } + case DEVON: + { + if (qs.isCond(1)) + { + htmltext = "32160-04.html"; + } + else if (qs.isCond(8)) + { + if (player.isMageClass()) + { + htmltext = "32160-05.html"; + } + else + { + htmltext = "32160-06.html"; + } + } + break; + } + case TOOK: + { + if (qs.isCond(1)) + { + htmltext = "32150-04.html"; + } + else if (qs.isCond(9)) + { + if (player.getClassId().getId() == 49) + { + htmltext = "32150-05.html"; + } + else + { + htmltext = "32150-06.html"; + } + } + break; + } + case MOKA: + { + if (qs.isCond(1)) + { + htmltext = "32157-04.html"; + } + else if (qs.isCond(10)) + { + htmltext = "32157-05.html"; + } + break; + } + case VALFAR: + { + if (qs.isCond(1)) + { + htmltext = "32146-04.html"; + } + else if (qs.isCond(11)) + { + if (player.getAppearance().getSex()) + { + htmltext = "32146-05.html"; + } + else + { + htmltext = "32146-06.html"; + } + } + break; + } + case LAKCIS: + { + htmltext = "32977-01.html"; + break; + } + case SEBION: + { + switch (qs.getCond()) + { + case 2: + { + htmltext = "32978-01.html"; + break; + } + case 3: + case 4: + { + htmltext = "32978-04.html"; + break; + } + case 5: + { + htmltext = "32978-05.html"; + break; + } + } + break; + } + case PANTHEON: + { + switch (qs.getCond()) + { + case 5: + { + htmltext = "32972-01.html"; + break; + } + case 6: + { + htmltext = "32972-02.html"; + break; + } + case 7: + { + htmltext = "32972-03.html"; + break; + } + case 8: + { + htmltext = "32972-04.html"; + break; + } + case 9: + { + htmltext = "32972-05.html"; + break; + } + case 10: + { + htmltext = "32972-06.html"; + break; + } + case 11: + { + htmltext = "32972-07.html"; + break; + } + } + break; + } + } + break; + } + case State.CREATED: + { + switch (player.getRace()) + { + case HUMAN: + { + if (npc.getId() == FRANCO) + { + htmltext = "32153-01.htm"; + } + else + { + htmltext = getNoQuestMsg(player); + } + break; + } + case ELF: + { + if (npc.getId() == RIVIAN) + { + htmltext = "32147-01.htm"; + } + else + { + htmltext = getNoQuestMsg(player); + } + break; + } + case DARK_ELF: + { + if (npc.getId() == DEVON) + { + htmltext = "32160-01.htm"; + } + else + { + htmltext = getNoQuestMsg(player); + } + break; + } + case ORC: + { + if (npc.getId() == TOOK) + { + htmltext = "32150-01.htm"; + } + else + { + htmltext = getNoQuestMsg(player); + } + break; + } + case DWARF: + { + if (npc.getId() == MOKA) + { + htmltext = "32157-01.htm"; + } + else + { + htmltext = getNoQuestMsg(player); + } + break; + } + case KAMAEL: + { + if (npc.getId() == VALFAR) + { + htmltext = "32146-01.htm"; + } + else + { + htmltext = getNoQuestMsg(player); + } + break; + } + } + break; + } + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_level.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_level.html new file mode 100644 index 0000000000..9d7cdeef98 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_level.html @@ -0,0 +1,3 @@ +I don't talk to youngsters. Come back when you've grown up a bit more.
+(This quest can only be taken by a character of level 18 or above.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_prequest.html b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_prequest.html new file mode 100644 index 0000000000..1f35125fa4 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10331_StartOfFate/no_prequest.html @@ -0,0 +1,3 @@ +Come back later!
+(Only characters who have completed the Ruins Status Update quest may take on this quest) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java index 170873cd94..b7188e4a4e 100644 --- a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -188,6 +188,7 @@ import quests.Q10323_TrainLikeItsReal.Q10323_TrainLikeItsReal; import quests.Q10324_FindingMagisterGallint.Q10324_FindingMagisterGallint; import quests.Q10325_SearchingForNewPower.Q10325_SearchingForNewPower; import quests.Q10326_RespectYourElders.Q10326_RespectYourElders; +import quests.Q10331_StartOfFate.Q10331_StartOfFate; import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny; import quests.Q10501_ZakenEmbroideredSoulCloak.Q10501_ZakenEmbroideredSoulCloak; import quests.Q10502_FreyaEmbroideredSoulCloak.Q10502_FreyaEmbroideredSoulCloak; @@ -384,6 +385,7 @@ public class QuestMasterHandler Q10324_FindingMagisterGallint.class, Q10325_SearchingForNewPower.class, Q10326_RespectYourElders.class, + Q10331_StartOfFate.class, Q10338_SeizeYourDestiny.class, Q10501_ZakenEmbroideredSoulCloak.class, Q10502_FreyaEmbroideredSoulCloak.class, diff --git a/trunk/dist/game/data/stats/items/17800-17899.xml b/trunk/dist/game/data/stats/items/17800-17899.xml index dbd72f56de..8db6790f79 100644 --- a/trunk/dist/game/data/stats/items/17800-17899.xml +++ b/trunk/dist/game/data/stats/items/17800-17899.xml @@ -106,8 +106,13 @@ - + + + + + + diff --git a/trunk/dist/game/data/stats/npcs/19100-19200.xml b/trunk/dist/game/data/stats/npcs/19100-19200.xml index 26e0c6c64b..ef202720c4 100644 --- a/trunk/dist/game/data/stats/npcs/19100-19200.xml +++ b/trunk/dist/game/data/stats/npcs/19100-19200.xml @@ -935,18 +935,32 @@ - - + HUMAN - FEMALE + MALE + + + - + + + + + + + + + + + + true + 5 diff --git a/trunk/dist/game/data/stats/npcs/22900-23000.xml b/trunk/dist/game/data/stats/npcs/22900-23000.xml index a82d4856a8..32c50739ec 100644 --- a/trunk/dist/game/data/stats/npcs/22900-23000.xml +++ b/trunk/dist/game/data/stats/npcs/22900-23000.xml @@ -1275,18 +1275,30 @@ - - - HUMAN - FEMALE + + DARK_ELF + MALE + - + + + + - + + + + + + + + BELIS + + @@ -1411,35 +1423,65 @@ - - + HUMAN FEMALE + - + + + + - + + + + + + + + + + + BELIS + + - - + HUMAN FEMALE + - + + + + - + + + + + + + + + + + BELIS + + diff --git a/trunk/dist/game/data/stats/npcs/33200-33300.xml b/trunk/dist/game/data/stats/npcs/33200-33300.xml index 839fe33993..d6a3ac2a9c 100644 --- a/trunk/dist/game/data/stats/npcs/33200-33300.xml +++ b/trunk/dist/game/data/stats/npcs/33200-33300.xml @@ -271,14 +271,13 @@ - HUMAN FEMALE - - + + diff --git a/trunk/dist/game/data/zones/damage.xml b/trunk/dist/game/data/zones/damage.xml index 288da45066..27d3a9c006 100644 --- a/trunk/dist/game/data/zones/damage.xml +++ b/trunk/dist/game/data/zones/damage.xml @@ -22,4 +22,18 @@ + + + + + + + + + + + + + + \ No newline at end of file