From 6623a2129b18675ffd30da990ce75d5d02233b62 Mon Sep 17 00:00:00 2001
From: Adry85 <adrya85@hotmail.it>
Date: Fri, 2 Mar 2018 17:05:53 +0100
Subject: [PATCH] Updating code with new method hasQuestCompleted

---
 .../StakatoNestTeleporter.java                | 10 ++--
 .../hellbound/AI/NPC/Warpgate/Warpgate.java   | 17 ++----
 .../Q00017_LightAndDarkness.java              |  3 +-
 .../Q00023_LidiasHeart.java                   | 16 ++---
 ...00024_InhabitantsOfTheForestOfTheDead.java |  3 +-
 .../Q00025_HidingBehindTheTruth.java          |  7 +--
 .../Q00027_ChestCaughtWithABaitOfWind.java    |  7 +--
 .../Q00028_ChestCaughtWithABaitOfIcyAir.java  |  7 +--
 .../Q00029_ChestCaughtWithABaitOfEarth.java   |  7 +--
 .../Q00030_ChestCaughtWithABaitOfFire.java    |  7 +--
 .../Q00045_ToTalkingIsland.java               |  3 +-
 ...0046_OnceMoreInTheArmsOfTheMotherTree.java |  3 +-
 .../Q00047_IntoTheDarkElvenForest.java        |  3 +-
 .../Q00048_ToTheImmortalPlateau.java          |  3 +-
 .../Q00049_TheRoadHome.java                   |  3 +-
 .../Q00060_GoodWorksReward.java               | 58 ++++++++-----------
 .../Q00114_ResurrectionOfAnOldManager.java    |  3 +-
 .../Q00120_PavelsLastResearch.java            | 12 +---
 .../Q00125_TheNameOfEvil1.java                |  3 +-
 .../Q00126_TheNameOfEvil2.java                |  3 +-
 .../Q00133_ThatsBloodyHot.java                |  3 +-
 .../Q00138_TempleChampionPart2.java           |  3 +-
 .../Q00139_ShadowFoxPart1.java                |  3 +-
 .../Q00140_ShadowFoxPart2.java                |  3 +-
 .../Q00141_ShadowFoxPart3.java                |  3 +-
 .../Q00146_TheZeroHour.java                   | 10 +---
 ...0148_PathtoBecominganExaltedMercenary.java | 10 +---
 .../Q00173_ToTheIsleOfSouls.java              |  3 +-
 .../Q00179_IntoTheLargeCavern.java            |  3 +-
 .../Q00184_ArtOfPersuasion.java               |  9 ++-
 .../Q00185_NikolasCooperation.java            |  9 ++-
 .../Q00186_ContractExecution.java             |  7 +--
 .../Q00187_NikolasHeart.java                  |  7 +--
 .../Q00188_SealRemoval.java                   | 14 ++---
 .../Q00189_ContractCompletion.java            |  7 +--
 .../Q00190_LostDream/Q00190_LostDream.java    |  7 +--
 .../Q00191_VainConclusion.java                |  7 +--
 .../Q00193_SevenSignsDyingMessage.java        |  3 +-
 .../Q00194_SevenSignsMammonsContract.java     |  3 +-
 ...95_SevenSignsSecretRitualOfThePriests.java |  3 +-
 .../Q00196_SevenSignsSealOfTheEmperor.java    |  7 +--
 .../Q00197_SevenSignsTheSacredBookOfSeal.java |  7 +--
 .../Q00198_SevenSignsEmbryo.java              |  3 +-
 .../Q00236_SeedsOfChaos.java                  |  9 ++-
 .../Q00237_WindsOfChange.java                 |  6 +-
 .../Q00238_SuccessFailureOfBusiness.java      |  7 +--
 .../Q00239_WontYouJoinUs.java                 |  7 +--
 .../Q00242_PossessorOfAPreciousSoul2.java     |  3 +-
 .../Q00246_PossessorOfAPreciousSoul3.java     |  3 +-
 .../Q00247_PossessorOfAPreciousSoul4.java     |  3 +-
 .../Q00270_TheOneWhoEndsSilence.java          |  3 +-
 .../Q00287_FiguringItOut.java                 |  3 +-
 .../Q00289_NoMoreSoupForYou.java              |  3 +-
 .../Q00290_ThreatRemoval.java                 |  3 +-
 .../Q00308_ReedFieldMaintenance.java          |  3 +-
 .../Q00309_ForAGoodCause.java                 |  3 +-
 .../Q00310_OnlyWhatRemains.java               |  3 +-
 .../Q00423_TakeYourBestShot.java              |  3 +-
 .../Q00453_NotStrongEnoughAlone.java          |  5 +-
 .../Q00461_RumbleInTheBase.java               |  5 +-
 .../Q00641_AttackSailren.java                 |  3 +-
 .../Q00648_AnIceMerchantsDream.java           |  9 ++-
 .../Q00650_ABrokenDream.java                  |  3 +-
 .../Q00654_JourneyToASettlement.java          |  7 +--
 .../Q00701_ProofOfExistence.java              |  3 +-
 .../Q00702_ATrapForRevenge.java               |  3 +-
 .../Q10271_TheEnvelopingDarkness.java         |  3 +-
 .../Q10272_LightFragment.java                 |  3 +-
 .../Q10274_CollectingInTheAir.java            | 10 +---
 .../Q10283_RequestOfIceMerchant.java          |  3 +-
 .../Q10284_AcquisitionOfDivineSword.java      |  3 +-
 .../Q10285_MeetingSirra.java                  |  3 +-
 .../Q10286_ReunionWithSirra.java              |  3 +-
 .../Q10287_StoryOfThoseLeft.java              |  3 +-
 .../Q10292_SevenSignsGirlOfDoubt.java         |  3 +-
 ...nsForbiddenBookOfTheElmoreAdenKingdom.java |  7 +--
 ...294_SevenSignsToTheMonasteryOfSilence.java |  3 +-
 .../Q10295_SevenSignsSolinasTomb.java         |  3 +-
 ...evenSignsOneWhoSeeksThePowerOfTheSeal.java |  3 +-
 79 files changed, 157 insertions(+), 305 deletions(-)

diff --git a/dist/game/data/scripts/ai/npc/Teleports/StakatoNestTeleporter/StakatoNestTeleporter.java b/dist/game/data/scripts/ai/npc/Teleports/StakatoNestTeleporter/StakatoNestTeleporter.java
index 8ddb833f67..d8f04a6299 100644
--- a/dist/game/data/scripts/ai/npc/Teleports/StakatoNestTeleporter/StakatoNestTeleporter.java
+++ b/dist/game/data/scripts/ai/npc/Teleports/StakatoNestTeleporter/StakatoNestTeleporter.java
@@ -18,13 +18,12 @@
  */
 package ai.npc.Teleports.StakatoNestTeleporter;
 
-import quests.Q00240_ImTheOnlyOneYouCanTrust.Q00240_ImTheOnlyOneYouCanTrust;
-import ai.npc.AbstractNpcAI;
-
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.quest.QuestState;
+
+import ai.npc.AbstractNpcAI;
+import quests.Q00240_ImTheOnlyOneYouCanTrust.Q00240_ImTheOnlyOneYouCanTrust;
 
 /**
  * Stakato Nest Teleport AI.
@@ -78,8 +77,7 @@ public final class StakatoNestTeleporter extends AbstractNpcAI
 	@Override
 	public String onTalk(L2Npc npc, L2PcInstance player)
 	{
-		QuestState accessQuest = player.getQuestState(Q00240_ImTheOnlyOneYouCanTrust.class.getSimpleName());
-		return (((accessQuest != null) && accessQuest.isCompleted()) ? "32640.htm" : "32640-no.htm");
+		return (player.hasQuestCompleted(Q00240_ImTheOnlyOneYouCanTrust.class.getSimpleName()) ? "32640.htm" : "32640-no.htm");
 	}
 	
 	public static void main(String[] args)
diff --git a/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate.java b/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate.java
index e39f7ef597..022e5260d3 100644
--- a/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate.java
+++ b/dist/game/data/scripts/hellbound/AI/NPC/Warpgate/Warpgate.java
@@ -18,20 +18,19 @@
  */
 package hellbound.AI.NPC.Warpgate;
 
-import hellbound.HellboundEngine;
-import quests.Q00130_PathToHellbound.Q00130_PathToHellbound;
-import quests.Q00133_ThatsBloodyHot.Q00133_ThatsBloodyHot;
-import ai.npc.AbstractNpcAI;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.PcCondOverride;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.quest.QuestState;
 import com.l2jserver.gameserver.model.zone.L2ZoneType;
 
+import ai.npc.AbstractNpcAI;
+import hellbound.HellboundEngine;
+import quests.Q00130_PathToHellbound.Q00130_PathToHellbound;
+import quests.Q00133_ThatsBloodyHot.Q00133_ThatsBloodyHot;
+
 /**
  * Warpgate teleport AI.
  * @author _DS_
@@ -122,10 +121,6 @@ public final class Warpgate extends AbstractNpcAI
 		{
 			return true;
 		}
-		
-		final QuestState path_to_hellbound_st = player.getQuestState(Q00130_PathToHellbound.class.getSimpleName());
-		final QuestState thats_bloody_hot_st = player.getQuestState(Q00133_ThatsBloodyHot.class.getSimpleName());
-		
-		return (((path_to_hellbound_st != null) && path_to_hellbound_st.isCompleted()) || ((thats_bloody_hot_st != null) && thats_bloody_hot_st.isCompleted()));
+		return (player.hasQuestCompleted(Q00130_PathToHellbound.class.getSimpleName()) || player.hasQuestCompleted(Q00133_ThatsBloodyHot.class.getSimpleName()));
 	}
 }
\ No newline at end of file
diff --git a/dist/game/data/scripts/quests/Q00017_LightAndDarkness/Q00017_LightAndDarkness.java b/dist/game/data/scripts/quests/Q00017_LightAndDarkness/Q00017_LightAndDarkness.java
index 19f5d80a84..43b58b5d49 100644
--- a/dist/game/data/scripts/quests/Q00017_LightAndDarkness/Q00017_LightAndDarkness.java
+++ b/dist/game/data/scripts/quests/Q00017_LightAndDarkness/Q00017_LightAndDarkness.java
@@ -101,8 +101,7 @@ public class Q00017_LightAndDarkness extends Quest
 				htmltext = getAlreadyCompletedMsg(player);
 				break;
 			case State.CREATED:
-				final QuestState st2 = player.getQuestState(Q00015_SweetWhispers.class.getSimpleName());
-				htmltext = ((st2 != null) && (st2.isCompleted())) ? "31517-00.htm" : "31517-06.html";
+				htmltext = (player.hasQuestCompleted(Q00015_SweetWhispers.class.getSimpleName())) ? "31517-00.htm" : "31517-06.html";
 				break;
 			case State.STARTED:
 				final long blood = st.getQuestItemsCount(BLOOD_OF_SAINT);
diff --git a/dist/game/data/scripts/quests/Q00023_LidiasHeart/Q00023_LidiasHeart.java b/dist/game/data/scripts/quests/Q00023_LidiasHeart/Q00023_LidiasHeart.java
index ea48d814df..a82820cffa 100644
--- a/dist/game/data/scripts/quests/Q00023_LidiasHeart/Q00023_LidiasHeart.java
+++ b/dist/game/data/scripts/quests/Q00023_LidiasHeart/Q00023_LidiasHeart.java
@@ -18,9 +18,6 @@
  */
 package quests.Q00023_LidiasHeart;
 
-import quests.Q00022_TragedyInVonHellmannForest.Q00022_TragedyInVonHellmannForest;
-import quests.Q00024_InhabitantsOfTheForestOfTheDead.Q00024_InhabitantsOfTheForestOfTheDead;
-
 import com.l2jserver.gameserver.enums.audio.Sound;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -31,6 +28,9 @@ import com.l2jserver.gameserver.network.NpcStringId;
 import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
 
