diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt index 1f3dddca7e..3e3801314c 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/MissingQuests.txt @@ -131,7 +131,6 @@ 10874 Against the New Enemy 10875 For Reputation 10877 Break Through Crisis -10880 The Last One Standing 10881 For the Pride 10882 Victory Collection 10883 Immortal Honor \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html new file mode 100644 index 0000000000..aead4eeed0 --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html @@ -0,0 +1,8 @@ +Ferin:
+Are you done?
+You've done great.
+choose one of the awards.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html new file mode 100644 index 0000000000..44402191a8 --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html @@ -0,0 +1,3 @@ +Ferin:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm new file mode 100644 index 0000000000..efeb615802 --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm @@ -0,0 +1,4 @@ +Master Cyphona:
+I do not believe our paths are meant to cross here. Perhaps later down the road.
+(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..) + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm new file mode 100644 index 0000000000..1d8f4f9988 --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+Fate doesn't just happen, nor can it be cut off just because one wants to.
+Meeting Lionel and taking part in giving out this test is all fate.
+And you must have come here because you will be passing it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm new file mode 100644 index 0000000000..49167a50d3 --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+The battle with the monsters!
+to gain new strength, you need to hunt for monsters.
+and then you will receive my certificate.
+ + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm new file mode 100644 index 0000000000..873a447be9 --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+What do you think of the monsters of the Material Realm? Those monsters are the subject to our blades, due to our long history in battle.
+I know of some creatures who were turned into monsters as a result of experiments. And there are those who've lost their precious ones to those monsters. I know their sadness and anger. But we don't always remember them when we defeat those monsters.
+I believe we must always remember the sadness and anger that they hold within. Don't you agree?
+ + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm new file mode 100644 index 0000000000..c8641dac69 --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm @@ -0,0 +1,5 @@ +Master Cyphona:
+I'm about to give you a very long test. In that process, I want you to remember the sadness and anger of many.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+In that long process, never forget the sadness that derives from long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html new file mode 100644 index 0000000000..17a9a5585f --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html @@ -0,0 +1,4 @@ +Master Cyphona:
+It won't be easy bringing back proof of the monsters that you've defeated. But once you can do that, I'll acknowledge your strength.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+ \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java new file mode 100644 index 0000000000..7752ddbfca --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java @@ -0,0 +1,303 @@ +/* + * 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.Q10880_TheLastOneStanding; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.Faction; +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.model.quest.State; + +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; + +/** + * The Last One Standing (10880) + * @URL https://l2wiki.com/The_Last_One_Standing + * @author Dmitri + */ +public class Q10880_TheLastOneStanding extends Quest +{ + // NPCs + private static final int CYPHONA = 34055; + private static final int FERIN = 34054; + // Items + private static final int MASTER_CYPHONA_CERTIFICATE = 47835; + private static final int PROOF_OF_STRENGTH = 47843; + private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1); + // Monsters + private static final int[] MONSTERS = + { + // The Enchanted Valley + 23566, // Nymph Rose + 23567, // Nymph Rose + 23568, // Nymph Lily + 23569, // Nymph Lily + 23570, // Nymph Tulip + 23571, // Nymph Tulip + 23572, // Nymph Cosmos + 23573, // Nymph Cosmos + 23578, // Nymph Guardian + // Garden of Spirits + 23541, // Kerberos Lager + 23550, // Kerberos Lager (night) + 23542, // Kerberos Fort + 23551, // Kerberos Fort (night) + 23543, // Kerberos Nero + 23552, // Kerberos Nero (night) + 23544, // Fury Sylph Barrena + 23553, // Fury Sylph Barrena (night) + 23546, // Fury Sylph Temptress + 23555, // Fury Sylph Temptress (night) + 23547, // Fury Sylph Purka + 23556, // Fury Sylph Purka (night) + 23545, // Fury Kerberos Leger + 23557, // Fury Kerberos Leger (night) + 23549, // Fury Kerberos Nero + 23558, // Fury Kerberos Nero (night) + // Atelia Fortress + 23505, // Fortress Raider 101 + 23506, // Fortress Guardian Captain 101 + 23537, // Atelia Elite Captain Atelia Infuser 102 + 23538, // Atelia High Priest Atelia Infuser 103 + 23536, // Atelia High Priest Kelbim's 102 + 23535, // Atelia Archon Kelbim's 102 + 23532, // Atelia Elite Captain Kelbim's 101 + 23530, // Fortress Guardian Captain Kelbim's 101 + 23507, // Atelia Passionate Soldier 101 + 23508, // Atelia Elite Captain 101 + 23509, // Fortress Dark Wizard 102 + 23510, // Atelia Flame Master 102 + 23511, // Fortress Archon 102 + 23512, // Atelia High Priest 102 + // Shadow of the Mother Tree + 24117, // Crystal Reep + 24118, // Crystal Reep + 24119, // Crystal Needle + 24120, // Crystal Needle + 24121, // Treant Blossom + 24122, // Treant Blossom + 24123, // Flush Teasle + 24124, // Flush Teasle + 24125, // Creeper Rampike + 24126, // Creeper Rampike + 24139, // Reep Child + 24140, // Needle Child + 24141, // Blossom Child + 24142 // Teasle Child + }; + + // Misc + private static final int MIN_LEVEL = 104; + + public Q10880_TheLastOneStanding() + { + super(10880); + addStartNpc(CYPHONA); + addTalkId(CYPHONA, FERIN); + addKillId(MONSTERS); + addCondMinLevel(MIN_LEVEL, "34055-00.htm"); + addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "34055-00.htm"); + registerQuestItems(PROOF_OF_STRENGTH); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + + switch (event) + { + case "34055-02.htm": + case "34055-03.htm": + { + htmltext = event; + break; + } + case "34055-04.htm": + { + if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)) + { + qs.startQuest(); + htmltext = event; + } + break; + } + case "34054-07.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.MOTHER_TREE_GUARDIANS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07a.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.UNWORLDLY_VISITORS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07b.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.KINGDOM_ROYAL_GUARDS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + switch (qs.getState()) + { + case State.CREATED: + { + if ((npc.getId() == CYPHONA) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))) + { + htmltext = "34055-01.htm"; + } + else + { + htmltext = "noItem.html"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case CYPHONA: + { + if (qs.isCond(1)) + { + htmltext = "34055-05.html"; + } + break; + } + case FERIN: + { + if (qs.isCond(2)) + { + htmltext = "34054-06.html"; + } + break; + } + } + break; + } + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + executeForEachPlayer(player, npc, isSummon, true, false); + return super.onKill(npc, player, isSummon); + } + + @Override + public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(MONSTERS, npc.getId())) + { + giveItems(player, PROOF_OF_STRENGTH, 1); + playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + + if (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= 10000) + { + qs.setCond(2, true); + } + } + } +} \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html new file mode 100644 index 0000000000..4975fd264a --- /dev/null +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html @@ -0,0 +1,4 @@ +Verdure Elder Elikia:
+I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.
+(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.) + \ No newline at end of file diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java index 9a0f86378e..a9da7997ed 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -493,6 +493,7 @@ import quests.Q10857_SecretTeleport.Q10857_SecretTeleport; import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel; import quests.Q10876_LeadersGrace.Q10876_LeadersGrace; import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; +import quests.Q10880_TheLastOneStanding.Q10880_TheLastOneStanding; import quests.not_done.Q00504_CompetitionForTheBanditStronghold; import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts; import quests.not_done.Q00667_HowToCoverShilensEyes; @@ -544,7 +545,6 @@ import quests.not_done.Q10859_OwnTheEarthAndTheHeavens; import quests.not_done.Q10874_AgainstTheNewEnemy; import quests.not_done.Q10875_ForReputation; import quests.not_done.Q10877_BreakThroughCrisis; -import quests.not_done.Q10880_TheLastOneStanding; import quests.not_done.Q10881_ForThePride; import quests.not_done.Q10882_VictoryCollection; import quests.not_done.Q10883_ImmortalHonor; @@ -1083,7 +1083,7 @@ public class QuestMasterHandler Q10876_LeadersGrace.class, Q10877_BreakThroughCrisis.class, // TODO: Not done. Q10879_ExaltedGuideToPower.class, - Q10880_TheLastOneStanding.class, // TODO: Not done. + Q10880_TheLastOneStanding.class, Q10881_ForThePride.class, // TODO: Not done. Q10882_VictoryCollection.class, // TODO: Not done. Q10883_ImmortalHonor.class, // TODO: Not done. diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java deleted file mode 100644 index b1e231e5b3..0000000000 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q10880_TheLastOneStanding extends Quest -{ - private static final int START_NPC = 34055; - - public Q10880_TheLastOneStanding() - { - super(10880); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt index 11a59b44b3..a0248253f5 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/MissingQuests.txt @@ -150,7 +150,6 @@ 10874 Against the New Enemy 10875 For Reputation 10877 Break Through Crisis -10880 The Last One Standing 10881 For the Pride 10882 Victory Collection 10883 Immortal Honor \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html new file mode 100644 index 0000000000..aead4eeed0 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html @@ -0,0 +1,8 @@ +Ferin:
+Are you done?
+You've done great.
+choose one of the awards.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html new file mode 100644 index 0000000000..44402191a8 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html @@ -0,0 +1,3 @@ +Ferin:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm new file mode 100644 index 0000000000..efeb615802 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm @@ -0,0 +1,4 @@ +Master Cyphona:
+I do not believe our paths are meant to cross here. Perhaps later down the road.
+(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..) + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm new file mode 100644 index 0000000000..1d8f4f9988 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+Fate doesn't just happen, nor can it be cut off just because one wants to.
+Meeting Lionel and taking part in giving out this test is all fate.
+And you must have come here because you will be passing it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm new file mode 100644 index 0000000000..49167a50d3 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+The battle with the monsters!
+to gain new strength, you need to hunt for monsters.
+and then you will receive my certificate.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm new file mode 100644 index 0000000000..873a447be9 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+What do you think of the monsters of the Material Realm? Those monsters are the subject to our blades, due to our long history in battle.
+I know of some creatures who were turned into monsters as a result of experiments. And there are those who've lost their precious ones to those monsters. I know their sadness and anger. But we don't always remember them when we defeat those monsters.
+I believe we must always remember the sadness and anger that they hold within. Don't you agree?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm new file mode 100644 index 0000000000..c8641dac69 --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm @@ -0,0 +1,5 @@ +Master Cyphona:
+I'm about to give you a very long test. In that process, I want you to remember the sadness and anger of many.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+In that long process, never forget the sadness that derives from long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html new file mode 100644 index 0000000000..17a9a5585f --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html @@ -0,0 +1,4 @@ +Master Cyphona:
+It won't be easy bringing back proof of the monsters that you've defeated. But once you can do that, I'll acknowledge your strength.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java new file mode 100644 index 0000000000..7752ddbfca --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java @@ -0,0 +1,303 @@ +/* + * 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.Q10880_TheLastOneStanding; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.Faction; +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.model.quest.State; + +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; + +/** + * The Last One Standing (10880) + * @URL https://l2wiki.com/The_Last_One_Standing + * @author Dmitri + */ +public class Q10880_TheLastOneStanding extends Quest +{ + // NPCs + private static final int CYPHONA = 34055; + private static final int FERIN = 34054; + // Items + private static final int MASTER_CYPHONA_CERTIFICATE = 47835; + private static final int PROOF_OF_STRENGTH = 47843; + private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1); + // Monsters + private static final int[] MONSTERS = + { + // The Enchanted Valley + 23566, // Nymph Rose + 23567, // Nymph Rose + 23568, // Nymph Lily + 23569, // Nymph Lily + 23570, // Nymph Tulip + 23571, // Nymph Tulip + 23572, // Nymph Cosmos + 23573, // Nymph Cosmos + 23578, // Nymph Guardian + // Garden of Spirits + 23541, // Kerberos Lager + 23550, // Kerberos Lager (night) + 23542, // Kerberos Fort + 23551, // Kerberos Fort (night) + 23543, // Kerberos Nero + 23552, // Kerberos Nero (night) + 23544, // Fury Sylph Barrena + 23553, // Fury Sylph Barrena (night) + 23546, // Fury Sylph Temptress + 23555, // Fury Sylph Temptress (night) + 23547, // Fury Sylph Purka + 23556, // Fury Sylph Purka (night) + 23545, // Fury Kerberos Leger + 23557, // Fury Kerberos Leger (night) + 23549, // Fury Kerberos Nero + 23558, // Fury Kerberos Nero (night) + // Atelia Fortress + 23505, // Fortress Raider 101 + 23506, // Fortress Guardian Captain 101 + 23537, // Atelia Elite Captain Atelia Infuser 102 + 23538, // Atelia High Priest Atelia Infuser 103 + 23536, // Atelia High Priest Kelbim's 102 + 23535, // Atelia Archon Kelbim's 102 + 23532, // Atelia Elite Captain Kelbim's 101 + 23530, // Fortress Guardian Captain Kelbim's 101 + 23507, // Atelia Passionate Soldier 101 + 23508, // Atelia Elite Captain 101 + 23509, // Fortress Dark Wizard 102 + 23510, // Atelia Flame Master 102 + 23511, // Fortress Archon 102 + 23512, // Atelia High Priest 102 + // Shadow of the Mother Tree + 24117, // Crystal Reep + 24118, // Crystal Reep + 24119, // Crystal Needle + 24120, // Crystal Needle + 24121, // Treant Blossom + 24122, // Treant Blossom + 24123, // Flush Teasle + 24124, // Flush Teasle + 24125, // Creeper Rampike + 24126, // Creeper Rampike + 24139, // Reep Child + 24140, // Needle Child + 24141, // Blossom Child + 24142 // Teasle Child + }; + + // Misc + private static final int MIN_LEVEL = 104; + + public Q10880_TheLastOneStanding() + { + super(10880); + addStartNpc(CYPHONA); + addTalkId(CYPHONA, FERIN); + addKillId(MONSTERS); + addCondMinLevel(MIN_LEVEL, "34055-00.htm"); + addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "34055-00.htm"); + registerQuestItems(PROOF_OF_STRENGTH); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + + switch (event) + { + case "34055-02.htm": + case "34055-03.htm": + { + htmltext = event; + break; + } + case "34055-04.htm": + { + if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)) + { + qs.startQuest(); + htmltext = event; + } + break; + } + case "34054-07.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.MOTHER_TREE_GUARDIANS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07a.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.UNWORLDLY_VISITORS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07b.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.KINGDOM_ROYAL_GUARDS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + switch (qs.getState()) + { + case State.CREATED: + { + if ((npc.getId() == CYPHONA) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))) + { + htmltext = "34055-01.htm"; + } + else + { + htmltext = "noItem.html"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case CYPHONA: + { + if (qs.isCond(1)) + { + htmltext = "34055-05.html"; + } + break; + } + case FERIN: + { + if (qs.isCond(2)) + { + htmltext = "34054-06.html"; + } + break; + } + } + break; + } + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + executeForEachPlayer(player, npc, isSummon, true, false); + return super.onKill(npc, player, isSummon); + } + + @Override + public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(MONSTERS, npc.getId())) + { + giveItems(player, PROOF_OF_STRENGTH, 1); + playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + + if (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= 10000) + { + qs.setCond(2, true); + } + } + } +} \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html new file mode 100644 index 0000000000..4975fd264a --- /dev/null +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html @@ -0,0 +1,4 @@ +Verdure Elder Elikia:
+I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.
+(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.) + \ No newline at end of file diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java index 72d6e396ae..a74e5991b7 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -527,6 +527,7 @@ import quests.Q10857_SecretTeleport.Q10857_SecretTeleport; import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel; import quests.Q10876_LeadersGrace.Q10876_LeadersGrace; import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; +import quests.Q10880_TheLastOneStanding.Q10880_TheLastOneStanding; import quests.not_done.Q00504_CompetitionForTheBanditStronghold; import quests.not_done.Q00575_SpecialMissionFortuna; import quests.not_done.Q00655_AGrandPlanForTamingWildBeasts; @@ -596,7 +597,6 @@ import quests.not_done.Q10859_OwnTheEarthAndTheHeavens; import quests.not_done.Q10874_AgainstTheNewEnemy; import quests.not_done.Q10875_ForReputation; import quests.not_done.Q10877_BreakThroughCrisis; -import quests.not_done.Q10880_TheLastOneStanding; import quests.not_done.Q10881_ForThePride; import quests.not_done.Q10882_VictoryCollection; import quests.not_done.Q10883_ImmortalHonor; @@ -1187,7 +1187,7 @@ public class QuestMasterHandler Q10876_LeadersGrace.class, Q10877_BreakThroughCrisis.class, // TODO: Not done. Q10879_ExaltedGuideToPower.class, - Q10880_TheLastOneStanding.class, // TODO: Not done. + Q10880_TheLastOneStanding.class, Q10881_ForThePride.class, // TODO: Not done. Q10882_VictoryCollection.class, // TODO: Not done. Q10883_ImmortalHonor.class, // TODO: Not done. diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java deleted file mode 100644 index b1e231e5b3..0000000000 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q10880_TheLastOneStanding extends Quest -{ - private static final int START_NPC = 34055; - - public Q10880_TheLastOneStanding() - { - super(10880); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt index 8f9a09f3c3..9fcd7da31c 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/MissingQuests.txt @@ -159,7 +159,6 @@ 10874 Against the New Enemy 10875 For Reputation 10877 Break Through Crisis -10880 The Last One Standing 10881 For the Pride 10882 Victory Collection 10883 Immortal Honor diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html new file mode 100644 index 0000000000..aead4eeed0 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html @@ -0,0 +1,8 @@ +Ferin:
+Are you done?
+You've done great.
+choose one of the awards.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html new file mode 100644 index 0000000000..44402191a8 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html @@ -0,0 +1,3 @@ +Ferin:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm new file mode 100644 index 0000000000..efeb615802 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm @@ -0,0 +1,4 @@ +Master Cyphona:
+I do not believe our paths are meant to cross here. Perhaps later down the road.
+(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..) + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm new file mode 100644 index 0000000000..1d8f4f9988 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+Fate doesn't just happen, nor can it be cut off just because one wants to.
+Meeting Lionel and taking part in giving out this test is all fate.
+And you must have come here because you will be passing it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm new file mode 100644 index 0000000000..49167a50d3 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+The battle with the monsters!
+to gain new strength, you need to hunt for monsters.
+and then you will receive my certificate.
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm new file mode 100644 index 0000000000..873a447be9 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+What do you think of the monsters of the Material Realm? Those monsters are the subject to our blades, due to our long history in battle.
+I know of some creatures who were turned into monsters as a result of experiments. And there are those who've lost their precious ones to those monsters. I know their sadness and anger. But we don't always remember them when we defeat those monsters.
+I believe we must always remember the sadness and anger that they hold within. Don't you agree?
+ + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm new file mode 100644 index 0000000000..c8641dac69 --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm @@ -0,0 +1,5 @@ +Master Cyphona:
+I'm about to give you a very long test. In that process, I want you to remember the sadness and anger of many.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+In that long process, never forget the sadness that derives from long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html new file mode 100644 index 0000000000..17a9a5585f --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html @@ -0,0 +1,4 @@ +Master Cyphona:
+It won't be easy bringing back proof of the monsters that you've defeated. But once you can do that, I'll acknowledge your strength.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+ \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java new file mode 100644 index 0000000000..7752ddbfca --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java @@ -0,0 +1,303 @@ +/* + * 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.Q10880_TheLastOneStanding; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.Faction; +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.model.quest.State; + +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; + +/** + * The Last One Standing (10880) + * @URL https://l2wiki.com/The_Last_One_Standing + * @author Dmitri + */ +public class Q10880_TheLastOneStanding extends Quest +{ + // NPCs + private static final int CYPHONA = 34055; + private static final int FERIN = 34054; + // Items + private static final int MASTER_CYPHONA_CERTIFICATE = 47835; + private static final int PROOF_OF_STRENGTH = 47843; + private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1); + // Monsters + private static final int[] MONSTERS = + { + // The Enchanted Valley + 23566, // Nymph Rose + 23567, // Nymph Rose + 23568, // Nymph Lily + 23569, // Nymph Lily + 23570, // Nymph Tulip + 23571, // Nymph Tulip + 23572, // Nymph Cosmos + 23573, // Nymph Cosmos + 23578, // Nymph Guardian + // Garden of Spirits + 23541, // Kerberos Lager + 23550, // Kerberos Lager (night) + 23542, // Kerberos Fort + 23551, // Kerberos Fort (night) + 23543, // Kerberos Nero + 23552, // Kerberos Nero (night) + 23544, // Fury Sylph Barrena + 23553, // Fury Sylph Barrena (night) + 23546, // Fury Sylph Temptress + 23555, // Fury Sylph Temptress (night) + 23547, // Fury Sylph Purka + 23556, // Fury Sylph Purka (night) + 23545, // Fury Kerberos Leger + 23557, // Fury Kerberos Leger (night) + 23549, // Fury Kerberos Nero + 23558, // Fury Kerberos Nero (night) + // Atelia Fortress + 23505, // Fortress Raider 101 + 23506, // Fortress Guardian Captain 101 + 23537, // Atelia Elite Captain Atelia Infuser 102 + 23538, // Atelia High Priest Atelia Infuser 103 + 23536, // Atelia High Priest Kelbim's 102 + 23535, // Atelia Archon Kelbim's 102 + 23532, // Atelia Elite Captain Kelbim's 101 + 23530, // Fortress Guardian Captain Kelbim's 101 + 23507, // Atelia Passionate Soldier 101 + 23508, // Atelia Elite Captain 101 + 23509, // Fortress Dark Wizard 102 + 23510, // Atelia Flame Master 102 + 23511, // Fortress Archon 102 + 23512, // Atelia High Priest 102 + // Shadow of the Mother Tree + 24117, // Crystal Reep + 24118, // Crystal Reep + 24119, // Crystal Needle + 24120, // Crystal Needle + 24121, // Treant Blossom + 24122, // Treant Blossom + 24123, // Flush Teasle + 24124, // Flush Teasle + 24125, // Creeper Rampike + 24126, // Creeper Rampike + 24139, // Reep Child + 24140, // Needle Child + 24141, // Blossom Child + 24142 // Teasle Child + }; + + // Misc + private static final int MIN_LEVEL = 104; + + public Q10880_TheLastOneStanding() + { + super(10880); + addStartNpc(CYPHONA); + addTalkId(CYPHONA, FERIN); + addKillId(MONSTERS); + addCondMinLevel(MIN_LEVEL, "34055-00.htm"); + addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "34055-00.htm"); + registerQuestItems(PROOF_OF_STRENGTH); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + + switch (event) + { + case "34055-02.htm": + case "34055-03.htm": + { + htmltext = event; + break; + } + case "34055-04.htm": + { + if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)) + { + qs.startQuest(); + htmltext = event; + } + break; + } + case "34054-07.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.MOTHER_TREE_GUARDIANS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07a.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.UNWORLDLY_VISITORS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07b.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.KINGDOM_ROYAL_GUARDS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + switch (qs.getState()) + { + case State.CREATED: + { + if ((npc.getId() == CYPHONA) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))) + { + htmltext = "34055-01.htm"; + } + else + { + htmltext = "noItem.html"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case CYPHONA: + { + if (qs.isCond(1)) + { + htmltext = "34055-05.html"; + } + break; + } + case FERIN: + { + if (qs.isCond(2)) + { + htmltext = "34054-06.html"; + } + break; + } + } + break; + } + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + executeForEachPlayer(player, npc, isSummon, true, false); + return super.onKill(npc, player, isSummon); + } + + @Override + public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(MONSTERS, npc.getId())) + { + giveItems(player, PROOF_OF_STRENGTH, 1); + playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + + if (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= 10000) + { + qs.setCond(2, true); + } + } + } +} \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html new file mode 100644 index 0000000000..4975fd264a --- /dev/null +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html @@ -0,0 +1,4 @@ +Verdure Elder Elikia:
+I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.
+(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.) + \ No newline at end of file diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java index 7ad5f5ddee..4e8603021d 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -482,6 +482,7 @@ import quests.Q10857_SecretTeleport.Q10857_SecretTeleport; import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel; import quests.Q10876_LeadersGrace.Q10876_LeadersGrace; import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; +import quests.Q10880_TheLastOneStanding.Q10880_TheLastOneStanding; import quests.Q10891_AtANewPlace.Q10891_AtANewPlace; import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime; import quests.not_done.Q00504_CompetitionForTheBanditStronghold; @@ -555,7 +556,6 @@ import quests.not_done.Q10859_OwnTheEarthAndTheHeavens; import quests.not_done.Q10874_AgainstTheNewEnemy; import quests.not_done.Q10875_ForReputation; import quests.not_done.Q10877_BreakThroughCrisis; -import quests.not_done.Q10880_TheLastOneStanding; import quests.not_done.Q10881_ForThePride; import quests.not_done.Q10882_VictoryCollection; import quests.not_done.Q10883_ImmortalHonor; @@ -1109,7 +1109,7 @@ public class QuestMasterHandler Q10876_LeadersGrace.class, Q10877_BreakThroughCrisis.class, // TODO: Not done. Q10879_ExaltedGuideToPower.class, - Q10880_TheLastOneStanding.class, // TODO: Not done. + Q10880_TheLastOneStanding.class, Q10881_ForThePride.class, // TODO: Not done. Q10882_VictoryCollection.class, // TODO: Not done. Q10883_ImmortalHonor.class, // TODO: Not done. diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java deleted file mode 100644 index b1e231e5b3..0000000000 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q10880_TheLastOneStanding extends Quest -{ - private static final int START_NPC = 34055; - - public Q10880_TheLastOneStanding() - { - super(10880); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt index 7d81eab229..9c23fa6512 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/MissingQuests.txt @@ -160,7 +160,6 @@ 10874 Against the New Enemy 10875 For Reputation 10877 Break Through Crisis -10880 The Last One Standing 10881 For the Pride 10882 Victory Collection 10883 Immortal Honor diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html new file mode 100644 index 0000000000..aead4eeed0 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html @@ -0,0 +1,8 @@ +Ferin:
+Are you done?
+You've done great.
+choose one of the awards.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html new file mode 100644 index 0000000000..44402191a8 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html @@ -0,0 +1,3 @@ +Ferin:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm new file mode 100644 index 0000000000..efeb615802 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm @@ -0,0 +1,4 @@ +Master Cyphona:
+I do not believe our paths are meant to cross here. Perhaps later down the road.
+(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..) + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm new file mode 100644 index 0000000000..1d8f4f9988 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+Fate doesn't just happen, nor can it be cut off just because one wants to.
+Meeting Lionel and taking part in giving out this test is all fate.
+And you must have come here because you will be passing it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm new file mode 100644 index 0000000000..49167a50d3 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+The battle with the monsters!
+to gain new strength, you need to hunt for monsters.
+and then you will receive my certificate.
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm new file mode 100644 index 0000000000..873a447be9 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+What do you think of the monsters of the Material Realm? Those monsters are the subject to our blades, due to our long history in battle.
+I know of some creatures who were turned into monsters as a result of experiments. And there are those who've lost their precious ones to those monsters. I know their sadness and anger. But we don't always remember them when we defeat those monsters.
+I believe we must always remember the sadness and anger that they hold within. Don't you agree?
+ + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm new file mode 100644 index 0000000000..c8641dac69 --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm @@ -0,0 +1,5 @@ +Master Cyphona:
+I'm about to give you a very long test. In that process, I want you to remember the sadness and anger of many.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+In that long process, never forget the sadness that derives from long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html new file mode 100644 index 0000000000..17a9a5585f --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html @@ -0,0 +1,4 @@ +Master Cyphona:
+It won't be easy bringing back proof of the monsters that you've defeated. But once you can do that, I'll acknowledge your strength.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+ \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java new file mode 100644 index 0000000000..7752ddbfca --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java @@ -0,0 +1,303 @@ +/* + * 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.Q10880_TheLastOneStanding; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.Faction; +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.model.quest.State; + +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; + +/** + * The Last One Standing (10880) + * @URL https://l2wiki.com/The_Last_One_Standing + * @author Dmitri + */ +public class Q10880_TheLastOneStanding extends Quest +{ + // NPCs + private static final int CYPHONA = 34055; + private static final int FERIN = 34054; + // Items + private static final int MASTER_CYPHONA_CERTIFICATE = 47835; + private static final int PROOF_OF_STRENGTH = 47843; + private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1); + // Monsters + private static final int[] MONSTERS = + { + // The Enchanted Valley + 23566, // Nymph Rose + 23567, // Nymph Rose + 23568, // Nymph Lily + 23569, // Nymph Lily + 23570, // Nymph Tulip + 23571, // Nymph Tulip + 23572, // Nymph Cosmos + 23573, // Nymph Cosmos + 23578, // Nymph Guardian + // Garden of Spirits + 23541, // Kerberos Lager + 23550, // Kerberos Lager (night) + 23542, // Kerberos Fort + 23551, // Kerberos Fort (night) + 23543, // Kerberos Nero + 23552, // Kerberos Nero (night) + 23544, // Fury Sylph Barrena + 23553, // Fury Sylph Barrena (night) + 23546, // Fury Sylph Temptress + 23555, // Fury Sylph Temptress (night) + 23547, // Fury Sylph Purka + 23556, // Fury Sylph Purka (night) + 23545, // Fury Kerberos Leger + 23557, // Fury Kerberos Leger (night) + 23549, // Fury Kerberos Nero + 23558, // Fury Kerberos Nero (night) + // Atelia Fortress + 23505, // Fortress Raider 101 + 23506, // Fortress Guardian Captain 101 + 23537, // Atelia Elite Captain Atelia Infuser 102 + 23538, // Atelia High Priest Atelia Infuser 103 + 23536, // Atelia High Priest Kelbim's 102 + 23535, // Atelia Archon Kelbim's 102 + 23532, // Atelia Elite Captain Kelbim's 101 + 23530, // Fortress Guardian Captain Kelbim's 101 + 23507, // Atelia Passionate Soldier 101 + 23508, // Atelia Elite Captain 101 + 23509, // Fortress Dark Wizard 102 + 23510, // Atelia Flame Master 102 + 23511, // Fortress Archon 102 + 23512, // Atelia High Priest 102 + // Shadow of the Mother Tree + 24117, // Crystal Reep + 24118, // Crystal Reep + 24119, // Crystal Needle + 24120, // Crystal Needle + 24121, // Treant Blossom + 24122, // Treant Blossom + 24123, // Flush Teasle + 24124, // Flush Teasle + 24125, // Creeper Rampike + 24126, // Creeper Rampike + 24139, // Reep Child + 24140, // Needle Child + 24141, // Blossom Child + 24142 // Teasle Child + }; + + // Misc + private static final int MIN_LEVEL = 104; + + public Q10880_TheLastOneStanding() + { + super(10880); + addStartNpc(CYPHONA); + addTalkId(CYPHONA, FERIN); + addKillId(MONSTERS); + addCondMinLevel(MIN_LEVEL, "34055-00.htm"); + addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "34055-00.htm"); + registerQuestItems(PROOF_OF_STRENGTH); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + + switch (event) + { + case "34055-02.htm": + case "34055-03.htm": + { + htmltext = event; + break; + } + case "34055-04.htm": + { + if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)) + { + qs.startQuest(); + htmltext = event; + } + break; + } + case "34054-07.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.MOTHER_TREE_GUARDIANS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07a.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.UNWORLDLY_VISITORS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07b.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.KINGDOM_ROYAL_GUARDS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + switch (qs.getState()) + { + case State.CREATED: + { + if ((npc.getId() == CYPHONA) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))) + { + htmltext = "34055-01.htm"; + } + else + { + htmltext = "noItem.html"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case CYPHONA: + { + if (qs.isCond(1)) + { + htmltext = "34055-05.html"; + } + break; + } + case FERIN: + { + if (qs.isCond(2)) + { + htmltext = "34054-06.html"; + } + break; + } + } + break; + } + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + executeForEachPlayer(player, npc, isSummon, true, false); + return super.onKill(npc, player, isSummon); + } + + @Override + public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(MONSTERS, npc.getId())) + { + giveItems(player, PROOF_OF_STRENGTH, 1); + playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + + if (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= 10000) + { + qs.setCond(2, true); + } + } + } +} \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html new file mode 100644 index 0000000000..4975fd264a --- /dev/null +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html @@ -0,0 +1,4 @@ +Verdure Elder Elikia:
+I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.
+(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.) + \ No newline at end of file diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java index 1c5676c87d..035dafaff0 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -487,6 +487,7 @@ import quests.Q10857_SecretTeleport.Q10857_SecretTeleport; import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel; import quests.Q10876_LeadersGrace.Q10876_LeadersGrace; import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; +import quests.Q10880_TheLastOneStanding.Q10880_TheLastOneStanding; import quests.Q10891_AtANewPlace.Q10891_AtANewPlace; import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime; import quests.Q10896_VisitTheAdventureGuild.Q10896_VisitTheAdventureGuild; @@ -573,7 +574,6 @@ import quests.not_done.Q10859_OwnTheEarthAndTheHeavens; import quests.not_done.Q10874_AgainstTheNewEnemy; import quests.not_done.Q10875_ForReputation; import quests.not_done.Q10877_BreakThroughCrisis; -import quests.not_done.Q10880_TheLastOneStanding; import quests.not_done.Q10881_ForThePride; import quests.not_done.Q10882_VictoryCollection; import quests.not_done.Q10883_ImmortalHonor; @@ -1140,7 +1140,7 @@ public class QuestMasterHandler Q10876_LeadersGrace.class, Q10877_BreakThroughCrisis.class, // TODO: Not done. Q10879_ExaltedGuideToPower.class, - Q10880_TheLastOneStanding.class, // TODO: Not done. + Q10880_TheLastOneStanding.class, Q10881_ForThePride.class, // TODO: Not done. Q10882_VictoryCollection.class, // TODO: Not done. Q10883_ImmortalHonor.class, // TODO: Not done. diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java deleted file mode 100644 index b1e231e5b3..0000000000 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q10880_TheLastOneStanding extends Quest -{ - private static final int START_NPC = 34055; - - public Q10880_TheLastOneStanding() - { - super(10880); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -} diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt index 554363e9d2..82945e13bd 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/MissingQuests.txt @@ -148,7 +148,6 @@ 10874 Against the New Enemy 10875 For Reputation 10877 Break Through Crisis -10880 The Last One Standing 10881 For the Pride 10882 Victory Collection 10883 Immortal Honor diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html new file mode 100644 index 0000000000..aead4eeed0 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-06.html @@ -0,0 +1,8 @@ +Ferin:
+Are you done?
+You've done great.
+choose one of the awards.
+ + + + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html new file mode 100644 index 0000000000..44402191a8 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07.html @@ -0,0 +1,3 @@ +Ferin:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07a.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html new file mode 100644 index 0000000000..8ed6c914eb --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34054-07b.html @@ -0,0 +1,3 @@ +Verdure Elder Elikia:
+Great work. I hope you you never forget the sadness of those who have to suffer because of the long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm new file mode 100644 index 0000000000..efeb615802 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-00.htm @@ -0,0 +1,4 @@ +Master Cyphona:
+I do not believe our paths are meant to cross here. Perhaps later down the road.
+(Only characters above Lv. 104 and The Exalted, Guide to Power quest should be in progress..) + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm new file mode 100644 index 0000000000..1d8f4f9988 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-01.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+Fate doesn't just happen, nor can it be cut off just because one wants to.
+Meeting Lionel and taking part in giving out this test is all fate.
+And you must have come here because you will be passing it.
+ + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm new file mode 100644 index 0000000000..49167a50d3 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-02.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+The battle with the monsters!
+to gain new strength, you need to hunt for monsters.
+and then you will receive my certificate.
+ + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm new file mode 100644 index 0000000000..873a447be9 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-03.htm @@ -0,0 +1,6 @@ +Master Cyphona:
+What do you think of the monsters of the Material Realm? Those monsters are the subject to our blades, due to our long history in battle.
+I know of some creatures who were turned into monsters as a result of experiments. And there are those who've lost their precious ones to those monsters. I know their sadness and anger. But we don't always remember them when we defeat those monsters.
+I believe we must always remember the sadness and anger that they hold within. Don't you agree?
+ + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm new file mode 100644 index 0000000000..c8641dac69 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-04.htm @@ -0,0 +1,5 @@ +Master Cyphona:
+I'm about to give you a very long test. In that process, I want you to remember the sadness and anger of many.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+In that long process, never forget the sadness that derives from long battles against the monsters. + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html new file mode 100644 index 0000000000..17a9a5585f --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/34055-05.html @@ -0,0 +1,4 @@ +Master Cyphona:
+It won't be easy bringing back proof of the monsters that you've defeated. But once you can do that, I'll acknowledge your strength.
+Go defeat the monsters in Enchanted Valley, Atelia Fortress, Shadow of the Mother Tree and Garden of Spirits and bring back the Proof of Strength - 10000.
+ \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java new file mode 100644 index 0000000000..232378bd05 --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/Q10880_TheLastOneStanding.java @@ -0,0 +1,303 @@ +/* + * 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.Q10880_TheLastOneStanding; + +import org.l2jmobius.Config; +import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.Faction; +import org.l2jmobius.gameserver.enums.QuestSound; +import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.model.actor.Npc; +import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; +import org.l2jmobius.gameserver.model.holders.ItemHolder; +import org.l2jmobius.gameserver.model.quest.Quest; +import org.l2jmobius.gameserver.model.quest.QuestState; +import org.l2jmobius.gameserver.model.quest.State; + +import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; + +/** + * The Last One Standing (10880) + * @URL https://l2wiki.com/The_Last_One_Standing + * @author Dmitri + */ +public class Q10880_TheLastOneStanding extends Quest +{ + // NPCs + private static final int CYPHONA = 34055; + private static final int FERIN = 34054; + // Items + private static final int MASTER_CYPHONA_CERTIFICATE = 47835; + private static final int PROOF_OF_STRENGTH = 47843; + private static final ItemHolder LIONEL_HUNTERS_LIST_PART_5 = new ItemHolder(47834, 1); + // Monsters + private static final int[] MONSTERS = + { + // The Enchanted Valley + 23566, // Nymph Rose + 23567, // Nymph Rose + 23568, // Nymph Lily + 23569, // Nymph Lily + 23570, // Nymph Tulip + 23571, // Nymph Tulip + 23572, // Nymph Cosmos + 23573, // Nymph Cosmos + 23578, // Nymph Guardian + // Garden of Spirits + 23541, // Kerberos Lager + 23550, // Kerberos Lager (night) + 23542, // Kerberos Fort + 23551, // Kerberos Fort (night) + 23543, // Kerberos Nero + 23552, // Kerberos Nero (night) + 23544, // Fury Sylph Barrena + 23553, // Fury Sylph Barrena (night) + 23546, // Fury Sylph Temptress + 23555, // Fury Sylph Temptress (night) + 23547, // Fury Sylph Purka + 23556, // Fury Sylph Purka (night) + 23545, // Fury Kerberos Leger + 23557, // Fury Kerberos Leger (night) + 23549, // Fury Kerberos Nero + 23558, // Fury Kerberos Nero (night) + // Atelia Fortress + 23505, // Fortress Raider 101 + 23506, // Fortress Guardian Captain 101 + 23537, // Atelia Elite Captain Atelia Infuser 102 + 23538, // Atelia High Priest Atelia Infuser 103 + 23536, // Atelia High Priest Kelbim's 102 + 23535, // Atelia Archon Kelbim's 102 + 23532, // Atelia Elite Captain Kelbim's 101 + 23530, // Fortress Guardian Captain Kelbim's 101 + 23507, // Atelia Passionate Soldier 101 + 23508, // Atelia Elite Captain 101 + 23509, // Fortress Dark Wizard 102 + 23510, // Atelia Flame Master 102 + 23511, // Fortress Archon 102 + 23512, // Atelia High Priest 102 + // Shadow of the Mother Tree + 24117, // Crystal Reep + 24118, // Crystal Reep + 24119, // Crystal Needle + 24120, // Crystal Needle + 24121, // Treant Blossom + 24122, // Treant Blossom + 24123, // Flush Teasle + 24124, // Flush Teasle + 24125, // Creeper Rampike + 24126, // Creeper Rampike + 24139, // Reep Child + 24140, // Needle Child + 24141, // Blossom Child + 24142 // Teasle Child + }; + + // Misc + private static final int MIN_LEVEL = 104; + + public Q10880_TheLastOneStanding() + { + super(10880); + addStartNpc(CYPHONA); + addTalkId(CYPHONA, FERIN); + addKillId(MONSTERS); + addCondMinLevel(MIN_LEVEL, "34055-00.htm"); + addCondStartedQuest(Q10879_ExaltedGuideToPower.class.getSimpleName(), "34055-00.htm"); + registerQuestItems(PROOF_OF_STRENGTH); + } + + @Override + public String onAdvEvent(String event, Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, false); + if (qs == null) + { + return null; + } + + String htmltext = null; + + switch (event) + { + case "34055-02.htm": + case "34055-03.htm": + { + htmltext = event; + break; + } + case "34055-04.htm": + { + if (hasItem(player, LIONEL_HUNTERS_LIST_PART_5)) + { + qs.startQuest(); + htmltext = event; + } + break; + } + case "34054-07.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.MOTHER_TREE_GUARDIANS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07a.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.UNWORLDLY_VISITORS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + case "34054-07b.html": + { + if (qs.isCond(2)) + { + if ((player.getLevel() >= MIN_LEVEL)) + { + takeItems(player, PROOF_OF_STRENGTH, -1); + giveItems(player, MASTER_CYPHONA_CERTIFICATE, 1); + addFactionPoints(player, Faction.KINGDOM_ROYAL_GUARDS, 4500); + qs.exitQuest(false, true); + + final Quest mainQ = QuestManager.getInstance().getQuest(Q10879_ExaltedGuideToPower.class.getSimpleName()); + if (mainQ != null) + { + mainQ.notifyEvent("SUBQUEST_FINISHED_NOTIFY", npc, player); + } + htmltext = event; + } + else + { + htmltext = getNoQuestLevelRewardMsg(player); + } + break; + } + } + } + return htmltext; + } + + @Override + public String onTalk(Npc npc, PlayerInstance player) + { + final QuestState qs = getQuestState(player, true); + String htmltext = getNoQuestMsg(player); + switch (qs.getState()) + { + case State.CREATED: + { + if ((npc.getId() == CYPHONA) && (hasItem(player, LIONEL_HUNTERS_LIST_PART_5))) + { + htmltext = "34055-01.htm"; + } + else + { + htmltext = "noItem.html"; + } + break; + } + case State.STARTED: + { + switch (npc.getId()) + { + case CYPHONA: + { + if (qs.isCond(1)) + { + htmltext = "34055-05.html"; + } + break; + } + case FERIN: + { + if (qs.isCond(2)) + { + htmltext = "34054-06.html"; + } + break; + } + } + break; + } + case State.COMPLETED: + { + htmltext = getAlreadyCompletedMsg(player); + break; + } + } + return htmltext; + } + + @Override + public String onKill(Npc npc, PlayerInstance player, boolean isSummon) + { + executeForEachPlayer(player, npc, isSummon, true, false); + return super.onKill(npc, player, isSummon); + } + + @Override + public void actionForEachPlayer(PlayerInstance player, Npc npc, boolean isSummon) + { + final QuestState qs = getQuestState(player, false); + if ((qs != null) && player.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE) && CommonUtil.contains(MONSTERS, npc.getId())) + { + giveItems(player, PROOF_OF_STRENGTH, 1); + playSound(player, QuestSound.ITEMSOUND_QUEST_ITEMGET); + + if (getQuestItemsCount(player, PROOF_OF_STRENGTH) >= 10000) + { + qs.setCond(2, true); + } + } + } +} \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html new file mode 100644 index 0000000000..4975fd264a --- /dev/null +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/Q10880_TheLastOneStanding/noItem.html @@ -0,0 +1,4 @@ +Verdure Elder Elikia:
+I don't know how you found your way here, but I can't do anything for you if you haven't talked to Lionel Hunter.
+(You don't meet the requirements for proceed with this quest. You need Lionel Hunter's Mission List - Part 5 in your inventory.) + \ No newline at end of file diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java index c7d0bc7749..bb936a3a9a 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/QuestMasterHandler.java @@ -231,6 +231,7 @@ import quests.Q10857_SecretTeleport.Q10857_SecretTeleport; import quests.Q10873_ExaltedReachingAnotherLevel.Q10873_ExaltedReachingAnotherLevel; import quests.Q10876_LeadersGrace.Q10876_LeadersGrace; import quests.Q10879_ExaltedGuideToPower.Q10879_ExaltedGuideToPower; +import quests.Q10880_TheLastOneStanding.Q10880_TheLastOneStanding; import quests.Q10891_AtANewPlace.Q10891_AtANewPlace; import quests.Q10892_RevengeOneStepAtATime.Q10892_RevengeOneStepAtATime; import quests.Q10896_VisitTheAdventureGuild.Q10896_VisitTheAdventureGuild; @@ -318,7 +319,6 @@ import quests.not_done.Q10854_ToSeizeTheFortress; import quests.not_done.Q10874_AgainstTheNewEnemy; import quests.not_done.Q10875_ForReputation; import quests.not_done.Q10877_BreakThroughCrisis; -import quests.not_done.Q10880_TheLastOneStanding; import quests.not_done.Q10881_ForThePride; import quests.not_done.Q10882_VictoryCollection; import quests.not_done.Q10883_ImmortalHonor; @@ -610,7 +610,7 @@ public class QuestMasterHandler Q10876_LeadersGrace.class, Q10877_BreakThroughCrisis.class, // TODO: Not done. Q10879_ExaltedGuideToPower.class, - Q10880_TheLastOneStanding.class, // TODO: Not done. + Q10880_TheLastOneStanding.class, Q10881_ForThePride.class, // TODO: Not done. Q10882_VictoryCollection.class, // TODO: Not done. Q10883_ImmortalHonor.class, // TODO: Not done. diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java deleted file mode 100644 index b1e231e5b3..0000000000 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/quests/not_done/Q10880_TheLastOneStanding.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * 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.not_done; - -import org.l2jmobius.Config; -import org.l2jmobius.gameserver.model.quest.Quest; - -/** - * @author Mobius - */ -public class Q10880_TheLastOneStanding extends Quest -{ - private static final int START_NPC = 34055; - - public Q10880_TheLastOneStanding() - { - super(10880); - addStartNpc(START_NPC); - addTalkId(START_NPC); - addCondMinLevel(Config.PLAYER_MAXIMUM_LEVEL, getNoQuestMsg(null)); - } -}