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));
- }
-}