+import quests.Q00022_TragedyInVonHellmannForest.Q00022_TragedyInVonHellmannForest;
+import quests.Q00024_InhabitantsOfTheForestOfTheDead.Q00024_InhabitantsOfTheForestOfTheDead;
+
 /**
  * Lidia's Heart (23)
  * @author ivantotov
@@ -293,15 +293,7 @@ public final class Q00023_LidiasHeart extends Quest
 		{
 			if (npc.getId() == HIGH_PRIEST_INNOCENTIN)
 			{
-				final QuestState q22 = player.getQuestState(Q00022_TragedyInVonHellmannForest.class.getSimpleName());
-				if ((q22 != null) && q22.isCompleted())
-				{
-					htmltext = "31328-01.htm";
-				}
-				else
-				{
-					htmltext = "31328-01a.html";
-				}
+				htmltext = (player.hasQuestCompleted(Q00022_TragedyInVonHellmannForest.class.getSimpleName())) ? "31328-01.htm" : "31328-01a.html";
 			}
 		}
 		else if (qs.isStarted())
diff --git a/dist/game/data/scripts/quests/Q00024_InhabitantsOfTheForestOfTheDead/Q00024_InhabitantsOfTheForestOfTheDead.java b/dist/game/data/scripts/quests/Q00024_InhabitantsOfTheForestOfTheDead/Q00024_InhabitantsOfTheForestOfTheDead.java
index 21546847ca..5f09ab7856 100644
--- a/dist/game/data/scripts/quests/Q00024_InhabitantsOfTheForestOfTheDead/Q00024_InhabitantsOfTheForestOfTheDead.java
+++ b/dist/game/data/scripts/quests/Q00024_InhabitantsOfTheForestOfTheDead/Q00024_InhabitantsOfTheForestOfTheDead.java
@@ -75,8 +75,7 @@ public class Q00024_InhabitantsOfTheForestOfTheDead extends Quest
 		{
 			// Dorian
 			case "31389-02.htm":
-				final QuestState qs = player.getQuestState(Q00023_LidiasHeart.class.getSimpleName());
-				if ((player.getLevel() >= 65) && (qs != null) && qs.isCompleted())
+				if ((player.getLevel() >= 65) && player.hasQuestCompleted(Q00023_LidiasHeart.class.getSimpleName()))
 				{
 					st.startQuest();
 					st.giveItems(FLOWER_BOUQUET, 1);
diff --git a/dist/game/data/scripts/quests/Q00025_HidingBehindTheTruth/Q00025_HidingBehindTheTruth.java b/dist/game/data/scripts/quests/Q00025_HidingBehindTheTruth/Q00025_HidingBehindTheTruth.java
index 974c52d8d1..b20c6e66dc 100644
--- a/dist/game/data/scripts/quests/Q00025_HidingBehindTheTruth/Q00025_HidingBehindTheTruth.java
+++ b/dist/game/data/scripts/quests/Q00025_HidingBehindTheTruth/Q00025_HidingBehindTheTruth.java
@@ -20,8 +20,6 @@ package quests.Q00025_HidingBehindTheTruth;
 
 import java.util.HashMap;
 
-import quests.Q00024_InhabitantsOfTheForestOfTheDead.Q00024_InhabitantsOfTheForestOfTheDead;
-
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.enums.audio.Sound;
 import com.l2jserver.gameserver.model.Location;
@@ -36,6 +34,8 @@ import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
 import com.l2jserver.util.Rnd;
 
+import quests.Q00024_InhabitantsOfTheForestOfTheDead.Q00024_InhabitantsOfTheForestOfTheDead;
+
 /**
  * Hiding Behind the Truth (25)
  * @author Joxit
@@ -119,8 +119,7 @@ public class Q00025_HidingBehindTheTruth extends Quest
 			}
 			case "31349-03.html":
 			{
-				final QuestState q24 = player.getQuestState(Q00024_InhabitantsOfTheForestOfTheDead.class.getSimpleName());
-				if (qs.isCreated() && (q24 != null) && q24.isCompleted() && (player.getLevel() >= MIN_LVL))
+				if (qs.isCreated() && player.hasQuestCompleted(Q00024_InhabitantsOfTheForestOfTheDead.class.getSimpleName()) && (player.getLevel() >= MIN_LVL))
 				{
 					qs.setMemoState(1);
 					qs.startQuest();
diff --git a/dist/game/data/scripts/quests/Q00027_ChestCaughtWithABaitOfWind/Q00027_ChestCaughtWithABaitOfWind.java b/dist/game/data/scripts/quests/Q00027_ChestCaughtWithABaitOfWind/Q00027_ChestCaughtWithABaitOfWind.java
index f5ce4b353a..85bcc217dc 100644
--- a/dist/game/data/scripts/quests/Q00027_ChestCaughtWithABaitOfWind/Q00027_ChestCaughtWithABaitOfWind.java
+++ b/dist/game/data/scripts/quests/Q00027_ChestCaughtWithABaitOfWind/Q00027_ChestCaughtWithABaitOfWind.java
@@ -97,14 +97,9 @@ public class Q00027_ChestCaughtWithABaitOfWind extends Quest
 				htmltext = getAlreadyCompletedMsg(player);
 				break;
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q00050_LanoscosSpecialBait.class.getSimpleName());
 				if (npc.getId() == LANOSCO)
 				{
-					htmltext = "31570-02.htm";
-					if (qs != null)
-					{
-						htmltext = ((player.getLevel() >= 27) && qs.isCompleted()) ? "31570-01.htm" : htmltext;
-					}
+					htmltext = ((player.getLevel() >= 27) && player.hasQuestCompleted(Q00050_LanoscosSpecialBait.class.getSimpleName())) ? "31570-01.htm" : "31570-02.htm";
 				}
 				break;
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00028_ChestCaughtWithABaitOfIcyAir/Q00028_ChestCaughtWithABaitOfIcyAir.java b/dist/game/data/scripts/quests/Q00028_ChestCaughtWithABaitOfIcyAir/Q00028_ChestCaughtWithABaitOfIcyAir.java
index c22a4f58fa..8ffd46d656 100644
--- a/dist/game/data/scripts/quests/Q00028_ChestCaughtWithABaitOfIcyAir/Q00028_ChestCaughtWithABaitOfIcyAir.java
+++ b/dist/game/data/scripts/quests/Q00028_ChestCaughtWithABaitOfIcyAir/Q00028_ChestCaughtWithABaitOfIcyAir.java
@@ -98,14 +98,9 @@ public class Q00028_ChestCaughtWithABaitOfIcyAir extends Quest
 				htmltext = getAlreadyCompletedMsg(player);
 				break;
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q00051_OFullesSpecialBait.class.getSimpleName());
 				if (npcId == OFULLE)
 				{
-					htmltext = "31572-02.htm";
-					if (qs != null)
-					{
-						htmltext = ((player.getLevel() >= 36) && qs.isCompleted()) ? "31572-01.htm" : htmltext;
-					}
+					htmltext = ((player.getLevel() >= 36) && player.hasQuestCompleted(Q00051_OFullesSpecialBait.class.getSimpleName())) ? "31572-01.htm" : "31572-02.htm";
 				}
 				break;
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00029_ChestCaughtWithABaitOfEarth/Q00029_ChestCaughtWithABaitOfEarth.java b/dist/game/data/scripts/quests/Q00029_ChestCaughtWithABaitOfEarth/Q00029_ChestCaughtWithABaitOfEarth.java
index fd06672940..43a36f5738 100644
--- a/dist/game/data/scripts/quests/Q00029_ChestCaughtWithABaitOfEarth/Q00029_ChestCaughtWithABaitOfEarth.java
+++ b/dist/game/data/scripts/quests/Q00029_ChestCaughtWithABaitOfEarth/Q00029_ChestCaughtWithABaitOfEarth.java
@@ -98,14 +98,9 @@ public class Q00029_ChestCaughtWithABaitOfEarth extends Quest
 				htmltext = getAlreadyCompletedMsg(player);
 				break;
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q00052_WilliesSpecialBait.class.getSimpleName());
 				if (npcId == WILLIE)
 				{
-					htmltext = "31574-02.htm";
-					if (qs != null)
-					{
-						htmltext = ((player.getLevel() >= 48) && qs.isCompleted()) ? "31574-01.htm" : htmltext;
-					}
+					htmltext = ((player.getLevel() >= 48) && player.hasQuestCompleted(Q00052_WilliesSpecialBait.class.getSimpleName())) ? "31574-01.htm" : "31574-02.htm";
 				}
 				break;
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00030_ChestCaughtWithABaitOfFire/Q00030_ChestCaughtWithABaitOfFire.java b/dist/game/data/scripts/quests/Q00030_ChestCaughtWithABaitOfFire/Q00030_ChestCaughtWithABaitOfFire.java
index 3bdd34e4ff..fe286b8b7e 100644
--- a/dist/game/data/scripts/quests/Q00030_ChestCaughtWithABaitOfFire/Q00030_ChestCaughtWithABaitOfFire.java
+++ b/dist/game/data/scripts/quests/Q00030_ChestCaughtWithABaitOfFire/Q00030_ChestCaughtWithABaitOfFire.java
@@ -97,14 +97,9 @@ public class Q00030_ChestCaughtWithABaitOfFire extends Quest
 				htmltext = getAlreadyCompletedMsg(player);
 				break;
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q00053_LinnaeusSpecialBait.class.getSimpleName());
 				if (npcId == LINNAEUS)
 				{
-					htmltext = "31577-00.htm";
-					if (qs != null)
-					{
-						htmltext = ((player.getLevel() >= 61) && qs.isCompleted()) ? "31577-01.htm" : htmltext;
-					}
+					htmltext = ((player.getLevel() >= 61) && player.hasQuestCompleted(Q00053_LinnaeusSpecialBait.class.getSimpleName())) ? "31577-01.htm" : "31577-00.htm";
 				}
 				break;
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00045_ToTalkingIsland/Q00045_ToTalkingIsland.java b/dist/game/data/scripts/quests/Q00045_ToTalkingIsland/Q00045_ToTalkingIsland.java
index 97778a66d6..5079ac8851 100644
--- a/dist/game/data/scripts/quests/Q00045_ToTalkingIsland/Q00045_ToTalkingIsland.java
+++ b/dist/game/data/scripts/quests/Q00045_ToTalkingIsland/Q00045_ToTalkingIsland.java
@@ -204,8 +204,7 @@ public final class Q00045_ToTalkingIsland extends Quest
 						}
 						else
 						{
-							st = talker.getQuestState(Q00006_StepIntoTheFuture.class.getSimpleName());
-							if ((st != null) && st.isCompleted() && st.hasQuestItems(MARK_OF_TRAVELER))
+							if (talker.hasQuestCompleted(Q00006_StepIntoTheFuture.class.getSimpleName()) && st.hasQuestItems(MARK_OF_TRAVELER))
 							{
 								htmltext = "30097-01.htm";
 							}
diff --git a/dist/game/data/scripts/quests/Q00046_OnceMoreInTheArmsOfTheMotherTree/Q00046_OnceMoreInTheArmsOfTheMotherTree.java b/dist/game/data/scripts/quests/Q00046_OnceMoreInTheArmsOfTheMotherTree/Q00046_OnceMoreInTheArmsOfTheMotherTree.java
index 6eec368407..cb5aea7a97 100644
--- a/dist/game/data/scripts/quests/Q00046_OnceMoreInTheArmsOfTheMotherTree/Q00046_OnceMoreInTheArmsOfTheMotherTree.java
+++ b/dist/game/data/scripts/quests/Q00046_OnceMoreInTheArmsOfTheMotherTree/Q00046_OnceMoreInTheArmsOfTheMotherTree.java
@@ -204,8 +204,7 @@ public final class Q00046_OnceMoreInTheArmsOfTheMotherTree extends Quest
 						}
 						else
 						{
-							st = talker.getQuestState(Q00007_ATripBegins.class.getSimpleName());
-							if ((st != null) && st.isCompleted() && st.hasQuestItems(MARK_OF_TRAVELER))
+							if (talker.hasQuestCompleted(Q00007_ATripBegins.class.getSimpleName()) && st.hasQuestItems(MARK_OF_TRAVELER))
 							{
 								htmltext = "30097-01.htm";
 							}
diff --git a/dist/game/data/scripts/quests/Q00047_IntoTheDarkElvenForest/Q00047_IntoTheDarkElvenForest.java b/dist/game/data/scripts/quests/Q00047_IntoTheDarkElvenForest/Q00047_IntoTheDarkElvenForest.java
index f41e350dcf..2c606895af 100644
--- a/dist/game/data/scripts/quests/Q00047_IntoTheDarkElvenForest/Q00047_IntoTheDarkElvenForest.java
+++ b/dist/game/data/scripts/quests/Q00047_IntoTheDarkElvenForest/Q00047_IntoTheDarkElvenForest.java
@@ -204,8 +204,7 @@ public final class Q00047_IntoTheDarkElvenForest extends Quest
 						}
 						else
 						{
-							st = talker.getQuestState(Q00008_AnAdventureBegins.class.getSimpleName());
-							if ((st != null) && st.isCompleted() && st.hasQuestItems(MARK_OF_TRAVELER))
+							if (talker.hasQuestCompleted(Q00008_AnAdventureBegins.class.getSimpleName()) && st.hasQuestItems(MARK_OF_TRAVELER))
 							{
 								htmltext = "30097-01.htm";
 							}
diff --git a/dist/game/data/scripts/quests/Q00048_ToTheImmortalPlateau/Q00048_ToTheImmortalPlateau.java b/dist/game/data/scripts/quests/Q00048_ToTheImmortalPlateau/Q00048_ToTheImmortalPlateau.java
index 13987aefd8..35963b6d43 100644
--- a/dist/game/data/scripts/quests/Q00048_ToTheImmortalPlateau/Q00048_ToTheImmortalPlateau.java
+++ b/dist/game/data/scripts/quests/Q00048_ToTheImmortalPlateau/Q00048_ToTheImmortalPlateau.java
@@ -204,8 +204,7 @@ public final class Q00048_ToTheImmortalPlateau extends Quest
 						}
 						else
 						{
-							st = talker.getQuestState(Q00009_IntoTheCityOfHumans.class.getSimpleName());
-							if ((st != null) && st.isCompleted() && st.hasQuestItems(MARK_OF_TRAVELER))
+							if (talker.hasQuestCompleted(Q00009_IntoTheCityOfHumans.class.getSimpleName()) && st.hasQuestItems(MARK_OF_TRAVELER))
 							{
 								htmltext = "30097-01.htm";
 							}
diff --git a/dist/game/data/scripts/quests/Q00049_TheRoadHome/Q00049_TheRoadHome.java b/dist/game/data/scripts/quests/Q00049_TheRoadHome/Q00049_TheRoadHome.java
index 323d743100..f34c476970 100644
--- a/dist/game/data/scripts/quests/Q00049_TheRoadHome/Q00049_TheRoadHome.java
+++ b/dist/game/data/scripts/quests/Q00049_TheRoadHome/Q00049_TheRoadHome.java
@@ -204,8 +204,7 @@ public final class Q00049_TheRoadHome extends Quest
 						}
 						else
 						{
-							st = talker.getQuestState(Q00010_IntoTheWorld.class.getSimpleName());
-							if ((st != null) && st.isCompleted() && st.hasQuestItems(MARK_OF_TRAVELER))
+							if (talker.hasQuestCompleted(Q00010_IntoTheWorld.class.getSimpleName()) && st.hasQuestItems(MARK_OF_TRAVELER))
 							{
 								htmltext = "30097-01.htm";
 							}
diff --git a/dist/game/data/scripts/quests/Q00060_GoodWorksReward/Q00060_GoodWorksReward.java b/dist/game/data/scripts/quests/Q00060_GoodWorksReward/Q00060_GoodWorksReward.java
index 85b6abfb57..c253301513 100644
--- a/dist/game/data/scripts/quests/Q00060_GoodWorksReward/Q00060_GoodWorksReward.java
+++ b/dist/game/data/scripts/quests/Q00060_GoodWorksReward/Q00060_GoodWorksReward.java
@@ -226,36 +226,17 @@ public final class Q00060_GoodWorksReward extends Quest
 			{
 				if (qs.isMemoState(10))
 				{
-					final QuestState q211 = player.getQuestState(Q00211_TrialOfTheChallenger.class.getSimpleName());
-					final QuestState q212 = player.getQuestState(Q00212_TrialOfDuty.class.getSimpleName());
-					final QuestState q213 = player.getQuestState(Q00213_TrialOfTheSeeker.class.getSimpleName());
-					final QuestState q214 = player.getQuestState(Q00214_TrialOfTheScholar.class.getSimpleName());
-					final QuestState q215 = player.getQuestState(Q00215_TrialOfThePilgrim.class.getSimpleName());
-					final QuestState q216 = player.getQuestState(Q00216_TrialOfTheGuildsman.class.getSimpleName());
-					final QuestState q217 = player.getQuestState(Q00217_TestimonyOfTrust.class.getSimpleName());
-					final QuestState q218 = player.getQuestState(Q00218_TestimonyOfLife.class.getSimpleName());
-					final QuestState q219 = player.getQuestState(Q00219_TestimonyOfFate.class.getSimpleName());
-					final QuestState q220 = player.getQuestState(Q00220_TestimonyOfGlory.class.getSimpleName());
-					final QuestState q221 = player.getQuestState(Q00221_TestimonyOfProsperity.class.getSimpleName());
-					final QuestState q222 = player.getQuestState(Q00222_TestOfTheDuelist.class.getSimpleName());
-					final QuestState q223 = player.getQuestState(Q00223_TestOfTheChampion.class.getSimpleName());
-					final QuestState q224 = player.getQuestState(Q00224_TestOfSagittarius.class.getSimpleName());
-					final QuestState q225 = player.getQuestState(Q00225_TestOfTheSearcher.class.getSimpleName());
-					final QuestState q226 = player.getQuestState(Q00226_TestOfTheHealer.class.getSimpleName());
-					final QuestState q227 = player.getQuestState(Q00227_TestOfTheReformer.class.getSimpleName());
-					final QuestState q228 = player.getQuestState(Q00228_TestOfMagus.class.getSimpleName());
-					final QuestState q229 = player.getQuestState(Q00229_TestOfWitchcraft.class.getSimpleName());
-					final QuestState q230 = player.getQuestState(Q00230_TestOfTheSummoner.class.getSimpleName());
-					final QuestState q231 = player.getQuestState(Q00231_TestOfTheMaestro.class.getSimpleName());
-					final QuestState q232 = player.getQuestState(Q00232_TestOfTheLord.class.getSimpleName());
-					final QuestState q233 = player.getQuestState(Q00233_TestOfTheWarSpirit.class.getSimpleName());
-					if (((q211 != null) && q211.isCompleted()) || ((q212 != null) && q212.isCompleted()) || ((q213 != null) && q213.isCompleted()) || ((q214 != null) && q214.isCompleted()) || ((q215 != null) && q215.isCompleted()) || ((q216 != null) && q216.isCompleted()))
-					{
-						if (((q217 != null) && q217.isCompleted()) || ((q218 != null) && q218.isCompleted()) || ((q219 != null) && q219.isCompleted()) || ((q220 != null) && q220.isCompleted()) || ((q221 != null) && q221.isCompleted()))
+					if (player.hasQuestCompleted(Q00211_TrialOfTheChallenger.class.getSimpleName()) || player.hasQuestCompleted(Q00212_TrialOfDuty.class.getSimpleName()) || player.hasQuestCompleted(Q00213_TrialOfTheSeeker.class.getSimpleName())
+						|| player.hasQuestCompleted(Q00214_TrialOfTheScholar.class.getSimpleName()) || player.hasQuestCompleted(Q00215_TrialOfThePilgrim.class.getSimpleName()) || player.hasQuestCompleted(Q00216_TrialOfTheGuildsman.class.getSimpleName()))
+					{
+						if (player.hasQuestCompleted(Q00217_TestimonyOfTrust.class.getSimpleName()) || player.hasQuestCompleted(Q00218_TestimonyOfLife.class.getSimpleName()) || player.hasQuestCompleted(Q00219_TestimonyOfFate.class.getSimpleName())
+							|| player.hasQuestCompleted(Q00220_TestimonyOfGlory.class.getSimpleName()) || player.hasQuestCompleted(Q00221_TestimonyOfProsperity.class.getSimpleName()))
 						{
 							
-							if (((q222 != null) && q222.isCompleted()) || ((q223 != null) && q223.isCompleted()) || ((q224 != null) && q224.isCompleted()) || ((q225 != null) && q225.isCompleted()) || ((q226 != null) && q226.isCompleted()) || ((q227 != null) && q227.isCompleted())
-								|| ((q228 != null) && q228.isCompleted()) || ((q229 != null) && q229.isCompleted()) || ((q230 != null) && q230.isCompleted()) || ((q231 != null) && q231.isCompleted()) || ((q232 != null) && q232.isCompleted()) || ((q233 != null) && q233.isCompleted()))
+							if (player.hasQuestCompleted(Q00222_TestOfTheDuelist.class.getSimpleName()) || player.hasQuestCompleted(Q00223_TestOfTheChampion.class.getSimpleName()) || player.hasQuestCompleted(Q00224_TestOfSagittarius.class.getSimpleName())
+								|| player.hasQuestCompleted(Q00225_TestOfTheSearcher.class.getSimpleName()) || player.hasQuestCompleted(Q00226_TestOfTheHealer.class.getSimpleName()) || player.hasQuestCompleted(Q00227_TestOfTheReformer.class.getSimpleName())
+								|| player.hasQuestCompleted(Q00228_TestOfMagus.class.getSimpleName()) || player.hasQuestCompleted(Q00229_TestOfWitchcraft.class.getSimpleName()) || player.hasQuestCompleted(Q00230_TestOfTheSummoner.class.getSimpleName())
+								|| player.hasQuestCompleted(Q00231_TestOfTheMaestro.class.getSimpleName()) || player.hasQuestCompleted(Q00232_TestOfTheLord.class.getSimpleName()) || player.hasQuestCompleted(Q00233_TestOfTheWarSpirit.class.getSimpleName()))
 							{
 								qs.setMemoStateEx(1, 3);
 							}
@@ -264,8 +245,10 @@ public final class Q00060_GoodWorksReward extends Quest
 								qs.setMemoStateEx(1, 2);
 							}
 						}
-						else if (((q222 != null) && q222.isCompleted()) || ((q223 != null) && q223.isCompleted()) || ((q224 != null) && q224.isCompleted()) || ((q225 != null) && q225.isCompleted()) || ((q226 != null) && q226.isCompleted()) || ((q227 != null) && q227.isCompleted())
-							|| ((q228 != null) && q228.isCompleted()) || ((q229 != null) && q229.isCompleted()) || ((q230 != null) && q230.isCompleted()) || ((q231 != null) && q231.isCompleted()) || ((q232 != null) && q232.isCompleted()) || ((q233 != null) && q233.isCompleted()))
+						else if (player.hasQuestCompleted(Q00222_TestOfTheDuelist.class.getSimpleName()) || player.hasQuestCompleted(Q00223_TestOfTheChampion.class.getSimpleName()) || player.hasQuestCompleted(Q00224_TestOfSagittarius.class.getSimpleName())
+							|| player.hasQuestCompleted(Q00225_TestOfTheSearcher.class.getSimpleName()) || player.hasQuestCompleted(Q00226_TestOfTheHealer.class.getSimpleName()) || player.hasQuestCompleted(Q00227_TestOfTheReformer.class.getSimpleName())
+							|| player.hasQuestCompleted(Q00228_TestOfMagus.class.getSimpleName()) || player.hasQuestCompleted(Q00229_TestOfWitchcraft.class.getSimpleName()) || player.hasQuestCompleted(Q00230_TestOfTheSummoner.class.getSimpleName())
+							|| player.hasQuestCompleted(Q00231_TestOfTheMaestro.class.getSimpleName()) || player.hasQuestCompleted(Q00232_TestOfTheLord.class.getSimpleName()) || player.hasQuestCompleted(Q00233_TestOfTheWarSpirit.class.getSimpleName()))
 						{
 							qs.setMemoStateEx(1, 2);
 						}
@@ -274,10 +257,13 @@ public final class Q00060_GoodWorksReward extends Quest
 							qs.setMemoStateEx(1, 1);
 						}
 					}
-					else if (((q217 != null) && q217.isCompleted()) || ((q218 != null) && q218.isCompleted()) || ((q219 != null) && q219.isCompleted()) || ((q220 != null) && q220.isCompleted()) || ((q221 != null) && q221.isCompleted()))
+					else if (player.hasQuestCompleted(Q00217_TestimonyOfTrust.class.getSimpleName()) || player.hasQuestCompleted(Q00218_TestimonyOfLife.class.getSimpleName()) || player.hasQuestCompleted(Q00219_TestimonyOfFate.class.getSimpleName())
+						|| player.hasQuestCompleted(Q00220_TestimonyOfGlory.class.getSimpleName()) || player.hasQuestCompleted(Q00221_TestimonyOfProsperity.class.getSimpleName()))
 					{
-						if (((q222 != null) && q222.isCompleted()) || ((q223 != null) && q223.isCompleted()) || ((q224 != null) && q224.isCompleted()) || ((q225 != null) && q225.isCompleted()) || ((q226 != null) && q226.isCompleted()) || ((q227 != null) && q227.isCompleted())
-							|| ((q228 != null) && q228.isCompleted()) || ((q229 != null) && q229.isCompleted()) || ((q230 != null) && q230.isCompleted()) || ((q231 != null) && q231.isCompleted()) || ((q232 != null) && q232.isCompleted()) || ((q233 != null) && q233.isCompleted()))
+						if (player.hasQuestCompleted(Q00222_TestOfTheDuelist.class.getSimpleName()) || player.hasQuestCompleted(Q00223_TestOfTheChampion.class.getSimpleName()) || player.hasQuestCompleted(Q00224_TestOfSagittarius.class.getSimpleName())
+							|| player.hasQuestCompleted(Q00225_TestOfTheSearcher.class.getSimpleName()) || player.hasQuestCompleted(Q00226_TestOfTheHealer.class.getSimpleName()) || player.hasQuestCompleted(Q00227_TestOfTheReformer.class.getSimpleName())
+							|| player.hasQuestCompleted(Q00228_TestOfMagus.class.getSimpleName()) || player.hasQuestCompleted(Q00229_TestOfWitchcraft.class.getSimpleName()) || player.hasQuestCompleted(Q00230_TestOfTheSummoner.class.getSimpleName())
+							|| player.hasQuestCompleted(Q00231_TestOfTheMaestro.class.getSimpleName()) || player.hasQuestCompleted(Q00232_TestOfTheLord.class.getSimpleName()) || player.hasQuestCompleted(Q00233_TestOfTheWarSpirit.class.getSimpleName()))
 						{
 							qs.setMemoStateEx(1, 2);
 						}
@@ -286,8 +272,10 @@ public final class Q00060_GoodWorksReward extends Quest
 							qs.setMemoStateEx(1, 1);
 						}
 					}
-					else if (((q222 != null) && q222.isCompleted()) || ((q223 != null) && q223.isCompleted()) || ((q224 != null) && q224.isCompleted()) || ((q225 != null) && q225.isCompleted()) || ((q226 != null) && q226.isCompleted()) || ((q227 != null) && q227.isCompleted())
-						|| ((q228 != null) && q228.isCompleted()) || ((q229 != null) && q229.isCompleted()) || ((q230 != null) && q230.isCompleted()) || ((q231 != null) && q231.isCompleted()) || ((q232 != null) && q232.isCompleted()) || ((q233 != null) && q233.isCompleted()))
+					else if (player.hasQuestCompleted(Q00222_TestOfTheDuelist.class.getSimpleName()) || player.hasQuestCompleted(Q00223_TestOfTheChampion.class.getSimpleName()) || player.hasQuestCompleted(Q00224_TestOfSagittarius.class.getSimpleName())
+						|| player.hasQuestCompleted(Q00225_TestOfTheSearcher.class.getSimpleName()) || player.hasQuestCompleted(Q00226_TestOfTheHealer.class.getSimpleName()) || player.hasQuestCompleted(Q00227_TestOfTheReformer.class.getSimpleName())
+						|| player.hasQuestCompleted(Q00228_TestOfMagus.class.getSimpleName()) || player.hasQuestCompleted(Q00229_TestOfWitchcraft.class.getSimpleName()) || player.hasQuestCompleted(Q00230_TestOfTheSummoner.class.getSimpleName())
+						|| player.hasQuestCompleted(Q00231_TestOfTheMaestro.class.getSimpleName()) || player.hasQuestCompleted(Q00232_TestOfTheLord.class.getSimpleName()) || player.hasQuestCompleted(Q00233_TestOfTheWarSpirit.class.getSimpleName()))
 					{
 						qs.setMemoStateEx(1, 1);
 					}
diff --git a/dist/game/data/scripts/quests/Q00114_ResurrectionOfAnOldManager/Q00114_ResurrectionOfAnOldManager.java b/dist/game/data/scripts/quests/Q00114_ResurrectionOfAnOldManager/Q00114_ResurrectionOfAnOldManager.java
index 135d883abb..6422804b57 100644
--- a/dist/game/data/scripts/quests/Q00114_ResurrectionOfAnOldManager/Q00114_ResurrectionOfAnOldManager.java
+++ b/dist/game/data/scripts/quests/Q00114_ResurrectionOfAnOldManager/Q00114_ResurrectionOfAnOldManager.java
@@ -366,8 +366,7 @@ public class Q00114_ResurrectionOfAnOldManager extends Quest
 				switch (st.getState())
 				{
 					case State.CREATED:
-						final QuestState prev = player.getQuestState(Q00121_PavelTheGiant.class.getSimpleName());
-						if ((prev != null) && prev.isCompleted())
+						if (player.hasQuestCompleted(Q00121_PavelTheGiant.class.getSimpleName()))
 						{
 							htmltext = (player.getLevel() >= 70) ? "32041-02.htm" : "32041-03.htm";
 						}
diff --git a/dist/game/data/scripts/quests/Q00120_PavelsLastResearch/Q00120_PavelsLastResearch.java b/dist/game/data/scripts/quests/Q00120_PavelsLastResearch/Q00120_PavelsLastResearch.java
index 2b2ab7a071..2e62e98811 100644
--- a/dist/game/data/scripts/quests/Q00120_PavelsLastResearch/Q00120_PavelsLastResearch.java
+++ b/dist/game/data/scripts/quests/Q00120_PavelsLastResearch/Q00120_PavelsLastResearch.java
@@ -90,7 +90,7 @@ public final class Q00120_PavelsLastResearch extends Quest
 			}
 			case "quest_accept":
 			{
-				if (qs.isCreated() && checkQ114(player))
+				if (qs.isCreated() && player.hasQuestCompleted(Q00114_ResurrectionOfAnOldManager.class.getSimpleName()))
 				{
 					if (player.getLevel() >= 70)
 					{
@@ -1166,7 +1166,7 @@ public final class Q00120_PavelsLastResearch extends Quest
 			{
 				if (qs.isCreated())
 				{
-					if (checkQ114(player))
+					if (player.hasQuestCompleted(Q00114_ResurrectionOfAnOldManager.class.getSimpleName()))
 					{
 						html = "32046-01.htm";
 					}
@@ -1249,7 +1249,7 @@ public final class Q00120_PavelsLastResearch extends Quest
 				}
 				else
 				{
-					if (checkQ114(player))
+					if (player.hasQuestCompleted(Q00114_ResurrectionOfAnOldManager.class.getSimpleName()))
 					{
 						html = getAlreadyCompletedMsg(player);
 					}
@@ -1531,10 +1531,4 @@ public final class Q00120_PavelsLastResearch extends Quest
 		
 		return html;
 	}
-	
-	private static boolean checkQ114(L2PcInstance player)
-	{
-		final QuestState q114 = player.getQuestState(Q00114_ResurrectionOfAnOldManager.class.getSimpleName());
-		return ((q114 != null) && q114.isCompleted());
-	}
 }
diff --git a/dist/game/data/scripts/quests/Q00125_TheNameOfEvil1/Q00125_TheNameOfEvil1.java b/dist/game/data/scripts/quests/Q00125_TheNameOfEvil1/Q00125_TheNameOfEvil1.java
index 6d60632f64..cabff25ee4 100644
--- a/dist/game/data/scripts/quests/Q00125_TheNameOfEvil1/Q00125_TheNameOfEvil1.java
+++ b/dist/game/data/scripts/quests/Q00125_TheNameOfEvil1/Q00125_TheNameOfEvil1.java
@@ -305,8 +305,7 @@ public class Q00125_TheNameOfEvil1 extends Quest
 						}
 						else
 						{
-							st = player.getQuestState(Q00124_MeetingTheElroki.class.getSimpleName());
-							htmltext = ((st != null) && st.isCompleted()) ? "32114-01.htm" : "32114-01b.htm";
+							htmltext = (player.hasQuestCompleted(Q00124_MeetingTheElroki.class.getSimpleName())) ? "32114-01.htm" : "32114-01b.htm";
 						}
 						break;
 					case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00126_TheNameOfEvil2/Q00126_TheNameOfEvil2.java b/dist/game/data/scripts/quests/Q00126_TheNameOfEvil2/Q00126_TheNameOfEvil2.java
index b49bafea82..50ff236f1c 100644
--- a/dist/game/data/scripts/quests/Q00126_TheNameOfEvil2/Q00126_TheNameOfEvil2.java
+++ b/dist/game/data/scripts/quests/Q00126_TheNameOfEvil2/Q00126_TheNameOfEvil2.java
@@ -350,8 +350,7 @@ public class Q00126_TheNameOfEvil2 extends Quest
 						}
 						else
 						{
-							st = player.getQuestState(Q00125_TheNameOfEvil1.class.getSimpleName());
-							htmltext = ((st != null) && st.isCompleted()) ? "32115-0a.htm" : "32115-0b.htm";
+							htmltext = (player.hasQuestCompleted(Q00125_TheNameOfEvil1.class.getSimpleName())) ? "32115-0a.htm" : "32115-0b.htm";
 						}
 						break;
 					case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00133_ThatsBloodyHot/Q00133_ThatsBloodyHot.java b/dist/game/data/scripts/quests/Q00133_ThatsBloodyHot/Q00133_ThatsBloodyHot.java
index 97bfe1a1eb..6539459b9c 100644
--- a/dist/game/data/scripts/quests/Q00133_ThatsBloodyHot/Q00133_ThatsBloodyHot.java
+++ b/dist/game/data/scripts/quests/Q00133_ThatsBloodyHot/Q00133_ThatsBloodyHot.java
@@ -164,8 +164,7 @@ public class Q00133_ThatsBloodyHot extends Quest
 			{
 				if (npc.getId() == KANIS)
 				{
-					final QuestState qs = player.getQuestState(Q00131_BirdInACage.class.getSimpleName());
-					if ((qs != null) && qs.isCompleted())
+					if (player.hasQuestCompleted(Q00131_BirdInACage.class.getSimpleName()))
 					{
 						htmltext = (player.getLevel() >= MIN_LEVEL) ? "32264-01.htm" : "32264-02.html";
 					}
diff --git a/dist/game/data/scripts/quests/Q00138_TempleChampionPart2/Q00138_TempleChampionPart2.java b/dist/game/data/scripts/quests/Q00138_TempleChampionPart2/Q00138_TempleChampionPart2.java
index 4ebe387d56..c5eff3546e 100644
--- a/dist/game/data/scripts/quests/Q00138_TempleChampionPart2/Q00138_TempleChampionPart2.java
+++ b/dist/game/data/scripts/quests/Q00138_TempleChampionPart2/Q00138_TempleChampionPart2.java
@@ -163,8 +163,7 @@ public class Q00138_TempleChampionPart2 extends Quest
 						{
 							return getAlreadyCompletedMsg(player);
 						}
-						final QuestState qs = player.getQuestState(Q00137_TempleChampionPart1.class.getSimpleName());
-						htmltext = (player.getLevel() >= 36) ? ((qs != null) && qs.isCompleted()) ? "30070-01.htm" : "30070-00a.htm" : "30070-00.htm";
+						htmltext = (player.getLevel() >= 36) ? (player.hasQuestCompleted(Q00137_TempleChampionPart1.class.getSimpleName())) ? "30070-01.htm" : "30070-00a.htm" : "30070-00.htm";
 						break;
 				}
 				break;
diff --git a/dist/game/data/scripts/quests/Q00139_ShadowFoxPart1/Q00139_ShadowFoxPart1.java b/dist/game/data/scripts/quests/Q00139_ShadowFoxPart1/Q00139_ShadowFoxPart1.java
index 781d6dfd6b..dc9677ebc8 100644
--- a/dist/game/data/scripts/quests/Q00139_ShadowFoxPart1/Q00139_ShadowFoxPart1.java
+++ b/dist/game/data/scripts/quests/Q00139_ShadowFoxPart1/Q00139_ShadowFoxPart1.java
@@ -148,8 +148,7 @@ public class Q00139_ShadowFoxPart1 extends Quest
 		switch (st.getState())
 		{
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q00138_TempleChampionPart2.class.getSimpleName());
-				htmltext = ((qs != null) && qs.isCompleted()) ? "30896-01.htm" : "30896-00.html";
+				htmltext = (player.hasQuestCompleted(Q00138_TempleChampionPart2.class.getSimpleName())) ? "30896-01.htm" : "30896-00.html";
 				break;
 			case State.STARTED:
 				switch (st.getCond())
diff --git a/dist/game/data/scripts/quests/Q00140_ShadowFoxPart2/Q00140_ShadowFoxPart2.java b/dist/game/data/scripts/quests/Q00140_ShadowFoxPart2/Q00140_ShadowFoxPart2.java
index e460f4958d..3e27dfcb17 100644
--- a/dist/game/data/scripts/quests/Q00140_ShadowFoxPart2/Q00140_ShadowFoxPart2.java
+++ b/dist/game/data/scripts/quests/Q00140_ShadowFoxPart2/Q00140_ShadowFoxPart2.java
@@ -161,8 +161,7 @@ public class Q00140_ShadowFoxPart2 extends Quest
 				switch (st.getState())
 				{
 					case State.CREATED:
-						final QuestState qs = player.getQuestState(Q00139_ShadowFoxPart1.class.getSimpleName());
-						htmltext = (player.getLevel() >= MIN_LEVEL) ? ((qs != null) && qs.isCompleted()) ? "30895-01.htm" : "30895-00.htm" : "30895-02.htm";
+						htmltext = (player.getLevel() >= MIN_LEVEL) ? (player.hasQuestCompleted(Q00139_ShadowFoxPart1.class.getSimpleName())) ? "30895-01.htm" : "30895-00.htm" : "30895-02.htm";
 						break;
 					case State.STARTED:
 						switch (st.getCond())
diff --git a/dist/game/data/scripts/quests/Q00141_ShadowFoxPart3/Q00141_ShadowFoxPart3.java b/dist/game/data/scripts/quests/Q00141_ShadowFoxPart3/Q00141_ShadowFoxPart3.java
index 30faf0f7eb..fc2b2e45c9 100644
--- a/dist/game/data/scripts/quests/Q00141_ShadowFoxPart3/Q00141_ShadowFoxPart3.java
+++ b/dist/game/data/scripts/quests/Q00141_ShadowFoxPart3/Q00141_ShadowFoxPart3.java
@@ -153,8 +153,7 @@ public class Q00141_ShadowFoxPart3 extends Quest
 		switch (st.getState())
 		{
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q00140_ShadowFoxPart2.class.getSimpleName());
-				htmltext = (player.getLevel() >= MIN_LEVEL) ? ((qs != null) && qs.isCompleted()) ? "30894-01.htm" : "30894-00.html" : "30894-02.htm";
+				htmltext = (player.getLevel() >= MIN_LEVEL) ? (player.hasQuestCompleted(Q00140_ShadowFoxPart2.class.getSimpleName())) ? "30894-01.htm" : "30894-00.html" : "30894-02.htm";
 				break;
 			case State.STARTED:
 				switch (st.getCond())
diff --git a/dist/game/data/scripts/quests/Q00146_TheZeroHour/Q00146_TheZeroHour.java b/dist/game/data/scripts/quests/Q00146_TheZeroHour/Q00146_TheZeroHour.java
index 59860f171d..922e933c71 100644
--- a/dist/game/data/scripts/quests/Q00146_TheZeroHour/Q00146_TheZeroHour.java
+++ b/dist/game/data/scripts/quests/Q00146_TheZeroHour/Q00146_TheZeroHour.java
@@ -94,15 +94,7 @@ public class Q00146_TheZeroHour extends Quest
 				}
 				else
 				{
-					final QuestState prev = player.getQuestState(Q00109_InSearchOfTheNest.class.getSimpleName());
-					if ((prev != null) && prev.isCompleted())
-					{
-						htmltext = "31554-01a.htm";
-					}
-					else
-					{
-						htmltext = "31554-04.html";
-					}
+					htmltext = (player.hasQuestCompleted(Q00109_InSearchOfTheNest.class.getSimpleName())) ? "31554-01a.htm" : "31554-04.html";
 				}
 				break;
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00148_PathtoBecominganExaltedMercenary/Q00148_PathtoBecominganExaltedMercenary.java b/dist/game/data/scripts/quests/Q00148_PathtoBecominganExaltedMercenary/Q00148_PathtoBecominganExaltedMercenary.java
index 31c4d60124..4440d5cdd3 100644
--- a/dist/game/data/scripts/quests/Q00148_PathtoBecominganExaltedMercenary/Q00148_PathtoBecominganExaltedMercenary.java
+++ b/dist/game/data/scripts/quests/Q00148_PathtoBecominganExaltedMercenary/Q00148_PathtoBecominganExaltedMercenary.java
@@ -86,7 +86,6 @@ public class Q00148_PathtoBecominganExaltedMercenary extends Quest
 		switch (st.getState())
 		{
 			case State.CREATED:
-				QuestState _prev = player.getQuestState(Q00147_PathtoBecominganEliteMercenary.class.getSimpleName());
 				if ((player.getClan() != null) && (player.getClan().getCastleId() > 0))
 				{
 					htmltext = "castle.htm";
@@ -97,14 +96,7 @@ public class Q00148_PathtoBecominganExaltedMercenary extends Quest
 				}
 				else
 				{
-					if ((_prev != null) && _prev.isCompleted())
-					{
-						htmltext = "exalted-00a.htm";
-					}
-					else
-					{
-						htmltext = "exalted-00.htm";
-					}
+					htmltext = (player.hasQuestCompleted(Q00147_PathtoBecominganEliteMercenary.class.getSimpleName())) ? "exalted-00a.htm" : "exalted-00.htm";
 				}
 				break;
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00173_ToTheIsleOfSouls/Q00173_ToTheIsleOfSouls.java b/dist/game/data/scripts/quests/Q00173_ToTheIsleOfSouls/Q00173_ToTheIsleOfSouls.java
index 32d31d5cd8..f22f91a07c 100644
--- a/dist/game/data/scripts/quests/Q00173_ToTheIsleOfSouls/Q00173_ToTheIsleOfSouls.java
+++ b/dist/game/data/scripts/quests/Q00173_ToTheIsleOfSouls/Q00173_ToTheIsleOfSouls.java
@@ -96,8 +96,7 @@ public class Q00173_ToTheIsleOfSouls extends Quest
 				switch (st.getState())
 				{
 					case State.CREATED:
-						final QuestState qs = player.getQuestState(Q00172_NewHorizons.class.getSimpleName());
-						htmltext = ((qs != null) && qs.isCompleted() && (player.getRace() == Race.KAMAEL) && st.hasQuestItems(MARK_OF_TRAVELER)) ? "30097-01.htm" : "30097-02.htm";
+						htmltext = (player.hasQuestCompleted(Q00172_NewHorizons.class.getSimpleName()) && (player.getRace() == Race.KAMAEL) && st.hasQuestItems(MARK_OF_TRAVELER)) ? "30097-01.htm" : "30097-02.htm";
 						break;
 					case State.STARTED:
 						htmltext = (st.isCond(1)) ? "30097-04.html" : "30097-05.html";
diff --git a/dist/game/data/scripts/quests/Q00179_IntoTheLargeCavern/Q00179_IntoTheLargeCavern.java b/dist/game/data/scripts/quests/Q00179_IntoTheLargeCavern/Q00179_IntoTheLargeCavern.java
index 57efaa5a28..29d35022e7 100644
--- a/dist/game/data/scripts/quests/Q00179_IntoTheLargeCavern/Q00179_IntoTheLargeCavern.java
+++ b/dist/game/data/scripts/quests/Q00179_IntoTheLargeCavern/Q00179_IntoTheLargeCavern.java
@@ -100,9 +100,8 @@ public class Q00179_IntoTheLargeCavern extends Quest
 					}
 					else
 					{
-						final QuestState prev = player.getQuestState(Q00178_IconicTrinity.class.getSimpleName());
 						final int level = player.getLevel();
-						if ((prev != null) && prev.isCompleted() && (level >= MIN_LEVEL) && (level <= MAX_LEVEL) && (player.getClassId().level() == 0))
+						if (player.hasQuestCompleted(Q00178_IconicTrinity.class.getSimpleName()) && (level >= MIN_LEVEL) && (level <= MAX_LEVEL) && (player.getClassId().level() == 0))
 						{
 							htmltext = "32138-01.htm";
 						}
diff --git a/dist/game/data/scripts/quests/Q00184_ArtOfPersuasion/Q00184_ArtOfPersuasion.java b/dist/game/data/scripts/quests/Q00184_ArtOfPersuasion/Q00184_ArtOfPersuasion.java
index 15182efd91..725d5aa73f 100644
--- a/dist/game/data/scripts/quests/Q00184_ArtOfPersuasion/Q00184_ArtOfPersuasion.java
+++ b/dist/game/data/scripts/quests/Q00184_ArtOfPersuasion/Q00184_ArtOfPersuasion.java
@@ -18,14 +18,14 @@
  */
 package quests.Q00184_ArtOfPersuasion;
 
