diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-01.htm b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-01.htm
index b31a08eb476655533a89bbe564efef9a0b14bb52..73b46a0faee4da0e1b7e0bd9cbd899009651e4b5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-01.htm
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-01.htm
@@ -1,4 +1,4 @@
 <html><body>Nameless Spirit:<br>
 Oh, hello again! Yes, I spoke with Wigoth, and he assures me that this song is the one! <font color="LEVEL">We can now pass through the force field.</font> It brings us one step closer to him, eh?<br>By the way, <font color="LEVEL">could you help me put Frintezza to sleep</font>? As I said, we can't eliminate Frintezza completely with our power at its current level... But we can wait until he wakes up and then put him back to sleep before he can act!<br>
-<a action="bypass -h Quest Q00654_JourneyToASettlement 31453-02.html">"I'll help you."</a>
+<a action="bypass -h Quest Q00654_JourneyToASettlement 31453-02.htm">"I'll help you."</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-02.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-02.htm
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-02.html
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-02.htm
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-04.html b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-04.htm
similarity index 100%
rename from L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-04.html
rename to L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/31453-04.htm
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java
index 97613fac2bd9e71e58d68670f7290d730f6d2fc9..c04e74b8c320964b57dd8f66b24c9a9c34ff7afc 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java
@@ -23,19 +23,16 @@ import java.util.Map;
 
 import quests.Q00119_LastImperialPrince.Q00119_LastImperialPrince;
 
-import com.l2jserver.Config;
-import com.l2jserver.gameserver.enums.QuestSound;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.QuestState;
-import com.l2jserver.gameserver.model.quest.State;
 
 /**
  * Journey to a Settlement (654)
  * @author Adry_85
  */
-public class Q00654_JourneyToASettlement extends Quest
+public final class Q00654_JourneyToASettlement extends Quest
 {
 	// NPC
 	private static final int NAMELESS_SPIRIT = 31453;
@@ -45,17 +42,16 @@ public class Q00654_JourneyToASettlement extends Quest
 	// Misc
 	private static final int MIN_LEVEL = 74;
 	
-	private static final Map<Integer, Integer> MOBS_SKIN = new HashMap<>();
-	
+	private static final Map<Integer, Double> MOBS_SKIN = new HashMap<>();
 	static
 	{
-		MOBS_SKIN.put(21294, 840); // Canyon Antelope
-		MOBS_SKIN.put(21295, 893); // Canyon Antelope Slave
+		MOBS_SKIN.put(21294, 0.840); // Canyon Antelope
+		MOBS_SKIN.put(21295, 0.893); // Canyon Antelope Slave
 	}
 	
-	public Q00654_JourneyToASettlement(int id, String name, String descr)
+	private Q00654_JourneyToASettlement()
 	{
-		super(id, name, descr);
+		super(654, Q00654_JourneyToASettlement.class.getSimpleName(), "Journey to a Settlement");
 		addStartNpc(NAMELESS_SPIRIT);
 		addTalkId(NAMELESS_SPIRIT);
 		addKillId(MOBS_SKIN.keySet());
@@ -65,7 +61,7 @@ public class Q00654_JourneyToASettlement extends Quest
 	@Override
 	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
 	{
-		final QuestState st = player.getQuestState(getName());
+		final QuestState st = getQuestState(player, false);
 		if (st == null)
 		{
 			return null;
@@ -74,25 +70,27 @@ public class Q00654_JourneyToASettlement extends Quest
 		String htmltext = null;
 		switch (event)
 		{
-			case "31453-02.html":
+			case "31453-02.htm":
 			{
 				st.startQuest();
+				st.setMemoState(1);
 				htmltext = event;
 				break;
 			}
 			case "31453-03.html":
 			{
-				if (st.isCond(1))
+				if (st.isMemoState(1))
 				{
+					st.setMemoState(2);
 					st.setCond(2, true);
 					htmltext = event;
 				}
 			}
 			case "31453-07.html":
 			{
-				if (st.isCond(3) && st.hasQuestItems(ANTELOPE_SKIN))
+				if (st.isMemoState(2) && st.hasQuestItems(ANTELOPE_SKIN))
 				{
-					st.giveItems(FRINTEZZAS_SCROLL, 1);
+					giveItems(player, FRINTEZZAS_SCROLL, 1);
 					st.exitQuest(true, true);
 					htmltext = event;
 				}
@@ -104,20 +102,10 @@ public class Q00654_JourneyToASettlement extends Quest
 	@Override
 	public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
 	{
-		final L2PcInstance partyMember = getRandomPartyMember(player, 2);
-		if (partyMember == null)
-		{
-			return super.onKill(npc, player, isSummon);
-		}
-		
-		final QuestState st = partyMember.getQuestState(getName());
-		int npcId = npc.getId();
-		float chance = (MOBS_SKIN.get(npcId) * Config.RATE_QUEST_DROP);
-		if (getRandom(1000) < chance)
+		final QuestState st = getRandomPartyMemberState(player, 2, 3, npc);
+		if (st != null)
 		{
-			st.rewardItems(ANTELOPE_SKIN, 1);
-			st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
-			st.setCond(3, true);
+			giveItemRandomly(st.getPlayer(), npc, ANTELOPE_SKIN, 1, 1, MOBS_SKIN.get(npc.getId()), true);
 		}
 		return super.onKill(npc, player, isSummon);
 	}
@@ -125,32 +113,24 @@ public class Q00654_JourneyToASettlement extends Quest
 	@Override
 	public String onTalk(L2Npc npc, L2PcInstance player)
 	{
-		QuestState st = player.getQuestState(getName());
+		QuestState st = getQuestState(player, true);
 		String htmltext = getNoQuestMsg(player);
-		if (st == null)
+		if (st.isCreated())
 		{
-			return htmltext;
+			st = player.getQuestState(Q00119_LastImperialPrince.class.getSimpleName());
+			htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "31453-01.htm" : "31453-04.htm";
 		}
-		
-		switch (st.getState())
+		else if (st.isStarted())
 		{
-			case State.CREATED:
+			if (st.isMemoState(1))
 			{
-				st = player.getQuestState(Q00119_LastImperialPrince.class.getSimpleName());
-				htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "31453-01.htm" : "31453-04.html";
-				break;
+				st.setMemoState(2);
+				st.setCond(2, true);
+				htmltext = "31453-03.html";
 			}
-			case State.STARTED:
+			else if (st.isMemoState(2))
 			{
-				if (st.isCond(2))
-				{
-					htmltext = "31453-05.html";
-				}
-				else if (st.isCond(3))
-				{
-					htmltext = "31453-06.html";
-				}
-				break;
+				htmltext = (hasQuestItems(player, ANTELOPE_SKIN) ? "31453-06.html" : "31453-05.html");
 			}
 		}
 		return htmltext;
@@ -158,6 +138,6 @@ public class Q00654_JourneyToASettlement extends Quest
 	
 	public static void main(String[] args)
 	{
-		new Q00654_JourneyToASettlement(654, Q00654_JourneyToASettlement.class.getSimpleName(), "Journey to a Settlement");
+		new Q00654_JourneyToASettlement();
 	}
 }