diff --git a/pom.xml b/pom.xml
index 431ad8626d9cb6d4288b7991c950054d6342509d..3d571a493242d9db9c415c160920198f4d7b258e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,23 +2,23 @@
 	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>com.l2jserver</groupId>
-	<artifactId>l2j-server-datapack</artifactId>
-	<version>2.6.1.0-SNAPSHOT</version>
+	<artifactId>l2j-server-datapack</artifactId>
+	<version>2.6.2.0-SNAPSHOT</version>
 	<name>L2J DataPack</name>
 	<properties>
 		<maven.compiler.source>11</maven.compiler.source>
 		<maven.compiler.target>11</maven.compiler.target>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-		<slf4j.version>1.7.28</slf4j.version>
+		<slf4j.version>1.7.30</slf4j.version>
 		<!-- L2J -->
-		<l2j-server-game.version>2.6.1.0-SNAPSHOT</l2j-server-game.version>
+		<l2j-server-game.version>2.6.2.0-SNAPSHOT</l2j-server-game.version>
 		<!-- Test -->
-		<testng.version>7.0.0</testng.version>
+		<testng.version>7.1.0</testng.version>
 		<mockito.version>3.2.4</mockito.version>
 		<!-- Plugins -->
-		<maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>
-		<maven-assembly-plugin.version>3.1.1</maven-assembly-plugin.version>
+		<maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
+		<maven-assembly-plugin.version>3.2.0</maven-assembly-plugin.version>
 	</properties>
 	<dependencies>
 		<dependency>