-import quests.Q00183_RelicExploration.Q00183_RelicExploration;
-import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
-
 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 quests.Q00183_RelicExploration.Q00183_RelicExploration;
+import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
+
 /**
  * Art Of Persuasion (184)
  * @author ivantotov
@@ -208,10 +208,9 @@ public final class Q00184_ArtOfPersuasion extends Quest
 		{
 			if (npc.getId() == MAESTRO_NIKOLA)
 			{
-				final QuestState q183 = player.getQuestState(Q00183_RelicExploration.class.getSimpleName());
 				final QuestState q184 = player.getQuestState(Q00184_ArtOfPersuasion.class.getSimpleName());
 				final QuestState q185 = player.getQuestState(Q00185_NikolasCooperation.class.getSimpleName());
-				if ((q183 != null) && q183.isCompleted() && (q184 != null) && (q185 != null))
+				if (player.hasQuestCompleted(Q00183_RelicExploration.class.getSimpleName()) && (q184 != null) && (q185 != null))
 				{
 					htmltext = (player.getLevel() >= MIN_LEVEL) ? "30621-01.htm" : "30621-02.html";
 				}
diff --git a/dist/game/data/scripts/quests/Q00185_NikolasCooperation/Q00185_NikolasCooperation.java b/dist/game/data/scripts/quests/Q00185_NikolasCooperation/Q00185_NikolasCooperation.java
index f4f223bbfc..c45e11204b 100644
--- a/dist/game/data/scripts/quests/Q00185_NikolasCooperation/Q00185_NikolasCooperation.java
+++ b/dist/game/data/scripts/quests/Q00185_NikolasCooperation/Q00185_NikolasCooperation.java
@@ -18,14 +18,14 @@
  */
 package quests.Q00185_NikolasCooperation;
 
