From 7876ef395c246dc62184b1dd2b53ed24d4798f92 Mon Sep 17 00:00:00 2001
From: Zoey76 <zoey_76@msn.com>
Date: Sat, 1 Mar 2014 22:21:53 +0000
Subject: [PATCH] BETA: Replacing Javolution with Java default. 	* Fixed some
 messy code.

---
 .../IceQueensCastleNormalBattle.java          |  8 +--
 .../Pailaka/PailakaDevilsLegacy.java          | 13 +++--
 .../instances/SeedOfDestruction/Stage1.java   | 10 ++--
 .../SeedOfInfinity/HallOfSuffering.java       |  5 +-
 .../mods/eventmodRabbits/eventmodRabbits.java | 16 +++---
 .../mods/eventmodRace/eventmodRace.java       | 48 ++++++-----------
 .../Q00350_EnhanceYourWeapon.java             | 54 +++++++++----------
 .../quests/SagasScripts/SagasSuperClass.java  | 34 +++++-------
 .../TerritoryWarSuperClass.java               |  9 ++--
 9 files changed, 84 insertions(+), 113 deletions(-)

diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/IceQueensCastleNormalBattle/IceQueensCastleNormalBattle.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/IceQueensCastleNormalBattle/IceQueensCastleNormalBattle.java
index 3befae44c5..761860db67 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/IceQueensCastleNormalBattle/IceQueensCastleNormalBattle.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/IceQueensCastleNormalBattle/IceQueensCastleNormalBattle.java
@@ -22,8 +22,8 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Collections;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
-import javolution.util.FastList;
 import quests.Q10286_ReunionWithSirra.Q10286_ReunionWithSirra;
 import ai.npc.AbstractNpcAI;
 
