diff --git a/L2J_DataPack/dist/game/data/scripts.cfg b/L2J_DataPack/dist/game/data/scripts.cfg
index bc0f0834144e5b5ce567150a5ebfbdfdf1c60c94..e9be66250878a49a377e14ce0f7a6c6413bed966 100644
--- a/L2J_DataPack/dist/game/data/scripts.cfg
+++ b/L2J_DataPack/dist/game/data/scripts.cfg
@@ -205,7 +205,6 @@ hellbound/HellboundLoader.java
 
 # Quests Section
 quests/QuestMasterHandler.java
-quests/SagasScripts/SagasSuperClass.java
 quests/TerritoryWarScripts/TerritoryWarSuperClass.java
 quests/22_TragedyInVonHellmannForest/__init__.py
 quests/23_LidiasHeart/__init__.py
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagasSuperClass.java b/L2J_DataPack/dist/game/data/scripts/quests/AbstractSagaQuest.java
similarity index 81%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagasSuperClass.java
rename to L2J_DataPack/dist/game/data/scripts/quests/AbstractSagaQuest.java
index 6ccafc97dc168ca428076c7fff8287ef57abd6aa..411fdd4139e31afc5b8f0d69ab5240bcf9f952d5 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagasSuperClass.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/AbstractSagaQuest.java
@@ -16,7 +16,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -25,7 +25,6 @@ import java.util.Map;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ai.CtrlIntention;
-import com.l2jserver.gameserver.instancemanager.QuestManager;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.L2Party;
 import com.l2jserver.gameserver.model.L2World;
@@ -41,20 +40,19 @@ import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
 
 /**
- * Saga quests superclass.
+ * Abstract Saga quest.
  * @author Kerberos
  */