-import quests.Q00183_RelicExploration.Q00183_RelicExploration;
-import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
-
 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 quests.Q00183_RelicExploration.Q00183_RelicExploration;
+import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
+
 /**
  * Nikola's Cooperation (185)
  * @author ivantotov
@@ -208,10 +208,9 @@ public final class Q00185_NikolasCooperation extends Quest
 		{
 			if (npc.getId() == MAESTRO_NIKOLA)
 			{
-				final QuestState q183 = player.getQuestState(Q00183_RelicExploration.class.getSimpleName());
 				final QuestState q184 = player.getQuestState(Q00184_ArtOfPersuasion.class.getSimpleName());
 				final QuestState q185 = player.getQuestState(Q00185_NikolasCooperation.class.getSimpleName());
-				if ((q183 != null) && q183.isCompleted() && (q184 != null) && (q185 != null))
+				if (player.hasQuestCompleted(Q00183_RelicExploration.class.getSimpleName()) && (q184 != null) && (q185 != null))
 				{
 					htmltext = (player.getLevel() >= MIN_LEVEL) ? "30621-01.htm" : "30621-02.html";
 				}
diff --git a/dist/game/data/scripts/quests/Q00186_ContractExecution/Q00186_ContractExecution.java b/dist/game/data/scripts/quests/Q00186_ContractExecution/Q00186_ContractExecution.java
index 3200dfdfa5..f4177c53aa 100644
--- a/dist/game/data/scripts/quests/Q00186_ContractExecution/Q00186_ContractExecution.java
+++ b/dist/game/data/scripts/quests/Q00186_ContractExecution/Q00186_ContractExecution.java
@@ -21,8 +21,6 @@ package quests.Q00186_ContractExecution;
 import java.util.HashMap;
 import java.util.Map;
 
-import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
-
 import com.l2jserver.gameserver.enums.audio.Sound;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -30,6 +28,8 @@ import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.QuestState;
 import com.l2jserver.gameserver.util.Util;
 
+import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
+
 /**
  * Contract Execution (186)
  * @author ivantotov
@@ -170,8 +170,7 @@ public final class Q00186_ContractExecution extends Quest
 		{
 			if (npc.getId() == RESEARCHER_LORAIN)
 			{
-				final QuestState q184 = player.getQuestState(Q00184_ArtOfPersuasion.class.getSimpleName());
-				if ((q184 != null) && q184.isCompleted() && hasQuestItems(player, LORAINES_CERTIFICATE))
+				if (player.hasQuestCompleted(Q00184_ArtOfPersuasion.class.getSimpleName()) && hasQuestItems(player, LORAINES_CERTIFICATE))
 				{
 					htmltext = player.getLevel() >= MIN_LEVEL ? "30673-01.htm" : "30673-02.htm";
 				}
diff --git a/dist/game/data/scripts/quests/Q00187_NikolasHeart/Q00187_NikolasHeart.java b/dist/game/data/scripts/quests/Q00187_NikolasHeart/Q00187_NikolasHeart.java
index 45b8bce280..4c46d9cbbc 100644
--- a/dist/game/data/scripts/quests/Q00187_NikolasHeart/Q00187_NikolasHeart.java
+++ b/dist/game/data/scripts/quests/Q00187_NikolasHeart/Q00187_NikolasHeart.java
@@ -18,13 +18,13 @@
  */
 package quests.Q00187_NikolasHeart;
 