diff --git a/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java b/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java
index 0d17c13efd0bce2ca81469e22977b76ab976624e..c5ffd4bd934b146096eec5cb8f1e8c16f632519b 100644
--- a/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java
+++ b/src/main/java/com/l2jserver/datapack/ai/group_template/LairOfAntharas.java
@@ -32,7 +32,6 @@ import com.l2jserver.gameserver.network.serverpackets.ValidateLocation;
  */
 public final class LairOfAntharas extends AbstractNpcAI {
 	// NPC
-	final private static int KNORIKS = 22857;
 	final private static int DRAGON_KNIGHT = 22844;
 	final private static int DRAGON_KNIGHT2 = 22845;
 	final private static int ELITE_DRAGON_KNIGHT = 22846;
@@ -41,15 +40,12 @@ public final class LairOfAntharas extends AbstractNpcAI {
 	final private static int DRAGON_MAGE = 22853;
 	// Misc
 	final private static int KNIGHT_CHANCE = 30;
-	final private static int KNORIKS_CHANCE = 60;
-	final private static int KNORIKS_CHANCE2 = 50;
 	
 	private LairOfAntharas() {
 		super(LairOfAntharas.class.getSimpleName(), "ai/group_template");
 		addKillId(DRAGON_KNIGHT, DRAGON_KNIGHT2, DRAGON_GUARD, DRAGON_MAGE);
 		addSpawnId(DRAGON_KNIGHT, DRAGON_KNIGHT2, DRAGON_GUARD, DRAGON_MAGE);
 		addMoveFinishedId(DRAGON_GUARD, DRAGON_MAGE);
-		addAggroRangeEnterId(KNORIKS);
 	}
 	
 	@Override
@@ -65,17 +61,6 @@ public final class LairOfAntharas extends AbstractNpcAI {
 		return super.onAdvEvent(event, npc, player);
 	}
 	
-	@Override
-	public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon) {
-		if (npc.isScriptValue(0) && (getRandom(100) < KNORIKS_CHANCE)) {
-			if (getRandom(100) < KNORIKS_CHANCE2) {
-				npc.setScriptValue(1);
-			}
-			broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.WHOS_THERE_IF_YOU_DISTURB_THE_TEMPER_OF_THE_GREAT_LAND_DRAGON_ANTHARAS_I_WILL_NEVER_FORGIVE_YOU);
-		}
-		return super.onAggroRangeEnter(npc, player, isSummon);
-	}
-	
 	@Override
 	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) {
 		switch (npc.getId()) {
diff --git a/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java b/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java
index a3cc7b0b6f8d41ca29edc991965ea5754b849514..3d1af61ba5a350a2dfc8893455ae85d286b40328 100644
--- a/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java
+++ b/src/main/java/com/l2jserver/datapack/ai/group_template/NonLethalableNpcs.java
@@ -26,6 +26,7 @@ import com.l2jserver.gameserver.model.actor.L2Npc;
  */
 public final class NonLethalableNpcs extends AbstractNpcAI {
 	private static final int[] NPCS = {
+		22857, // Knoriks
 		35062, // Headquarters
 	};
 	
diff --git a/src/main/java/com/l2jserver/datapack/ai/individual/BloodyBerserker.java b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyBerserker.java
new file mode 100644
index 0000000000000000000000000000000000000000..4773bfc5a002cc9a69700baf8814438cfcc9ab48
--- /dev/null
+++ b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyBerserker.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2004-2020 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.datapack.ai.individual;
+
+import com.l2jserver.datapack.ai.npc.AbstractNpcAI;
+import com.l2jserver.gameserver.GeoData;
+import com.l2jserver.gameserver.datatables.SpawnTable;
+import com.l2jserver.gameserver.model.L2Spawn;
+import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * Bloody Berserker AI.
+ * @author Maneco2
+ * @version 2.6.2.0
+ */
+public class BloodyBerserker extends AbstractNpcAI
+{
+	// NPCs
+	private static final int BLOODY_BERSERKER = 22855;
+	
+	private static final int[] BLOODY_FAMILY =
+	{
+		22854, // Bloody Karik
+		22855, // Bloody Berserker
+		22856, // Bloody Karinness
+	};
+	
+	public BloodyBerserker()
+	{
+		super(BloodyBerserker.class.getSimpleName(), "ai/individual");
+		addKillId(BLOODY_BERSERKER);
+		addAttackId(BLOODY_BERSERKER);
+		addTeleportId(BLOODY_BERSERKER);
+		addMoveFinishedId(BLOODY_BERSERKER);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		switch (event)
+		{
+			case "CORE_AI":
+			{
+				if (npc != null)
+				{
+					((L2Attackable) npc).clearAggroList();
+					npc.disableCoreAI(false);
+					startQuestTimer("RETURN_SPAWN", 300000, npc, null);
+				}
+				break;
+			}
+			case "RETURN_SPAWN":
+			{
+				if (npc != null)
+				{
+					((L2Attackable) npc).setCanReturnToSpawnPoint(true);
+				}
+				break;
+			}
+		}
+		return super.onAdvEvent(event, npc, player);
+	}
+	
+	@Override
+	public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
+	{
+		switch (npc.getId())
+		{
+			case BLOODY_BERSERKER:
+			{
+				final double DistSpawn = npc.calculateDistance(npc.getSpawn().getLocation(), false, false);
+				if (DistSpawn > 3000)
+				{
+					npc.disableCoreAI(true);
+					npc.teleToLocation(npc.getSpawn().getLocation());
+				}
+				else
+				{
+					if ((DistSpawn > 500) && (getRandom(100) < 1) && (npc.isInCombat()) && (!npc.isCastingNow()))
+					{
+						for (int object : BLOODY_FAMILY)
+						{
+							for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(object))
+							{
+								final L2Npc obj = spawn.getLastSpawn();
+								if ((obj != null) && !obj.isDead() && (Math.abs(npc.getZ() - obj.getZ()) < 150))
+								{
+									if (npc.calculateDistance(obj, false, false) > obj.getTemplate().getClanHelpRange())
+									{
+										if ((npc.calculateDistance(obj, false, false) < 3000) && GeoData.getInstance().canSeeTarget(npc, obj))
+										{
+											npc.disableCoreAI(true);
+											((L2Attackable) npc).setCanReturnToSpawnPoint(false);
+											addMoveToDesire(npc, new Location(obj.getX() + getRandom(-100, 100), obj.getY() + getRandom(-100, 100), obj.getZ() + 20, 0), 0);
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+				break;
+			}
+		}
+		return super.onAttack(npc, attacker, damage, isSummon);
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		switch (npc.getId())
+		{
+			case BLOODY_BERSERKER:
+			{
+				if (getRandom(100) < 5)
+				{
+					final int newZ = npc.getZ() + 20;
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY(), newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 10, newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 20, newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 10, newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 20, newZ, npc.getHeading(), false, 0), killer);
+				}
+				break;
+			}
+		}
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	@Override
+	protected void onTeleport(L2Npc npc)
+	{
+		startQuestTimer("CORE_AI", 100, npc, null);
+	}
+	
+	@Override
+	public void onMoveFinished(L2Npc npc)
+	{
+		startQuestTimer("CORE_AI", 100, npc, null);
+	}
+	
+	public static void main(String[] args)
+	{
+		new BloodyBerserker();
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/com/l2jserver/datapack/ai/individual/BloodyKarinness.java b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyKarinness.java
new file mode 100644
index 0000000000000000000000000000000000000000..21c9c4cdf0e367949b1b4ee5013f4d1befbdc6eb
--- /dev/null
+++ b/src/main/java/com/l2jserver/datapack/ai/individual/BloodyKarinness.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2004-2020 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.datapack.ai.individual;
+
+import com.l2jserver.datapack.ai.npc.AbstractNpcAI;
+import com.l2jserver.gameserver.GeoData;
+import com.l2jserver.gameserver.datatables.SpawnTable;
+import com.l2jserver.gameserver.model.L2Spawn;
+import com.l2jserver.gameserver.model.Location;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ * Bloody Karinness AI.
+ * @author Maneco2
+ * @version 2.6.2.0
+ */
+public class BloodyKarinness extends AbstractNpcAI
+{
+	// NPCs
+	private static final int BLOODY_KARINNESS = 22856;
+	
+	private static final int[] BLOODY_FAMILY =
+	{
+		22854, // Bloody Karik
+		22855, // Bloody Berserker
+		22856, // Bloody Karinness
+	};
+	
+	public BloodyKarinness()
+	{
+		super(BloodyKarinness.class.getSimpleName(), "ai/individual");
+		addKillId(BLOODY_KARINNESS);
+		addAttackId(BLOODY_KARINNESS);
+		addTeleportId(BLOODY_KARINNESS);
+		addMoveFinishedId(BLOODY_KARINNESS);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		switch (event)
+		{
+			case "CORE_AI":
+			{
+				if (npc != null)
+				{
+					((L2Attackable) npc).clearAggroList();
+					npc.disableCoreAI(false);
+					startQuestTimer("RETURN_SPAWN", 300000, npc, null);
+				}
+				break;
+			}
+			case "RETURN_SPAWN":
+			{
+				if (npc != null)
+				{
+					((L2Attackable) npc).setCanReturnToSpawnPoint(true);
+				}
+				break;
+			}
+		}
+		return super.onAdvEvent(event, npc, player);
+	}
+	
+	@Override
+	public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
+	{
+		switch (npc.getId())
+		{
+			case BLOODY_KARINNESS:
+			{
+				final double DistSpawn = npc.calculateDistance(npc.getSpawn().getLocation(), false, false);
+				if (DistSpawn > 3000)
+				{
+					npc.disableCoreAI(true);
+					npc.teleToLocation(npc.getSpawn().getLocation());
+				}
+				else
+				{
+					if ((DistSpawn > 500) && (getRandom(100) < 1) && (npc.isInCombat()) && (!npc.isCastingNow()))
+					{
+						for (int object : BLOODY_FAMILY)
+						{
+							for (L2Spawn spawn : SpawnTable.getInstance().getSpawns(object))
+							{
+								final L2Npc obj = spawn.getLastSpawn();
+								if ((obj != null) && !obj.isDead() && (Math.abs(npc.getZ() - obj.getZ()) < 150))
+								{
+									if (npc.calculateDistance(obj, false, false) > obj.getTemplate().getClanHelpRange())
+									{
+										if ((npc.calculateDistance(obj, false, false) < 3000) && GeoData.getInstance().canSeeTarget(npc, obj))
+										{
+											npc.disableCoreAI(true);
+											((L2Attackable) npc).setCanReturnToSpawnPoint(false);
+											addMoveToDesire(npc, new Location(obj.getX() + getRandom(-100, 100), obj.getY() + getRandom(-100, 100), obj.getZ() + 20, 0), 0);
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+				break;
+			}
+		}
+		return super.onAttack(npc, attacker, damage, isSummon);
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
+	{
+		switch (npc.getId())
+		{
+			case BLOODY_KARINNESS:
+			{
+				if (getRandom(100) < 5)
+				{
+					final int newZ = npc.getZ() + 20;
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY(), newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 10, newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() - 20, newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 10, newZ, npc.getHeading(), false, 0), killer);
+					addAttackDesire(addSpawn(npc.getId(), npc.getX(), npc.getY() + 20, newZ, npc.getHeading(), false, 0), killer);
+				}
+				break;
+			}
+		}
+		return super.onKill(npc, killer, isSummon);
+	}
+	
+	@Override
+	protected void onTeleport(L2Npc npc)
+	{
+		startQuestTimer("CORE_AI", 100, npc, null);
+	}
+	
+	@Override
+	public void onMoveFinished(L2Npc npc)
+	{
+		startQuestTimer("CORE_AI", 100, npc, null);
+	}
+	
+	public static void main(String[] args)
+	{
+		new BloodyKarinness();
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/com/l2jserver/datapack/ai/individual/Knoriks.java b/src/main/java/com/l2jserver/datapack/ai/individual/Knoriks.java
new file mode 100644
index 0000000000000000000000000000000000000000..295a7dad2a8260a95b9309382009978ac71f62be
--- /dev/null
+++ b/src/main/java/com/l2jserver/datapack/ai/individual/Knoriks.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2004-2020 L2J DataPack
+ * 
+ * This file is part of L2J DataPack.
+ * 
+ * L2J DataPack is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * L2J DataPack is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.datapack.ai.individual;
+
+import com.l2jserver.datapack.ai.npc.AbstractNpcAI;
+import com.l2jserver.gameserver.instancemanager.WalkingManager;
+import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.L2Spawn;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
+import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.holders.SkillHolder;
+import com.l2jserver.gameserver.model.skills.Skill;
+import com.l2jserver.gameserver.network.NpcStringId;
+import com.l2jserver.gameserver.network.clientpackets.Say2;
+
+/**
+ * Knoriks AI.
+ * @author Maneco2
+ * @version 2.6.2.0
+ */
+public class Knoriks extends AbstractNpcAI
+{
+	// NPC
+	private static final int KNORIKS = 22857;
+	// Skills
+	private static final SkillHolder DARK_WIND = new SkillHolder(6743); // Dark Wind
+	private static final SkillHolder DARK_STORM = new SkillHolder(6744); // Dark Storm
+	private static final SkillHolder DARK_BLADE = new SkillHolder(6747); // Dark Blade
+	// Misc
+	private static final String SHOUT_FLAG = "SHOUT_FLAG";
+	private static final int MAX_CHASE_DIST = 3000;
+	private static int SpawnCount = 0;
+	
+	public Knoriks()
+	{
+		super(Knoriks.class.getSimpleName(), "ai/individual");
+		addAggroRangeEnterId(KNORIKS);
+		addSkillSeeId(KNORIKS);
+		addTeleportId(KNORIKS);
+		addAttackId(KNORIKS);
+		addSpawnId(KNORIKS);
+		startQuestTimer("KNORIKS_SPAWN", 1800000, null, null);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		switch (event)
+		{
+			case "CORE_AI":
+			{
+				if (npc != null)
+				{
+					((L2Attackable) npc).clearAggroList();
+					npc.disableCoreAI(false);
+				}
+				break;
+			}
+			case "CHECK_ROUTE":
+			{
+				WalkingManager.getInstance().onSpawn(npc);
+				break;
+			}
+			case "KNORIKS_SPAWN":
+			{
+				if (SpawnCount < 3)
+				{
+					SpawnCount++;
+					addSpawn(KNORIKS, 140641, 114525, -3755, 0, false, 0);
+					addSpawn(KNORIKS, 143789, 110205, -3968, 0, false, 0);
+					addSpawn(KNORIKS, 146466, 109789, -3440, 0, false, 0);
+					addSpawn(KNORIKS, 145482, 120250, -3944, 0, false, 0);
+					startQuestTimer("KNORIKS_SPAWN", 60000, null, null);
+				}
+				break;
+			}
+		}
+		return super.onAdvEvent(event, npc, player);
+	}
+	
+	@Override
+	public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon)
+	{
+		final L2Character mostHated = ((L2Attackable) npc).getMostHated();
+		if ((mostHated != null) && (npc.isInsideRadius(attacker, 250, false, false)))
+		{
+			if ((getRandom(100) < 10) && (!npc.isCastingNow()))
+			{
+				npc.doCast(getRandomBoolean() ? DARK_STORM : DARK_BLADE);
+			}
+			
+			for (L2Character obj : npc.getKnownList().getKnownCharactersInRadius(200))
+			{
+				if ((obj != null) && (obj.isMonster()))
+				{
+					if ((getRandom(100) < 10) && (obj.isInCombat()) && (!obj.isCastingNow()))
+					{
+						obj.doCast(getRandomBoolean() ? DARK_STORM : DARK_BLADE);
+					}
+				}
+			}
+		}
+		
+		if ((npc.calculateDistance(npc.getSpawn().getLocation(), false, false) > MAX_CHASE_DIST) || (Math.abs(npc.getZ() - npc.getSpawn().getZ()) > 450))
+		{
+			npc.disableCoreAI(true);
+			npc.teleToLocation(npc.getSpawn().getLocation());
+		}
+		return super.onAttack(npc, attacker, damage, isSummon);
+	}
+	
+	@Override
+	public String onSkillSee(L2Npc npc, L2PcInstance player, Skill skill, L2Object[] targets, boolean isSummon)
+	{
+		if ((getRandom(100) < 10) && (!npc.isCastingNow()) && (!npc.isInsideRadius(player, 250, false, false)))
+		{
+			addSkillCastDesire(npc, player, DARK_WIND, 1000000L);
+		}
+		return super.onSkillSee(npc, player, skill, targets, isSummon);
+	}
+	
+	@Override
+	public String onSpawn(L2Npc npc)
+	{
+		final L2Spawn spawn = npc.getSpawn();
+		spawn.setAmount(1);
+		spawn.setRespawnDelay(1800);
+		spawn.startRespawn();
+		return super.onSpawn(npc);
+	}
+	
+	@Override
+	public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon)
+	{
+		if ((getRandom(100) < 50) && (!npc.getVariables().getBoolean(SHOUT_FLAG, false)))
+		{
+			npc.getVariables().set(SHOUT_FLAG, true);
+			broadcastNpcSay(npc, Say2.NPC_SHOUT, NpcStringId.WHOS_THERE_IF_YOU_DISTURB_THE_TEMPER_OF_THE_GREAT_LAND_DRAGON_ANTHARAS_I_WILL_NEVER_FORGIVE_YOU);
+		}
+		return super.onAggroRangeEnter(npc, player, isSummon);
+	}
+	
+	@Override
+	protected void onTeleport(L2Npc npc)
+	{
+		WalkingManager.getInstance().cancelMoving(npc);
+		startQuestTimer("CORE_AI", 100, npc, null);
+		notifyEvent("CHECK_ROUTE", npc, null);
+	}
+	
+	public static void main(String[] args)
+	{
+		new Knoriks();
+	}
+}
diff --git a/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java b/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java
index b739bca75517b2322a9b93b8d2cbd65501b9f633..715f79f2427eab3f5d02bf2a2f8516a2d942664d 100644
--- a/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java
+++ b/src/main/java/com/l2jserver/datapack/instances/FinalEmperialTomb/FinalEmperialTomb.java
@@ -668,7 +668,7 @@ public final class FinalEmperialTomb extends AbstractInstance {
 							for (FrintezzaSong element : FRINTEZZASONGLIST) {
 								if (rnd < element.chance) {
 									_world.OnSong = element;
-									broadCastPacket(_world, new ExShowScreenMessage(2, -1, 2, 0, 0, 0, 0, true, 4000, false, null, element.songName, null));
+									broadCastPacket(_world, new ExShowScreenMessage(2, -1, 2, 0, 0, 0, 0, true, 4000, false, null, element.songName));
 									broadCastPacket(_world, new MagicSkillUse(_world.frintezza, _world.frintezza, element.skill.getSkillId(), element.skill.getSkillLvl(), element.skill.getSkill().getHitTime(), 0));
 									_world.songEffectTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 1), element.skill.getSkill().getHitTime() - 10000);
 									_world.songTask = ThreadPoolManager.getInstance().scheduleGeneral(new SongTask(_world, 0), element.skill.getSkill().getHitTime());
diff --git a/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java b/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java
index 73187d86957f82900cca04064a50438d99dccf0b..0818af41bdbf6cc719409eebeed1f0ee6ec18552 100644
--- a/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java
+++ b/src/main/java/com/l2jserver/datapack/quests/Q00383_TreasureHunt/Q00383_TreasureHunt.java
@@ -88,7 +88,7 @@ public final class Q00383_TreasureHunt extends Quest {
 			case "30890-05.htm": {
 				if (hasQuestItems(player, PIRATES_TREASURE_MAP)) {
 					giveAdena(player, 1000, false);
-					takeItems(player, PIRATES_TREASURE_MAP, -1);
+					takeItems(player, PIRATES_TREASURE_MAP, 1);
 					htmltext = event;
 				}
 				break;
@@ -100,7 +100,7 @@ public final class Q00383_TreasureHunt extends Quest {
 			case "30890-07.htm": {
 				if (hasQuestItems(player, PIRATES_TREASURE_MAP)) {
 					qs.startQuest();
-					takeItems(player, PIRATES_TREASURE_MAP, -1);
+					takeItems(player, PIRATES_TREASURE_MAP, 1);
 					htmltext = event;
 				}
 				break;
diff --git a/src/main/resources/data/Routes.xml b/src/main/resources/data/Routes.xml
index f3d40a5f57b400952ee85ec5bea65640ffd53bc6..6e1b890748345c35c7ffa8a22fb228c3c3d6d2b0 100644
--- a/src/main/resources/data/Routes.xml
+++ b/src/main/resources/data/Routes.xml
@@ -134,7 +134,6 @@
 		<target id="22851" spawnX="146603" spawnY="112946" spawnZ="-3725" />
 		<target id="22851" spawnX="145959" spawnY="112794" spawnZ="-3725" />
 		<target id="22851" spawnX="146859" spawnY="112482" spawnZ="-3725" />
-		<target id="22857" spawnX="146113" spawnY="112674" spawnZ="-3720" />
 		<point X="146113" Y="112674" Z="-3725" delay="0" run="true" />
 		<point X="146634" Y="112759" Z="-3725" delay="0" run="true" />
 		<point X="147332" Y="112618" Z="-3725" delay="0" run="true" />
@@ -425,100 +424,117 @@
 		<point X="115677" Y="115086" Z="-3134" delay="0" run="true" />
 	</route>
 	<!-- Knoriks -->
-	<route name="knoriks_01" repeat="true" repeatStyle="back">
-		<target id="22857" spawnX="140633" spawnY="114472" spawnZ="-3725" />
-		<point X="140639" Y="114460" Z="-3729" delay="0" run="true" />
-		<point X="142095" Y="114336" Z="-3729" delay="0" run="true" />
-		<point X="142664" Y="113707" Z="-3720" delay="0" run="true" />
-		<point X="143831" Y="114596" Z="-3720" delay="0" run="true" />
-		<point X="144783" Y="114876" Z="-3720" delay="0" run="true" />
-		<point X="147197" Y="116761" Z="-3704" delay="0" run="true" />
-		<point X="148227" Y="117724" Z="-3712" delay="0" run="true" />
-	</route>
-	<route name="knoriks_02" repeat="true" repeatStyle="back">
-		<target id="22857" spawnX="143007" spawnY="108951" spawnZ="-3948" />
-		<point X="142978" Y="108907" Z="-3949" delay="0" run="true" />
-		<point X="142583" Y="108953" Z="-3949" delay="0" run="true" />
-		<point X="141716" Y="109380" Z="-3953" delay="0" run="true" />
-		<point X="140541" Y="111332" Z="-3899" delay="0" run="true" />
-		<point X="140973" Y="113160" Z="-3725" delay="0" run="true" />
-		<point X="141877" Y="112263" Z="-3720" delay="0" run="true" />
-		<point X="142752" Y="111555" Z="-3953" delay="0" run="true" />
-		<point X="142151" Y="109094" Z="-3949" delay="0" run="true" />
-		<point X="140873" Y="109371" Z="-3949" delay="0" run="true" />
-	</route>
-	<route name="knoriks_03" repeat="true" repeatStyle="back">
-		<target id="22857" spawnX="147896" spawnY="110033" spawnZ="-3941" />
-		<point X="147895" Y="110043" Z="-3946" delay="0" run="true" />
-		<point X="145685" Y="109132" Z="-3953" delay="0" run="true" />
-		<point X="144924" Y="108192" Z="-3928" delay="0" run="true" />
-		<point X="144558" Y="107723" Z="-3953" delay="0" run="true" />
-	</route>
-	<route name="knoriks_04" repeat="true" repeatStyle="back">
-		<target id="22857" spawnX="142480" spawnY="119635" spawnZ="-3916" />
-		<point X="142480" Y="119635" Z="-3921" delay="0" run="true" />
-		<point X="142960" Y="117501" Z="-3921" delay="0" run="true" />
-		<point X="142026" Y="117331" Z="-3912" delay="0" run="true" />
-		<point X="141238" Y="117792" Z="-3912" delay="0" run="true" />
-		<point X="140220" Y="119893" Z="-3912" delay="0" run="true" />
-		<point X="140697" Y="120780" Z="-3896" delay="0" run="true" />
-		<point X="141939" Y="121539" Z="-3921" delay="0" run="true" />
-		<point X="143250" Y="121372" Z="-3921" delay="0" run="true" />
-		<point X="145334" Y="121799" Z="-3921" delay="0" run="true" />
-		<point X="146081" Y="121987" Z="-3921" delay="0" run="true" />
-		<point X="146278" Y="121463" Z="-3912" delay="0" run="true" />
-		<point X="145785" Y="120344" Z="-3912" delay="0" run="true" />
-	</route>
-	<route name="knoriks_05" repeat="true" repeatStyle="back">
-		<target id="22857" spawnX="152585" spawnY="110480" spawnZ="-5524" />
-		<point X="152585" Y="110480" Z="-5529" delay="0" run="true" />
-		<point X="153524" Y="110822" Z="-5529" delay="0" run="true" />
-		<point X="153325" Y="111607" Z="-5529" delay="0" run="true" />
-		<point X="150988" Y="111181" Z="-5520" delay="0" run="true" />
-		<point X="149511" Y="111160" Z="-5496" delay="0" run="true" />
-		<point X="149330" Y="110708" Z="-5448" delay="0" run="true" />
-		<point X="150386" Y="109580" Z="-5136" delay="0" run="true" />
-		<point X="152942" Y="109299" Z="-5161" delay="0" run="true" />
-		<point X="153303" Y="108403" Z="-5152" delay="0" run="true" />
-		<point X="152669" Y="107732" Z="-5120" delay="0" run="true" />
-		<point X="150735" Y="107365" Z="-4776" delay="0" run="true" />
-		<point X="149713" Y="108362" Z="-4536" delay="0" run="true" />
-		<point X="148849" Y="108131" Z="-4312" delay="0" run="true" />
-		<point X="147699" Y="107247" Z="-4056" delay="0" run="true" />
-		<point X="146847" Y="107845" Z="-3872" delay="0" run="true" />
-		<point X="146442" Y="109417" Z="-3432" delay="0" run="true" />
-	</route>
-	<route name="knoriks_06" repeat="true" repeatStyle="cycle">
-		<target id="22857" spawnX="146901" spawnY="116472" spawnZ="-3698" />
-		<point X="146901" Y="116472" Z="-3703" delay="0" run="true" />
-		<point X="148652" Y="115744" Z="-3721" delay="0" run="true" />
-		<point X="149236" Y="114853" Z="-3725" delay="0" run="true" />
-		<point X="148744" Y="112355" Z="-3721" delay="0" run="true" />
-		<point X="148104" Y="112099" Z="-3721" delay="0" run="true" />
-		<point X="145757" Y="112813" Z="-3721" delay="0" run="true" />
-		<point X="144569" Y="114637" Z="-3711" delay="0" run="true" />
-		<point X="143071" Y="114050" Z="-3721" delay="0" run="true" />
-		<point X="142565" Y="113596" Z="-3725" delay="0" run="true" />
-		<point X="141899" Y="114565" Z="-3721" delay="0" run="true" />
-		<point X="140915" Y="114253" Z="-3708" delay="0" run="true" />
-		<point X="140743" Y="112383" Z="-3721" delay="0" run="true" />
-		<point X="140476" Y="111103" Z="-3945" delay="0" run="true" />
-		<point X="141182" Y="109756" Z="-3945" delay="0" run="true" />
-		<point X="142932" Y="108579" Z="-3945" delay="0" run="true" />
-		<point X="142620" Y="107144" Z="-3945" delay="0" run="true" />
-		<point X="144119" Y="107449" Z="-3945" delay="0" run="true" />
-		<point X="145247" Y="108941" Z="-3945" delay="0" run="true" />
-		<point X="147232" Y="109791" Z="-3948" delay="0" run="true" />
-		<point X="145501" Y="109010" Z="-3945" delay="0" run="true" />
-		<point X="143916" Y="107319" Z="-3949" delay="0" run="true" />
-		<point X="142311" Y="107213" Z="-3945" delay="0" run="true" />
-		<point X="140700" Y="107297" Z="-3949" delay="0" run="true" />
-		<point X="140784" Y="109603" Z="-3945" delay="0" run="true" />
-		<point X="140552" Y="111792" Z="-3762" delay="0" run="true" />
-		<point X="140845" Y="114262" Z="-3707" delay="0" run="true" />
-		<point X="142023" Y="114407" Z="-3721" delay="0" run="true" />
-		<point X="142449" Y="113612" Z="-3703" delay="0" run="true" />
-		<point X="145190" Y="115247" Z="-3721" delay="0" run="true" />
+	<route name="24_21_course1" repeat="true" repeatStyle="back">
+		<target id="22857" spawnX="140641" spawnY="114525" spawnZ="-3755" />
+		<point X="140604" Y="114508" Z="-3720" delay="0" run="true" />
+		<point X="141213" Y="114571" Z="-3720" delay="0" run="true" />
+		<point X="142089" Y="114339" Z="-3720" delay="0" run="true" />
+		<point X="142576" Y="113686" Z="-3720" delay="0" run="true" />
+		<point X="143010" Y="113831" Z="-3720" delay="0" run="true" />
+		<point X="143602" Y="114477" Z="-3720" delay="0" run="true" />
+		<point X="143991" Y="114774" Z="-3720" delay="0" run="true" />
+		<point X="144817" Y="114949" Z="-3720" delay="0" run="true" />
+		<point X="145290" Y="115368" Z="-3720" delay="0" run="true" />
+		<point X="145585" Y="115841" Z="-3720" delay="0" run="true" />
+		<point X="146135" Y="116140" Z="-3720" delay="0" run="true" />
+		<point X="146707" Y="116377" Z="-3720" delay="0" run="true" />
+		<point X="147285" Y="116135" Z="-3720" delay="0" run="true" />
+		<point X="148116" Y="116153" Z="-3720" delay="0" run="true" />
+		<point X="148834" Y="115673" Z="-3720" delay="0" run="true" />
+		<point X="149253" Y="114841" Z="-3720" delay="0" run="true" />
+		<point X="149268" Y="114236" Z="-3720" delay="0" run="true" />
+		<point X="149118" Y="113220" Z="-3720" delay="0" run="true" />
+		<point X="148658" Y="112282" Z="-3720" delay="0" run="true" />
+		<point X="148093" Y="112008" Z="-3720" delay="0" run="true" />
+		<point X="147011" Y="112399" Z="-3720" delay="0" run="true" />
+		<point X="145848" Y="112771" Z="-3720" delay="0" run="true" />
+		<point X="145003" Y="113763" Z="-3720" delay="0" run="true" />
+		<point X="145123" Y="114965" Z="-3720" delay="0" run="true" />
+		<point X="145672" Y="115854" Z="-3720" delay="0" run="true" />
+		<point X="146267" Y="116153" Z="-3720" delay="0" run="true" />
+		<point X="146862" Y="116277" Z="-3720" delay="0" run="true" />
+		<point X="147254" Y="117077" Z="-3712" delay="0" run="true" />
+		<point X="148486" Y="117838" Z="-3712" delay="0" run="true" />
+	</route>
+	<route name="24_21_course2" repeat="true" repeatStyle="back">
+		<target id="22857" spawnX="143789" spawnY="110205" spawnZ="-3968" />
+		<point X="143820" Y="110172" Z="-3936" delay="0" run="true" />
+		<point X="142599" Y="110060" Z="-3944" delay="0" run="true" />
+		<point X="142477" Y="110686" Z="-3944" delay="0" run="true" />
+		<point X="142736" Y="111263" Z="-3944" delay="0" run="true" />
+		<point X="143154" Y="111808" Z="-3944" delay="0" run="true" />
+		<point X="143567" Y="112067" Z="-3944" delay="0" run="true" />
+		<point X="142814" Y="111870" Z="-3944" delay="0" run="true" />
+		<point X="142081" Y="112055" Z="-3800" delay="0" run="true" />
+		<point X="141859" Y="112305" Z="-3720" delay="0" run="true" />
+		<point X="141448" Y="112739" Z="-3720" delay="0" run="true" />
+		<point X="140917" Y="113042" Z="-3720" delay="0" run="true" />
+		<point X="140686" Y="112332" Z="-3720" delay="0" run="true" />
+		<point X="140641" Y="111953" Z="-3720" delay="0" run="true" />
+		<point X="140545" Y="111532" Z="-3840" delay="0" run="true" />
+		<point X="140581" Y="110501" Z="-3944" delay="0" run="true" />
+		<point X="141167" Y="109649" Z="-3944" delay="0" run="true" />
+		<point X="142038" Y="109301" Z="-3944" delay="0" run="true" />
+		<point X="142990" Y="108693" Z="-3944" delay="0" run="true" />
+		<point X="142849" Y="108131" Z="-3944" delay="0" run="true" />
+		<point X="142639" Y="107729" Z="-3944" delay="0" run="true" />
+		<point X="142548" Y="107332" Z="-3944" delay="0" run="true" />
+		<point X="143270" Y="107225" Z="-3944" delay="0" run="true" />
+		<point X="144648" Y="107664" Z="-3944" delay="0" run="true" />
+		<point X="144471" Y="108299" Z="-3944" delay="0" run="true" />
+		<point X="145009" Y="108670" Z="-3944" delay="0" run="true" />
+		<point X="146240" Y="109339" Z="-3944" delay="0" run="true" />
+		<point X="147700" Y="109819" Z="-3944" delay="0" run="true" />
+	</route>
+	<route name="24_21_course3" repeat="true" repeatStyle="back">
+		<target id="22857" spawnX="146466" spawnY="109789" spawnZ="-3440" />
+		<point X="146460" Y="109809" Z="-3424" delay="0" run="true" />
+		<point X="146523" Y="109139" Z="-3472" delay="0" run="true" />
+		<point X="146565" Y="108198" Z="-3704" delay="0" run="true" />
+		<point X="146959" Y="107785" Z="-3920" delay="0" run="true" />
+		<point X="147629" Y="107309" Z="-4040" delay="0" run="true" />
+		<point X="148344" Y="107544" Z="-4176" delay="0" run="true" />
+		<point X="149032" Y="108402" Z="-4352" delay="0" run="true" />
+		<point X="149869" Y="108299" Z="-4568" delay="0" run="true" />
+		<point X="150297" Y="107596" Z="-4680" delay="0" run="true" />
+		<point X="151286" Y="107257" Z="-4872" delay="0" run="true" />
+		<point X="152409" Y="107695" Z="-5072" delay="0" run="true" />
+		<point X="153554" Y="107857" Z="-5152" delay="0" run="true" />
+		<point X="153552" Y="108326" Z="-5152" delay="0" run="true" />
+		<point X="153496" Y="108810" Z="-5152" delay="0" run="true" />
+		<point X="152927" Y="109267" Z="-5152" delay="0" run="true" />
+		<point X="151702" Y="109307" Z="-5152" delay="0" run="true" />
+		<point X="151116" Y="109293" Z="-5136" delay="0" run="true" />
+		<point X="150287" Y="109522" Z="-5120" delay="0" run="true" />
+		<point X="149574" Y="109763" Z="-5224" delay="0" run="true" />
+		<point X="149387" Y="110508" Z="-5400" delay="0" run="true" />
+		<point X="149404" Y="110880" Z="-5464" delay="0" run="true" />
+		<point X="149815" Y="111397" Z="-5504" delay="0" run="true" />
+		<point X="151689" Y="111304" Z="-5520" delay="0" run="true" />
+		<point X="153164" Y="111658" Z="-5520" delay="0" run="true" />
+		<point X="153551" Y="111249" Z="-5520" delay="0" run="true" />
+		<point X="153437" Y="110763" Z="-5520" delay="0" run="true" />
+		<point X="152339" Y="110422" Z="-5520" delay="0" run="true" />
+	</route>
+	<route name="24_21_course4" repeat="true" repeatStyle="back">
+		<target id="22857" spawnX="145482" spawnY="120250" spawnZ="-3944" />
+		<point X="145484" Y="120220" Z="-3912" delay="0" run="true" />
+		<point X="146262" Y="121372" Z="-3912" delay="0" run="true" />
+		<point X="146180" Y="121825" Z="-3912" delay="0" run="true" />
+		<point X="145691" Y="121944" Z="-3912" delay="0" run="true" />
+		<point X="144585" Y="121464" Z="-3912" delay="0" run="true" />
+		<point X="143985" Y="121211" Z="-3904" delay="0" run="true" />
+		<point X="143526" Y="121078" Z="-3912" delay="0" run="true" />
+		<point X="141770" Y="121528" Z="-3912" delay="0" run="true" />
+		<point X="140740" Y="120742" Z="-3896" delay="0" run="true" />
+		<point X="140174" Y="119815" Z="-3912" delay="0" run="true" />
+		<point X="140492" Y="119201" Z="-3912" delay="0" run="true" />
+		<point X="141119" Y="117931" Z="-3912" delay="0" run="true" />
+		<point X="142105" Y="117257" Z="-3912" delay="0" run="true" />
+		<point X="143028" Y="117334" Z="-3912" delay="0" run="true" />
+		<point X="142917" Y="118083" Z="-3904" delay="0" run="true" />
+		<point X="142349" Y="118750" Z="-3896" delay="0" run="true" />
+		<point X="142659" Y="119882" Z="-3912" delay="0" run="true" />
 	</route>
 	<!-- Sanctum of the Lords of Dawn -->
 	<route name="iz111_zone01_01" repeat="true" repeatStyle="back">
diff --git a/src/main/java/com/l2jserver/datapack/events/FreyaCelebration/config.xml b/src/main/resources/data/events/FreyaCelebration.xml
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/events/FreyaCelebration/config.xml
rename to src/main/resources/data/events/FreyaCelebration.xml
diff --git a/src/main/java/com/l2jserver/datapack/events/GiftOfVitality/config.xml b/src/main/resources/data/events/GiftOfVitality.xml
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/events/GiftOfVitality/config.xml
rename to src/main/resources/data/events/GiftOfVitality.xml
diff --git a/src/main/java/com/l2jserver/datapack/events/HeavyMedal/config.xml b/src/main/resources/data/events/HeavyMedal.xml
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/events/HeavyMedal/config.xml
rename to src/main/resources/data/events/HeavyMedal.xml
diff --git a/src/main/java/com/l2jserver/datapack/events/LoveYourGatekeeper/config.xml b/src/main/resources/data/events/LoveYourGatekeeper.xml
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/events/LoveYourGatekeeper/config.xml
rename to src/main/resources/data/events/LoveYourGatekeeper.xml
diff --git a/src/main/java/com/l2jserver/datapack/events/MasterOfEnchanting/config.xml b/src/main/resources/data/events/MasterOfEnchanting.xml
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/events/MasterOfEnchanting/config.xml
rename to src/main/resources/data/events/MasterOfEnchanting.xml
diff --git a/src/main/java/com/l2jserver/datapack/events/TheValentineEvent/config.xml b/src/main/resources/data/events/TheValentineEvent.xml
similarity index 100%
rename from src/main/java/com/l2jserver/datapack/events/TheValentineEvent/config.xml
rename to src/main/resources/data/events/TheValentineEvent.xml
diff --git a/src/main/resources/data/scripts.cfg b/src/main/resources/data/scripts.cfg
index 9f06aaa2965ad0e4fbfe4e2a391480fd31a9661d..d559409cbc2cbacb0b4c8bd22ea869ab46e0a35b 100644
--- a/src/main/resources/data/scripts.cfg
+++ b/src/main/resources/data/scripts.cfg
@@ -149,6 +149,8 @@ com/l2jserver/datapack/ai/individual/Ballista.java
 com/l2jserver/datapack/ai/individual/Beleth.java
 com/l2jserver/datapack/ai/individual/BlackdaggerWing.java
 com/l2jserver/datapack/ai/individual/BleedingFly.java
+com/l2jserver/datapack/ai/individual/BloodyBerserker.java
+com/l2jserver/datapack/ai/individual/BloodyKarinness.java
 com/l2jserver/datapack/ai/individual/CrimsonHatuOtis.java
 com/l2jserver/datapack/ai/individual/Core.java
 com/l2jserver/datapack/ai/individual/DarkWaterDragon.java
@@ -162,6 +164,7 @@ com/l2jserver/datapack/ai/individual/EvasGiftBox.java
 com/l2jserver/datapack/ai/individual/FrightenedRagnaOrc.java
 com/l2jserver/datapack/ai/individual/Gordon.java
 com/l2jserver/datapack/ai/individual/GraveRobbers.java
+com/l2jserver/datapack/ai/individual/Knoriks.java
 com/l2jserver/datapack/ai/individual/MuscleBomber.java
 com/l2jserver/datapack/ai/individual/Orfen.java
 com/l2jserver/datapack/ai/individual/QueenAnt.java
diff --git a/src/main/resources/data/stats/npcs/22800-22899.xml b/src/main/resources/data/stats/npcs/22800-22899.xml
index 8f3aef20ded58b5564841d6b98764f60b228b5db..0c7289c28fd4eacd1e1792f55288d1958a04dc20 100644
--- a/src/main/resources/data/stats/npcs/22800-22899.xml
+++ b/src/main/resources/data/stats/npcs/22800-22899.xml
@@ -4932,7 +4932,6 @@
 			<skill id="4416" level="6" /> <!--Humanoids -->
 			<skill id="5467" level="1" /> <!--Dark Attacks -->
 			<skill id="5598" level="12" /> <!--Flash Resistance -->
-			<skill id="6743" level="1" /> <!--Dark Wind -->
 		</skillList>
 		<exCrtEffect>true</exCrtEffect>
 		<ai type="BALANCED" aggroRange="500" clanHelpRange="300" />
diff --git a/src/main/resources/data/stats/skills/06700-06799.xml b/src/main/resources/data/stats/skills/06700-06799.xml
index 5d6fa99331ede968c341c530453ad2a874d87c93..336a4177cab2ad53197b342dbe315466cde0e65e 100644
--- a/src/main/resources/data/stats/skills/06700-06799.xml
+++ b/src/main/resources/data/stats/skills/06700-06799.xml
@@ -592,9 +592,40 @@
 		</effects>
 	</skill>
 	<skill id="6744" levels="1" name="Dark Storm">
-		<!-- Casting Spd. decreases by 90% and Atk. Spd. decreases by 30%. -->
-		<set name="operateType" val="P" />
-		<set name="targetType" val="NONE" />
+		<!-- High Five Confirmed -->
+ 		<!-- Casting Spd. decreases by 90% and Atk. Spd. decreases by 30%. -->
+		<set name="abnormalLvl" val="3" />
+		<set name="abnormalTime" val="120" />
+		<set name="abnormalType" val="CASTING_TIME_UP" />
+		<set name="affectRange" val="200" />
+		<set name="castRange" val="900" />
+		<set name="basicProperty" val="MEN" />
+		<set name="effectPoint" val="-10000" />
+		<set name="effectRange" val="1200" />
+		<set name="attributeType" val="DARK" />
+		<set name="attributePower" val="120" />
+		<set name="hitTime" val="2000" />
+		<set name="isDebuff" val="true" />
+		<set name="icon" val="icon.skill1386" />
+		<set name="lvlBonusRate" val="2" />
+		<set name="magicLvl" val="85" />
+		<set name="mpConsume2" val="20" />
+		<set name="mpConsume1" val="5" />
+		<set name="operateType" val="A2" />
+		<set name="reuseDelay" val="1000" />
+		<set name="rideState" val="NONE;STRIDER;WYVERN;WOLF" />
+		<set name="targetType" val="AREA" />
+		<effects>
+			<effect name="MagicalAttack">
+				<param power="200" />
+			</effect>
+			<effect name="Debuff">
+				<mul stat="mAtkSpd" val="0.1" />
+			</effect>
+			<effect name="Debuff">
+				<mul stat="pAtkSpd" val="0.7" />
+			</effect>
+		</effects>
 	</skill>
 	<skill id="6745" levels="1" name="Dark Space">
 		<!-- none -->
@@ -607,9 +638,26 @@
 		<set name="targetType" val="NONE" />
 	</skill>
 	<skill id="6747" levels="1" name="Dark Blade">
-		<!-- none -->
-		<set name="operateType" val="P" />
-		<set name="targetType" val="NONE" />
+		<!-- High Five Confirmed -->
+		<set name="castRange" val="60" />
+		<set name="effectPoint" val="-10000" />
+		<set name="effectRange" val="150" />
+		<set name="attributeType" val="DARK" />
+		<set name="attributePower" val="120" />
+		<set name="hitTime" val="1500" />
+		<set name="icon" val="icon.skill1445" />
+		<set name="magicLvl" val="85" />
+		<set name="mpConsume2" val="80" />
+		<set name="operateType" val="A1" />
+		<set name="reuseDelay" val="1000" />
+		<set name="rideState" val="NONE" />
+		<set name="targetType" val="ONE" />
+		<effects>
+			<effect name="PhysicalAttack">
+				<param power="11600" />
+				<param criticalChance="30" />
+			</effect>
+		</effects>
 	</skill>
 	<skill id="6748" levels="1" name="Stun Attack">
 		<!-- High Five Confirmed -->
diff --git a/src/main/resources/sql/spawnlist.sql b/src/main/resources/sql/spawnlist.sql
index 45bddfe42b1bb85b029aae562c35e76c3b77be5e..cb9db56b66726629f08f407a7f2f39a0a905d5a8 100644
--- a/src/main/resources/sql/spawnlist.sql
+++ b/src/main/resources/sql/spawnlist.sql
@@ -37834,14 +37834,6 @@ INSERT INTO `spawnlist` VALUES
 ("lair_of_antharas", 1, 22856, 154643, 115046, -5256, 0, 0, 61796, 60, 0, 0, 0),
 ("lair_of_antharas", 1, 22856, 154752, 116439, -5256, 0, 0, 27708, 60, 0, 0, 0),
 ("lair_of_antharas", 1, 22856, 154755, 114862, -5256, 0, 0, 57467, 60, 0, 0, 0),
--- Knoriks
-("lair_of_antharas", 1, 22857, 140633, 114472, -3725, 0, 0, 44315, 300, 0, 0, 0),
-("lair_of_antharas", 1, 22857, 147896, 110033, -3941, 0, 0, 50191, 300, 0, 0, 0),
-("lair_of_antharas", 1, 22857, 142480, 119635, -3916, 0, 0, 29350, 300, 0, 0, 0),
-("lair_of_antharas", 1, 22857, 143007, 108951, -3948, 0, 0, 26923, 300, 0, 0, 0),
-("lair_of_antharas", 1, 22857, 152585, 110480, -5524, 0, 0, 17587, 300, 0, 0, 0),
-("lair_of_antharas", 1, 22857, 146113, 112674, -3720, 0, 0, 63739, 300, 0, 0, 0),
-("lair_of_antharas", 1, 22857, 146901, 116472, -3698, 0, 0, 16515, 300, 0, 0, 0),
 -- Theodric
 ("dragon_valley", 1, 30755, 131176, 114676, -3720, 0, 0, 21124, 60, 0, 0, 0),
 -- Separated Soul