diff --git a/trunk/dist/db_installer/sql/game/spawnlist.sql b/trunk/dist/db_installer/sql/game/spawnlist.sql index 6e1a63a7a5..baa82481e6 100644 --- a/trunk/dist/db_installer/sql/game/spawnlist.sql +++ b/trunk/dist/db_installer/sql/game/spawnlist.sql @@ -49505,4 +49505,9 @@ INSERT INTO `spawnlist` VALUES ('19_20', 1, 27529, -4431, 115990, -3344, 0, 0, 0, 45, 0, 0, 0), ('19_20', 1, 27529, -4381, 116105, -3344, 0, 0, 0, 45, 0, 0, 0), ('19_20', 1, 27529, -4364, 116856, -3336, 0, 0, 63120, 45, 0, 0, 0), -('19_20', 1, 27529, -4272, 116160, -3344, 0, 0, 0, 45, 0, 0, 0); \ No newline at end of file +('19_20', 1, 27529, -4272, 116160, -3344, 0, 0, 0, 45, 0, 0, 0); + +-- Hymn of the Soul +INSERT INTO `spawnlist` VALUES ('Gludio Area', 1, 34095, -13920, 123009, -3112, 0, 0, 48000, 60, 0, 0, 0); -- Refugee Neti +INSERT INTO `spawnlist` VALUES ('Oren Area', 1, 34051, 83203, 55347, -1520, 0, 0, 48000, 60, 0, 0, 0); -- Shadai's Disciple Kaysia +INSERT INTO `spawnlist` VALUES ('Pagan Temple', 1, 33803, -16392, -40120, -10750, 16346, 0, 48000, 60, 0, 0, 0); -- Radzen diff --git a/trunk/dist/game/data/html/default/33803-1.htm b/trunk/dist/game/data/html/default/33803-1.htm new file mode 100644 index 0000000000..4a9570011e --- /dev/null +++ b/trunk/dist/game/data/html/default/33803-1.htm @@ -0,0 +1,6 @@ +Priestess of Light Razen:
+The power you attained through Awakening - it is great power, yes, but it is the power of the Giants. Skills in particular are the essence of the Giants' abilities.
+But for Triol the devil, the greatest weapon would be the power of the light bestowed by Einhasad the goddess.
+No need to look disappointed or regret Awakening, however. Excluding skills and servitors' abilities, all of your general attacks are imbued with the power of the light inside you. They will be critical in defeating the pagans.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/33803-2.htm b/trunk/dist/game/data/html/default/33803-2.htm new file mode 100644 index 0000000000..0daa85273e --- /dev/null +++ b/trunk/dist/game/data/html/default/33803-2.htm @@ -0,0 +1,3 @@ +Priestess of Light Razen:
+You still have the Pagan's Badge I gave you. Show it to the Temple Gatekeeper at the chapel entrance, and he will open the door for you. + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/33803.htm b/trunk/dist/game/data/html/default/33803.htm new file mode 100644 index 0000000000..2e3bc9d635 --- /dev/null +++ b/trunk/dist/game/data/html/default/33803.htm @@ -0,0 +1,6 @@ +Priestess of Light Razen:
+Sometimes, physical strength is nothing. Does this pertain to you?
+ + + + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/33821.htm b/trunk/dist/game/data/html/default/33821.htm index 25a0737a74..9df0f393da 100644 --- a/trunk/dist/game/data/html/default/33821.htm +++ b/trunk/dist/game/data/html/default/33821.htm @@ -1,5 +1,5 @@ -Knight Captain Kargos:
+Knight Captain Kargos:
What a strange place for such ominous energy. The village feels like a battlefield!
- + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/33974.htm b/trunk/dist/game/data/html/default/33974.htm index 0ad0f8b4c4..80dc9d35d3 100644 --- a/trunk/dist/game/data/html/default/33974.htm +++ b/trunk/dist/game/data/html/default/33974.htm @@ -1,7 +1,7 @@ Resed:
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of 4 or less and at Lv. 99 may enter. Each team requires at least 12 Warp Crystals. Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?
- + diff --git a/trunk/dist/game/data/html/default/34051-1.htm b/trunk/dist/game/data/html/default/34051-1.htm new file mode 100644 index 0000000000..837e42b264 --- /dev/null +++ b/trunk/dist/game/data/html/default/34051-1.htm @@ -0,0 +1,7 @@ +Shadai's Disciple Kaysia:
+Grandpa Shadai?
+After Faeron Village came to the Material Realm, I started wandering around. I was worried at first, but our story spread throughout the continent, so it wasn't that dangerous.
+I met Grandpa Toma as I wandered through the continent. He told me how he was also the wandering type, and that he traveled a lot when he was young. He was the one who introduced me to Grandpa Shadai.
+Grandpa Shadai said that it would be better for me to learn a skill for when I decided to settle down, and taught me his skills.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/34051.htm b/trunk/dist/game/data/html/default/34051.htm new file mode 100644 index 0000000000..890d6a3430 --- /dev/null +++ b/trunk/dist/game/data/html/default/34051.htm @@ -0,0 +1,8 @@ +Shadai's Disciple Kaysia:
Oh, hello! I'm Kaysia.
+I'm a blacksmith, and I learned from Grandpa Shadai. Well, I'm not a blacksmith officially. I don't really like being tied down in one place. Heh.
+However, I did find a strange Atelia piece, so I'm trying to find out more about it and will be staying here for a while.
+Even amongst those, Kelbim's Atelia Fragment is very special. If you can bring me one, I'll work on that Kelbim's Atelia Fragment and make you a Kelbim weapon. Not bad, right?
+ + + + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/34095-1.htm b/trunk/dist/game/data/html/default/34095-1.htm new file mode 100644 index 0000000000..b6238ec81b --- /dev/null +++ b/trunk/dist/game/data/html/default/34095-1.htm @@ -0,0 +1,5 @@ +Refugee Neti:
+A group of armed Orcs and Dark Elves came into Gludin. They drove out the guards and captured the people to occupy the village.
+They call themselves the Ashen Shadow Revolutionaries. It looks like the Kingdom doesn't really see them as a threat. But things might get worse if we don't do something.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/34095-2.htm b/trunk/dist/game/data/html/default/34095-2.htm new file mode 100644 index 0000000000..0a60babc30 --- /dev/null +++ b/trunk/dist/game/data/html/default/34095-2.htm @@ -0,0 +1,4 @@ +Refugee Neti:
+In order to exchange a Shadow weapon for one that can be exchanged, you need 1 +10 Shadow weapon and 10 Shadow Ingots.
+You don't have a Shadow weapon, though. Make sure to get one first. + \ No newline at end of file diff --git a/trunk/dist/game/data/html/default/34095.htm b/trunk/dist/game/data/html/default/34095.htm new file mode 100644 index 0000000000..a00fbe5850 --- /dev/null +++ b/trunk/dist/game/data/html/default/34095.htm @@ -0,0 +1,9 @@ +Refugee Neti:
+Gludin as been occupied. There are people who have escaped like me, but I'm not sure if the rest of them are safe.
+I thought about helping them, but I had to let others know what happened. That's why I came here.
+ + + + + + \ No newline at end of file diff --git a/trunk/dist/game/data/multisell/3405100.xml b/trunk/dist/game/data/multisell/3405100.xml new file mode 100644 index 0000000000..e4a583904e --- /dev/null +++ b/trunk/dist/game/data/multisell/3405100.xml @@ -0,0 +1,46 @@ + + + + 34051 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/trunk/dist/game/data/multisell/3409500.xml b/trunk/dist/game/data/multisell/3409500.xml new file mode 100644 index 0000000000..4e036182bf --- /dev/null +++ b/trunk/dist/game/data/multisell/3409500.xml @@ -0,0 +1,57 @@ + + + + 34095 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts.cfg b/trunk/dist/game/data/scripts.cfg index 4d0ffa6ed9..b34e9b1f92 100644 --- a/trunk/dist/game/data/scripts.cfg +++ b/trunk/dist/game/data/scripts.cfg @@ -67,10 +67,12 @@ ai/npc/Teleports/AnghelWaterfallPortal/AnghelWaterfallPortal.java ai/npc/Teleports/CrumaTower/CrumaTower.java ai/npc/Teleports/DarkOmens/DarkOmens.java ai/npc/Teleports/DelusionTeleport/DelusionTeleport.java +ai/npc/Teleports/DimensionalWarpTeleport/DimensionalWarpTeleport.java ai/npc/Teleports/ElrokiTeleporters/ElrokiTeleporters.java ai/npc/Teleports/GainakUndergroundEntrance/GainakUndergroundEntrance.java ai/npc/Teleports/GiantServant/GiantServant.java ai/npc/Teleports/GrandBossTeleporters/GrandBossTeleporters.java +ai/npc/Teleports/KargosTeleport/KargosTeleport.java ai/npc/Teleports/Klemis/Klemis.java ai/npc/Teleports/MithrilMinesTeleporter/MithrilMinesTeleporter.java ai/npc/Teleports/NewbieTravelToken/NewbieTravelToken.java diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/DimensionalWarpTeleport.java b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/DimensionalWarpTeleport.java new file mode 100644 index 0000000000..47e6f56515 --- /dev/null +++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/DimensionalWarpTeleport.java @@ -0,0 +1,74 @@ +/* + * 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 . + */ +package ai.npc.Teleports.DimensionalWarpTeleport; + +import com.l2jmobius.gameserver.model.Location; +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; + +import ai.npc.AbstractNpcAI; + +/** + * @author hlwrave + */ +final class DimensionalWarpTeleport extends AbstractNpcAI +{ + // NPC + private final static int RESED = 33974; + // Misc + private final static int MIN_LEVEL = 99; + // Items + private final static int WARP_CRYSTAL = 39597; + private final static int WARP_CRYSTAL_COUNT = 3; + // Location + private final static Location DIMENSIONAL_WARP = new Location(-76785, -217420, 4016); + + private DimensionalWarpTeleport() + { + super(DimensionalWarpTeleport.class.getSimpleName(), "ai/npc/Teleports"); + addStartNpc(RESED); + addTalkId(RESED); + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + if ((hasQuestItems(player, WARP_CRYSTAL)) && (player.getLevel() >= MIN_LEVEL) && (getQuestItemsCount(player, WARP_CRYSTAL) >= WARP_CRYSTAL_COUNT) && (player.isAwaken())) + { + takeItems(player, WARP_CRYSTAL, 3); + player.teleToLocation(DIMENSIONAL_WARP); + } + else if (player.getLevel() < MIN_LEVEL) + { + return "no_level.htm"; + } + else if (getQuestItemsCount(player, WARP_CRYSTAL) < WARP_CRYSTAL_COUNT) + { + return "no_item.htm"; + } + else + { + return "non_awakened.htm"; + } + return super.onTalk(npc, player); + } + + public static void main(String[] args) + { + new DimensionalWarpTeleport(); + } +} diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/no_item.htm b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/no_item.htm new file mode 100644 index 0000000000..144e4af435 --- /dev/null +++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/no_item.htm @@ -0,0 +1,3 @@ +Resed:
+You must have a 3 Warp Crystal , in order to teleport Dimensional Warp. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/no_level.htm b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/no_level.htm new file mode 100644 index 0000000000..569e7826ba --- /dev/null +++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/no_level.htm @@ -0,0 +1,4 @@ +Resed:
+I do not believe our paths are meant to cross here. Perhaps later down the road.
+(Only characters Lv. 99. or Above) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/non_awakened.htm b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/non_awakened.htm new file mode 100644 index 0000000000..7d31450fe2 --- /dev/null +++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/DimensionalWarpTeleport/non_awakened.htm @@ -0,0 +1,3 @@ +Resed:
+Sorry, I can't teleoprt you to Dimensional Warp. Come back when you have Awakened to it. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/KargosTeleport/KargosTeleport.java b/trunk/dist/game/data/scripts/ai/npc/Teleports/KargosTeleport/KargosTeleport.java new file mode 100644 index 0000000000..9057fd7615 --- /dev/null +++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/KargosTeleport/KargosTeleport.java @@ -0,0 +1,68 @@ +/* + * 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 . + */ +package ai.npc.Teleports.KargosTeleport; + +import com.l2jmobius.gameserver.model.Location; +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; + +import ai.npc.AbstractNpcAI; + +/** + * @author hlwrave + */ +final class KargosTeleport extends AbstractNpcAI +{ + // NPC + private final static int KARGOS = 33821; + // Items + private final static int PAGAN_MARK = 8067; + private final static int VISITOR_MARK = 8064; + // Locations + private final static Location PAGAN_TEMPLE = new Location(-16350, -37579, -10725); + private final static Location PAGAN_ROOM = new Location(-12766, -35840, -10851); + + private KargosTeleport() + { + super(KargosTeleport.class.getSimpleName(), "ai/npc/Teleports"); + addStartNpc(KARGOS); + addTalkId(KARGOS); + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + if (hasQuestItems(player, PAGAN_MARK, VISITOR_MARK)) + { + player.teleToLocation(PAGAN_TEMPLE); + } + else if (hasQuestItems(player, VISITOR_MARK)) + { + player.teleToLocation(PAGAN_ROOM); + } + else + { + return "noItem.htm"; + } + return super.onTalk(npc, player); + } + + public static void main(String[] args) + { + new KargosTeleport(); + } +} diff --git a/trunk/dist/game/data/scripts/ai/npc/Teleports/KargosTeleport/noItem.htm b/trunk/dist/game/data/scripts/ai/npc/Teleports/KargosTeleport/noItem.htm new file mode 100644 index 0000000000..390a69a4de --- /dev/null +++ b/trunk/dist/game/data/scripts/ai/npc/Teleports/KargosTeleport/noItem.htm @@ -0,0 +1,4 @@ +Kargos:
+You have nothing that would cover the holes.
+(You must have a Visitor's Mark, a Pagan's Mark in order to teleport Pagan Temple.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/Q00757_TriolsMovement.java b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/Q00757_TriolsMovement.java new file mode 100644 index 0000000000..069bc19336 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/Q00757_TriolsMovement.java @@ -0,0 +1,169 @@ +/* + * 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 . + */ +package quests.Q00757_TriolsMovement; + +import com.l2jmobius.gameserver.enums.QuestType; +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; +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.util.Util; + +/** + * @author hlwrave + */ +public class Q00757_TriolsMovement extends Quest +{ + // NPCs + private static final int RADZEN = 33803; + // Items + private static final int SPIRIT = 36231; + private static final int TOTEM = 36230; + private static final int SPIRIT_COUNT = 100; + private static final int TOTEM_COUNT = 100; + // Mobs + private static final int[] MOBS = + { + 22140, + 22147, + 23278, + 23283, + 22146, + 22155, + 22141, + 22144, + 22139, + 22152, + 22153, + 22154, + }; + + public Q00757_TriolsMovement() + { + super(757, Q00757_TriolsMovement.class.getSimpleName(), "Triols Movement"); + addStartNpc(RADZEN); + addTalkId(RADZEN); + registerQuestItems(SPIRIT, TOTEM); + addKillId(MOBS); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + String htmltext = event; + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return getNoQuestMsg(player); + } + + switch (event) + { + case "accepted.htm": + { + qs.setCond(1); + qs.startQuest(); + break; + } + case "endquest.htm": + { + if (qs.isCond(2)) + { + qs.takeItems(SPIRIT, -100); + qs.takeItems(TOTEM, -100); + qs.giveItems(57, 745929); + qs.giveItems(36232, 1); + qs.addExpAndSp(301518549, 7236360); + qs.exitQuest(QuestType.DAILY, true); + htmltext = "endquest.htm"; + } + break; + } + } + return htmltext; + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + String htmltext = getNoQuestMsg(player); + final QuestState qs = getQuestState(player, true); + if (qs == null) + { + return htmltext; + } + + switch (qs.getState()) + { + case State.COMPLETED: + { + htmltext = "You have completed this quest today, come back tomorow at 6:30!"; + break; + } + case State.CREATED: + { + if (player.getLevel() >= 97) + { + htmltext = "start.htm"; + } + else + { + htmltext = "no_level.htm"; + } + break; + } + case State.STARTED: + { + if (qs.isCond(1)) + { + htmltext = "notcollected.htm"; + } + else if (qs.isCond(2)) + { + htmltext = "collected.htm"; + } + break; + } + } + return htmltext; + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) + { + final QuestState qs = getQuestState(killer, false); + if ((qs != null) && qs.isCond(1) && qs.isStarted()) + { + + if (Util.contains(MOBS, npc.getId())) + { + giveItemRandomly(killer, npc, TOTEM, 1, 100, 1.0, true); + } + if (Util.contains(MOBS, npc.getId())) + { + giveItemRandomly(killer, npc, SPIRIT, 1, 100, 1.0, true); + } + if ((getQuestItemsCount(killer, SPIRIT) == SPIRIT_COUNT) && (getQuestItemsCount(killer, TOTEM) == TOTEM_COUNT)) + { + qs.setCond(2); + } + } + return super.onKill(npc, killer, isSummon); + } +} \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/accepted.htm b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/accepted.htm new file mode 100644 index 0000000000..5c92c5a02f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/accepted.htm @@ -0,0 +1,7 @@ +Sec:
+This is great news for us!
+Here is a list of monsters which must be eliminated:
+Risen worker Ritual Offering, Amateur Tyrol, Tyrol believer, priest of Tyrol, the High Priest of Tyrol, The Forgotten Victim, Resurrected Temple Knight, Soldier of the old aristocracy, Guardian of the Temple, the captain of the Temple Ritual Sacrifice.
+In a sign of proof of the offense bring 50 "Pagan Totem", and also you can collect "Pagan Spirit" through this thing I can replenish your energy!
+Come see me when you've gathered 50 "Pagan Totem" and as much as possible, "the Spirit of the Gentiles." + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/collected.htm b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/collected.htm new file mode 100644 index 0000000000..09ca233c33 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/collected.htm @@ -0,0 +1,5 @@ +Sec:
+I can see how theirs are shining precious totems!
+Show that even brought?

+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/endquest.htm b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/endquest.htm new file mode 100644 index 0000000000..3bc3478c39 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/endquest.htm @@ -0,0 +1,4 @@ +Sec:
+Thank you for helping us keep the balance among Rassam! So as that's your reward, I was able to fill up a bit of energy you above all.
+Triols all exactly is a lot out there, and the rest a come back tomorrow to continue the mission of our gods! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/no_level.htm b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/no_level.htm new file mode 100644 index 0000000000..e08dac5638 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/no_level.htm @@ -0,0 +1,3 @@ +You don't meet level requirements
+(Quest available from level 97 or above.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/notcollected.htm b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/notcollected.htm new file mode 100644 index 0000000000..5c92c5a02f --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/notcollected.htm @@ -0,0 +1,7 @@ +Sec:
+This is great news for us!
+Here is a list of monsters which must be eliminated:
+Risen worker Ritual Offering, Amateur Tyrol, Tyrol believer, priest of Tyrol, the High Priest of Tyrol, The Forgotten Victim, Resurrected Temple Knight, Soldier of the old aristocracy, Guardian of the Temple, the captain of the Temple Ritual Sacrifice.
+In a sign of proof of the offense bring 50 "Pagan Totem", and also you can collect "Pagan Spirit" through this thing I can replenish your energy!
+Come see me when you've gathered 50 "Pagan Totem" and as much as possible, "the Spirit of the Gentiles." + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/start.htm b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/start.htm new file mode 100644 index 0000000000..c0fd33676b --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q00757_TriolsMovement/start.htm @@ -0,0 +1,5 @@ +Sec:
+We would never have thought that the triplets can multiply so fast, according to our research theirs number exceeds the norm by 389 percent!
+You are here that would stop this growth?

+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/Q10388_ConspiracyBehindDoor.java b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/Q10388_ConspiracyBehindDoor.java new file mode 100644 index 0000000000..3f8fd0d0a6 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/Q10388_ConspiracyBehindDoor.java @@ -0,0 +1,152 @@ +/* + * 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 . + */ +package quests.Q10388_ConspiracyBehindDoor; + +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; + +/** + * @author hlwrave + */ +public class Q10388_ConspiracyBehindDoor extends Quest +{ + // NPCs + private static final int ELIA = 31329; + private static final int KARGOS = 33821; + private static final int HICHEN = 33820; + private static final int RAZDEN = 33803; + // Item + private static final int VISITORS_BADGE = 8064; + + public Q10388_ConspiracyBehindDoor() + { + super(10388, Q10388_ConspiracyBehindDoor.class.getSimpleName(), "Conspiracy Behind Door"); + addStartNpc(ELIA); + addTalkId(ELIA, KARGOS, HICHEN, RAZDEN); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + String htmltext = event; + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return getNoQuestMsg(player); + } + + switch (event) + { + case "go.htm": + { + qs.setCond(1); + qs.startQuest(); + break; + } + case "toCond2.htm": + { + qs.setCond(2); + break; + } + case "toCond3.htm": + { + qs.setCond(3); + qs.giveItems(VISITORS_BADGE, 1); + break; + } + case "final.htm": + { + qs.addExpAndSp(29638350, 2963835); + qs.exitQuest(false, true); + break; + } + } + return htmltext; + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + String htmltext = getNoQuestMsg(player); + final QuestState qs = getQuestState(player, true); + if (qs == null) + { + return htmltext; + } + + final int npcId = npc.getId(); + switch (qs.getState()) + { + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + case State.CREATED: + { + if (npcId == ELIA) + { + if (player.getLevel() >= 97) + { + htmltext = "start.htm"; + } + else + { + htmltext = "nolvl.htm"; + } + } + break; + } + case State.STARTED: + { + switch (npcId) + { + case KARGOS: + { + if (qs.isCond(1)) + { + htmltext = "cond1.htm"; + } + break; + } + case HICHEN: + { + if (qs.isCond(2)) + { + htmltext = "cond2.htm"; + } + break; + } + case RAZDEN: + { + if (qs.isCond(3)) + { + htmltext = "cond3.htm"; + } + break; + } + } + break; + } + } + return htmltext; + } +} \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond1.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond1.htm new file mode 100644 index 0000000000..7fec4ffab3 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond1.htm @@ -0,0 +1,6 @@ +Kargos:
+Sir , nice to see you, I see you with a message from our good priest. +What then if you are willing to learn of a secret conspiracy , you have to talk to the Costumed Knight Hichen find it will not be easy , he secretly investigating this conspiracy in the Temple of the Pagans. +I hope that he will have good news for you!
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond2.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond2.htm new file mode 100644 index 0000000000..5ea34c70a3 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond2.htm @@ -0,0 +1,5 @@ +Hichen:
+Quiet...! I learned something... outside the door is a new evil that must win our glorious world... Unfortunately I can not say anything more yasnoe..ne dolgo..na stand here we can watch.. +Go to undress... not long ago he sent me a spy... said that he learned something over a secret... it go immediately.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond3.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond3.htm new file mode 100644 index 0000000000..d74c53d147 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/cond3.htm @@ -0,0 +1,5 @@ +Radzen:
+Do not be afraid , come near... I see what you come up with questions... but I will have one and you. +You would not find me without the help Hichen, it happens nothing handed?!!
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/final.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/final.htm new file mode 100644 index 0000000000..1f0335c856 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/final.htm @@ -0,0 +1,3 @@ +Radzen:
+So the ships harbor... tomorrow!? Oh, God, thank you for the information... here's a reward... not much but it's all there... come on later, I need to work!!! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/go.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/go.htm new file mode 100644 index 0000000000..9c15d978c1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/go.htm @@ -0,0 +1,3 @@ +Eliyah:
+Oh thank you brave soldier, give me Kargos rays of light and blessing of the gods! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/nolvl.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/nolvl.htm new file mode 100644 index 0000000000..b1b068a5da --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/nolvl.htm @@ -0,0 +1,3 @@ +Elia:
+Sorry, but it seems you lost your job.. not by force , go work out , come when you reach the 97-level! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/start.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/start.htm new file mode 100644 index 0000000000..703c2f2340 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/start.htm @@ -0,0 +1,7 @@ +Eliyah:
+Oh, my eyes let me down? It is you? About who says it? Those who will save the world?
+Of course, not all at once.. first we must learn that hides from us the evil of those same doors!
+And you do not know about this?!
+Go and have a talk with the Chief Kargos Knight and he will enlighten your not knowing!
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/toCond2.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/toCond2.htm new file mode 100644 index 0000000000..092b636723 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/toCond2.htm @@ -0,0 +1,3 @@ +Kargos:
+Well, Well , good luck to you friend, I hope luck will smile to you! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/toCond3.htm b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/toCond3.htm new file mode 100644 index 0000000000..872e55e7ad --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10388_ConspiracyBehindDoor/toCond3.htm @@ -0,0 +1,3 @@ +Kichen:
+Yes ... quiet ... * whispers * .. tell him the ships come into the harbor tomorrow .. good luck .. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/Q10389_TheVoiceOfAuthority.java b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/Q10389_TheVoiceOfAuthority.java new file mode 100644 index 0000000000..c61661eb24 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/Q10389_TheVoiceOfAuthority.java @@ -0,0 +1,166 @@ +/* + * 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 . + */ +package quests.Q10389_TheVoiceOfAuthority; + +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; +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.NpcStringId; +import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList; +import com.l2jmobius.gameserver.util.Util; + +import quests.Q10388_ConspiracyBehindDoor.Q10388_ConspiracyBehindDoor; + +/** + * @author hlwrave + */ +public class Q10389_TheVoiceOfAuthority extends Quest +{ + // NPCs + private static final int RADZEN = 33803; + // Monsters + private static final int MOB_1 = 22139; + private static final int MOB_2 = 22140; + private static final int MOB_3 = 22141; + private static final int MOB_4 = 22147; + private static final int MOB_5 = 22154; + private static final int MOB_6 = 22144; + private static final int MOB_7 = 22145; + private static final int MOB_8 = 22148; + private static final int MOB_9 = 22142; + private static final int MOB_10 = 22155; + + public Q10389_TheVoiceOfAuthority() + { + super(10389, Q10389_TheVoiceOfAuthority.class.getSimpleName(), "The Voice Of Authority"); + addCondCompletedQuest(Q10388_ConspiracyBehindDoor.class.getSimpleName(), "no_quest.htm"); + addStartNpc(RADZEN); + addTalkId(RADZEN); + addKillId(MOB_1, MOB_2, MOB_3, MOB_4, MOB_5, MOB_6, MOB_7, MOB_8, MOB_9, MOB_10); + } + + @Override + public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) + { + String htmltext = event; + final QuestState qs = getQuestState(player, false); + + if (qs == null) + { + return getNoQuestMsg(player); + } + + switch (event) + { + case "accepted.htm": + { + qs.setCond(1); + qs.startQuest(); + qs.set(Integer.toString(MOB_1), 0); + qs.set(Integer.toString(MOB_2), 0); + qs.set(Integer.toString(MOB_3), 0); + qs.set(Integer.toString(MOB_4), 0); + qs.set(Integer.toString(MOB_5), 0); + qs.set(Integer.toString(MOB_6), 0); + qs.set(Integer.toString(MOB_7), 0); + qs.set(Integer.toString(MOB_8), 0); + qs.set(Integer.toString(MOB_9), 0); + qs.set(Integer.toString(MOB_10), 0); + break; + } + case "endquest.htm": + { + qs.giveItems(57, 1302720); + qs.giveItems(8067, 1); + qs.addExpAndSp(592767000, 142264); + qs.exitQuest(false, true); + htmltext = "endquest.htm"; + break; + } + } + return htmltext; + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + String htmltext = getNoQuestMsg(player); + final QuestState qs = getQuestState(player, true); + if (qs == null) + { + return htmltext; + } + + switch (qs.getState()) + { + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + case State.CREATED: + { + if (player.getLevel() >= 97) + { + htmltext = "start.htm"; + } + else + { + htmltext = "no_level.htm"; + } + break; + } + case State.STARTED: + { + if (qs.isCond(1)) + { + htmltext = "notcollected.htm"; + } + else if (qs.isCond(2)) + { + htmltext = "collected.htm"; + } + break; + } + } + return htmltext; + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) + { + final QuestState qs = getRandomPartyMemberState(killer, -1, 3, npc); + if ((qs != null) && qs.isStarted() && qs.isCond(1) && Util.checkIfInRange(1500, npc, qs.getPlayer(), false)) + { + int kills = qs.getInt(Integer.toString(MOB_1)); + kills++; + qs.set(Integer.toString(MOB_1), kills); + + final ExQuestNpcLogList log = new ExQuestNpcLogList(getId()); + log.addNpcString(NpcStringId.ELIMINATE_THE_PAGANS_IN_THE_ANTEROOM, kills); + killer.sendPacket(log); + + if (kills >= 30) + { + qs.setCond(2); + } + } + return super.onKill(npc, killer, isSummon); + } +} \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/accepted.htm b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/accepted.htm new file mode 100644 index 0000000000..5db199cf48 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/accepted.htm @@ -0,0 +1,3 @@ +Radzi:
+You need to kill 30 monsters, that's what it is: A soldier of the old aristocracy, the Risen worker Forgotten Sacrifice Offering Ritual, Ritual Sacrifice, Resurrected Temple Knight, who believes Tyrol, Tyrol, Amateur, High Priest of the Tyrol. Come back when you're done! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/collected.htm b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/collected.htm new file mode 100644 index 0000000000..8ae237bca9 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/collected.htm @@ -0,0 +1,4 @@ +Radzi:
+Quickly you're done, I'm happy.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/endquest.htm b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/endquest.htm new file mode 100644 index 0000000000..d6ecec0192 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/endquest.htm @@ -0,0 +1,3 @@ +Radzi:
+I will give you higher authorities coped with all the complexities, here is your reward and a sign of loyalty. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/no_level.htm b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/no_level.htm new file mode 100644 index 0000000000..e08dac5638 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/no_level.htm @@ -0,0 +1,3 @@ +You don't meet level requirements
+(Quest available from level 97 or above.) + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/no_quest.htm b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/no_quest.htm new file mode 100644 index 0000000000..3ca4a53166 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/no_quest.htm @@ -0,0 +1,3 @@ +You don't meet level requirements
+You cannot procceed with this quest until you have completed the Conspiracy Behind Door quest. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/notcollected.htm b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/notcollected.htm new file mode 100644 index 0000000000..5db199cf48 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/notcollected.htm @@ -0,0 +1,3 @@ +Radzi:
+You need to kill 30 monsters, that's what it is: A soldier of the old aristocracy, the Risen worker Forgotten Sacrifice Offering Ritual, Ritual Sacrifice, Resurrected Temple Knight, who believes Tyrol, Tyrol, Amateur, High Priest of the Tyrol. Come back when you're done! + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/start.htm b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/start.htm new file mode 100644 index 0000000000..9e6f8197bb --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10389_TheVoiceOfAuthority/start.htm @@ -0,0 +1,4 @@ +Radzi:
+You are not a bad try, but to get to this temple is not so simple. You have not shown us that you are really true to us. I am giving you a chance to prove their loyalty, are you ready?
+ + \ 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 514f9cc51d..c332c0d8e9 100644 --- a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -168,6 +168,7 @@ import quests.Q00699_GuardianOfTheSkies.Q00699_GuardianOfTheSkies; import quests.Q00700_CursedLife.Q00700_CursedLife; import quests.Q00701_ProofOfExistence.Q00701_ProofOfExistence; import quests.Q00702_ATrapForRevenge.Q00702_ATrapForRevenge; +import quests.Q00757_TriolsMovement.Q00757_TriolsMovement; import quests.Q00901_HowLavasaurusesAreMade.Q00901_HowLavasaurusesAreMade; import quests.Q00902_ReclaimOurEra.Q00902_ReclaimOurEra; import quests.Q00903_TheCallOfAntharas.Q00903_TheCallOfAntharas; @@ -223,6 +224,8 @@ import quests.Q10364_ObligationsOfTheSeeker.Q10364_ObligationsOfTheSeeker; import quests.Q10365_SeekerEscort.Q10365_SeekerEscort; import quests.Q10366_RuinsStatusUpdate.Q10366_RuinsStatusUpdate; import quests.Q10368_RebellionOfMonsters.Q10368_RebellionOfMonsters; +import quests.Q10388_ConspiracyBehindDoor.Q10388_ConspiracyBehindDoor; +import quests.Q10389_TheVoiceOfAuthority.Q10389_TheVoiceOfAuthority; import quests.Q10390_KekropusLetter.Q10390_KekropusLetter; import quests.Q10393_KekropusLetter_AClueCompleted.Q10393_KekropusLetter_AClueCompleted; import quests.Q10397_KekropusLetter_ASuspiciousBadge.Q10397_KekropusLetter_ASuspiciousBadge; @@ -421,6 +424,7 @@ final class QuestMasterHandler Q00700_CursedLife.class, Q00701_ProofOfExistence.class, Q00702_ATrapForRevenge.class, + Q00757_TriolsMovement.class, Q00901_HowLavasaurusesAreMade.class, Q00902_ReclaimOurEra.class, Q00903_TheCallOfAntharas.class, @@ -476,6 +480,8 @@ final class QuestMasterHandler Q10365_SeekerEscort.class, Q10366_RuinsStatusUpdate.class, Q10368_RebellionOfMonsters.class, + Q10388_ConspiracyBehindDoor.class, + Q10389_TheVoiceOfAuthority.class, Q10390_KekropusLetter.class, Q10393_KekropusLetter_AClueCompleted.class, Q10397_KekropusLetter_ASuspiciousBadge.class, diff --git a/trunk/dist/game/data/stats/items/08200-08299.xml b/trunk/dist/game/data/stats/items/08200-08299.xml index 6e3945d179..e9b59ca022 100644 --- a/trunk/dist/game/data/stats/items/08200-08299.xml +++ b/trunk/dist/game/data/stats/items/08200-08299.xml @@ -1100,7 +1100,6 @@ -