-import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
-
 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 quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
+
 /**
  * Nikola's Heart (187)
  * @author ivantotov
@@ -128,8 +128,7 @@ public final class Q00187_NikolasHeart extends Quest
 		{
 			if (npc.getId() == RESEARCHER_LORAIN)
 			{
-				final QuestState q185 = player.getQuestState(Q00185_NikolasCooperation.class.getSimpleName());
-				if ((q185 != null) && q185.isCompleted() && hasQuestItems(player, LORAINES_CERTIFICATE))
+				if (player.hasQuestCompleted(Q00185_NikolasCooperation.class.getSimpleName()) && hasQuestItems(player, LORAINES_CERTIFICATE))
 				{
 					htmltext = player.getLevel() >= MIN_LEVEL ? "30673-01.htm" : "30673-02.htm";
 				}
diff --git a/dist/game/data/scripts/quests/Q00188_SealRemoval/Q00188_SealRemoval.java b/dist/game/data/scripts/quests/Q00188_SealRemoval/Q00188_SealRemoval.java
index 2cdc880b35..e6965f347a 100644
--- a/dist/game/data/scripts/quests/Q00188_SealRemoval/Q00188_SealRemoval.java
+++ b/dist/game/data/scripts/quests/Q00188_SealRemoval/Q00188_SealRemoval.java
@@ -18,16 +18,16 @@
  */
 package quests.Q00188_SealRemoval;
 
-import quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
-import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
-import quests.Q00186_ContractExecution.Q00186_ContractExecution;
-import quests.Q00187_NikolasHeart.Q00187_NikolasHeart;
-
 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 quests.Q00184_ArtOfPersuasion.Q00184_ArtOfPersuasion;
+import quests.Q00185_NikolasCooperation.Q00185_NikolasCooperation;
+import quests.Q00186_ContractExecution.Q00186_ContractExecution;
+import quests.Q00187_NikolasHeart.Q00187_NikolasHeart;
+
 /**
  * Seal Removal (188)
  * @author ivantotov
@@ -139,11 +139,9 @@ public final class Q00188_SealRemoval extends Quest
 			{
 				if (!hasQuestItems(player, LORAINES_CERTIFICATE))
 				{
-					final QuestState q184 = player.getQuestState(Q00184_ArtOfPersuasion.class.getSimpleName());
-					final QuestState q185 = player.getQuestState(Q00185_NikolasCooperation.class.getSimpleName());
 					final QuestState q186 = player.getQuestState(Q00186_ContractExecution.class.getSimpleName());
 					final QuestState q187 = player.getQuestState(Q00187_NikolasHeart.class.getSimpleName());
-					if (((q184 != null) && q184.isCompleted()) || ((q185 != null) && q185.isCompleted() && (q186 == null) && (q187 == null)))
+					if (player.hasQuestCompleted(Q00184_ArtOfPersuasion.class.getSimpleName()) || (player.hasQuestCompleted(Q00185_NikolasCooperation.class.getSimpleName()) && (q186 == null) && (q187 == null)))
 					{
 						htmltext = (player.getLevel() >= MIN_LEVEL) ? "30673-01.htm" : "30673-02.htm";
 					}
diff --git a/dist/game/data/scripts/quests/Q00189_ContractCompletion/Q00189_ContractCompletion.java b/dist/game/data/scripts/quests/Q00189_ContractCompletion/Q00189_ContractCompletion.java
index 94fc01a1db..bea90372a6 100644
--- a/dist/game/data/scripts/quests/Q00189_ContractCompletion/Q00189_ContractCompletion.java
+++ b/dist/game/data/scripts/quests/Q00189_ContractCompletion/Q00189_ContractCompletion.java
@@ -18,13 +18,13 @@
  */
 package quests.Q00189_ContractCompletion;
 
-import quests.Q00186_ContractExecution.Q00186_ContractExecution;
-
 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 quests.Q00186_ContractExecution.Q00186_ContractExecution;
+
 /**
  * Contract Completion (189)
  * @author ivantotov
@@ -129,8 +129,7 @@ public final class Q00189_ContractCompletion extends Quest
 		{
 			if (npc.getId() == BLUEPRINT_SELLER_LUKA)
 			{
-				final QuestState q186 = player.getQuestState(Q00186_ContractExecution.class.getSimpleName());
-				if ((q186 != null) && q186.isCompleted())
+				if (player.hasQuestCompleted(Q00186_ContractExecution.class.getSimpleName()))
 				{
 					htmltext = (player.getLevel() >= MIN_LEVEL) ? "31437-01.htm" : "31437-02.htm";
 				}
diff --git a/dist/game/data/scripts/quests/Q00190_LostDream/Q00190_LostDream.java b/dist/game/data/scripts/quests/Q00190_LostDream/Q00190_LostDream.java
index 3a7814e24e..d17a488d91 100644
--- a/dist/game/data/scripts/quests/Q00190_LostDream/Q00190_LostDream.java
+++ b/dist/game/data/scripts/quests/Q00190_LostDream/Q00190_LostDream.java
@@ -18,13 +18,13 @@
  */
 package quests.Q00190_LostDream;
 
-import quests.Q00187_NikolasHeart.Q00187_NikolasHeart;
-
 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 quests.Q00187_NikolasHeart.Q00187_NikolasHeart;
+
 /**
  * Lost Dream (190)
  * @author ivantotov
@@ -111,8 +111,7 @@ public final class Q00190_LostDream extends Quest
 		{
 			if (npc.getId() == HEAD_BLACKSMITH_KUSTO)
 			{
-				final QuestState q187 = player.getQuestState(Q00187_NikolasHeart.class.getSimpleName());
-				if ((q187 != null) && q187.isCompleted())
+				if (player.hasQuestCompleted(Q00187_NikolasHeart.class.getSimpleName()))
 				{
 					htmltext = (player.getLevel() >= MIN_LEVEL) ? "30512-01.htm" : "30512-02.htm";
 				}
diff --git a/dist/game/data/scripts/quests/Q00191_VainConclusion/Q00191_VainConclusion.java b/dist/game/data/scripts/quests/Q00191_VainConclusion/Q00191_VainConclusion.java
index 16b55d3923..d0353c14f5 100644
--- a/dist/game/data/scripts/quests/Q00191_VainConclusion/Q00191_VainConclusion.java
+++ b/dist/game/data/scripts/quests/Q00191_VainConclusion/Q00191_VainConclusion.java
@@ -18,13 +18,13 @@
  */
 package quests.Q00191_VainConclusion;
 
-import quests.Q00188_SealRemoval.Q00188_SealRemoval;
-
 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 quests.Q00188_SealRemoval.Q00188_SealRemoval;
+
 /**
  * Vain Conclusion (191)
  * @author ivantotov
@@ -134,8 +134,7 @@ public final class Q00191_VainConclusion extends Quest
 		{
 			if (npc.getId() == DOROTHY_LOCKSMITH)
 			{
-				final QuestState q188 = player.getQuestState(Q00188_SealRemoval.class.getSimpleName());
-				if ((q188 != null) && q188.isCompleted())
+				if (player.hasQuestCompleted(Q00188_SealRemoval.class.getSimpleName()))
 				{
 					htmltext = (player.getLevel() >= MIN_LEVEL) ? "30970-01.htm" : "30970-02.htm";
 				}
diff --git a/dist/game/data/scripts/quests/Q00193_SevenSignsDyingMessage/Q00193_SevenSignsDyingMessage.java b/dist/game/data/scripts/quests/Q00193_SevenSignsDyingMessage/Q00193_SevenSignsDyingMessage.java
index 081b76637e..f76cbf87ba 100644
--- a/dist/game/data/scripts/quests/Q00193_SevenSignsDyingMessage/Q00193_SevenSignsDyingMessage.java
+++ b/dist/game/data/scripts/quests/Q00193_SevenSignsDyingMessage/Q00193_SevenSignsDyingMessage.java
@@ -250,8 +250,7 @@ public final class Q00193_SevenSignsDyingMessage extends Quest
 			{
 				if (npc.getId() == HOLLINT)
 				{
-					st = player.getQuestState(Q00192_SevenSignsSeriesOfDoubt.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "30191-01.htm" : "30191-03.html";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00192_SevenSignsSeriesOfDoubt.class.getSimpleName())) ? "30191-01.htm" : "30191-03.html";
 				}
 				break;
 			}
diff --git a/dist/game/data/scripts/quests/Q00194_SevenSignsMammonsContract/Q00194_SevenSignsMammonsContract.java b/dist/game/data/scripts/quests/Q00194_SevenSignsMammonsContract/Q00194_SevenSignsMammonsContract.java
index f644aace87..85993212db 100644
--- a/dist/game/data/scripts/quests/Q00194_SevenSignsMammonsContract/Q00194_SevenSignsMammonsContract.java
+++ b/dist/game/data/scripts/quests/Q00194_SevenSignsMammonsContract/Q00194_SevenSignsMammonsContract.java
@@ -359,8 +359,7 @@ public final class Q00194_SevenSignsMammonsContract extends Quest
 			{
 				if (npc.getId() == SIR_GUSTAV_ATHEBALDT)
 				{
-					st = player.getQuestState(Q00193_SevenSignsDyingMessage.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && st.isCompleted()) ? "30760-01.htm" : "30760-05.html";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00193_SevenSignsDyingMessage.class.getSimpleName())) ? "30760-01.htm" : "30760-05.html";
 				}
 				break;
 			}
diff --git a/dist/game/data/scripts/quests/Q00195_SevenSignsSecretRitualOfThePriests/Q00195_SevenSignsSecretRitualOfThePriests.java b/dist/game/data/scripts/quests/Q00195_SevenSignsSecretRitualOfThePriests/Q00195_SevenSignsSecretRitualOfThePriests.java
index 79d10e22f7..78ac7f0188 100644
--- a/dist/game/data/scripts/quests/Q00195_SevenSignsSecretRitualOfThePriests/Q00195_SevenSignsSecretRitualOfThePriests.java
+++ b/dist/game/data/scripts/quests/Q00195_SevenSignsSecretRitualOfThePriests/Q00195_SevenSignsSecretRitualOfThePriests.java
@@ -236,8 +236,7 @@ public final class Q00195_SevenSignsSecretRitualOfThePriests extends Quest
 			{
 				if (npc.getId() == CLAUDIA_ATHEBALDT)
 				{
-					st = player.getQuestState(Q00194_SevenSignsMammonsContract.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "31001-01.htm" : "31001-02.html";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00194_SevenSignsMammonsContract.class.getSimpleName())) ? "31001-01.htm" : "31001-02.html";
 				}
 				break;
 			}
diff --git a/dist/game/data/scripts/quests/Q00196_SevenSignsSealOfTheEmperor/Q00196_SevenSignsSealOfTheEmperor.java b/dist/game/data/scripts/quests/Q00196_SevenSignsSealOfTheEmperor/Q00196_SevenSignsSealOfTheEmperor.java
index 841336bd8c..8a1f72603f 100644
--- a/dist/game/data/scripts/quests/Q00196_SevenSignsSealOfTheEmperor/Q00196_SevenSignsSealOfTheEmperor.java
+++ b/dist/game/data/scripts/quests/Q00196_SevenSignsSealOfTheEmperor/Q00196_SevenSignsSealOfTheEmperor.java
@@ -18,8 +18,6 @@
  */
 package quests.Q00196_SevenSignsSealOfTheEmperor;
 
-import quests.Q00195_SevenSignsSecretRitualOfThePriests.Q00195_SevenSignsSecretRitualOfThePriests;
-
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
@@ -30,6 +28,8 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
 
+import quests.Q00195_SevenSignsSecretRitualOfThePriests.Q00195_SevenSignsSecretRitualOfThePriests;
+
 /**
  * Seven Signs, Seal of the Emperor (196)
  * @author Adry_85
@@ -248,8 +248,7 @@ public final class Q00196_SevenSignsSealOfTheEmperor extends Quest
 			{
 				if (npc.getId() == IASON_HEINE)
 				{
-					st = player.getQuestState(Q00195_SevenSignsSecretRitualOfThePriests.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "30969-01.htm" : "30969-08.html";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00195_SevenSignsSecretRitualOfThePriests.class.getSimpleName())) ? "30969-01.htm" : "30969-08.html";
 				}
 				break;
 			}
diff --git a/dist/game/data/scripts/quests/Q00197_SevenSignsTheSacredBookOfSeal/Q00197_SevenSignsTheSacredBookOfSeal.java b/dist/game/data/scripts/quests/Q00197_SevenSignsTheSacredBookOfSeal/Q00197_SevenSignsTheSacredBookOfSeal.java
index f71f0bf223..0c44131522 100644
--- a/dist/game/data/scripts/quests/Q00197_SevenSignsTheSacredBookOfSeal/Q00197_SevenSignsTheSacredBookOfSeal.java
+++ b/dist/game/data/scripts/quests/Q00197_SevenSignsTheSacredBookOfSeal/Q00197_SevenSignsTheSacredBookOfSeal.java
@@ -18,8 +18,6 @@
  */
 package quests.Q00197_SevenSignsTheSacredBookOfSeal;
 
-import quests.Q00196_SevenSignsSealOfTheEmperor.Q00196_SevenSignsSealOfTheEmperor;
-
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.enums.audio.Sound;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -32,6 +30,8 @@ import com.l2jserver.gameserver.network.NpcStringId;
 import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
 
+import quests.Q00196_SevenSignsSealOfTheEmperor.Q00196_SevenSignsSealOfTheEmperor;
+
 /**
  * Seven Signs, The Sacred Book of Seal (197)
  * @author Adry_85
@@ -261,8 +261,7 @@ public final class Q00197_SevenSignsTheSacredBookOfSeal extends Quest
 			{
 				if (npc.getId() == WOOD)
 				{
-					st = player.getQuestState(Q00196_SevenSignsSealOfTheEmperor.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "32593-01.htm" : "32593-05.html";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00196_SevenSignsSealOfTheEmperor.class.getSimpleName())) ? "32593-01.htm" : "32593-05.html";
 				}
 				break;
 			}
diff --git a/dist/game/data/scripts/quests/Q00198_SevenSignsEmbryo/Q00198_SevenSignsEmbryo.java b/dist/game/data/scripts/quests/Q00198_SevenSignsEmbryo/Q00198_SevenSignsEmbryo.java
index 456e736ac2..e72310c931 100644
--- a/dist/game/data/scripts/quests/Q00198_SevenSignsEmbryo/Q00198_SevenSignsEmbryo.java
+++ b/dist/game/data/scripts/quests/Q00198_SevenSignsEmbryo/Q00198_SevenSignsEmbryo.java
@@ -204,8 +204,7 @@ public final class Q00198_SevenSignsEmbryo extends Quest
 			{
 				if (npc.getId() == WOOD)
 				{
-					st = player.getQuestState(Q00197_SevenSignsTheSacredBookOfSeal.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "32593-01.htm" : "32593-03.html";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00197_SevenSignsTheSacredBookOfSeal.class.getSimpleName())) ? "32593-01.htm" : "32593-03.html";
 				}
 				break;
 			}
diff --git a/dist/game/data/scripts/quests/Q00236_SeedsOfChaos/Q00236_SeedsOfChaos.java b/dist/game/data/scripts/quests/Q00236_SeedsOfChaos/Q00236_SeedsOfChaos.java
index 0bf7a497e2..973a16df30 100644
--- a/dist/game/data/scripts/quests/Q00236_SeedsOfChaos/Q00236_SeedsOfChaos.java
+++ b/dist/game/data/scripts/quests/Q00236_SeedsOfChaos/Q00236_SeedsOfChaos.java
@@ -18,10 +18,8 @@
  */
 package quests.Q00236_SeedsOfChaos;
 
