diff --git a/trunk/dist/game/data/scripts/quests/Q10758_TheOathOfTheWind/Q10758_TheOathOfTheWind.java b/trunk/dist/game/data/scripts/quests/Q10758_TheOathOfTheWind/Q10758_TheOathOfTheWind.java index 43b992cc0e..3651d4d280 100644 --- a/trunk/dist/game/data/scripts/quests/Q10758_TheOathOfTheWind/Q10758_TheOathOfTheWind.java +++ b/trunk/dist/game/data/scripts/quests/Q10758_TheOathOfTheWind/Q10758_TheOathOfTheWind.java @@ -147,7 +147,7 @@ public class Q10758_TheOathOfTheWind extends Quest 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))) + if ((qs != null) && qs.isStarted() && qs.isCond(1) && Util.checkIfInRange(1500, npc, qs.getPlayer(), false)) { int kills = qs.getInt(Integer.toString(WINDIMA_CLONE)); kills++; diff --git a/trunk/dist/game/data/scripts/quests/Q10761_AnOrcInLove/Q10761_AnOrcInLove.java b/trunk/dist/game/data/scripts/quests/Q10761_AnOrcInLove/Q10761_AnOrcInLove.java index 80ae1ce7f2..0937f69682 100644 --- a/trunk/dist/game/data/scripts/quests/Q10761_AnOrcInLove/Q10761_AnOrcInLove.java +++ b/trunk/dist/game/data/scripts/quests/Q10761_AnOrcInLove/Q10761_AnOrcInLove.java @@ -148,7 +148,7 @@ public class Q10761_AnOrcInLove extends Quest 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))) + if ((qs != null) && qs.isStarted() && qs.isCond(1) && Util.checkIfInRange(1500, npc, qs.getPlayer(), false)) { int kills = qs.getInt(Integer.toString(TUREK_ORC_ELDER)); kills++; diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-01.htm b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-01.htm new file mode 100644 index 0000000000..91e797cd1e --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-01.htm @@ -0,0 +1,6 @@ +A Smitten Orc:
+Welcome back!
+I asked my friends. The shackles are made with strong magic.
+special Orc spells. You can never unbind them without something special.
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-02.htm b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-02.htm new file mode 100644 index 0000000000..0af02c1c28 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-02.htm @@ -0,0 +1,5 @@ +Vorbos:
+But I found ways. You need two keys to unshackle the chains.
+I need to get the first key. Will you help me?
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-03.htm b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-03.htm new file mode 100644 index 0000000000..dd0da62ba1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-03.htm @@ -0,0 +1,7 @@ +A Smitten Orc:
+You are nice! You even cheer for my love. Sniff.
+The first key will be found from killing .
+Someone cruel had locked the key inside the Marionette Spirit and turned it into a puppet under a powerful spell.
+What's even more scary is that he made it impossible to get the key without killing the Marionette Spirit.
+But it's the only choice we have to save the spirits. Go kill and get me
+ \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-04.html b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-04.html new file mode 100644 index 0000000000..5c68921e64 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-04.html @@ -0,0 +1,5 @@ +Vorbos:
+You have the key? You are truly great!
+Thank you! Thank you! I'm closer to helping her now. Joy!
+ + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-05.html b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-05.html new file mode 100644 index 0000000000..d087a69c28 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-05.html @@ -0,0 +1,4 @@ +Vorbos:
+I will come back to you again after finding out where the other key is. Help me again then.
+I want to see her again...though she will never like me back. + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-06.html b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-06.html new file mode 100644 index 0000000000..dd0da62ba1 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-06.html @@ -0,0 +1,7 @@ +A Smitten Orc:
+You are nice! You even cheer for my love. Sniff.
+The first key will be found from killing .
+Someone cruel had locked the key inside the Marionette Spirit and turned it into a puppet under a powerful spell.
+What's even more scary is that he made it impossible to get the key without killing the Marionette Spirit.
+But it's the only choice we have to save the spirits. Go kill and get me
+ \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-restriction.html b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-restriction.html new file mode 100644 index 0000000000..c78606eb7d --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/33966-restriction.html @@ -0,0 +1,3 @@ +Vorbos:
+(Quest only available to Ertheia characters Lv. 34 or above who have completed the quest "AnOrcInLove.") + \ No newline at end of file diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/Q10762_MarionetteSpirit.java b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/Q10762_MarionetteSpirit.java new file mode 100644 index 0000000000..4a35c0983e --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/Q10762_MarionetteSpirit.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.Q10762_MarionetteSpirit; + +import com.l2jmobius.gameserver.enums.Race; +import com.l2jmobius.gameserver.model.actor.L2Npc; +import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance; +import com.l2jmobius.gameserver.model.holders.ItemHolder; +import com.l2jmobius.gameserver.model.quest.Quest; +import com.l2jmobius.gameserver.model.quest.QuestState; +import com.l2jmobius.gameserver.model.quest.State; +import com.l2jmobius.gameserver.network.serverpackets.ExQuestNpcLogList; +import com.l2jmobius.gameserver.util.Util; + +import quests.Q10761_AnOrcInLove.Q10761_AnOrcInLove; + +/** + * Marionette Spirit (10762) + * @author Stayway + */ +public class Q10762_MarionetteSpirit extends Quest +{ + // NPC + private static final int VORBOS = 33966; + // Monster + private static final int MARIONETTE_SPIRIT = 23418; + // Items + private static final ItemHolder GUILD_COIN = new ItemHolder(37045, 5); + private static final int MAGIC_CHAIN_KEY_1 = 39488; + // Rewards + private static final int EXP_REWARD = 896996; + private static final int SP_REWARD = 215; + // Other + private static final int MIN_LEVEL = 34; + + public Q10762_MarionetteSpirit() + { + super(10762, Q10762_MarionetteSpirit.class.getSimpleName(), "Marionette Spirit"); + addStartNpc(VORBOS); + addTalkId(VORBOS); + addKillId(MARIONETTE_SPIRIT); + registerQuestItems(MAGIC_CHAIN_KEY_1); + addCondRace(Race.ERTHEIA, "noErtheia.html"); + addCondMinLevel(MIN_LEVEL, "no_level.htm"); + addCondCompletedQuest(Q10761_AnOrcInLove.class.getSimpleName(), "restriction.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 "33963-02.htm": + { + htmltext = event; + break; + } + case "33966-03.htm": // start the quest + { + qs.startQuest(); + qs.set(Integer.toString(MARIONETTE_SPIRIT), 0); + htmltext = event; + break; + } + + case "33966-05.html": + { + if (qs.isCond(2)) + { + giveItems(player, GUILD_COIN); + addExpAndSp(player, EXP_REWARD, SP_REWARD); + qs.unset(Integer.toString(MARIONETTE_SPIRIT)); + qs.exitQuest(false, true); + htmltext = event; + } + break; + } + } + return htmltext; + } + + @Override + public String onTalk(L2Npc npc, L2PcInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = null; + switch (qs.getState()) + { + case State.CREATED: + { + if (player.getRace() != Race.ERTHEIA) + { + htmltext = "noErtheia.html"; + } + else + { + htmltext = "33966-01.htm"; + } + break; + } + + case State.STARTED: + { + if (qs.isCond(1)) + { + htmltext = "33966-06.html"; + } + else if (qs.isCond(2)) + { + htmltext = "33966-04.html"; + } + break; + } + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + 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)) + { + giveItemRandomly(killer, npc, MAGIC_CHAIN_KEY_1, 1, 1, 1.0, true); + int kills = qs.getInt(Integer.toString(MARIONETTE_SPIRIT)); + kills++; + qs.set(Integer.toString(MARIONETTE_SPIRIT), kills); + + final ExQuestNpcLogList log = new ExQuestNpcLogList(getId()); + log.addNpc(MARIONETTE_SPIRIT, kills); + killer.sendPacket(log); + + if (kills >= 1) + { + qs.setCond(2); + } + } + return super.onKill(npc, killer, isSummon); + } +} diff --git a/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/no_level.htm b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/no_level.htm new file mode 100644 index 0000000000..8633bbc736 --- /dev/null +++ b/trunk/dist/game/data/scripts/quests/Q10762_MarionetteSpirit/no_level.htm @@ -0,0 +1,3 @@ +You don't meet level requirements
+(Quest available from level 34 and above) + \ 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 5a0067af98..b3ab188d29 100644 --- a/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/trunk/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -258,6 +258,7 @@ import quests.Q10757_QuietingTheStorm.Q10757_QuietingTheStorm; import quests.Q10758_TheOathOfTheWind.Q10758_TheOathOfTheWind; import quests.Q10760_LettersFromTheQueen_OrcBarracs.Q10760_LettersFromTheQueen_OrcBarracs; import quests.Q10761_AnOrcInLove.Q10761_AnOrcInLove; +import quests.Q10762_MarionetteSpirit.Q10762_MarionetteSpirit; /** * @author NosBit @@ -506,7 +507,8 @@ public class QuestMasterHandler Q10757_QuietingTheStorm.class, Q10758_TheOathOfTheWind.class, Q10760_LettersFromTheQueen_OrcBarracs.class, - Q10761_AnOrcInLove.class + Q10761_AnOrcInLove.class, + Q10762_MarionetteSpirit.class }; public static void main(String[] args)