/* * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If * not, see <http://www.gnu.org/licenses/>. */ package silentium.scripts.quests; import silentium.gameserver.model.actor.L2Npc; import silentium.gameserver.model.actor.instance.L2PcInstance; import silentium.gameserver.model.quest.Quest; import silentium.gameserver.model.quest.QuestState; import silentium.gameserver.scripting.ScriptFile; public class Q241_PossessorOfAPreciousSoul extends Quest implements ScriptFile { private static final String qn = "Q241_PossessorOfAPreciousSoul"; // NPCs private static final int TALIEN = 31739; private static final int GABRIELLE = 30753; private static final int GILMORE = 30754; private static final int KANTABILON = 31042; private static final int STEDMIEL = 30692; private static final int VIRGIL = 31742; private static final int OGMAR = 31744; private static final int RAHORAKTI = 31336; private static final int KASSANDRA = 31743; private static final int CARADINE = 31740; private static final int NOEL = 31272; // Monsters private static final int BARAHAM = 27113; private static final int MALRUK_SUCCUBUS = 20244; private static final int MALRUK_SUCCUBUS_TUREN = 20245; private static final int SPLINTER_STAKATO = 21508; private static final int SPLINTER_STAKATO_WALKER = 21509; private static final int SPLINTER_STAKATO_SOLDIER = 21510; private static final int SPLINTER_STAKATO_DRONE1 = 21511; private static final int SPLINTER_STAKATO_DRONE2 = 21512; // Items private static final int LEGEND_OF_SEVENTEEN = 7587; private static final int MALRUK_SUCCUBUS_CLAW = 7597; private static final int ECHO_CRYSTAL = 7589; private static final int POETRY_BOOK = 7588; private static final int CRIMSON_MOSS = 7598; private static final int RAHORAKTIS_MEDICINE = 7599; private static final int LUNARGENT = 6029; private static final int HELLFIRE_OIL = 6033; private static final int VIRGILS_LETTER = 7677; public Q241_PossessorOfAPreciousSoul(final int scriptId, final String name, final String dname, final String path) { super(scriptId, name, dname, path); questItemIds = new int[] { LEGEND_OF_SEVENTEEN, MALRUK_SUCCUBUS_CLAW, ECHO_CRYSTAL, POETRY_BOOK, CRIMSON_MOSS, RAHORAKTIS_MEDICINE }; addStartNpc(TALIEN); addTalkId(TALIEN, GABRIELLE, GILMORE, KANTABILON, STEDMIEL, VIRGIL, OGMAR, RAHORAKTI, KASSANDRA, CARADINE, NOEL); addKillId(BARAHAM, MALRUK_SUCCUBUS, MALRUK_SUCCUBUS_TUREN, SPLINTER_STAKATO, SPLINTER_STAKATO_WALKER, SPLINTER_STAKATO_SOLDIER, SPLINTER_STAKATO_DRONE1, SPLINTER_STAKATO_DRONE2); } public static void onLoad() { new Q241_PossessorOfAPreciousSoul(241, "Q241_PossessorOfAPreciousSoul", "Possessor Of A Precious Soul 1", "quests"); } @Override public String onAdvEvent(final String event, final L2Npc npc, final L2PcInstance player) { String htmltext = event; final QuestState st = player.getQuestState(qn); if (st == null) return htmltext; // Talien if ("31739-03.htm".equalsIgnoreCase(event)) { st.set("cond", "1"); st.setState(QuestState.STARTED); st.playSound(QuestState.SOUND_ACCEPT); } else if ("31739-07.htm".equalsIgnoreCase(event)) { st.set("cond", "5"); st.takeItems(LEGEND_OF_SEVENTEEN, 1); st.playSound(QuestState.SOUND_MIDDLE); } else if ("31739-10.htm".equalsIgnoreCase(event)) { st.set("cond", "9"); st.takeItems(ECHO_CRYSTAL, 1); st.playSound(QuestState.SOUND_MIDDLE); } else if ("31739-13.htm".equalsIgnoreCase(event)) { st.set("cond", "11"); st.takeItems(POETRY_BOOK, 1); st.playSound(QuestState.SOUND_MIDDLE); } // Gabrielle else if ("30753-02.htm".equalsIgnoreCase(event)) { st.set("cond", "2"); st.playSound(QuestState.SOUND_MIDDLE); } // Gilmore else if ("30754-02.htm".equalsIgnoreCase(event)) { st.set("cond", "3"); st.playSound(QuestState.SOUND_MIDDLE); } // Kantabilon else if ("31042-02.htm".equalsIgnoreCase(event)) { st.set("cond", "6"); st.playSound(QuestState.SOUND_MIDDLE); } else if ("31042-05.htm".equalsIgnoreCase(event)) { st.set("cond", "8"); st.takeItems(MALRUK_SUCCUBUS_CLAW, 10); st.giveItems(ECHO_CRYSTAL, 1); st.playSound(QuestState.SOUND_MIDDLE); } // Stedmiel else if ("30692-02.htm".equalsIgnoreCase(event)) { st.set("cond", "10"); st.giveItems(POETRY_BOOK, 1); st.playSound(QuestState.SOUND_MIDDLE); } // Virgil else if ("31742-02.htm".equalsIgnoreCase(event)) { st.set("cond", "12"); st.playSound(QuestState.SOUND_MIDDLE); } else if ("31742-05.htm".equalsIgnoreCase(event)) { st.set("cond", "18"); st.playSound(QuestState.SOUND_MIDDLE); } // Ogmar else if ("31744-02.htm".equalsIgnoreCase(event)) { st.set("cond", "13"); st.playSound(QuestState.SOUND_MIDDLE); } // Rahorakti else if ("31336-02.htm".equalsIgnoreCase(event)) { st.set("cond", "14"); st.playSound(QuestState.SOUND_MIDDLE); } else if ("31336-05.htm".equalsIgnoreCase(event)) { st.set("cond", "16"); st.takeItems(CRIMSON_MOSS, 5); st.giveItems(RAHORAKTIS_MEDICINE, 1); st.playSound(QuestState.SOUND_MIDDLE); } // Kassandra else if ("31743-02.htm".equalsIgnoreCase(event)) { st.set("cond", "17"); st.takeItems(RAHORAKTIS_MEDICINE, 1); st.playSound(QuestState.SOUND_MIDDLE); } // Caradine else if ("31740-02.htm".equalsIgnoreCase(event)) { st.set("cond", "19"); st.playSound(QuestState.SOUND_MIDDLE); } else if ("31740-05.htm".equalsIgnoreCase(event)) { st.giveItems(VIRGILS_LETTER, 1); st.addExpAndSp(263043, 0); st.playSound(QuestState.SOUND_FINISH); st.exitQuest(false); } // Noel else if ("31272-02.htm".equalsIgnoreCase(event)) { st.set("cond", "20"); st.playSound(QuestState.SOUND_MIDDLE); } else if ("31272-05.htm".equalsIgnoreCase(event)) { if (st.hasQuestItems(HELLFIRE_OIL) && st.getQuestItemsCount(LUNARGENT) >= 5) { st.takeItems(LUNARGENT, 5); st.takeItems(HELLFIRE_OIL, 1); st.set("cond", "21"); st.playSound(QuestState.SOUND_MIDDLE); } else htmltext = "31272-07.htm"; } return htmltext; } @Override public String onTalk(final L2Npc npc, final L2PcInstance player) { String htmltext = getNoQuestMsg(); final QuestState st = player.getQuestState(qn); if (st == null) return htmltext; switch (st.getState()) { case QuestState.CREATED: if (!player.isSubClassActive() || player.getLevel() < 50) { htmltext = "31739-02.htm"; st.exitQuest(true); } else htmltext = "31739-01.htm"; break; case QuestState.STARTED: if (!player.isSubClassActive()) break; final int cond = st.getInt("cond"); switch (npc.getNpcId()) { case TALIEN: if (cond == 1) htmltext = "31739-04.htm"; else if (cond == 2 || cond == 3) htmltext = "31739-05.htm"; else if (cond == 4) htmltext = "31739-06.htm"; else if (cond == 5) htmltext = "31739-08.htm"; else if (cond == 8) htmltext = "31739-09.htm"; else if (cond == 9) htmltext = "31739-11.htm"; else if (cond == 10) htmltext = "31739-12.htm"; else if (cond == 11) htmltext = "31739-14.htm"; break; case GABRIELLE: if (cond == 1) htmltext = "30753-01.htm"; else if (cond == 2) htmltext = "30753-03.htm"; break; case GILMORE: if (cond == 2) htmltext = "30754-01.htm"; else if (cond == 3) htmltext = "30754-03.htm"; break; case KANTABILON: if (cond == 5) htmltext = "31042-01.htm"; else if (cond == 6) htmltext = "31042-03.htm"; else if (cond == 7) htmltext = "31042-04.htm"; else if (cond == 8) htmltext = "31042-06.htm"; break; case STEDMIEL: if (cond == 9) htmltext = "30692-01.htm"; else if (cond == 10) htmltext = "30692-03.htm"; break; case VIRGIL: if (cond == 11) htmltext = "31742-01.htm"; else if (cond == 12) htmltext = "31742-03.htm"; else if (cond == 17) htmltext = "31742-04.htm"; else if (cond == 18) htmltext = "31742-06.htm"; break; case OGMAR: if (cond == 12) htmltext = "31744-01.htm"; else if (cond == 13) htmltext = "31744-03.htm"; break; case RAHORAKTI: if (cond == 13) htmltext = "31336-01.htm"; else if (cond == 14) htmltext = "31336-03.htm"; else if (cond == 15) htmltext = "31336-04.htm"; else if (cond == 16) htmltext = "31336-06.htm"; break; case KASSANDRA: if (cond == 16) htmltext = "31743-01.htm"; else if (cond == 17) htmltext = "31743-03.htm"; break; case CARADINE: if (cond == 18) htmltext = "31740-01.htm"; else if (cond == 19) htmltext = "31740-03.htm"; else if (cond == 21) htmltext = "31740-04.htm"; break; case NOEL: if (cond == 19) htmltext = "31272-01.htm"; else if (cond == 20) { htmltext = st.hasQuestItems(HELLFIRE_OIL) && st.getQuestItemsCount(LUNARGENT) >= 5 ? "31272-04.htm" : "31272-03.htm"; } else if (cond == 21) htmltext = "31272-06.htm"; break; } break; case QuestState.COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public String onKill(final L2Npc npc, final L2PcInstance player, final boolean isPet) { final QuestState st = player.getQuestState(qn); if (st == null || !st.isStarted() || !player.isSubClassActive()) return null; switch (npc.getNpcId()) { case BARAHAM: if (checkPlayerCondition(player, npc, "cond", "3")) { st.set("cond", "4"); st.giveItems(LEGEND_OF_SEVENTEEN, 1); st.playSound(QuestState.SOUND_MIDDLE); } break; case MALRUK_SUCCUBUS: case MALRUK_SUCCUBUS_TUREN: if (checkPlayerCondition(player, npc, "cond", "6")) if (st.dropQuestItems(MALRUK_SUCCUBUS_CLAW, 1, 10, 200000)) st.set("cond", "7"); break; case SPLINTER_STAKATO: case SPLINTER_STAKATO_WALKER: case SPLINTER_STAKATO_SOLDIER: case SPLINTER_STAKATO_DRONE1: case SPLINTER_STAKATO_DRONE2: if (checkPlayerCondition(player, npc, "cond", "14")) if (st.dropQuestItems(CRIMSON_MOSS, 1, 5, 25000)) st.set("cond", "15"); break; } return null; } }