-import quests.Q00025_HidingBehindTheTruth.Q00025_HidingBehindTheTruth;
-
-import com.l2jserver.gameserver.enums.audio.Sound;
 import com.l2jserver.gameserver.enums.Race;
+import com.l2jserver.gameserver.enums.audio.Sound;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
@@ -31,6 +29,8 @@ import com.l2jserver.gameserver.network.clientpackets.Say2;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
 import com.l2jserver.gameserver.util.Util;
 
+import quests.Q00025_HidingBehindTheTruth.Q00025_HidingBehindTheTruth;
+
 /**
  * Seeds Of Chaos (236)
  * @author ivantotov
@@ -220,8 +220,7 @@ public final class Q00236_SeedsOfChaos extends Quest
 			{
 				if (qs.isMemoState(12))
 				{
-					final QuestState q25 = player.getQuestState(Q00025_HidingBehindTheTruth.class.getSimpleName());
-					if ((q25 != null) && q25.isCompleted())
+					if (player.hasQuestCompleted(Q00025_HidingBehindTheTruth.class.getSimpleName()))
 					{
 						htmltext = event;
 					}
diff --git a/dist/game/data/scripts/quests/Q00237_WindsOfChange/Q00237_WindsOfChange.java b/dist/game/data/scripts/quests/Q00237_WindsOfChange/Q00237_WindsOfChange.java
index fa79211ab0..93d65bee25 100644
--- a/dist/game/data/scripts/quests/Q00237_WindsOfChange/Q00237_WindsOfChange.java
+++ b/dist/game/data/scripts/quests/Q00237_WindsOfChange/Q00237_WindsOfChange.java
@@ -237,8 +237,7 @@ public class Q00237_WindsOfChange extends Quest
 			case HELVETICA:
 				if (st.isCompleted())
 				{
-					final QuestState q238 = st.getPlayer().getQuestState(Q00238_SuccessFailureOfBusiness.class.getSimpleName());
-					htmltext = (st.hasQuestItems(VICINITY_OF_FOS) || ((q238 != null) && q238.isCompleted())) ? "32641-03.html" : "32641-05.html";
+					htmltext = (st.hasQuestItems(VICINITY_OF_FOS) || st.getPlayer().hasQuestCompleted(Q00238_SuccessFailureOfBusiness.class.getSimpleName())) ? "32641-03.html" : "32641-05.html";
 				}
 				else if (st.isCond(5))
 				{
@@ -252,8 +251,7 @@ public class Q00237_WindsOfChange extends Quest
 			case ATHENIA:
 				if (st.isCompleted())
 				{
-					final QuestState q239 = st.getPlayer().getQuestState(Q00239_WontYouJoinUs.class.getSimpleName());
-					htmltext = (st.hasQuestItems(SUPPORT_CERTIFICATE) || ((q239 != null) && q239.isCompleted())) ? "32643-03.html" : "32643-05.html";
+					htmltext = (st.hasQuestItems(SUPPORT_CERTIFICATE) || st.getPlayer().hasQuestCompleted(Q00239_WontYouJoinUs.class.getSimpleName())) ? "32643-03.html" : "32643-05.html";
 				}
 				else if (st.isCond(5))
 				{
diff --git a/dist/game/data/scripts/quests/Q00238_SuccessFailureOfBusiness/Q00238_SuccessFailureOfBusiness.java b/dist/game/data/scripts/quests/Q00238_SuccessFailureOfBusiness/Q00238_SuccessFailureOfBusiness.java
index 605c80b55c..e58c64bdeb 100644
--- a/dist/game/data/scripts/quests/Q00238_SuccessFailureOfBusiness/Q00238_SuccessFailureOfBusiness.java
+++ b/dist/game/data/scripts/quests/Q00238_SuccessFailureOfBusiness/Q00238_SuccessFailureOfBusiness.java
@@ -25,7 +25,6 @@ import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.QuestState;
 import com.l2jserver.gameserver.model.quest.State;
 
-import quests.Q00237_WindsOfChange.Q00237_WindsOfChange;
 import quests.Q00239_WontYouJoinUs.Q00239_WontYouJoinUs;
 
 /**
@@ -147,13 +146,11 @@ public class Q00238_SuccessFailureOfBusiness extends Quest
 				htmltext = "32461-09.html";
 				break;
 			case State.CREATED:
-				final QuestState q237 = st.getPlayer().getQuestState(Q00237_WindsOfChange.class.getSimpleName());
-				final QuestState q239 = st.getPlayer().getQuestState(Q00239_WontYouJoinUs.class.getSimpleName());
-				if ((q239 != null) && q239.isCompleted())
+				if (st.getPlayer().hasQuestCompleted(Q00239_WontYouJoinUs.class.getSimpleName()))
 				{
 					htmltext = "32461-10.html";
 				}
-				else if ((q237 != null) && q237.isCompleted() && (talker.getLevel() >= MIN_LEVEL) && st.hasQuestItems(VICINITY_OF_FOS))
+				else if (st.getPlayer().hasQuestCompleted(Q00239_WontYouJoinUs.class.getSimpleName()) && (talker.getLevel() >= MIN_LEVEL) && st.hasQuestItems(VICINITY_OF_FOS))
 				{
 					htmltext = "32461-01.htm";
 				}
diff --git a/dist/game/data/scripts/quests/Q00239_WontYouJoinUs/Q00239_WontYouJoinUs.java b/dist/game/data/scripts/quests/Q00239_WontYouJoinUs/Q00239_WontYouJoinUs.java
index 9c2f5cbb84..c0e8e3f750 100644
--- a/dist/game/data/scripts/quests/Q00239_WontYouJoinUs/Q00239_WontYouJoinUs.java
+++ b/dist/game/data/scripts/quests/Q00239_WontYouJoinUs/Q00239_WontYouJoinUs.java
@@ -147,13 +147,12 @@ public class Q00239_WontYouJoinUs extends Quest
 				htmltext = "32643-11.html";
 				break;
 			case State.CREATED:
-				final QuestState q237 = st.getPlayer().getQuestState(Q00237_WindsOfChange.class.getSimpleName());
-				final QuestState q238 = st.getPlayer().getQuestState(Q00238_SuccessFailureOfBusiness.class.getSimpleName());
-				if ((q238 != null) && q238.isCompleted())
+				
+				if (st.getPlayer().hasQuestCompleted(Q00238_SuccessFailureOfBusiness.class.getSimpleName()))
 				{
 					htmltext = "32643-12.html";
 				}
-				else if ((q237 != null) && q237.isCompleted() && (talker.getLevel() >= MIN_LEVEL) && st.hasQuestItems(SUPPORT_CERTIFICATE))
+				else if (st.getPlayer().hasQuestCompleted(Q00237_WindsOfChange.class.getSimpleName()) && (talker.getLevel() >= MIN_LEVEL) && st.hasQuestItems(SUPPORT_CERTIFICATE))
 				{
 					htmltext = "32643-01.htm";
 				}
diff --git a/dist/game/data/scripts/quests/Q00242_PossessorOfAPreciousSoul2/Q00242_PossessorOfAPreciousSoul2.java b/dist/game/data/scripts/quests/Q00242_PossessorOfAPreciousSoul2/Q00242_PossessorOfAPreciousSoul2.java
index f755c4fc40..88db88dd72 100644
--- a/dist/game/data/scripts/quests/Q00242_PossessorOfAPreciousSoul2/Q00242_PossessorOfAPreciousSoul2.java
+++ b/dist/game/data/scripts/quests/Q00242_PossessorOfAPreciousSoul2/Q00242_PossessorOfAPreciousSoul2.java
@@ -179,8 +179,7 @@ public class Q00242_PossessorOfAPreciousSoul2 extends Quest
 				switch (st.getState())
 				{
 					case State.CREATED:
-						final QuestState qs = player.getQuestState(Q00241_PossessorOfAPreciousSoul1.class.getSimpleName());
-						if ((qs != null) && qs.isCompleted())
+						if (player.hasQuestCompleted(Q00241_PossessorOfAPreciousSoul1.class.getSimpleName()))
 						{
 							htmltext = (player.isSubClassActive() && (player.getLevel() >= 60)) ? "31742-01.htm" : "31742-00.htm";
 						}
diff --git a/dist/game/data/scripts/quests/Q00246_PossessorOfAPreciousSoul3/Q00246_PossessorOfAPreciousSoul3.java b/dist/game/data/scripts/quests/Q00246_PossessorOfAPreciousSoul3/Q00246_PossessorOfAPreciousSoul3.java
index b346dd5d1e..41a97b2c01 100644
--- a/dist/game/data/scripts/quests/Q00246_PossessorOfAPreciousSoul3/Q00246_PossessorOfAPreciousSoul3.java
+++ b/dist/game/data/scripts/quests/Q00246_PossessorOfAPreciousSoul3/Q00246_PossessorOfAPreciousSoul3.java
@@ -266,8 +266,7 @@ public class Q00246_PossessorOfAPreciousSoul3 extends Quest
 				switch (st.getState())
 				{
 					case State.CREATED:
-						final QuestState qs = player.getQuestState(Q00242_PossessorOfAPreciousSoul2.class.getSimpleName());
-						htmltext = ((player.getLevel() >= 65) && (qs != null) && qs.isCompleted()) ? "31740-1.htm" : "31740-2.html";
+						htmltext = ((player.getLevel() >= 65) && player.hasQuestCompleted(Q00242_PossessorOfAPreciousSoul2.class.getSimpleName())) ? "31740-1.htm" : "31740-2.html";
 						break;
 					case State.STARTED:
 						htmltext = "31740-5.html";
diff --git a/dist/game/data/scripts/quests/Q00247_PossessorOfAPreciousSoul4/Q00247_PossessorOfAPreciousSoul4.java b/dist/game/data/scripts/quests/Q00247_PossessorOfAPreciousSoul4/Q00247_PossessorOfAPreciousSoul4.java
index ee549466f9..54ad9dcdce 100644
--- a/dist/game/data/scripts/quests/Q00247_PossessorOfAPreciousSoul4/Q00247_PossessorOfAPreciousSoul4.java
+++ b/dist/game/data/scripts/quests/Q00247_PossessorOfAPreciousSoul4/Q00247_PossessorOfAPreciousSoul4.java
@@ -113,8 +113,7 @@ public class Q00247_PossessorOfAPreciousSoul4 extends Quest
 				switch (st.getState())
 				{
 					case State.CREATED:
-						final QuestState qs = player.getQuestState(Q00246_PossessorOfAPreciousSoul3.class.getSimpleName());
-						if ((qs != null) && qs.isCompleted())
+						if (player.hasQuestCompleted(Q00246_PossessorOfAPreciousSoul3.class.getSimpleName()))
 						{
 							htmltext = ((player.getLevel() >= 75) ? "31740-1.htm" : "31740-2.html");
 						}
diff --git a/dist/game/data/scripts/quests/Q00270_TheOneWhoEndsSilence/Q00270_TheOneWhoEndsSilence.java b/dist/game/data/scripts/quests/Q00270_TheOneWhoEndsSilence/Q00270_TheOneWhoEndsSilence.java
index 6663aebd27..536e7c60ed 100644
--- a/dist/game/data/scripts/quests/Q00270_TheOneWhoEndsSilence/Q00270_TheOneWhoEndsSilence.java
+++ b/dist/game/data/scripts/quests/Q00270_TheOneWhoEndsSilence/Q00270_TheOneWhoEndsSilence.java
@@ -342,8 +342,7 @@ public class Q00270_TheOneWhoEndsSilence extends Quest
 		switch (st.getState())
 		{
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q10288_SecretMission.class.getSimpleName());
-				htmltext = ((player.getLevel() >= MIN_LEVEL) && (qs != null) && qs.isCompleted()) ? "32757-01.htm" : "32757-03.html";
+				htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10288_SecretMission.class.getSimpleName())) ? "32757-01.htm" : "32757-03.html";
 				break;
 			case State.STARTED:
 				if (st.isCond(1))
diff --git a/dist/game/data/scripts/quests/Q00287_FiguringItOut/Q00287_FiguringItOut.java b/dist/game/data/scripts/quests/Q00287_FiguringItOut/Q00287_FiguringItOut.java
index 56c17ae0fe..70bd538ad8 100644
--- a/dist/game/data/scripts/quests/Q00287_FiguringItOut/Q00287_FiguringItOut.java
+++ b/dist/game/data/scripts/quests/Q00287_FiguringItOut/Q00287_FiguringItOut.java
@@ -183,11 +183,10 @@ public class Q00287_FiguringItOut extends Quest
 	{
 		String htmltext = getNoQuestMsg(player);
 		final QuestState st = getQuestState(player, true);
-		final QuestState prev = player.getQuestState(Q00250_WatchWhatYouEat.class.getSimpleName());
 		switch (st.getState())
 		{
 			case State.CREATED:
-				htmltext = ((player.getLevel() >= MIN_LEVEL) && (prev != null) && prev.isCompleted()) ? "32742-01.htm" : "32742-14.htm";
+				htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00250_WatchWhatYouEat.class.getSimpleName())) ? "32742-01.htm" : "32742-14.htm";
 				break;
 			case State.STARTED:
 				htmltext = (st.getQuestItemsCount(VIAL_OF_TANTA_BLOOD) < 100) ? "32742-04.html" : "32742-05.html";
diff --git a/dist/game/data/scripts/quests/Q00289_NoMoreSoupForYou/Q00289_NoMoreSoupForYou.java b/dist/game/data/scripts/quests/Q00289_NoMoreSoupForYou/Q00289_NoMoreSoupForYou.java
index 43c1e8d407..8c68646025 100644
--- a/dist/game/data/scripts/quests/Q00289_NoMoreSoupForYou/Q00289_NoMoreSoupForYou.java
+++ b/dist/game/data/scripts/quests/Q00289_NoMoreSoupForYou/Q00289_NoMoreSoupForYou.java
@@ -243,8 +243,7 @@ public class Q00289_NoMoreSoupForYou extends Quest
 			switch (st.getState())
 			{
 				case State.CREATED:
-					QuestState qs252 = player.getQuestState(Q00252_ItSmellsDelicious.class.getSimpleName());
-					htmltext = ((qs252 != null) && qs252.isCompleted() && (player.getLevel() >= 82)) ? "30200-01.htm" : "30200-00.htm";
+					htmltext = (player.hasQuestCompleted(Q00252_ItSmellsDelicious.class.getSimpleName()) && (player.getLevel() >= 82)) ? "30200-01.htm" : "30200-00.htm";
 					break;
 				case State.STARTED:
 					if (st.isCond(1))
diff --git a/dist/game/data/scripts/quests/Q00290_ThreatRemoval/Q00290_ThreatRemoval.java b/dist/game/data/scripts/quests/Q00290_ThreatRemoval/Q00290_ThreatRemoval.java
index 0530eac5e7..f3db8f1234 100644
--- a/dist/game/data/scripts/quests/Q00290_ThreatRemoval/Q00290_ThreatRemoval.java
+++ b/dist/game/data/scripts/quests/Q00290_ThreatRemoval/Q00290_ThreatRemoval.java
@@ -203,8 +203,7 @@ public class Q00290_ThreatRemoval extends Quest
 		{
 			case State.CREATED:
 			{
-				st = player.getQuestState(Q00251_NoSecrets.class.getSimpleName());
-				htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "30201-01.htm" : "30201-03.html";
+				htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00251_NoSecrets.class.getSimpleName())) ? "30201-01.htm" : "30201-03.html";
 				break;
 			}
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00308_ReedFieldMaintenance/Q00308_ReedFieldMaintenance.java b/dist/game/data/scripts/quests/Q00308_ReedFieldMaintenance/Q00308_ReedFieldMaintenance.java
index 9686297bcf..37a6d955c2 100644
--- a/dist/game/data/scripts/quests/Q00308_ReedFieldMaintenance/Q00308_ReedFieldMaintenance.java
+++ b/dist/game/data/scripts/quests/Q00308_ReedFieldMaintenance/Q00308_ReedFieldMaintenance.java
@@ -153,8 +153,7 @@ public class Q00308_ReedFieldMaintenance extends Quest
 				htmltext = event;
 				break;
 			case "claimreward":
-				final QuestState q238 = player.getQuestState(Q00238_SuccessFailureOfBusiness.class.getName());
-				htmltext = ((q238 != null) && q238.isCompleted()) ? "32646-09.html" : "32646-12.html";
+				htmltext = (player.hasQuestCompleted(Q00238_SuccessFailureOfBusiness.class.getName())) ? "32646-09.html" : "32646-12.html";
 				break;
 			case "100":
 			case "120":
diff --git a/dist/game/data/scripts/quests/Q00309_ForAGoodCause/Q00309_ForAGoodCause.java b/dist/game/data/scripts/quests/Q00309_ForAGoodCause/Q00309_ForAGoodCause.java
index 9c17d453a9..2cac8356cf 100644
--- a/dist/game/data/scripts/quests/Q00309_ForAGoodCause/Q00309_ForAGoodCause.java
+++ b/dist/game/data/scripts/quests/Q00309_ForAGoodCause/Q00309_ForAGoodCause.java
@@ -154,8 +154,7 @@ public class Q00309_ForAGoodCause extends Quest
 				htmltext = event;
 				break;
 			case "claimreward":
-				final QuestState q239 = player.getQuestState(Q00239_WontYouJoinUs.class.getSimpleName());
-				htmltext = ((q239 != null) && q239.isCompleted()) ? "32647-11.html" : "32647-09.html";
+				htmltext = (player.hasQuestCompleted(Q00239_WontYouJoinUs.class.getSimpleName())) ? "32647-11.html" : "32647-09.html";
 				break;
 			case "100":
 			case "120":
diff --git a/dist/game/data/scripts/quests/Q00310_OnlyWhatRemains/Q00310_OnlyWhatRemains.java b/dist/game/data/scripts/quests/Q00310_OnlyWhatRemains/Q00310_OnlyWhatRemains.java
index dca1fb461d..034f27ff60 100644
--- a/dist/game/data/scripts/quests/Q00310_OnlyWhatRemains/Q00310_OnlyWhatRemains.java
+++ b/dist/game/data/scripts/quests/Q00310_OnlyWhatRemains/Q00310_OnlyWhatRemains.java
@@ -136,8 +136,7 @@ public class Q00310_OnlyWhatRemains extends Quest
 		switch (st.getState())
 		{
 			case State.CREATED:
-				final QuestState prev = player.getQuestState(Q00240_ImTheOnlyOneYouCanTrust.class.getSimpleName());
-				htmltext = ((player.getLevel() >= 81) && (prev != null) && prev.isCompleted()) ? "32640-01.htm" : "32640-00.htm";
+				htmltext = ((player.getLevel() >= 81) && player.hasQuestCompleted(Q00240_ImTheOnlyOneYouCanTrust.class.getSimpleName())) ? "32640-01.htm" : "32640-00.htm";
 				break;
 			case State.STARTED:
 				if (!st.hasQuestItems(DIRTY_BEAD))
diff --git a/dist/game/data/scripts/quests/Q00423_TakeYourBestShot/Q00423_TakeYourBestShot.java b/dist/game/data/scripts/quests/Q00423_TakeYourBestShot/Q00423_TakeYourBestShot.java
index d5ad7897dd..ab09ccbf66 100644
--- a/dist/game/data/scripts/quests/Q00423_TakeYourBestShot/Q00423_TakeYourBestShot.java
+++ b/dist/game/data/scripts/quests/Q00423_TakeYourBestShot/Q00423_TakeYourBestShot.java
@@ -127,8 +127,7 @@ public final class Q00423_TakeYourBestShot extends Quest
 				}
 				else
 				{
-					final QuestState q249 = player.getQuestState(Q00249_PoisonedPlainsOfTheLizardmen.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (q249 != null) && (q249.isCompleted())) ? "32744-03.htm" : "32744-01.htm";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00249_PoisonedPlainsOfTheLizardmen.class.getSimpleName())) ? "32744-03.htm" : "32744-01.htm";
 				}
 			}
 			else if (npc.getId() == BATRACOS)
diff --git a/dist/game/data/scripts/quests/Q00453_NotStrongEnoughAlone/Q00453_NotStrongEnoughAlone.java b/dist/game/data/scripts/quests/Q00453_NotStrongEnoughAlone/Q00453_NotStrongEnoughAlone.java
index a29cb56d99..6598991e6a 100644
--- a/dist/game/data/scripts/quests/Q00453_NotStrongEnoughAlone/Q00453_NotStrongEnoughAlone.java
+++ b/dist/game/data/scripts/quests/Q00453_NotStrongEnoughAlone/Q00453_NotStrongEnoughAlone.java
@@ -269,11 +269,10 @@ public class Q00453_NotStrongEnoughAlone extends Quest
 	{
 		String htmltext = getNoQuestMsg(player);
 		final QuestState st = getQuestState(player, true);
-		QuestState prev = player.getQuestState(Q10282_ToTheSeedOfAnnihilation.class.getSimpleName());
 		switch (st.getState())
 		{
 			case State.CREATED:
-				if ((player.getLevel() >= 84) && (prev != null) && prev.isCompleted())
+				if ((player.getLevel() >= 84) && player.hasQuestCompleted(Q10282_ToTheSeedOfAnnihilation.class.getSimpleName()))
 				{
 					htmltext = "32734-01.htm";
 				}
@@ -322,7 +321,7 @@ public class Q00453_NotStrongEnoughAlone extends Quest
 				else
 				{
 					st.setState(State.CREATED);
-					if ((player.getLevel() >= 84) && (prev != null) && (prev.getState() == State.COMPLETED))
+					if ((player.getLevel() >= 84) && player.hasQuestCompleted(Q10282_ToTheSeedOfAnnihilation.class.getSimpleName()))
 					{
 						htmltext = "32734-01.htm";
 					}
diff --git a/dist/game/data/scripts/quests/Q00461_RumbleInTheBase/Q00461_RumbleInTheBase.java b/dist/game/data/scripts/quests/Q00461_RumbleInTheBase/Q00461_RumbleInTheBase.java
index 64fead2e7b..e4e2f5b105 100644
--- a/dist/game/data/scripts/quests/Q00461_RumbleInTheBase/Q00461_RumbleInTheBase.java
+++ b/dist/game/data/scripts/quests/Q00461_RumbleInTheBase/Q00461_RumbleInTheBase.java
@@ -136,11 +136,10 @@ public class Q00461_RumbleInTheBase extends Quest
 	{
 		String htmltext = getNoQuestMsg(player);
 		final QuestState st = getQuestState(player, true);
-		final QuestState prev = player.getQuestState(Q00252_ItSmellsDelicious.class.getSimpleName());
 		switch (st.getState())
 		{
 			case State.CREATED:
-				htmltext = ((player.getLevel() >= 82) && (prev != null) && prev.isCompleted()) ? "30200-01.htm" : "30200-02.htm";
+				htmltext = ((player.getLevel() >= 82) && player.hasQuestCompleted(Q00252_ItSmellsDelicious.class.getSimpleName())) ? "30200-01.htm" : "30200-02.htm";
 				break;
 			case State.STARTED:
 				if (st.isCond(1))
@@ -162,7 +161,7 @@ public class Q00461_RumbleInTheBase extends Quest
 				else
 				{
 					st.setState(State.CREATED);
-					htmltext = ((player.getLevel() >= 82) && (prev != null) && (prev.getState() == State.COMPLETED)) ? "30200-01.htm" : "30200-02.htm";
+					htmltext = ((player.getLevel() >= 82) && player.hasQuestCompleted(Q00252_ItSmellsDelicious.class.getSimpleName())) ? "30200-01.htm" : "30200-02.htm";
 				}
 				break;
 		}
diff --git a/dist/game/data/scripts/quests/Q00641_AttackSailren/Q00641_AttackSailren.java b/dist/game/data/scripts/quests/Q00641_AttackSailren/Q00641_AttackSailren.java
index dbe447c20d..5efd479715 100644
--- a/dist/game/data/scripts/quests/Q00641_AttackSailren/Q00641_AttackSailren.java
+++ b/dist/game/data/scripts/quests/Q00641_AttackSailren/Q00641_AttackSailren.java
@@ -120,8 +120,7 @@ public class Q00641_AttackSailren extends Quest
 				}
 				else
 				{
-					st = player.getQuestState(Q00126_TheNameOfEvil2.class.getSimpleName());
-					htmltext = ((st != null) && st.isCompleted()) ? "32109-0a.htm" : "32109-0b.htm";
+					htmltext = (player.hasQuestCompleted(Q00126_TheNameOfEvil2.class.getSimpleName())) ? "32109-0a.htm" : "32109-0b.htm";
 				}
 				break;
 			case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q00648_AnIceMerchantsDream/Q00648_AnIceMerchantsDream.java b/dist/game/data/scripts/quests/Q00648_AnIceMerchantsDream/Q00648_AnIceMerchantsDream.java
index aed06644b0..04e0ade3f8 100644
--- a/dist/game/data/scripts/quests/Q00648_AnIceMerchantsDream/Q00648_AnIceMerchantsDream.java
+++ b/dist/game/data/scripts/quests/Q00648_AnIceMerchantsDream/Q00648_AnIceMerchantsDream.java
@@ -21,14 +21,14 @@ package quests.Q00648_AnIceMerchantsDream;
 import java.util.HashMap;
 import java.util.Map;
 
-import quests.Q00115_TheOtherSideOfTruth.Q00115_TheOtherSideOfTruth;
-
 import com.l2jserver.gameserver.enums.audio.Sound;
 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 quests.Q00115_TheOtherSideOfTruth.Q00115_TheOtherSideOfTruth;
+
 /**
  * An Ice Merchant's Dream (648)
  * @author netvirus, Adry_85
@@ -307,7 +307,6 @@ public final class Q00648_AnIceMerchantsDream extends Quest
 	public String onTalk(L2Npc npc, L2PcInstance player)
 	{
 		final QuestState st = getQuestState(player, true);
-		final QuestState st2 = player.getQuestState(Q00115_TheOtherSideOfTruth.class.getSimpleName());
 		String htmltext = getNoQuestMsg(player);
 		switch (npc.getId())
 		{
@@ -321,13 +320,13 @@ public final class Q00648_AnIceMerchantsDream extends Quest
 					}
 					else
 					{
-						htmltext = ((st2 != null) && (st2.isCompleted())) ? "32020-02.htm" : "32020-03.htm";
+						htmltext = (player.hasQuestCompleted(Q00115_TheOtherSideOfTruth.class.getSimpleName())) ? "32020-02.htm" : "32020-03.htm";
 					}
 				}
 				else if (st.isStarted())
 				{
 					final long hasQuestItems = getQuestItemsCount(player, SILVER_ICE_CRYSTAL, BLACK_ICE_CRYSTAL);
-					if ((st2 != null) && st2.isCompleted())
+					if (player.hasQuestCompleted(Q00115_TheOtherSideOfTruth.class.getSimpleName()))
 					{
 						htmltext = (hasQuestItems > 0) ? "32020-13.html" : "32020-11.html";
 						if (st.isCond(1))
diff --git a/dist/game/data/scripts/quests/Q00650_ABrokenDream/Q00650_ABrokenDream.java b/dist/game/data/scripts/quests/Q00650_ABrokenDream/Q00650_ABrokenDream.java
index c4d0813fa9..ce8c3f2cdf 100644
--- a/dist/game/data/scripts/quests/Q00650_ABrokenDream/Q00650_ABrokenDream.java
+++ b/dist/game/data/scripts/quests/Q00650_ABrokenDream/Q00650_ABrokenDream.java
@@ -121,8 +121,7 @@ public final class Q00650_ABrokenDream extends Quest
 				}
 				else
 				{
-					final QuestState q117 = player.getQuestState(Q00117_TheOceanOfDistantStars.class.getSimpleName());
-					htmltext = (q117 != null) && q117.isCompleted() ? "32054-01.htm" : "32054-04.htm";
+					htmltext = player.hasQuestCompleted(Q00117_TheOceanOfDistantStars.class.getSimpleName()) ? "32054-01.htm" : "32054-04.htm";
 				}
 				break;
 			}
diff --git a/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java b/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java
index f6f72ef4c8..bd47731c4d 100644
--- a/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java
+++ b/dist/game/data/scripts/quests/Q00654_JourneyToASettlement/Q00654_JourneyToASettlement.java
@@ -21,13 +21,13 @@ package quests.Q00654_JourneyToASettlement;
 import java.util.HashMap;
 import java.util.Map;
 
-import quests.Q00119_LastImperialPrince.Q00119_LastImperialPrince;
-
 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 quests.Q00119_LastImperialPrince.Q00119_LastImperialPrince;
+
 /**
  * Journey to a Settlement (654)
  * @author Adry_85
@@ -117,8 +117,7 @@ public final class Q00654_JourneyToASettlement extends Quest
 		String htmltext = getNoQuestMsg(player);
 		if (st.isCreated())
 		{
-			st = player.getQuestState(Q00119_LastImperialPrince.class.getSimpleName());
-			htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "31453-01.htm" : "31453-04.htm";
+			htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00119_LastImperialPrince.class.getSimpleName())) ? "31453-01.htm" : "31453-04.htm";
 		}
 		else if (st.isStarted())
 		{
diff --git a/dist/game/data/scripts/quests/Q00701_ProofOfExistence/Q00701_ProofOfExistence.java b/dist/game/data/scripts/quests/Q00701_ProofOfExistence/Q00701_ProofOfExistence.java
index 2b4cfc586a..4032e1746a 100644
--- a/dist/game/data/scripts/quests/Q00701_ProofOfExistence/Q00701_ProofOfExistence.java
+++ b/dist/game/data/scripts/quests/Q00701_ProofOfExistence/Q00701_ProofOfExistence.java
@@ -145,8 +145,7 @@ public class Q00701_ProofOfExistence extends Quest
 		switch (st.getState())
 		{
 			case State.CREATED:
-				final QuestState qs = player.getQuestState(Q10273_GoodDayToFly.class.getSimpleName());
-				htmltext = ((player.getLevel() >= MIN_LEVEL) && (qs != null) && qs.isCompleted()) ? "32559-01.htm" : "32559-02.htm";
+				htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10273_GoodDayToFly.class.getSimpleName())) ? "32559-01.htm" : "32559-02.htm";
 				break;
 			case State.STARTED:
 				if (st.hasQuestItems(BANSHEE_QUEENS_EYE))
diff --git a/dist/game/data/scripts/quests/Q00702_ATrapForRevenge/Q00702_ATrapForRevenge.java b/dist/game/data/scripts/quests/Q00702_ATrapForRevenge/Q00702_ATrapForRevenge.java
index b5e0057a54..736320cc55 100644
--- a/dist/game/data/scripts/quests/Q00702_ATrapForRevenge/Q00702_ATrapForRevenge.java
+++ b/dist/game/data/scripts/quests/Q00702_ATrapForRevenge/Q00702_ATrapForRevenge.java
@@ -371,8 +371,7 @@ public class Q00702_ATrapForRevenge extends Quest
 			switch (st.getState())
 			{
 				case State.CREATED:
-					final QuestState prev = player.getQuestState(Q10273_GoodDayToFly.class.getSimpleName());
-					htmltext = ((prev != null) && prev.isCompleted() && (player.getLevel() >= 78)) ? "32563-01.htm" : "32563-02.htm";
+					htmltext = (player.hasQuestCompleted(Q10273_GoodDayToFly.class.getSimpleName()) && (player.getLevel() >= 78)) ? "32563-01.htm" : "32563-02.htm";
 					break;
 				case State.STARTED:
 					htmltext = (st.isCond(1)) ? "32563-05.html" : "32563-06.html";
diff --git a/dist/game/data/scripts/quests/Q10271_TheEnvelopingDarkness/Q10271_TheEnvelopingDarkness.java b/dist/game/data/scripts/quests/Q10271_TheEnvelopingDarkness/Q10271_TheEnvelopingDarkness.java
index d5c1b31b81..f6b5286a7f 100644
--- a/dist/game/data/scripts/quests/Q10271_TheEnvelopingDarkness/Q10271_TheEnvelopingDarkness.java
+++ b/dist/game/data/scripts/quests/Q10271_TheEnvelopingDarkness/Q10271_TheEnvelopingDarkness.java
@@ -86,8 +86,7 @@ public class Q10271_TheEnvelopingDarkness extends Quest
 				switch (st.getState())
 				{
 					case State.CREATED:
-						st = player.getQuestState(Q10269_ToTheSeedOfDestruction.class.getSimpleName());
-						htmltext = ((player.getLevel() >= 75) && (st != null) && st.isCompleted()) ? "32560-01.htm" : "32560-02.html";
+						htmltext = ((player.getLevel() >= 75) && player.hasQuestCompleted(Q10269_ToTheSeedOfDestruction.class.getSimpleName())) ? "32560-01.htm" : "32560-02.html";
 						break;
 					case State.STARTED:
 						switch (st.getCond())
diff --git a/dist/game/data/scripts/quests/Q10272_LightFragment/Q10272_LightFragment.java b/dist/game/data/scripts/quests/Q10272_LightFragment/Q10272_LightFragment.java
index a83360d5ca..0b5a9e76ef 100644
--- a/dist/game/data/scripts/quests/Q10272_LightFragment/Q10272_LightFragment.java
+++ b/dist/game/data/scripts/quests/Q10272_LightFragment/Q10272_LightFragment.java
@@ -191,8 +191,7 @@ public class Q10272_LightFragment extends Quest
 						}
 						else
 						{
-							st = player.getQuestState(Q10271_TheEnvelopingDarkness.class.getSimpleName());
-							htmltext = ((st != null) && st.isCompleted()) ? "32560-01.htm" : "32560-02.html";
+							htmltext = (player.hasQuestCompleted(Q10271_TheEnvelopingDarkness.class.getSimpleName())) ? "32560-01.htm" : "32560-02.html";
 						}
 						break;
 					case State.STARTED:
diff --git a/dist/game/data/scripts/quests/Q10274_CollectingInTheAir/Q10274_CollectingInTheAir.java b/dist/game/data/scripts/quests/Q10274_CollectingInTheAir/Q10274_CollectingInTheAir.java
index b5d1dfb053..fcbc4a5722 100644
--- a/dist/game/data/scripts/quests/Q10274_CollectingInTheAir/Q10274_CollectingInTheAir.java
+++ b/dist/game/data/scripts/quests/Q10274_CollectingInTheAir/Q10274_CollectingInTheAir.java
@@ -129,15 +129,7 @@ public class Q10274_CollectingInTheAir extends Quest
 				htmltext = "32557-0a.html";
 				break;
 			case State.CREATED:
-				st = player.getQuestState(Q10273_GoodDayToFly.class.getSimpleName());
-				if (st == null)
-				{
-					htmltext = "32557-00.html";
-				}
-				else
-				{
-					htmltext = ((player.getLevel() >= 75) && st.isCompleted()) ? "32557-01.htm" : "32557-00.html";
-				}
+				htmltext = ((player.getLevel() >= 75) && player.hasQuestCompleted(Q10273_GoodDayToFly.class.getSimpleName())) ? "32557-01.htm" : "32557-00.html";
 				break;
 			case State.STARTED:
 				if ((st.getQuestItemsCount(RED) + st.getQuestItemsCount(BLUE) + st.getQuestItemsCount(GREEN)) >= 8)
diff --git a/dist/game/data/scripts/quests/Q10283_RequestOfIceMerchant/Q10283_RequestOfIceMerchant.java b/dist/game/data/scripts/quests/Q10283_RequestOfIceMerchant/Q10283_RequestOfIceMerchant.java
index 20a80b7ecd..ad9654575b 100644
--- a/dist/game/data/scripts/quests/Q10283_RequestOfIceMerchant/Q10283_RequestOfIceMerchant.java
+++ b/dist/game/data/scripts/quests/Q10283_RequestOfIceMerchant/Q10283_RequestOfIceMerchant.java
@@ -161,8 +161,7 @@ public class Q10283_RequestOfIceMerchant extends Quest
 		}
 		else if (st.isCreated())
 		{
-			final QuestState st1 = player.getQuestState(Q00115_TheOtherSideOfTruth.class.getSimpleName());
-			htmltext = ((player.getLevel() >= MIN_LEVEL) && (st1 != null) && (st1.isCompleted())) ? "32020-01.htm" : "32020-08.htm";
+			htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00115_TheOtherSideOfTruth.class.getSimpleName())) ? "32020-01.htm" : "32020-08.htm";
 		}
 		else if (st.isStarted())
 		{
diff --git a/dist/game/data/scripts/quests/Q10284_AcquisitionOfDivineSword/Q10284_AcquisitionOfDivineSword.java b/dist/game/data/scripts/quests/Q10284_AcquisitionOfDivineSword/Q10284_AcquisitionOfDivineSword.java
index cef61d2cf6..9ef4bf0dc3 100644
--- a/dist/game/data/scripts/quests/Q10284_AcquisitionOfDivineSword/Q10284_AcquisitionOfDivineSword.java
+++ b/dist/game/data/scripts/quests/Q10284_AcquisitionOfDivineSword/Q10284_AcquisitionOfDivineSword.java
@@ -217,8 +217,7 @@ public final class Q10284_AcquisitionOfDivineSword extends Quest
 		}
 		else if (st.isCreated())
 		{
-			st = player.getQuestState(Q10283_RequestOfIceMerchant.class.getSimpleName());
-			htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "32020-01.htm" : "32020-04.html";
+			htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10283_RequestOfIceMerchant.class.getSimpleName())) ? "32020-01.htm" : "32020-04.html";
 		}
 		else if (st.isStarted())
 		{
diff --git a/dist/game/data/scripts/quests/Q10285_MeetingSirra/Q10285_MeetingSirra.java b/dist/game/data/scripts/quests/Q10285_MeetingSirra/Q10285_MeetingSirra.java
index d0e9ff8976..f72cc51e9e 100644
--- a/dist/game/data/scripts/quests/Q10285_MeetingSirra/Q10285_MeetingSirra.java
+++ b/dist/game/data/scripts/quests/Q10285_MeetingSirra/Q10285_MeetingSirra.java
@@ -224,8 +224,7 @@ public final class Q10285_MeetingSirra extends Quest
 		}
 		else if (st.isCreated())
 		{
-			st = player.getQuestState(Q10284_AcquisitionOfDivineSword.class.getSimpleName());
-			htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "32020-01.htm" : "32020-04.htm";
+			htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10284_AcquisitionOfDivineSword.class.getSimpleName())) ? "32020-01.htm" : "32020-04.htm";
 		}
 		else if (st.isStarted())
 		{
diff --git a/dist/game/data/scripts/quests/Q10286_ReunionWithSirra/Q10286_ReunionWithSirra.java b/dist/game/data/scripts/quests/Q10286_ReunionWithSirra/Q10286_ReunionWithSirra.java
index 6c69e9b844..36f66812e0 100644
--- a/dist/game/data/scripts/quests/Q10286_ReunionWithSirra/Q10286_ReunionWithSirra.java
+++ b/dist/game/data/scripts/quests/Q10286_ReunionWithSirra/Q10286_ReunionWithSirra.java
@@ -180,8 +180,7 @@ public final class Q10286_ReunionWithSirra extends Quest
 		}
 		else if (st.isCreated())
 		{
-			st = player.getQuestState(Q10285_MeetingSirra.class.getSimpleName());
-			htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "32020-01.htm" : "32020-04.htm";
+			htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10285_MeetingSirra.class.getSimpleName())) ? "32020-01.htm" : "32020-04.htm";
 		}
 		else if (st.isStarted())
 		{
diff --git a/dist/game/data/scripts/quests/Q10287_StoryOfThoseLeft/Q10287_StoryOfThoseLeft.java b/dist/game/data/scripts/quests/Q10287_StoryOfThoseLeft/Q10287_StoryOfThoseLeft.java
index 1860a320b4..bd95719591 100644
--- a/dist/game/data/scripts/quests/Q10287_StoryOfThoseLeft/Q10287_StoryOfThoseLeft.java
+++ b/dist/game/data/scripts/quests/Q10287_StoryOfThoseLeft/Q10287_StoryOfThoseLeft.java
@@ -161,8 +161,7 @@ public final class Q10287_StoryOfThoseLeft extends Quest
 		{
 			if (npc.getId() == RAFFORTY)
 			{
-				st = player.getQuestState(Q10286_ReunionWithSirra.class.getSimpleName());
-				htmltext = ((player.getLevel() >= MIN_LEVEL) && (st != null) && (st.isCompleted())) ? "32020-01.htm" : "32020-03.htm";
+				htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10286_ReunionWithSirra.class.getSimpleName())) ? "32020-01.htm" : "32020-03.htm";
 			}
 		}
 		else if (st.isStarted())
diff --git a/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java b/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java
index 2dfb85c8b8..3220fd1e5b 100644
--- a/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java
+++ b/dist/game/data/scripts/quests/Q10292_SevenSignsGirlOfDoubt/Q10292_SevenSignsGirlOfDoubt.java
@@ -242,8 +242,7 @@ public final class Q10292_SevenSignsGirlOfDoubt extends Quest
 		}
 		else if (st.isCreated())
 		{
-			final QuestState st1 = player.getQuestState(Q00198_SevenSignsEmbryo.class.getSimpleName());
-			htmltext = ((player.getLevel() >= MIN_LEVEL) && (st1 != null) && (st1.isCompleted())) ? "32593-01.htm" : "32593-06.htm";
+			htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q00198_SevenSignsEmbryo.class.getSimpleName())) ? "32593-01.htm" : "32593-06.htm";
 		}
 		else if (st.isStarted())
 		{
diff --git a/dist/game/data/scripts/quests/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom.java b/dist/game/data/scripts/quests/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom.java
index cfeb4155b5..de24ff2b8e 100644
--- a/dist/game/data/scripts/quests/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom.java
+++ b/dist/game/data/scripts/quests/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom/Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom.java
@@ -18,13 +18,13 @@
  */
 package quests.Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom;
 