@@ -66,9 +66,9 @@ public final class IceQueensCastleNormalBattle extends AbstractNpcAI
 {
 	protected class IQCNBWorld extends InstanceWorld
 	{
-		ArrayList<L2PcInstance> playersInside = new ArrayList<>();
-		ArrayList<L2Npc> knightStatues = new ArrayList<>();
-		List<L2Attackable> spawnedMobs = new FastList<>();
+		List<L2PcInstance> playersInside = new ArrayList<>();
+		List<L2Npc> knightStatues = new ArrayList<>();
+		List<L2Attackable> spawnedMobs = new CopyOnWriteArrayList<>();
 		L2NpcInstance controller = null;
 		L2GrandBossInstance freya = null;
 		L2QuestGuardInstance supp_Jinia = null;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java
index 472969e70f..b28409523f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/Pailaka/PailakaDevilsLegacy.java
@@ -18,10 +18,9 @@
  */
 package instances.Pailaka;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import javolution.util.FastList;
-
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.datatables.SkillData;
@@ -346,13 +345,13 @@ public final class PailakaDevilsLegacy extends Quest
 			// To be sure, reduce again
 			((L2Attackable) npc).reduceHate(player, 9999);
 			// Spawn followers
-			_followerslist = new FastList<>();
+			_followerslist = new ArrayList<>();
 			for (int[] SPAWN : FOLLOWERS_SPAWNS)
 			{
-				L2Npc _follower = addSpawn(FOLLOWERS, SPAWN[0], SPAWN[1], SPAWN[2], SPAWN[3], false, 0, true, player.getInstanceId());
-				if (_follower != null)
+				L2Npc follower = addSpawn(FOLLOWERS, SPAWN[0], SPAWN[1], SPAWN[2], SPAWN[3], false, 0, true, player.getInstanceId());
+				if (follower != null)
 				{
-					_followerslist.add(_follower);
+					_followerslist.add(follower);
 				}
 			}
 			return null;
@@ -545,7 +544,7 @@ public final class PailakaDevilsLegacy extends Quest
 					}
 					break;
 				case LEMATAN:
-					if ((_followerslist != null) && !_followerslist.isEmpty())
+					if (_followerslist != null)
 					{
 						for (L2Npc _follower : _followerslist)
 						{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java
index 5477583a65..832abc20f5 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfDestruction/Stage1.java
@@ -19,6 +19,7 @@
 package instances.SeedOfDestruction;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.List;
@@ -29,9 +30,6 @@ import java.util.logging.Level;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -81,7 +79,7 @@ public final class Stage1 extends Quest
 {
 	protected class SOD1World extends InstanceWorld
 	{
-		public Map<L2Npc, Boolean> npcList = new FastMap<>();
+		public Map<L2Npc, Boolean> npcList = new HashMap<>();
 		public int deviceSpawnedMobCount = 0;
 		public Lock lock = new ReentrantLock();
 	}
@@ -106,7 +104,7 @@ public final class Stage1 extends Quest
 	
 	private final Map<Integer, L2Territory> _spawnZoneList = new HashMap<>();
 	private final Map<Integer, List<SODSpawn>> _spawnList = new HashMap<>();
-	private final List<Integer> _mustKillMobsId = new FastList<>();
+	private final List<Integer> _mustKillMobsId = new ArrayList<>();
 	
 	// teleports
 	private static final Location ENTER_TELEPORT_1 = new Location(-242759, 219981, -9986);
@@ -293,7 +291,7 @@ public final class Stage1 extends Quest
 								int flag = Integer.parseInt(attrs.getNamedItem("flag").getNodeValue());
 								if (!_spawnList.containsKey(flag))
 								{
-									_spawnList.put(flag, new FastList<SODSpawn>());
+									_spawnList.put(flag, new ArrayList<SODSpawn>());
 								}
 								
 								for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfInfinity/HallOfSuffering.java b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfInfinity/HallOfSuffering.java
index 394834f273..ae51fcd9e6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfInfinity/HallOfSuffering.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/instances/SeedOfInfinity/HallOfSuffering.java
@@ -19,10 +19,9 @@
 package instances.SeedOfInfinity;
 
 import java.util.Calendar;
+import java.util.HashMap;
 import java.util.Map;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.gameserver.ai.CtrlEvent;
 import com.l2jserver.gameserver.cache.HtmCache;
 import com.l2jserver.gameserver.datatables.SkillData;
@@ -55,7 +54,7 @@ public final class HallOfSuffering extends Quest
 {
 	protected class HSWorld extends InstanceWorld
 	{
-		public Map<L2Npc, Boolean> npcList = new FastMap<>();
+		public Map<L2Npc, Boolean> npcList = new HashMap<>();
 		public L2Npc klodekus = null;
 		public L2Npc klanikus = null;
 		public boolean isBossesAttacked = false;
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRabbits/eventmodRabbits.java b/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRabbits/eventmodRabbits.java
index e42e0cd913..254ffefb7b 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRabbits/eventmodRabbits.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRabbits/eventmodRabbits.java
@@ -18,11 +18,10 @@
  */
 package mods.eventmodRabbits;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ScheduledFuture;
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.Announcements;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -126,7 +125,7 @@ public class eventmodRabbits extends Event
 		}
 		
 		// Initialize list
-		_npclist = new FastList<>();
+		_npclist = new ArrayList<>();
 		
 		// Set Event active
 		_isactive = true;
@@ -185,15 +184,12 @@ public class eventmodRabbits extends Event
 			_eventTask.cancel(true);
 			_eventTask = null;
 		}
-		// Despawn Npc's
-		if (!_npclist.isEmpty())
+		// Despawn NPCs
+		for (L2Npc _npc : _npclist)
 		{
-			for (L2Npc _npc : _npclist)
+			if (_npc != null)
 			{
-				if (_npc != null)
-				{
-					_npc.deleteMe();
-				}
+				_npc.deleteMe();
 			}
 		}
 		_npclist.clear();
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRace/eventmodRace.java b/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRace/eventmodRace.java
index fa22aba444..5593910d13 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRace/eventmodRace.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/mods/eventmodRace/eventmodRace.java
@@ -18,11 +18,11 @@
  */
 package mods.eventmodRace;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ScheduledFuture;
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.Announcements;
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -134,8 +134,8 @@ public class eventmodRace extends Event
 			return false;
 		}
 		// Initialize list
-		_npclist = new FastList<>();
-		_players = new FastList<>();
+		_npclist = new ArrayList<>();
+		_players = new CopyOnWriteArrayList<>();
 		// Set Event active
 		_isactive = true;
 		// Spawn Manager
@@ -227,26 +227,20 @@ public class eventmodRace extends Event
 		}
 		// Untransform players
 		// Teleport to event start point
-		if (!_players.isEmpty())
+		for (L2PcInstance player : _players)
 		{
-			for (L2PcInstance player : _players)
+			if ((player != null) && player.isOnline())
 			{
-				if ((player != null) && player.isOnline())
-				{
-					player.untransform();
-					player.teleToLocation(_npc.getX(), _npc.getY(), _npc.getZ(), true);
-				}
+				player.untransform();
+				player.teleToLocation(_npc.getX(), _npc.getY(), _npc.getZ(), true);
 			}
 		}
-		// Despawn Npc's
-		if (!_npclist.isEmpty())
+		// Despawn NPCs
+		for (L2Npc _npc : _npclist)
 		{
-			for (L2Npc _npc : _npclist)
+			if (_npc != null)
 			{
-				if (_npc != null)
-				{
-					_npc.deleteMe();
-				}
+				_npc.deleteMe();
 			}
 		}
 		_npclist.clear();
@@ -378,25 +372,17 @@ public class eventmodRace extends Event
 	
 	private int isRacing(L2PcInstance player)
 	{
-		if (_players.isEmpty())
-		{
-			return 0;
-		}
-		if (_players.contains(player))
-		{
-			return 1;
-		}
-		return 0;
+		return _players.contains(player) ? 1 : 0;
 	}
 	
 	private L2Npc recordSpawn(int npcId, int x, int y, int z, int heading, boolean randomOffSet, long despawnDelay)
 	{
-		L2Npc _tmp = addSpawn(npcId, x, y, z, heading, randomOffSet, despawnDelay);
-		if (_tmp != null)
+		final L2Npc npc = addSpawn(npcId, x, y, z, heading, randomOffSet, despawnDelay);
+		if (npc != null)
 		{
-			_npclist.add(_tmp);
+			_npclist.add(npc);
 		}
-		return _tmp;
+		return npc;
 	}
 	
 	private void transformPlayer(L2PcInstance player)
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java
index 80285878fa..5d4d18b10e 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/Q00350_EnhanceYourWeapon/Q00350_EnhanceYourWeapon.java
@@ -19,14 +19,15 @@
 package quests.Q00350_EnhanceYourWeapon;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.logging.Level;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 
-import javolution.util.FastList;
-import javolution.util.FastMap;
-
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -130,9 +131,9 @@ public class Q00350_EnhanceYourWeapon extends Quest
 	private static final int GREEN_SOUL_CRYSTAL0_ID = 4640;
 	private static final int BLUE_SOUL_CRYSTAL0_ID = 4651;
 	
-	private static final FastMap<Integer, SoulCrystal> _soulCrystals = new FastMap<>();
+	private static final Map<Integer, SoulCrystal> SOUL_CRYSTALS = new HashMap<>();
 	// <npcid, <level, LevelingInfo>>
-	private static final FastMap<Integer, FastMap<Integer, LevelingInfo>> _npcLevelingInfos = new FastMap<>();
+	private static final Map<Integer, Map<Integer, LevelingInfo>> NPC_LEVELING_INFO = new HashMap<>();
 	
 	public Q00350_EnhanceYourWeapon(int questId, String name, String descr)
 	{
@@ -140,7 +141,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		addStartNpc(STARTING_NPCS);
 		addTalkId(STARTING_NPCS);
 		load();
-		for (int npcId : _npcLevelingInfos.keySet())
+		for (int npcId : NPC_LEVELING_INFO.keySet())
 		{
 			addSkillSeeId(npcId);
 			addKillId(npcId);
@@ -178,7 +179,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 	@Override
 	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
 	{
-		if (npc.isAttackable() && _npcLevelingInfos.containsKey(npc.getId()))
+		if (npc.isAttackable() && NPC_LEVELING_INFO.containsKey(npc.getId()))
 		{
 			levelSoulCrystals((L2Attackable) npc, killer);
 		}
@@ -199,7 +200,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		{
 			return null;
 		}
-		if (!npc.isAttackable() || npc.isDead() || !_npcLevelingInfos.containsKey(npc.getId()))
+		if (!npc.isAttackable() || npc.isDead() || !NPC_LEVELING_INFO.containsKey(npc.getId()))
 		{
 			return null;
 		}
@@ -302,7 +303,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		for (L2ItemInstance item : inv)
 		{
 			int itemId = item.getId();
-			if (!_soulCrystals.containsKey(itemId))
+			if (!SOUL_CRYSTALS.containsKey(itemId))
 			{
 				continue;
 			}
@@ -311,14 +312,14 @@ public class Q00350_EnhanceYourWeapon extends Quest
 			{
 				return null;
 			}
-			ret = _soulCrystals.get(itemId);
+			ret = SOUL_CRYSTALS.get(itemId);
 		}
 		return ret;
 	}
 	
 	private static boolean isPartyLevelingMonster(int npcId)
 	{
-		for (LevelingInfo li : _npcLevelingInfos.get(npcId).values())
+		for (LevelingInfo li : NPC_LEVELING_INFO.get(npcId).values())
 		{
 			if (li.getAbsorbCrystalType() != AbsorbCrystalType.LAST_HIT)
 			{
@@ -330,19 +331,19 @@ public class Q00350_EnhanceYourWeapon extends Quest
 	
 	private static void levelCrystal(L2PcInstance player, SoulCrystal sc, L2Attackable mob)
 	{
-		if ((sc == null) || !_npcLevelingInfos.containsKey(mob.getId()))
+		if ((sc == null) || !NPC_LEVELING_INFO.containsKey(mob.getId()))
 		{
 			return;
 		}
 		
 		// If the crystal level is way too high for this mob, say that we can't increase it
-		if (!_npcLevelingInfos.get(mob.getId()).containsKey(sc.getLevel()))
+		if (!NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
 		{
 			player.sendPacket(SystemMessageId.SOUL_CRYSTAL_ABSORBING_REFUSED);
 			return;
 		}
 		
-		if (getRandom(100) <= _npcLevelingInfos.get(mob.getId()).get(sc.getLevel()).getChance())
+		if (getRandom(100) <= NPC_LEVELING_INFO.get(mob.getId()).get(sc.getLevel()).getChance())
 		{
 			exchangeCrystal(player, mob, sc.getItemId(), sc.getLeveledItemId(), false);
 		}
@@ -366,7 +367,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 			return;
 		}
 		
-		FastMap<L2PcInstance, SoulCrystal> players = FastMap.newInstance();
+		Map<L2PcInstance, SoulCrystal> players = new HashMap<>();
 		int maxSCLevel = 0;
 		
 		// TODO: what if mob support last_hit + party?
@@ -387,7 +388,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 				}
 				
 				players.put(pl, sc);
-				if ((maxSCLevel < sc.getLevel()) && _npcLevelingInfos.get(mob.getId()).containsKey(sc.getLevel()))
+				if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
 				{
 					maxSCLevel = sc.getLevel();
 				}
@@ -399,14 +400,14 @@ public class Q00350_EnhanceYourWeapon extends Quest
 			if (sc != null)
 			{
 				players.put(killer, sc);
-				if ((maxSCLevel < sc.getLevel()) && _npcLevelingInfos.get(mob.getId()).containsKey(sc.getLevel()))
+				if ((maxSCLevel < sc.getLevel()) && NPC_LEVELING_INFO.get(mob.getId()).containsKey(sc.getLevel()))
 				{
 					maxSCLevel = sc.getLevel();
 				}
 			}
 		}
 		// Init some useful vars
-		LevelingInfo mainlvlInfo = _npcLevelingInfos.get(mob.getId()).get(maxSCLevel);
+		LevelingInfo mainlvlInfo = NPC_LEVELING_INFO.get(mob.getId()).get(maxSCLevel);
 		
 		if (mainlvlInfo == null)
 		{
@@ -464,7 +465,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 			case PARTY_RANDOM:
 				if (killer.getParty() != null)
 				{
-					FastList<L2PcInstance> luckyParty = FastList.newInstance();
+					List<L2PcInstance> luckyParty = new ArrayList<>();
 					luckyParty.addAll(killer.getParty().getMembers());
 					while ((getRandom(100) < 33) && !luckyParty.isEmpty())
 					{
@@ -474,7 +475,6 @@ public class Q00350_EnhanceYourWeapon extends Quest
 							levelCrystal(lucky, players.get(lucky), mob);
 						}
 					}
-					FastList.recycle(luckyParty);
 				}
 				else if (getRandom(100) < 33)
 				{
@@ -498,7 +498,6 @@ public class Q00350_EnhanceYourWeapon extends Quest
 				levelCrystal(killer, players.get(killer), mob);
 				break;
 		}
-		FastMap.recycle(players);
 	}
 	
 	/**
@@ -556,7 +555,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 								}
 								int leveledItemId = Integer.parseInt(attrs.getNamedItem("leveledItemId").getNodeValue());
 								
-								_soulCrystals.put(itemId, new SoulCrystal(level, itemId, leveledItemId));
+								SOUL_CRYSTALS.put(itemId, new SoulCrystal(level, itemId, leveledItemId));
 							}
 						}
 					}
@@ -573,10 +572,9 @@ public class Q00350_EnhanceYourWeapon extends Quest
 									_log.severe("[EnhanceYourWeapon] Missing npcId in NPC List, skipping");
 									continue;
 								}
-								int npcId = Integer.parseInt(att.getNodeValue());
-								
-								FastMap<Integer, LevelingInfo> temp = new FastMap<>();
 								
+								int npcId = Integer.parseInt(att.getNodeValue());
+								Map<Integer, LevelingInfo> temp = new HashMap<>();
 								for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling())
 								{
 									boolean isSkillNeeded = false;
@@ -644,7 +642,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
 									_log.severe("[EnhanceYourWeapon] No leveling info for npcId: " + npcId + ", skipping");
 									continue;
 								}
-								_npcLevelingInfos.put(npcId, temp);
+								NPC_LEVELING_INFO.put(npcId, temp);
 							}
 						}
 					}
@@ -655,8 +653,8 @@ public class Q00350_EnhanceYourWeapon extends Quest
 		{
 			_log.log(Level.WARNING, "[EnhanceYourWeapon] Could not parse levelUpCrystalData.xml file: " + e.getMessage(), e);
 		}
-		_log.info("[EnhanceYourWeapon] Loaded " + _soulCrystals.size() + " Soul Crystal data.");
-		_log.info("[EnhanceYourWeapon] Loaded " + _npcLevelingInfos.size() + " npc Leveling info data.");
+		_log.info("[EnhanceYourWeapon] Loaded " + SOUL_CRYSTALS.size() + " Soul Crystal data.");
+		_log.info("[EnhanceYourWeapon] Loaded " + NPC_LEVELING_INFO.size() + " npc Leveling info data.");
 	}
 	
 	public static void main(String[] args)
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/SagasScripts/SagasSuperClass.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/SagasScripts/SagasSuperClass.java
index 902901086e..5f5e89ee88 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/SagasScripts/SagasSuperClass.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/SagasScripts/SagasSuperClass.java
@@ -18,6 +18,11 @@
  */
 package quests.SagasScripts;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
@@ -34,8 +39,6 @@ import com.l2jserver.gameserver.model.quest.QuestState;
 import com.l2jserver.gameserver.model.skills.Skill;
 import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
 import com.l2jserver.gameserver.network.serverpackets.NpcSay;
-import com.l2jserver.util.L2FastList;
-import com.l2jserver.util.L2FastMap;
 
 /**
  * Saga quests superclass.
@@ -43,7 +46,7 @@ import com.l2jserver.util.L2FastMap;
  */
 public class SagasSuperClass extends Quest
 {
-	private static L2FastList<Quest> _scripts = new L2FastList<>();
+	private static List<Quest> _scripts = new ArrayList<>();
 	public int[] NPC = {};
 	public int[] Items = {};
 	public int[] Mob = {};
@@ -51,7 +54,7 @@ public class SagasSuperClass extends Quest
 	public int[] prevclass = {};
 	public Location[] npcSpawnLocations = {};
 	public String[] Text = {};
-	private static final L2FastMap<L2Npc, Integer> _spawnList = new L2FastMap<>();
+	private static final Map<L2Npc, Integer> _spawnList = new HashMap<>();
 	// @formatter:off
 	private static int[][] QuestClass =
 	{
@@ -562,7 +565,7 @@ public class SagasSuperClass extends Quest
 				L2Party party = player.getParty();
 				if (party != null)
 				{
-					L2FastList<QuestState> PartyQuestMembers = new L2FastList<>();
+					List<QuestState> partyQuestMembers = new ArrayList<>();
 					for (L2PcInstance player1 : party.getMembers())
 					{
 						QuestState st1 = findQuest(player1);
@@ -570,13 +573,13 @@ public class SagasSuperClass extends Quest
 						{
 							if (st1.isCond(15))
 							{
-								PartyQuestMembers.add(st1);
+								partyQuestMembers.add(st1);
 							}
 						}
 					}
-					if (PartyQuestMembers.size() > 0)
+					if (partyQuestMembers.size() > 0)
 					{
-						QuestState st2 = PartyQuestMembers.get(getRandom(PartyQuestMembers.size()));
+						QuestState st2 = partyQuestMembers.get(getRandom(partyQuestMembers.size()));
 						giveHalishaMark(st2);
 					}
 				}
@@ -1002,24 +1005,15 @@ public class SagasSuperClass extends Quest
 	@Override
 	public boolean unload()
 	{
-		// if sub classes aren't loaded, just unload superclass
-		if (_scripts.size() == 0)
+		for (Quest script : _scripts)
 		{
-			return super.unload();
-		}
-		
-		// unload all subclasses
-		for (int index = 0; index < _scripts.size(); index++)
-		{
-			if (_scripts.get(index) == null)
+			if (script == null)
 			{
 				continue;
 			}
-			QuestManager.getInstance().removeQuest(_scripts.get(index));
+			QuestManager.getInstance().removeQuest(script);
 		}
 		_scripts.clear();
-		
-		// now unload superclass
 		return super.unload();
 	}
 	
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/quests/TerritoryWarScripts/TerritoryWarSuperClass.java b/L2J_DataPack_BETA/dist/game/data/scripts/quests/TerritoryWarScripts/TerritoryWarSuperClass.java
index c47670ccf2..e91f999f0e 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/quests/TerritoryWarScripts/TerritoryWarSuperClass.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/quests/TerritoryWarScripts/TerritoryWarSuperClass.java
@@ -19,6 +19,8 @@
 package quests.TerritoryWarScripts;
 
 import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
 
 import quests.Q00147_PathtoBecominganEliteMercenary.Q00147_PathtoBecominganEliteMercenary;
 import quests.Q00148_PathtoBecominganExaltedMercenary.Q00148_PathtoBecominganExaltedMercenary;
@@ -41,7 +43,6 @@ import com.l2jserver.gameserver.model.skills.Skill;
 import com.l2jserver.gameserver.network.NpcStringId;
 import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
 import com.l2jserver.gameserver.util.Util;
-import com.l2jserver.util.L2FastMap;
 
 /**
  * Territory War quests superclass.
@@ -49,9 +50,9 @@ import com.l2jserver.util.L2FastMap;
  */
 public class TerritoryWarSuperClass extends Quest
 {
-	private static L2FastMap<Integer, TerritoryWarSuperClass> _forTheSakeScripts = new L2FastMap<>();
-	private static L2FastMap<Integer, TerritoryWarSuperClass> _protectTheScripts = new L2FastMap<>();
-	private static L2FastMap<Integer, TerritoryWarSuperClass> _killTheScripts = new L2FastMap<>();
+	private static Map<Integer, TerritoryWarSuperClass> _forTheSakeScripts = new HashMap<>();
+	private static Map<Integer, TerritoryWarSuperClass> _protectTheScripts = new HashMap<>();
+	private static Map<Integer, TerritoryWarSuperClass> _killTheScripts = new HashMap<>();
 	
 	// "For the Sake of the Territory ..." quests variables
 	public int CATAPULT_ID;
-- 
GitLab