-public class SagasSuperClass extends Quest
+public abstract class AbstractSagaQuest extends Quest
 {
-	private static List<Quest> _scripts = new ArrayList<>();
-	public int[] NPC = {};
-	public int[] Items = {};
-	public int[] Mob = {};
-	public int[] classid = {};
-	public int[] prevclass = {};
-	public Location[] npcSpawnLocations = {};
-	public String[] Text = {};
-	private static final Map<L2Npc, Integer> _spawnList = new HashMap<>();
+	protected int[] _npc;
+	protected int[] Items;
+	protected int[] Mob;
+	protected int[] classid;
+	protected int[] prevclass;
+	protected Location[] npcSpawnLocations;
+	protected String[] Text;
+	private static final Map<L2Npc, Integer> SPAWN_LIST = new HashMap<>();
 	// @formatter:off
 	private static int[][] QuestClass =
 	{
@@ -66,9 +64,9 @@ public class SagasSuperClass extends Quest
 	};
 	// @formatter:on
 	
-	public SagasSuperClass(int id, String name, String descr)
+	public AbstractSagaQuest(int questId, String name, String descr)
 	{
-		super(id, name, descr);
+		super(questId, name, descr);
 	}
 	
 	private QuestState findQuest(L2PcInstance player)
@@ -98,9 +96,9 @@ public class SagasSuperClass extends Quest
 	{
 		L2PcInstance player = null;
 		QuestState st = null;
-		if (_spawnList.containsKey(npc))
+		if (SPAWN_LIST.containsKey(npc))
 		{
-			player = L2World.getInstance().getPlayer(_spawnList.get(npc));
+			player = L2World.getInstance().getPlayer(SPAWN_LIST.get(npc));
 			if (player != null)
 			{
 				st = player.getQuestState(getName());
@@ -327,7 +325,7 @@ public class SagasSuperClass extends Quest
 					if (st.getInt("Quest0") == 0)
 					{
 						L2Npc Mob_3 = addSpawn(Mob[2], npcSpawnLocations[1], false, 0);
-						L2Npc Mob_2 = addSpawn(NPC[4], npcSpawnLocations[2], false, 0);
+						L2Npc Mob_2 = addSpawn(_npc[4], npcSpawnLocations[2], false, 0);
 						addSpawn(st, Mob_3);
 						addSpawn(st, Mob_2);
 						st.set("Mob_2", String.valueOf(Mob_2.getObjectId()));
@@ -489,7 +487,7 @@ public class SagasSuperClass extends Quest
 		int npcId = npc.getId();
 		if (st != null)
 		{
-			if (npcId == NPC[4])
+			if (npcId == _npc[4])
 			{
 				int cond = st.getCond();
 				if (cond == 17)
@@ -716,9 +714,9 @@ public class SagasSuperClass extends Quest
 	@Override
 	public String onSkillSee(L2Npc npc, L2PcInstance player, Skill skill, L2Object[] targets, boolean isSummon)
 	{
-		if (_spawnList.containsKey(npc) && (_spawnList.get(npc) != player.getObjectId()))
+		if (SPAWN_LIST.containsKey(npc) && (SPAWN_LIST.get(npc) != player.getObjectId()))
 		{
-			L2PcInstance quest_player = (L2PcInstance) L2World.getInstance().findObject(_spawnList.get(npc));
+			L2PcInstance quest_player = (L2PcInstance) L2World.getInstance().findObject(SPAWN_LIST.get(npc));
 			if (quest_player == null)
 			{
 				return null;
@@ -751,7 +749,7 @@ public class SagasSuperClass extends Quest
 		if (st != null)
 		{
 			int npcId = npc.getId();
-			if ((npcId == NPC[0]) && st.isCompleted())
+			if ((npcId == _npc[0]) && st.isCompleted())
 			{
 				htmltext = getAlreadyCompletedMsg(player);
 			}
@@ -760,33 +758,33 @@ public class SagasSuperClass extends Quest
 				switch (st.getCond())
 				{
 					case 0:
-						if (npcId == NPC[0])
+						if (npcId == _npc[0])
 						{
 							htmltext = "0-01.htm";
 						}
 						break;
 					case 1:
-						if (npcId == NPC[0])
+						if (npcId == _npc[0])
 						{
 							htmltext = "0-04.htm";
 						}
-						else if (npcId == NPC[2])
+						else if (npcId == _npc[2])
 						{
 							htmltext = "2-01.htm";
 						}
 						break;
 					case 2:
-						if (npcId == NPC[2])
+						if (npcId == _npc[2])
 						{
 							htmltext = "2-02.htm";
 						}
-						else if (npcId == NPC[1])
+						else if (npcId == _npc[1])
 						{
 							htmltext = "1-01.htm";
 						}
 						break;
 					case 3:
-						if ((npcId == NPC[1]) && hasQuestItems(player, Items[0]))
+						if ((npcId == _npc[1]) && hasQuestItems(player, Items[0]))
 						{
 							if ((Items[11] == 0) || hasQuestItems(player, Items[11]))
 							{
@@ -799,70 +797,70 @@ public class SagasSuperClass extends Quest
 						}
 						break;
 					case 4:
-						if (npcId == NPC[1])
+						if (npcId == _npc[1])
 						{
 							htmltext = "1-04.htm";
 						}
-						else if (npcId == NPC[2])
+						else if (npcId == _npc[2])
 						{
 							htmltext = "2-03.htm";
 						}
 						break;
 					case 5:
-						if (npcId == NPC[2])
+						if (npcId == _npc[2])
 						{
 							htmltext = "2-04.htm";
 						}
-						else if (npcId == NPC[5])
+						else if (npcId == _npc[5])
 						{
 							htmltext = "5-01.htm";
 						}
 						break;
 					case 6:
-						if (npcId == NPC[5])
+						if (npcId == _npc[5])
 						{
 							htmltext = "5-03.htm";
 						}
-						else if (npcId == NPC[6])
+						else if (npcId == _npc[6])
 						{
 							htmltext = "6-01.htm";
 						}
 						break;
 					case 7:
-						if (npcId == NPC[6])
+						if (npcId == _npc[6])
 						{
 							htmltext = "6-02.htm";
 						}
 						break;
 					case 8:
-						if (npcId == NPC[6])
+						if (npcId == _npc[6])
 						{
 							htmltext = "6-04.htm";
 						}
-						else if (npcId == NPC[7])
+						else if (npcId == _npc[7])
 						{
 							htmltext = "7-01.htm";
 						}
 						break;
 					case 9:
-						if (npcId == NPC[7])
+						if (npcId == _npc[7])
 						{
 							htmltext = "7-05.htm";
 						}
 						break;
 					case 10:
-						if (npcId == NPC[7])
+						if (npcId == _npc[7])
 						{
 							htmltext = "7-07.htm";
 						}
-						else if (npcId == NPC[3])
+						else if (npcId == _npc[3])
 						{
 							htmltext = "3-01.htm";
 						}
 						break;
 					case 11:
 					case 12:
-						if (npcId == NPC[3])
+						if (npcId == _npc[3])
 						{
 							if (hasQuestItems(player, Items[2]))
 							{
@@ -875,69 +873,69 @@ public class SagasSuperClass extends Quest
 						}
 						break;
 					case 13:
-						if (npcId == NPC[3])
+						if (npcId == _npc[3])
 						{
 							htmltext = "3-06.htm";
 						}
-						else if (npcId == NPC[8])
+						else if (npcId == _npc[8])
 						{
 							htmltext = "8-01.htm";
 						}
 						break;
 					case 14:
-						if (npcId == NPC[8])
+						if (npcId == _npc[8])
 						{
 							htmltext = "8-03.htm";
 						}
-						else if (npcId == NPC[11])
+						else if (npcId == _npc[11])
 						{
 							htmltext = "11-01.htm";
 						}
 						break;
 					case 15:
-						if (npcId == NPC[11])
+						if (npcId == _npc[11])
 						{
 							htmltext = "11-02.htm";
 						}
-						else if (npcId == NPC[9])
+						else if (npcId == _npc[9])
 						{
 							htmltext = "9-01.htm";
 						}
 						break;
 					case 16:
-						if (npcId == NPC[9])
+						if (npcId == _npc[9])
 						{
 							htmltext = "9-02.htm";
 						}
 						break;
 					case 17:
-						if (npcId == NPC[9])
+						if (npcId == _npc[9])
 						{
 							htmltext = "9-04.htm";
 						}
-						else if (npcId == NPC[10])
+						else if (npcId == _npc[10])
 						{
 							htmltext = "10-01.htm";
 						}
 						break;
 					case 18:
-						if (npcId == NPC[10])
+						if (npcId == _npc[10])
 						{
 							htmltext = "10-05.htm";
 						}
 						break;
 					case 19:
-						if (npcId == NPC[10])
+						if (npcId == _npc[10])
 						{
 							htmltext = "10-07.htm";
 						}
-						else if (npcId == NPC[0])
+						else if (npcId == _npc[0])
 						{
 							htmltext = "0-06.htm";
 						}
 						break;
 					case 20:
-						if (npcId == NPC[0])
+						if (npcId == _npc[0])
 						{
 							if (player.getLevel() >= 76)
 							{
@@ -973,11 +971,11 @@ public class SagasSuperClass extends Quest
 	
 	public void registerNPCs()
 	{
-		addStartNpc(NPC[0]);
+		addStartNpc(_npc[0]);
 		addAttackId(Mob[2], Mob[1]);
 		addSkillSeeId(Mob[1]);
-		addFirstTalkId(NPC[4]);
-		addTalkId(NPC);
+		addFirstTalkId(_npc[4]);
+		addTalkId(_npc);
 		addKillId(Mob);
 		final int[] questItemIds = Items.clone();
 		questItemIds[0] = 0;
@@ -1002,24 +1000,9 @@ public class SagasSuperClass extends Quest
 		}
 	}
 	
-	@Override
-	public boolean unload()
-	{
-		for (Quest script : _scripts)
-		{
-			if (script == null)
-			{
-				continue;
-			}
-			QuestManager.getInstance().removeScript(script);
-		}
-		_scripts.clear();
-		return super.unload();
-	}
-	
 	private static void addSpawn(QuestState st, L2Npc mob)
 	{
-		_spawnList.put(mob, st.getPlayer().getObjectId());
+		SPAWN_LIST.put(mob, st.getPlayer().getObjectId());
 	}
 	
 	private static void autoChat(L2Npc npc, String text)
@@ -1035,61 +1018,19 @@ public class SagasSuperClass extends Quest
 	
 	private static void DeleteSpawn(QuestState st, L2Npc npc)
 	{
-		if (_spawnList.containsKey(npc))
+		if (SPAWN_LIST.containsKey(npc))
 		{
-			_spawnList.remove(npc);
+			SPAWN_LIST.remove(npc);
 			npc.deleteMe();
 		}
 	}
 	
 	private static L2Npc FindSpawn(L2PcInstance player, L2Npc npc)
 	{
-		if (_spawnList.containsKey(npc) && (_spawnList.get(npc) == player.getObjectId()))
+		if (SPAWN_LIST.containsKey(npc) && (SPAWN_LIST.get(npc) == player.getObjectId()))
 		{
 			return npc;
 		}
 		return null;
 	}
-	
-	public static void main(String[] args)
-	{
-		// initialize superclass
-		new SagasSuperClass(-1, SagasSuperClass.class.getSimpleName(), "Saga's SuperClass");
-		
-		// initialize subclasses
-		_scripts.add(new SagaOfEvasSaint());
-		_scripts.add(new SagaOfEvasTemplar());
-		_scripts.add(new SagaOfTheAdventurer());
-		_scripts.add(new SagaOfTheArcanaLord());
-		_scripts.add(new SagaOfTheArchmage());
-		_scripts.add(new SagaOfTheCardinal());
-		_scripts.add(new SagaOfTheDominator());
-		_scripts.add(new SagaOfTheDoombringer());
-		_scripts.add(new SagaOfTheDoomcryer());
-		_scripts.add(new SagaOfTheDreadnought());
-		_scripts.add(new SagaOfTheDuelist());
-		_scripts.add(new SagaOfTheElementalMaster());
-		_scripts.add(new SagaOfTheFortuneSeeker());
-		_scripts.add(new SagaOfTheGhostHunter());
-		_scripts.add(new SagaOfTheGhostSentinel());
-		_scripts.add(new SagaOfTheGrandKhavatari());
-		_scripts.add(new SagaOfTheHellKnight());
-		_scripts.add(new SagaOfTheHierophant());
-		_scripts.add(new SagaOfTheMaestro());
-		_scripts.add(new SagaOfTheMoonlightSentinel());
-		_scripts.add(new SagaOfTheMysticMuse());
-		_scripts.add(new SagaOfThePhoenixKnight());
-		_scripts.add(new SagaOfTheSagittarius());
-		_scripts.add(new SagaOfTheShillienSaint());
-		_scripts.add(new SagaOfTheShillienTemplar());
-		_scripts.add(new SagaOfTheSoulHound());
-		_scripts.add(new SagaOfTheSoultaker());
-		_scripts.add(new SagaOfTheSpectralDancer());
-		_scripts.add(new SagaOfTheSpectralMaster());
-		_scripts.add(new SagaOfTheStormScreamer());
-		_scripts.add(new SagaOfTheSwordMuse());
-		_scripts.add(new SagaOfTheTitan());
-		_scripts.add(new SagaOfTheTrickster());
-		_scripts.add(new SagaOfTheWindRider());
-	}
 }
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDoombringer.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00067_SagaOfTheDoombringer/Q00067_SagaOfTheDoombringer.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDoombringer.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00067_SagaOfTheDoombringer/Q00067_SagaOfTheDoombringer.java
index cf9e762e6787b4546019359f8e9e7a4f8f29c303..bece646513cd530409e4b15777fb4e36a02e40c9 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDoombringer.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00067_SagaOfTheDoombringer/Q00067_SagaOfTheDoombringer.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00067_SagaOfTheDoombringer;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Doombringer (67)
  * @author Emperorc
  */
-public class SagaOfTheDoombringer extends SagasSuperClass
+public final class Q00067_SagaOfTheDoombringer extends AbstractSagaQuest
 {
-	public SagaOfTheDoombringer()
+	public Q00067_SagaOfTheDoombringer()
 	{
-		super(67, "Q00067_SagaOfTheDoombringer", "Saga of the Doombringer");
-		NPC = new int[]
+		super(67, Q00067_SagaOfTheDoombringer.class.getSimpleName(), "Saga of the Doombringer");
+		_npc = new int[]
 		{
 			32138,
 			31627,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSoulHound.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00068_SagaOfTheSoulHound/Q00068_SagaOfTheSoulHound.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSoulHound.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00068_SagaOfTheSoulHound/Q00068_SagaOfTheSoulHound.java
index 701c16715a63e136f18cc2eb167894a36131e712..860482eff57c0c45ef1f8b7dcd56c38657d6bc1f 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSoulHound.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00068_SagaOfTheSoulHound/Q00068_SagaOfTheSoulHound.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00068_SagaOfTheSoulHound;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Soul Hound (68)
  * @author Emperorc
  */
-public class SagaOfTheSoulHound extends SagasSuperClass
+public class Q00068_SagaOfTheSoulHound extends AbstractSagaQuest
 {
-	public SagaOfTheSoulHound()
+	public Q00068_SagaOfTheSoulHound()
 	{
-		super(68, "Q00068_SagaOfTheSoulHound", "Saga of the Soul Hound");
-		NPC = new int[]
+		super(68, Q00068_SagaOfTheSoulHound.class.getSimpleName(), "Saga of the Soul Hound");
+		_npc = new int[]
 		{
 			32138,
 			31272,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheTrickster.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00069_SagaOfTheTrickster/Q00069_SagaOfTheTrickster.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheTrickster.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00069_SagaOfTheTrickster/Q00069_SagaOfTheTrickster.java
index 89ee5f7d509e73597f33477a750cadefa3f84ce0..d8edd1764c4d26e0b7684ff14f37a0f126ef92fb 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheTrickster.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00069_SagaOfTheTrickster/Q00069_SagaOfTheTrickster.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00069_SagaOfTheTrickster;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Trickster (69)
  * @author Emperorc
  */
-public class SagaOfTheTrickster extends SagasSuperClass
+public class Q00069_SagaOfTheTrickster extends AbstractSagaQuest
 {
-	public SagaOfTheTrickster()
+	public Q00069_SagaOfTheTrickster()
 	{
-		super(69, "Q00069_SagaOfTheTrickster", "Saga of the Trickster");
-		NPC = new int[]
+		super(69, Q00069_SagaOfTheTrickster.class.getSimpleName(), "Saga of the Trickster");
+		_npc = new int[]
 		{
 			32138,
 			31270,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfThePhoenixKnight.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00070_SagaOfThePhoenixKnight/Q00070_SagaOfThePhoenixKnight.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfThePhoenixKnight.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00070_SagaOfThePhoenixKnight/Q00070_SagaOfThePhoenixKnight.java
index d99d74aa2657c01e8a22655ee24e48fe4f886a77..d32e60e5b9cffa04f1a194ff2397b04d4144e9e5 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfThePhoenixKnight.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00070_SagaOfThePhoenixKnight/Q00070_SagaOfThePhoenixKnight.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00070_SagaOfThePhoenixKnight;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Phoenix Knight (70)
  * @author Emperorc
  */
-public class SagaOfThePhoenixKnight extends SagasSuperClass
+public class Q00070_SagaOfThePhoenixKnight extends AbstractSagaQuest
 {
-	public SagaOfThePhoenixKnight()
+	public Q00070_SagaOfThePhoenixKnight()
 	{
-		super(70, "Q00070_SagaOfThePhoenixKnight", "Saga of the Phoenix Knight");
-		NPC = new int[]
+		super(70, Q00070_SagaOfThePhoenixKnight.class.getSimpleName(), "Saga of the Phoenix Knight");
+		_npc = new int[]
 		{
 			30849,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfEvasTemplar.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00071_SagaOfEvasTemplar/Q00071_SagaOfEvasTemplar.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfEvasTemplar.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00071_SagaOfEvasTemplar/Q00071_SagaOfEvasTemplar.java
index c95ca2129700b6b05f1099b05922c3103949b23a..dc07f87526d4b2b0f6b3bcc08d54cd0c49829209 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfEvasTemplar.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00071_SagaOfEvasTemplar/Q00071_SagaOfEvasTemplar.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00071_SagaOfEvasTemplar;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of Eva's Templar (71)
  * @author Emperorc
  */
-public class SagaOfEvasTemplar extends SagasSuperClass
+public class Q00071_SagaOfEvasTemplar extends AbstractSagaQuest
 {
-	public SagaOfEvasTemplar()
+	public Q00071_SagaOfEvasTemplar()
 	{
-		super(71, "Q00071_SagaOfEvasTemplar", "Saga of Eva's Templar");
-		NPC = new int[]
+		super(71, Q00071_SagaOfEvasTemplar.class.getSimpleName(), "Saga of Eva's Templar");
+		_npc = new int[]
 		{
 			30852,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSwordMuse.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00072_SagaOfTheSwordMuse/Q00072_SagaOfTheSwordMuse.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSwordMuse.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00072_SagaOfTheSwordMuse/Q00072_SagaOfTheSwordMuse.java
index cbdf7c5d684deef8329d1c621bccc828c069831b..35804bc9b1539c6c651eb740fde33b3dfba98516 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSwordMuse.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00072_SagaOfTheSwordMuse/Q00072_SagaOfTheSwordMuse.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00072_SagaOfTheSwordMuse;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Sword Muse (72)
  * @author Emperorc
  */
-public class SagaOfTheSwordMuse extends SagasSuperClass
+public class Q00072_SagaOfTheSwordMuse extends AbstractSagaQuest
 {
-	public SagaOfTheSwordMuse()
+	public Q00072_SagaOfTheSwordMuse()
 	{
-		super(72, "Q00072_SagaOfTheSwordMuse", "Saga of the Sword Muse");
-		NPC = new int[]
+		super(72, Q00072_SagaOfTheSwordMuse.class.getSimpleName(), "Saga of the Sword Muse");
+		_npc = new int[]
 		{
 			30853,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDuelist.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00073_SagaOfTheDuelist/Q00073_SagaOfTheDuelist.java
similarity index 89%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDuelist.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00073_SagaOfTheDuelist/Q00073_SagaOfTheDuelist.java
index 81ae292f4dcac27890b48e7e7627544623dec38c..6d0b8b33c76c8f10b0adfefb494a146e5ebf7fd3 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDuelist.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00073_SagaOfTheDuelist/Q00073_SagaOfTheDuelist.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00073_SagaOfTheDuelist;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Npc;
@@ -27,7 +29,7 @@ import com.l2jserver.gameserver.model.quest.QuestState;
  * Saga of the Duelist (73)
  * @author Emperorc
  */
-public class SagaOfTheDuelist extends SagasSuperClass
+public class Q00073_SagaOfTheDuelist extends AbstractSagaQuest
 {
 	/**
 	 * Third Class Transfer Quest - Duelist: The quest asks for "Top-grade Meat" which can now be acquired directly through NPC Tunatun, instead of through an additional quest from NPC Tunatun.
@@ -35,10 +37,10 @@ public class SagaOfTheDuelist extends SagasSuperClass
 	private final int TUNATUN = 31537;
 	private final int TOPQUALITYMEAT = 7546;
 	
-	public SagaOfTheDuelist()
+	public Q00073_SagaOfTheDuelist()
 	{
-		super(73, "Q00073_SagaOfTheDuelist", "Saga of the Duelist");
-		NPC = new int[]
+		super(73, Q00073_SagaOfTheDuelist.class.getSimpleName(), "Saga of the Duelist");
+		_npc = new int[]
 		{
 			30849,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDreadnought.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00074_SagaOfTheDreadnought/Q00074_SagaOfTheDreadnought.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDreadnought.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00074_SagaOfTheDreadnought/Q00074_SagaOfTheDreadnought.java
index 77f88b8e10d3a76f45c2e0b69f2abedb5ec503c3..5d40b459c376260f4bf66e328b014d78b7391bfe 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDreadnought.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00074_SagaOfTheDreadnought/Q00074_SagaOfTheDreadnought.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00074_SagaOfTheDreadnought;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Dreadnought (74)
  * @author Emperorc
  */
-public class SagaOfTheDreadnought extends SagasSuperClass
+public class Q00074_SagaOfTheDreadnought extends AbstractSagaQuest
 {
-	public SagaOfTheDreadnought()
+	public Q00074_SagaOfTheDreadnought()
 	{
-		super(74, "Q00074_SagaOfTheDreadnought", "Saga of the Dreadnought");
-		NPC = new int[]
+		super(74, Q00074_SagaOfTheDreadnought.class.getSimpleName(), "Saga of the Dreadnought");
+		_npc = new int[]
 		{
 			30850,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheTitan.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00075_SagaOfTheTitan/Q00075_SagaOfTheTitan.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheTitan.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00075_SagaOfTheTitan/Q00075_SagaOfTheTitan.java
index a627753c21b57fe7047660cd8607c1213ebf3764..12faf6b058f05d8b98ad8b96ef805afd0daf5c7b 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheTitan.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00075_SagaOfTheTitan/Q00075_SagaOfTheTitan.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00075_SagaOfTheTitan;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Titan (75)
  * @author Emperorc
  */
-public class SagaOfTheTitan extends SagasSuperClass
+public class Q00075_SagaOfTheTitan extends AbstractSagaQuest
 {
-	public SagaOfTheTitan()
+	public Q00075_SagaOfTheTitan()
 	{
-		super(75, "Q00075_SagaOfTheTitan", "Saga of the Titan");
-		NPC = new int[]
+		super(75, Q00075_SagaOfTheTitan.class.getSimpleName(), "Saga of the Titan");
+		_npc = new int[]
 		{
 			31327,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGrandKhavatari.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00076_SagaOfTheGrandKhavatari/Q00076_SagaOfTheGrandKhavatari.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGrandKhavatari.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00076_SagaOfTheGrandKhavatari/Q00076_SagaOfTheGrandKhavatari.java
index b77e54b42e3f6f5c4740bae4c2745e0823e6fea7..7f26bded89dcc0b6b5d8fe6c837d66ad3326982c 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGrandKhavatari.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00076_SagaOfTheGrandKhavatari/Q00076_SagaOfTheGrandKhavatari.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00076_SagaOfTheGrandKhavatari;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Grand Khavatari (76)
  * @author Emperorc
  */
-public class SagaOfTheGrandKhavatari extends SagasSuperClass
+public class Q00076_SagaOfTheGrandKhavatari extends AbstractSagaQuest
 {
-	public SagaOfTheGrandKhavatari()
+	public Q00076_SagaOfTheGrandKhavatari()
 	{
-		super(76, "Q00076_SagaOfTheGrandKhavatari", "Saga of the Grand Khavatari");
-		NPC = new int[]
+		super(76, Q00076_SagaOfTheGrandKhavatari.class.getSimpleName(), "Saga of the Grand Khavatari");
+		_npc = new int[]
 		{
 			31339,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDominator.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00077_SagaOfTheDominator/Q00077_SagaOfTheDominator.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDominator.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00077_SagaOfTheDominator/Q00077_SagaOfTheDominator.java
index 023d20b6343d40bbc86839581bc9f219ffb66626..b9958fab4db6b9d4feb8a835ca78070827dcf22a 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDominator.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00077_SagaOfTheDominator/Q00077_SagaOfTheDominator.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00077_SagaOfTheDominator;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Dominator (77)
  * @author Emperorc
  */
-public class SagaOfTheDominator extends SagasSuperClass
+public class Q00077_SagaOfTheDominator extends AbstractSagaQuest
 {
-	public SagaOfTheDominator()
+	public Q00077_SagaOfTheDominator()
 	{
-		super(77, "Q00077_SagaOfTheDominator", "Saga of the Dominator");
-		NPC = new int[]
+		super(77, Q00077_SagaOfTheDominator.class.getSimpleName(), "Saga of the Dominator");
+		_npc = new int[]
 		{
 			31336,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDoomcryer.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00078_SagaOfTheDoomcryer/Q00078_SagaOfTheDoomcryer.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDoomcryer.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00078_SagaOfTheDoomcryer/Q00078_SagaOfTheDoomcryer.java
index 5c6d1647087ebbd7e973fec40013505864f9b994..1d410d0dad0e6fdc9fd44f8bc7053d390cb59a8f 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheDoomcryer.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00078_SagaOfTheDoomcryer/Q00078_SagaOfTheDoomcryer.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00078_SagaOfTheDoomcryer;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Doomcryer (78)
  * @author Emperorc
  */
-public class SagaOfTheDoomcryer extends SagasSuperClass
+public class Q00078_SagaOfTheDoomcryer extends AbstractSagaQuest
 {
-	public SagaOfTheDoomcryer()
+	public Q00078_SagaOfTheDoomcryer()
 	{
-		super(78, "Q00078_SagaOfTheDoomcryer", "Saga of the Doomcryer");
-		NPC = new int[]
+		super(78, Q00078_SagaOfTheDoomcryer.class.getSimpleName(), "Saga of the Doomcryer");
+		_npc = new int[]
 		{
 			31336,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheAdventurer.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00079_SagaOfTheAdventurer/Q00079_SagaOfTheAdventurer.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheAdventurer.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00079_SagaOfTheAdventurer/Q00079_SagaOfTheAdventurer.java
index 84178a150fefcb2f9dfb08453f866ecb1187f709..4a6a3f8972f55f1898f95f09dec8a324cbc5c682 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheAdventurer.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00079_SagaOfTheAdventurer/Q00079_SagaOfTheAdventurer.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00079_SagaOfTheAdventurer;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Adventurer (79)
  * @author Emperorc
  */
-public class SagaOfTheAdventurer extends SagasSuperClass
+public class Q00079_SagaOfTheAdventurer extends AbstractSagaQuest
 {
-	public SagaOfTheAdventurer()
+	public Q00079_SagaOfTheAdventurer()
 	{
-		super(79, "Q00079_SagaOfTheAdventurer", "Saga of the Adventurer");
-		NPC = new int[]
+		super(79, Q00079_SagaOfTheAdventurer.class.getSimpleName(), "Saga of the Adventurer");
+		_npc = new int[]
 		{
 			31603,
 			31584,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheWindRider.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00080_SagaOfTheWindRider/Q00080_SagaOfTheWindRider.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheWindRider.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00080_SagaOfTheWindRider/Q00080_SagaOfTheWindRider.java
index d0abdd8bf1053a4970218c0029ad79692af90db2..44f85a647b385509fcc9083d540a11c0e64fb544 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheWindRider.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00080_SagaOfTheWindRider/Q00080_SagaOfTheWindRider.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00080_SagaOfTheWindRider;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Wind Rider (80)
  * @author Emperorc
  */
-public class SagaOfTheWindRider extends SagasSuperClass
+public class Q00080_SagaOfTheWindRider extends AbstractSagaQuest
 {
-	public SagaOfTheWindRider()
+	public Q00080_SagaOfTheWindRider()
 	{
-		super(80, "Q00080_SagaOfTheWindRider", "Saga of the Wind Rider");
-		NPC = new int[]
+		super(80, Q00080_SagaOfTheWindRider.class.getSimpleName(), "Saga of the Wind Rider");
+		_npc = new int[]
 		{
 			31603,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGhostHunter.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00081_SagaOfTheGhostHunter/Q00081_SagaOfTheGhostHunter.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGhostHunter.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00081_SagaOfTheGhostHunter/Q00081_SagaOfTheGhostHunter.java
index 1a2cfc71dd4f721e9e9d6a565ea2aeff96c70fcc..e8660a51d73e5f4b86fb2c167e1ef0ed78bb7c37 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGhostHunter.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00081_SagaOfTheGhostHunter/Q00081_SagaOfTheGhostHunter.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00081_SagaOfTheGhostHunter;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Ghost Hunter (81)
  * @author Emperorc
  */
-public class SagaOfTheGhostHunter extends SagasSuperClass
+public class Q00081_SagaOfTheGhostHunter extends AbstractSagaQuest
 {
-	public SagaOfTheGhostHunter()
+	public Q00081_SagaOfTheGhostHunter()
 	{
-		super(81, "Q00081_SagaOfTheGhostHunter", "Saga of the Ghost Hunter");
-		NPC = new int[]
+		super(81, Q00081_SagaOfTheGhostHunter.class.getSimpleName(), "Saga of the Ghost Hunter");
+		_npc = new int[]
 		{
 			31603,
 			31624,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSagittarius.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00082_SagaOfTheSagittarius/Q00082_SagaOfTheSagittarius.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSagittarius.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00082_SagaOfTheSagittarius/Q00082_SagaOfTheSagittarius.java
index 76c0f525ef393611158b79d1c54eb89c9dfd4650..e8dd1831bec2fcd2718a3b7f744a901cdf48a837 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSagittarius.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00082_SagaOfTheSagittarius/Q00082_SagaOfTheSagittarius.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00082_SagaOfTheSagittarius;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Sagittarius (82)
  * @author Emperorc
  */
-public class SagaOfTheSagittarius extends SagasSuperClass
+public class Q00082_SagaOfTheSagittarius extends AbstractSagaQuest
 {
-	public SagaOfTheSagittarius()
+	public Q00082_SagaOfTheSagittarius()
 	{
-		super(82, "Q00082_SagaOfTheSagittarius", "Saga of the Sagittarius");
-		NPC = new int[]
+		super(82, Q00082_SagaOfTheSagittarius.class.getSimpleName(), "Saga of the Sagittarius");
+		_npc = new int[]
 		{
 			30702,
 			31627,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMoonlightSentinel.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00083_SagaOfTheMoonlightSentinel/Q00083_SagaOfTheMoonlightSentinel.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMoonlightSentinel.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00083_SagaOfTheMoonlightSentinel/Q00083_SagaOfTheMoonlightSentinel.java
index a1b7f59c073ef1cebcec73aa2d45383c4812706e..3ca8998ca0bc73b9421ef742b5de9066328829d3 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMoonlightSentinel.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00083_SagaOfTheMoonlightSentinel/Q00083_SagaOfTheMoonlightSentinel.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00083_SagaOfTheMoonlightSentinel;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Moonlight Sentinel (83)
  * @author Emperorc
  */
-public class SagaOfTheMoonlightSentinel extends SagasSuperClass
+public class Q00083_SagaOfTheMoonlightSentinel extends AbstractSagaQuest
 {
-	public SagaOfTheMoonlightSentinel()
+	public Q00083_SagaOfTheMoonlightSentinel()
 	{
-		super(83, "Q00083_SagaOfTheMoonlightSentinel", "Saga of the Moonlight Sentinel");
-		NPC = new int[]
+		super(83, Q00083_SagaOfTheMoonlightSentinel.class.getSimpleName(), "Saga of the Moonlight Sentinel");
+		_npc = new int[]
 		{
 			30702,
 			31627,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGhostSentinel.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00084_SagaOfTheGhostSentinel/Q00084_SagaOfTheGhostSentinel.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGhostSentinel.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00084_SagaOfTheGhostSentinel/Q00084_SagaOfTheGhostSentinel.java
index c1970e1303ae47393c332b9f32c3dd8bd72489b9..06ef89c7219597ba329b44a85f9a7b9157255d23 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheGhostSentinel.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00084_SagaOfTheGhostSentinel/Q00084_SagaOfTheGhostSentinel.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00084_SagaOfTheGhostSentinel;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Ghost Sentinel (84)
  * @author Emperorc
  */
-public class SagaOfTheGhostSentinel extends SagasSuperClass
+public class Q00084_SagaOfTheGhostSentinel extends AbstractSagaQuest
 {
-	public SagaOfTheGhostSentinel()
+	public Q00084_SagaOfTheGhostSentinel()
 	{
-		super(84, "Q00084_SagaOfTheGhostSentinel", "Saga of the Ghost Sentinel");
-		NPC = new int[]
+		super(84, Q00084_SagaOfTheGhostSentinel.class.getSimpleName(), "Saga of the Ghost Sentinel");
+		_npc = new int[]
 		{
 			30702,
 			31587,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheCardinal.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00085_SagaOfTheCardinal/Q00085_SagaOfTheCardinal.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheCardinal.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00085_SagaOfTheCardinal/Q00085_SagaOfTheCardinal.java
index 13cdddf4b714272f09d0ef406de36b020f7d096d..86c11560071bc5e6ec782b67e7d7afa14738efbf 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheCardinal.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00085_SagaOfTheCardinal/Q00085_SagaOfTheCardinal.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00085_SagaOfTheCardinal;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Cardinal (85)
  * @author Emperorc
  */
-public class SagaOfTheCardinal extends SagasSuperClass
+public class Q00085_SagaOfTheCardinal extends AbstractSagaQuest
 {
-	public SagaOfTheCardinal()
+	public Q00085_SagaOfTheCardinal()
 	{
-		super(85, "Q00085_SagaOfTheCardinal", "Saga of the Cardinal");
-		NPC = new int[]
+		super(85, Q00085_SagaOfTheCardinal.class.getSimpleName(), "Saga of the Cardinal");
+		_npc = new int[]
 		{
 			30191,
 			31626,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheHierophant.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00086_SagaOfTheHierophant/Q00086_SagaOfTheHierophant.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheHierophant.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00086_SagaOfTheHierophant/Q00086_SagaOfTheHierophant.java
index f3072ddb0b86cb295ab93e2ce2b41eafba51d784..ecc03fd03eb3addc5d89e418fb1cfeb959ca8719 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheHierophant.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00086_SagaOfTheHierophant/Q00086_SagaOfTheHierophant.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00086_SagaOfTheHierophant;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Hierophant (86)
  * @author Emperorc
  */
-public class SagaOfTheHierophant extends SagasSuperClass
+public class Q00086_SagaOfTheHierophant extends AbstractSagaQuest
 {
-	public SagaOfTheHierophant()
+	public Q00086_SagaOfTheHierophant()
 	{
-		super(86, "Q00086_SagaOfTheHierophant", "Saga of the Hierophant");
-		NPC = new int[]
+		super(86, Q00086_SagaOfTheHierophant.class.getSimpleName(), "Saga of the Hierophant");
+		_npc = new int[]
 		{
 			30191,
 			31626,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfEvasSaint.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00087_SagaOfEvasSaint/Q00087_SagaOfEvasSaint.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfEvasSaint.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00087_SagaOfEvasSaint/Q00087_SagaOfEvasSaint.java
index 6662e4398a45e00130d8a7751cae1637d1411a01..4a7d885b657887cc1eb89ac3a42a61958cb42039 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfEvasSaint.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00087_SagaOfEvasSaint/Q00087_SagaOfEvasSaint.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00087_SagaOfEvasSaint;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of Eva's Saint (87)
  * @author Emperorc
  */
-public class SagaOfEvasSaint extends SagasSuperClass
+public class Q00087_SagaOfEvasSaint extends AbstractSagaQuest
 {
-	public SagaOfEvasSaint()
+	public Q00087_SagaOfEvasSaint()
 	{
-		super(87, "Q00087_SagaOfEvasSaint", "Saga of Eva's Saint");
-		NPC = new int[]
+		super(87, Q00087_SagaOfEvasSaint.class.getSimpleName(), "Saga of Eva's Saint");
+		_npc = new int[]
 		{
 			30191,
 			31626,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheArchmage.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00088_SagaOfTheArchmage/Q00088_SagaOfTheArchmage.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheArchmage.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00088_SagaOfTheArchmage/Q00088_SagaOfTheArchmage.java
index 9ad47d880eb91e0f6218bf225be72b1d0c141a7a..c0544a2fce0eedc978b0caec265ad97cc9a21c76 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheArchmage.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00088_SagaOfTheArchmage/Q00088_SagaOfTheArchmage.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00088_SagaOfTheArchmage;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Archmage (88)
  * @author Emperorc
  */
-public class SagaOfTheArchmage extends SagasSuperClass
+public class Q00088_SagaOfTheArchmage extends AbstractSagaQuest
 {
-	public SagaOfTheArchmage()
+	public Q00088_SagaOfTheArchmage()
 	{
-		super(88, "Q00088_SagaOfTheArchmage", "Saga of the Archmage");
-		NPC = new int[]
+		super(88, Q00088_SagaOfTheArchmage.class.getSimpleName(), "Saga of the Archmage");
+		_npc = new int[]
 		{
 			30176,
 			31627,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMysticMuse.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00089_SagaOfTheMysticMuse/Q00089_SagaOfTheMysticMuse.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMysticMuse.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00089_SagaOfTheMysticMuse/Q00089_SagaOfTheMysticMuse.java
index 3e47f9c9cdb5bf8ab9f226e2b83d0093775d0e94..20bf331664c40cb2bdb10f008fd932b788f4d072 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMysticMuse.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00089_SagaOfTheMysticMuse/Q00089_SagaOfTheMysticMuse.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00089_SagaOfTheMysticMuse;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Mystic Muse (89)
  * @author Emperorc
  */
-public class SagaOfTheMysticMuse extends SagasSuperClass
+public class Q00089_SagaOfTheMysticMuse extends AbstractSagaQuest
 {
-	public SagaOfTheMysticMuse()
+	public Q00089_SagaOfTheMysticMuse()
 	{
-		super(89, "Q00089_SagaOfTheMysticMuse", "Saga of the Mystic Muse");
-		NPC = new int[]
+		super(89, Q00089_SagaOfTheMysticMuse.class.getSimpleName(), "Saga of the Mystic Muse");
+		_npc = new int[]
 		{
 			30174,
 			31627,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheStormScreamer.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00090_SagaOfTheStormScreamer/Q00090_SagaOfTheStormScreamer.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheStormScreamer.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00090_SagaOfTheStormScreamer/Q00090_SagaOfTheStormScreamer.java
index a380aafd59c106145a59c9d1e997b9a88d1e5944..d139699e2b4b4c18fe458f4ad97fb5aba11797d4 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheStormScreamer.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00090_SagaOfTheStormScreamer/Q00090_SagaOfTheStormScreamer.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00090_SagaOfTheStormScreamer;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Storm Screamer (90)
  * @author Emperorc
  */
-public class SagaOfTheStormScreamer extends SagasSuperClass
+public class Q00090_SagaOfTheStormScreamer extends AbstractSagaQuest
 {
-	public SagaOfTheStormScreamer()
+	public Q00090_SagaOfTheStormScreamer()
 	{
-		super(90, "Q00090_SagaOfTheStormScreamer", "Saga of the Storm Screamer");
-		NPC = new int[]
+		super(90, Q00090_SagaOfTheStormScreamer.class.getSimpleName(), "Saga of the Storm Screamer");
+		_npc = new int[]
 		{
 			30175,
 			31627,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheArcanaLord.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00091_SagaOfTheArcanaLord/Q00091_SagaOfTheArcanaLord.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheArcanaLord.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00091_SagaOfTheArcanaLord/Q00091_SagaOfTheArcanaLord.java
index b0a0b5cf6b752405c5726f6ec9b11a9ae96f14d6..93cc1135399db02da34f9186b99e630227d22686 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheArcanaLord.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00091_SagaOfTheArcanaLord/Q00091_SagaOfTheArcanaLord.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00091_SagaOfTheArcanaLord;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Arcana Lord (91)
  * @author Emperorc
  */
-public class SagaOfTheArcanaLord extends SagasSuperClass
+public class Q00091_SagaOfTheArcanaLord extends AbstractSagaQuest
 {
-	public SagaOfTheArcanaLord()
+	public Q00091_SagaOfTheArcanaLord()
 	{
-		super(91, "Q00091_SagaOfTheArcanaLord", "Saga of the Arcana Lord");
-		NPC = new int[]
+		super(91, Q00091_SagaOfTheArcanaLord.class.getSimpleName(), "Saga of the Arcana Lord");
+		_npc = new int[]
 		{
 			31605,
 			31622,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheElementalMaster.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00092_SagaOfTheElementalMaster/Q00092_SagaOfTheElementalMaster.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheElementalMaster.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00092_SagaOfTheElementalMaster/Q00092_SagaOfTheElementalMaster.java
index 7c211f44bbdab1ce01561ce2df1099421c83a745..f38dd8d0047fafaf19c48a9360cbcb550f063e16 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheElementalMaster.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00092_SagaOfTheElementalMaster/Q00092_SagaOfTheElementalMaster.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00092_SagaOfTheElementalMaster;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Elemental Master (92)
  * @author Emperorc
  */
-public class SagaOfTheElementalMaster extends SagasSuperClass
+public class Q00092_SagaOfTheElementalMaster extends AbstractSagaQuest
 {
-	public SagaOfTheElementalMaster()
+	public Q00092_SagaOfTheElementalMaster()
 	{
-		super(92, "Q00092_SagaOfTheElementalMaster", "Saga of the Elemental Master");
-		NPC = new int[]
+		super(92, Q00092_SagaOfTheElementalMaster.class.getSimpleName(), "Saga of the Elemental Master");
+		_npc = new int[]
 		{
 			30174,
 			31281,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSpectralMaster.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00093_SagaOfTheSpectralMaster/Q00093_SagaOfTheSpectralMaster.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSpectralMaster.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00093_SagaOfTheSpectralMaster/Q00093_SagaOfTheSpectralMaster.java
index b1b8dbbdcc507ab3a013034b1b034b0c6e744487..82114f3317a2f325388771ebc512f102903b3889 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSpectralMaster.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00093_SagaOfTheSpectralMaster/Q00093_SagaOfTheSpectralMaster.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00093_SagaOfTheSpectralMaster;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Spectral Master (93)
  * @author Emperorc
  */
-public class SagaOfTheSpectralMaster extends SagasSuperClass
+public class Q00093_SagaOfTheSpectralMaster extends AbstractSagaQuest
 {
-	public SagaOfTheSpectralMaster()
+	public Q00093_SagaOfTheSpectralMaster()
 	{
-		super(93, "Q00093_SagaOfTheSpectralMaster", "Saga of the Spectral Master");
-		NPC = new int[]
+		super(93, Q00093_SagaOfTheSpectralMaster.class.getSimpleName(), "Saga of the Spectral Master");
+		_npc = new int[]
 		{
 			30175,
 			31287,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSoultaker.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00094_SagaOfTheSoultaker/Q00094_SagaOfTheSoultaker.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSoultaker.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00094_SagaOfTheSoultaker/Q00094_SagaOfTheSoultaker.java
index 9c29721dab85fecc5d270a960fbcb793ccf0e32f..df9192b34cd401b897d10c0e3357eba7a9c3fb73 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSoultaker.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00094_SagaOfTheSoultaker/Q00094_SagaOfTheSoultaker.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00094_SagaOfTheSoultaker;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Soultaker (94)
  * @author Emperorc
  */
-public class SagaOfTheSoultaker extends SagasSuperClass
+public class Q00094_SagaOfTheSoultaker extends AbstractSagaQuest
 {
-	public SagaOfTheSoultaker()
+	public Q00094_SagaOfTheSoultaker()
 	{
-		super(94, "Q00094_SagaOfTheSoultaker", "Saga of the Soultaker");
-		NPC = new int[]
+		super(94, Q00094_SagaOfTheSoultaker.class.getSimpleName(), "Saga of the Soultaker");
+		_npc = new int[]
 		{
 			30832,
 			31623,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheHellKnight.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00095_SagaOfTheHellKnight/Q00095_SagaOfTheHellKnight.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheHellKnight.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00095_SagaOfTheHellKnight/Q00095_SagaOfTheHellKnight.java
index 9e95ece18b352a63c29954fc8e3717e872e6264f..b07204bb809af25a992597b452122063ac827303 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheHellKnight.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00095_SagaOfTheHellKnight/Q00095_SagaOfTheHellKnight.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00095_SagaOfTheHellKnight;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Hell Knight (95)
  * @author Emperorc
  */
-public class SagaOfTheHellKnight extends SagasSuperClass
+public class Q00095_SagaOfTheHellKnight extends AbstractSagaQuest
 {
-	public SagaOfTheHellKnight()
+	public Q00095_SagaOfTheHellKnight()
 	{
-		super(95, "Q00095_SagaOfTheHellKnight", "Saga of the Hell Knight");
-		NPC = new int[]
+		super(95, Q00095_SagaOfTheHellKnight.class.getSimpleName(), "Saga of the Hell Knight");
+		_npc = new int[]
 		{
 			31582,
 			31623,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSpectralDancer.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00096_SagaOfTheSpectralDancer/Q00096_SagaOfTheSpectralDancer.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSpectralDancer.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00096_SagaOfTheSpectralDancer/Q00096_SagaOfTheSpectralDancer.java
index c7e2b5199a313aa7d13071d2bb17c534f3664829..7303bb4649259c62314457c269bf264b567248de 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheSpectralDancer.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00096_SagaOfTheSpectralDancer/Q00096_SagaOfTheSpectralDancer.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00096_SagaOfTheSpectralDancer;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Spectral Dancer (96)
  * @author Emperorc
  */
-public class SagaOfTheSpectralDancer extends SagasSuperClass
+public class Q00096_SagaOfTheSpectralDancer extends AbstractSagaQuest
 {
-	public SagaOfTheSpectralDancer()
+	public Q00096_SagaOfTheSpectralDancer()
 	{
-		super(96, "Q00096_SagaOfTheSpectralDancer", "Saga of the Spectral Dancer");
-		NPC = new int[]
+		super(96, Q00096_SagaOfTheSpectralDancer.class.getSimpleName(), "Saga of the Spectral Dancer");
+		_npc = new int[]
 		{
 			31582,
 			31623,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheShillienTemplar.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00097_SagaOfTheShillienTemplar/Q00097_SagaOfTheShillienTemplar.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheShillienTemplar.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00097_SagaOfTheShillienTemplar/Q00097_SagaOfTheShillienTemplar.java
index 835743325d0c8f089634d2f6aa2dc16515a59d50..fb411f60c176ec622e68b8fe6a9f0f0cdfccd3cc 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheShillienTemplar.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00097_SagaOfTheShillienTemplar/Q00097_SagaOfTheShillienTemplar.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00097_SagaOfTheShillienTemplar;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Shillien Templar (97)
  * @author Emperorc
  */
-public class SagaOfTheShillienTemplar extends SagasSuperClass
+public class Q00097_SagaOfTheShillienTemplar extends AbstractSagaQuest
 {
-	public SagaOfTheShillienTemplar()
+	public Q00097_SagaOfTheShillienTemplar()
 	{
-		super(97, "Q00097_SagaOfTheShillienTemplar", "Saga of the Shillien Templar");
-		NPC = new int[]
+		super(97, Q00097_SagaOfTheShillienTemplar.class.getSimpleName(), "Saga of the Shillien Templar");
+		_npc = new int[]
 		{
 			31580,
 			31623,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheShillienSaint.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00098_SagaOfTheShillienSaint/Q00098_SagaOfTheShillienSaint.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheShillienSaint.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00098_SagaOfTheShillienSaint/Q00098_SagaOfTheShillienSaint.java
index 2db7df8e1d96af91cef88561570746d72994d5f3..0f5a19f4b92ac158dab4d0f12177f6528fd64db1 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheShillienSaint.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00098_SagaOfTheShillienSaint/Q00098_SagaOfTheShillienSaint.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00098_SagaOfTheShillienSaint;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Shillien Saint (98)
  * @author Emperorc
  */
-public class SagaOfTheShillienSaint extends SagasSuperClass
+public class Q00098_SagaOfTheShillienSaint extends AbstractSagaQuest
 {
-	public SagaOfTheShillienSaint()
+	public Q00098_SagaOfTheShillienSaint()
 	{
-		super(98, "Q00098_SagaOfTheShillienSaint", "Saga of the Shillien Saint");
-		NPC = new int[]
+		super(98, Q00098_SagaOfTheShillienSaint.class.getSimpleName(), "Saga of the Shillien Saint");
+		_npc = new int[]
 		{
 			31581,
 			31626,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheFortuneSeeker.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00099_SagaOfTheFortuneSeeker/Q00099_SagaOfTheFortuneSeeker.java
similarity index 86%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheFortuneSeeker.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00099_SagaOfTheFortuneSeeker/Q00099_SagaOfTheFortuneSeeker.java
index c12727235e178f88cc53dfe7b633d869f48a1cd8..32a416b66be5014c3d178deaa7ba4673557e1e3c 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheFortuneSeeker.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00099_SagaOfTheFortuneSeeker/Q00099_SagaOfTheFortuneSeeker.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00099_SagaOfTheFortuneSeeker;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Fortune Seeker (99)
  * @author Emperorc
  */
-public class SagaOfTheFortuneSeeker extends SagasSuperClass
+public class Q00099_SagaOfTheFortuneSeeker extends AbstractSagaQuest
 {
-	public SagaOfTheFortuneSeeker()
+	public Q00099_SagaOfTheFortuneSeeker()
 	{
-		super(99, "Q00099_SagaOfTheFortuneSeeker", "Saga of the Fortune Seeker");
-		NPC = new int[]
+		super(99, Q00099_SagaOfTheFortuneSeeker.class.getSimpleName(), "Saga of the Fortune Seeker");
+		_npc = new int[]
 		{
 			31594,
 			31623,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMaestro.java b/L2J_DataPack/dist/game/data/scripts/quests/Q00100_SagaOfTheMaestro/Q00100_SagaOfTheMaestro.java
similarity index 87%
rename from L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMaestro.java
rename to L2J_DataPack/dist/game/data/scripts/quests/Q00100_SagaOfTheMaestro/Q00100_SagaOfTheMaestro.java
index c81503f32ef01fceb89741c58332e9d4bfbdc72d..3eb54ea86b9d643467b83160c077072e05cf559b 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/SagasScripts/SagaOfTheMaestro.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/Q00100_SagaOfTheMaestro/Q00100_SagaOfTheMaestro.java
@@ -16,7 +16,9 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package quests.SagasScripts;
+package quests.Q00100_SagaOfTheMaestro;
+
+import quests.AbstractSagaQuest;
 
 import com.l2jserver.gameserver.model.Location;
 
@@ -24,12 +26,12 @@ import com.l2jserver.gameserver.model.Location;
  * Saga of the Maestro (100)
  * @author Emperorc
  */
-public class SagaOfTheMaestro extends SagasSuperClass
+public class Q00100_SagaOfTheMaestro extends AbstractSagaQuest
 {
-	public SagaOfTheMaestro()
+	public Q00100_SagaOfTheMaestro()
 	{
-		super(100, "Q00100_SagaOfTheMaestro", "Saga of the Maestro");
-		NPC = new int[]
+		super(100, Q00100_SagaOfTheMaestro.class.getSimpleName(), "Saga of the Maestro");
+		_npc = new int[]
 		{
 			31592,
 			31273,
diff --git a/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java b/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
index d81e124809bf862d50fb0959c6c9c0d35e3b1689..c64b41d58bfa9bc0ab4839fdadedc9efcd664310 100644
--- a/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
+++ b/L2J_DataPack/dist/game/data/scripts/quests/QuestMasterHandler.java
@@ -74,6 +74,40 @@ import quests.Q00061_LawEnforcement.Q00061_LawEnforcement;
 import quests.Q00062_PathOfTheTrooper.Q00062_PathOfTheTrooper;
 import quests.Q00063_PathOfTheWarder.Q00063_PathOfTheWarder;
 import quests.Q00064_CertifiedBerserker.Q00064_CertifiedBerserker;
+import quests.Q00067_SagaOfTheDoombringer.Q00067_SagaOfTheDoombringer;
+import quests.Q00068_SagaOfTheSoulHound.Q00068_SagaOfTheSoulHound;
+import quests.Q00069_SagaOfTheTrickster.Q00069_SagaOfTheTrickster;
+import quests.Q00070_SagaOfThePhoenixKnight.Q00070_SagaOfThePhoenixKnight;
+import quests.Q00071_SagaOfEvasTemplar.Q00071_SagaOfEvasTemplar;
+import quests.Q00072_SagaOfTheSwordMuse.Q00072_SagaOfTheSwordMuse;
+import quests.Q00073_SagaOfTheDuelist.Q00073_SagaOfTheDuelist;
+import quests.Q00074_SagaOfTheDreadnought.Q00074_SagaOfTheDreadnought;
+import quests.Q00075_SagaOfTheTitan.Q00075_SagaOfTheTitan;
+import quests.Q00076_SagaOfTheGrandKhavatari.Q00076_SagaOfTheGrandKhavatari;
+import quests.Q00077_SagaOfTheDominator.Q00077_SagaOfTheDominator;
+import quests.Q00078_SagaOfTheDoomcryer.Q00078_SagaOfTheDoomcryer;
+import quests.Q00079_SagaOfTheAdventurer.Q00079_SagaOfTheAdventurer;
+import quests.Q00080_SagaOfTheWindRider.Q00080_SagaOfTheWindRider;
+import quests.Q00081_SagaOfTheGhostHunter.Q00081_SagaOfTheGhostHunter;
+import quests.Q00082_SagaOfTheSagittarius.Q00082_SagaOfTheSagittarius;
+import quests.Q00083_SagaOfTheMoonlightSentinel.Q00083_SagaOfTheMoonlightSentinel;
+import quests.Q00084_SagaOfTheGhostSentinel.Q00084_SagaOfTheGhostSentinel;
+import quests.Q00085_SagaOfTheCardinal.Q00085_SagaOfTheCardinal;
+import quests.Q00086_SagaOfTheHierophant.Q00086_SagaOfTheHierophant;
+import quests.Q00087_SagaOfEvasSaint.Q00087_SagaOfEvasSaint;
+import quests.Q00088_SagaOfTheArchmage.Q00088_SagaOfTheArchmage;
+import quests.Q00089_SagaOfTheMysticMuse.Q00089_SagaOfTheMysticMuse;
+import quests.Q00090_SagaOfTheStormScreamer.Q00090_SagaOfTheStormScreamer;
+import quests.Q00091_SagaOfTheArcanaLord.Q00091_SagaOfTheArcanaLord;
+import quests.Q00092_SagaOfTheElementalMaster.Q00092_SagaOfTheElementalMaster;
+import quests.Q00093_SagaOfTheSpectralMaster.Q00093_SagaOfTheSpectralMaster;
+import quests.Q00094_SagaOfTheSoultaker.Q00094_SagaOfTheSoultaker;
+import quests.Q00095_SagaOfTheHellKnight.Q00095_SagaOfTheHellKnight;
+import quests.Q00096_SagaOfTheSpectralDancer.Q00096_SagaOfTheSpectralDancer;
+import quests.Q00097_SagaOfTheShillienTemplar.Q00097_SagaOfTheShillienTemplar;
+import quests.Q00098_SagaOfTheShillienSaint.Q00098_SagaOfTheShillienSaint;
+import quests.Q00099_SagaOfTheFortuneSeeker.Q00099_SagaOfTheFortuneSeeker;
+import quests.Q00100_SagaOfTheMaestro.Q00100_SagaOfTheMaestro;
 import quests.Q00101_SwordOfSolidarity.Q00101_SwordOfSolidarity;
 import quests.Q00102_SeaOfSporesFever.Q00102_SeaOfSporesFever;
 import quests.Q00103_SpiritOfCraftsman.Q00103_SpiritOfCraftsman;
@@ -472,6 +506,40 @@ public class QuestMasterHandler
 		Q00062_PathOfTheTrooper.class,
 		Q00063_PathOfTheWarder.class,
 		Q00064_CertifiedBerserker.class,
+		Q00067_SagaOfTheDoombringer.class,
+		Q00068_SagaOfTheSoulHound.class,
+		Q00069_SagaOfTheTrickster.class,
+		Q00070_SagaOfThePhoenixKnight.class,
+		Q00071_SagaOfEvasTemplar.class,
+		Q00072_SagaOfTheSwordMuse.class,
+		Q00073_SagaOfTheDuelist.class,
+		Q00074_SagaOfTheDreadnought.class,
+		Q00075_SagaOfTheTitan.class,
+		Q00076_SagaOfTheGrandKhavatari.class,
+		Q00077_SagaOfTheDominator.class,
+		Q00078_SagaOfTheDoomcryer.class,
+		Q00079_SagaOfTheAdventurer.class,
+		Q00080_SagaOfTheWindRider.class,
+		Q00081_SagaOfTheGhostHunter.class,
+		Q00082_SagaOfTheSagittarius.class,
+		Q00083_SagaOfTheMoonlightSentinel.class,
+		Q00084_SagaOfTheGhostSentinel.class,
+		Q00085_SagaOfTheCardinal.class,
+		Q00086_SagaOfTheHierophant.class,
+		Q00087_SagaOfEvasSaint.class,
+		Q00088_SagaOfTheArchmage.class,
+		Q00089_SagaOfTheMysticMuse.class,
+		Q00090_SagaOfTheStormScreamer.class,
+		Q00091_SagaOfTheArcanaLord.class,
+		Q00092_SagaOfTheElementalMaster.class,
+		Q00093_SagaOfTheSpectralMaster.class,
+		Q00094_SagaOfTheSoultaker.class,
+		Q00095_SagaOfTheHellKnight.class,
+		Q00096_SagaOfTheSpectralDancer.class,
+		Q00097_SagaOfTheShillienTemplar.class,
+		Q00098_SagaOfTheShillienSaint.class,
+		Q00099_SagaOfTheFortuneSeeker.class,
+		Q00100_SagaOfTheMaestro.class,
 		Q00101_SwordOfSolidarity.class,
 		Q00102_SeaOfSporesFever.class,
 		Q00103_SpiritOfCraftsman.class,