-import quests.Q10292_SevenSignsGirlOfDoubt.Q10292_SevenSignsGirlOfDoubt;
-
 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 quests.Q10292_SevenSignsGirlOfDoubt.Q10292_SevenSignsGirlOfDoubt;
+
 /**
  * Seven Signs, Forbidden Book of the Elmore-Aden Kingdom (10293)
  * @author Adry_85
@@ -232,8 +232,7 @@ public final class Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom extends
 				}
 				else if (qs.isCreated())
 				{
-					qs = player.getQuestState(Q10292_SevenSignsGirlOfDoubt.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (qs != null) && (qs.isCompleted())) ? "32784-01.htm" : "32784-11.htm";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10292_SevenSignsGirlOfDoubt.class.getSimpleName())) ? "32784-01.htm" : "32784-11.htm";
 				}
 				else if (qs.isStarted())
 				{
diff --git a/dist/game/data/scripts/quests/Q10294_SevenSignsToTheMonasteryOfSilence/Q10294_SevenSignsToTheMonasteryOfSilence.java b/dist/game/data/scripts/quests/Q10294_SevenSignsToTheMonasteryOfSilence/Q10294_SevenSignsToTheMonasteryOfSilence.java
index 9fc07a3345..2c99100120 100644
--- a/dist/game/data/scripts/quests/Q10294_SevenSignsToTheMonasteryOfSilence/Q10294_SevenSignsToTheMonasteryOfSilence.java
+++ b/dist/game/data/scripts/quests/Q10294_SevenSignsToTheMonasteryOfSilence/Q10294_SevenSignsToTheMonasteryOfSilence.java
@@ -313,8 +313,7 @@ public final class Q10294_SevenSignsToTheMonasteryOfSilence extends Quest
 				}
 				else if (qs.isCreated())
 				{
-					qs = player.getQuestState(Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom.class.getSimpleName());
-					htmltext = ((player.getLevel() >= MIN_LEVEL) && (qs != null) && (qs.isCompleted())) ? "32784-01.htm" : "32784-07.htm";
+					htmltext = ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10293_SevenSignsForbiddenBookOfTheElmoreAdenKingdom.class.getSimpleName())) ? "32784-01.htm" : "32784-07.htm";
 				}
 				else if (qs.isStarted())
 				{
diff --git a/dist/game/data/scripts/quests/Q10295_SevenSignsSolinasTomb/Q10295_SevenSignsSolinasTomb.java b/dist/game/data/scripts/quests/Q10295_SevenSignsSolinasTomb/Q10295_SevenSignsSolinasTomb.java
index a4b99f0e3b..9e3b980f02 100644
--- a/dist/game/data/scripts/quests/Q10295_SevenSignsSolinasTomb/Q10295_SevenSignsSolinasTomb.java
+++ b/dist/game/data/scripts/quests/Q10295_SevenSignsSolinasTomb/Q10295_SevenSignsSolinasTomb.java
@@ -294,8 +294,7 @@ public final class Q10295_SevenSignsSolinasTomb extends Quest
 		}
 		else if (st.isCreated())
 		{
-			final QuestState st1 = player.getQuestState(Q10294_SevenSignsToTheMonasteryOfSilence.class.getSimpleName());
-			if ((player.getLevel() >= MIN_LEVEL) && (st1 != null) && (st1.isCompleted()))
+			if ((player.getLevel() >= MIN_LEVEL) && player.hasQuestCompleted(Q10294_SevenSignsToTheMonasteryOfSilence.class.getSimpleName()))
 			{
 				htmltext = "32792-01.htm";
 			}
diff --git a/dist/game/data/scripts/quests/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal.java b/dist/game/data/scripts/quests/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal.java
index f1ef881531..885b2282c6 100644
--- a/dist/game/data/scripts/quests/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal.java
+++ b/dist/game/data/scripts/quests/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal/Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal.java
@@ -164,8 +164,7 @@ public final class Q10296_SevenSignsOneWhoSeeksThePowerOfTheSeal extends Quest
 		}
 		else if (st.isCreated())
 		{
-			final QuestState st1 = player.getQuestState(Q10295_SevenSignsSolinasTomb.class.getSimpleName());
-			if ((st1 != null) && (st1.isCompleted()))
+			if (player.hasQuestCompleted(Q10295_SevenSignsSolinasTomb.class.getSimpleName()))
 			{
 				if ((npc.getId() == ERISS_EVIL_THOUGHTS) && (player.getLevel() >= MIN_LEVEL))
 				{
-- 
GitLab