diff --git a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-busy.htm b/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-busy.htm
deleted file mode 100644
index 8dfc1d2b633d9acbfaab1c22e4cbc2ed38b4915b..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-busy.htm
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><body>Oh! Our castle is being attacked and I can't do anything for you right now.
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-no.htm b/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-no.htm
deleted file mode 100644
index b7672fca76c4fea721e5e353dad7a185c8e6c9b7..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506-no.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Who goes there?!<br>
-I order you to leave at once!
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506.htm b/L2J_DataPack_BETA/dist/game/data/html/doormen/35506.htm
deleted file mode 100644
index 3c3bae2cefc8f7ccd9d7e21f5cf004e4c3eb8997..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/html/doormen/35506.htm
+++ /dev/null
@@ -1,9 +0,0 @@
-<html><body>Nothing unusual to report my Lord.<br>
-What do you wish to do?<br>
-<center>
-<a action="bypass -h npc_%objectId%_operate_door 1 20160008">Open the Dungeon Gates</a><br>
-<a action="bypass -h npc_%objectId%_operate_door 0 20160008">Close the Dungeon Gates</a><br>
-<a action="bypass -h npc_%objectId%_operate_door 1 20160001 20160002 20160003 20160004 20160005 20160006">Open All Castle Gates</a><br>
-<a action="bypass -h npc_%objectId%_operate_door 0 20160001 20160002 20160003 20160004 20160005 20160006">Close All Castle Gates</a><br>
-</center>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/html/teleporter/29055.htm b/L2J_DataPack_BETA/dist/game/data/html/teleporter/29055.htm
deleted file mode 100644
index 3fe91ce58df4a98ccf172e5906a959310ca4a4f7..0000000000000000000000000000000000000000
--- a/L2J_DataPack_BETA/dist/game/data/html/teleporter/29055.htm
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><body>Teleport Cube:<br>
-<a action="bypass -h npc_%objectId%_Quest ToIVortex">Go above Ground</a>
-</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm b/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm
index c936382b36493264e39a27d40527095449764cab..866d1e17f26654a105703bfc91e1bf30c380dc72 100644
--- a/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm
+++ b/L2J_DataPack_BETA/dist/game/data/html/teleporter/31842.htm
@@ -1,4 +1,4 @@
-<html><body>Teleport Cube:<br>
-<a action="bypass -h npc_%objectId%_goto 57" msg="811;the 3rd floor">Return to the 3rd floor.</a><br>
-<a action="bypass -h npc_%objectId%_goto 22" msg="811;above ground">Go above ground.</a>
+<html><body>Teleportation Cubic:<br>
+<a action="bypass -h npc_%objectId%_Quest baium">Return to the surface.</a><br>
+<a action="bypass -h npc_%objectId% Quest">Quest.</a>
 </body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts.cfg b/L2J_DataPack_BETA/dist/game/data/scripts.cfg
index 36b35adc34aba265d52f9e9788cc4a5315064b8a..322f85a950f514379f974b4081f72c105cebac80 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts.cfg
+++ b/L2J_DataPack_BETA/dist/game/data/scripts.cfg
@@ -72,6 +72,7 @@ ai/individual/Ranku.java
 ai/individual/SinWardens.java
 ai/individual/Typhoon.java
 ai/individual/Valakas.java
+ai/individual/Venom/Venom.java
 ai/individual/Zaken.java
 
 # Transformations
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java
index 8ffe0fca35d42488e4413c30c11f90eba733b128..e495ee502e8ac826dd1318cac4908e6326f3d2de 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java
@@ -68,6 +68,7 @@ public class Baium extends L2AttackableAIScript
 	private static final int ANGELIC_VORTEX = 31862;
 	private static final int LIVE_BAIUM = 29020;
 	private static final int ARCHANGEL = 29021;
+	private static final int TELEPORT_CUBIC = 31842;
 	
 	// Baium status tracking
 	private static final byte ASLEEP = 0; // baium is in the stone version, waiting to be woken up. Entry is unlocked
@@ -99,8 +100,8 @@ public class Baium extends L2AttackableAIScript
 		registerMobs(mob);
 		
 		// Quest NPC starter initialization
-		addStartNpc(STONE_BAIUM, ANGELIC_VORTEX);
-		addTalkId(STONE_BAIUM, ANGELIC_VORTEX);
+		addStartNpc(STONE_BAIUM, ANGELIC_VORTEX, TELEPORT_CUBIC);
+		addTalkId(STONE_BAIUM, ANGELIC_VORTEX, TELEPORT_CUBIC);
 		
 		_Zone = GrandBossManager.getInstance().getZone(113100, 14500, 10077);
 		StatsSet info = GrandBossManager.getInstance().getStatsSet(LIVE_BAIUM);
@@ -348,6 +349,34 @@ public class Baium extends L2AttackableAIScript
 				npc.showChatWindow(player, 1);
 			}
 		}
+		else if (npc.getNpcId() == TELEPORT_CUBIC)
+		{
+			int chance = getRandom(3);
+			int x, y, z;
+			
+			switch (chance)
+			{
+				case 0:
+					x = 108784 + getRandom(100);
+					y = 16000 + getRandom(100);
+					z = -4928;
+					break;
+				
+				case 1:
+					x = 113824 + getRandom(100);
+					y = 10448 + getRandom(100);
+					z = -5164;
+					break;
+				
+				default:
+					x = 115488 + getRandom(100);
+					y = 22096 + getRandom(100);
+					z = -5168;
+					break;
+			}
+			
+			player.teleToLocation(x, y, z);
+		}
 		return htmltext;
 	}
 	
@@ -436,7 +465,7 @@ public class Baium extends L2AttackableAIScript
 		cancelQuestTimer("baium_despawn", npc, null);
 		npc.broadcastPacket(new PlaySound(1, "BS01_D", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ()));
 		// spawn the "Teleportation Cubic" for 15 minutes (to allow players to exit the lair)
-		addSpawn(29055, 115203, 16620, 10078, 0, false, 900000); // //should we teleport everyone out if the cubic despawns??
+		addSpawn(TELEPORT_CUBIC, 115017, 15549, 10090, 0, false, 900000);
 		// Respawn time is 168 Hours - 48 Random Hours
 		long respawnTime = (long) Config.Interval_Of_Baium_Spawn - getRandom(Config.Random_Of_Baium_Spawn);
 		GrandBossManager.getInstance().setBossStatus(LIVE_BAIUM, DEAD);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java
index 867ef99ed5bb77cb6d9484861180f3baa422ceca..716ba8abd2af96a8f2ec05c22233bf5aef025e2b 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Core.java
@@ -195,8 +195,6 @@ public class Core extends L2AttackableAIScript
 			npc.broadcastPacket(new NpcSay(objId, 0, npcId, NpcStringId.SYSTEM_IS_BEING_SHUT_DOWN));
 			npc.broadcastPacket(new NpcSay(objId, 0, npcId, NpcStringId.DOT_DOT_DOT_DOT_DOT_DOT));
 			_FirstAttacked = false;
-			addSpawn(31842, 16502, 110165, -6394, 0, false, 900000);
-			addSpawn(31842, 18948, 110166, -6397, 0, false, 900000);
 			GrandBossManager.getInstance().setBossStatus(CORE, DEAD);
 			// Respawn time is 60 Hours - 24 Random Hours
 			long respawnTime = (long) Config.Interval_Of_Core_Spawn - getRandom(Config.Random_Of_Core_Spawn);
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/29055.html b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/29055.html
new file mode 100644
index 0000000000000000000000000000000000000000..2a39eb2a9f7ea5d7c53041b28cb4c5e96d9e6bae
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/29055.html
@@ -0,0 +1,3 @@
+<html><body>Teleportation Cubic:<br>
+<a action="bypass -h npc_%objectId%_Quest Venom">Leave the prison.</a><br>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506-02.html b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506-02.html
new file mode 100644
index 0000000000000000000000000000000000000000..b8528b8653aa4233d87d2fa292506592dc246e93
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506-02.html
@@ -0,0 +1,3 @@
+<html><body>
+When attacking a castle, its defenses can easily be paralyzed.... What if that demon escapes?
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506.html b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506.html
new file mode 100644
index 0000000000000000000000000000000000000000..55b1b2506598c3dd11c251639008a9ec9fd3a681
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/35506.html
@@ -0,0 +1,4 @@
+<html><body>
+The roar of that scary demon in the dungeon always makes me want to run away! I know the dungeon is well-built, but if its defenses are broken, it could collapse!<br><p>
+<a action="bypass -h npc_%objectId%_Quest Venom">Teleport to the dungeon</a>
+</body></html>
\ No newline at end of file
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java
new file mode 100644
index 0000000000000000000000000000000000000000..4986c5e505765e372afa104f30ae1ae26c2f80cc
--- /dev/null
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Venom/Venom.java
@@ -0,0 +1,432 @@
+/*
+ * This program 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.
+ * 
+ * This program 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 ai.individual.Venom;
+
+import javolution.util.FastList;
+import ai.npc.AbstractNpcAI;
+
+import com.l2jserver.gameserver.ai.CtrlIntention;
+import com.l2jserver.gameserver.datatables.SpawnTable;
+import com.l2jserver.gameserver.instancemanager.CastleManager;
+import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager;
+import com.l2jserver.gameserver.instancemanager.MapRegionManager;
+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.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.L2Skill;
+import com.l2jserver.gameserver.network.NpcStringId;
+import com.l2jserver.gameserver.network.clientpackets.Say2;
+import com.l2jserver.gameserver.scripting.scriptengine.events.SiegeEvent;
+
+/**
+ * Venom AI on Rune Castle.
+ * @author nonom, MELERIX
+ */
+public final class Venom extends AbstractNpcAI
+{
+	private static final int CASTLE = 8; // Rune
+	
+	private static final int VENOM = 29054;
+	private static final int TELEPORT_CUBE = 29055;
+	private static final int DUNGEON_KEEPER = 35506;
+	
+	private static final byte ALIVE = 0;
+	private static final byte DEAD = 1;
+	
+	private static final int HOURS_BEFORE = 24;
+	
+	private static final Location[] TARGET_TELEPORTS =
+	{
+		new Location(12860, -49158, 976),
+		new Location(14878, -51339, 1024),
+		new Location(15674, -49970, 864),
+		new Location(15696, -48326, 864),
+		new Location(14873, -46956, 1024),
+		new Location(12157, -49135, -1088),
+		new Location(12875, -46392, -288),
+		new Location(14087, -46706, -288),
+		new Location(14086, -51593, -288),
+		new Location(12864, -51898, -288),
+		new Location(15538, -49153, -1056),
+		new Location(17001, -49149, -1064)
+	};
+	
+	private static final Location TRHONE = new Location(11025, -49152, -537);
+	private static final Location DUNGEON = new Location(11882, -49216, -3008);
+	private static final Location TELEPORT = new Location(12589, -49044, -3008);
+	private static final Location CUBE = new Location(12047, -49211, -3009);
+	
+	private static final SkillHolder VENOM_STRIKE = new SkillHolder(4993, 1);
+	private static final SkillHolder SONIC_STORM = new SkillHolder(4994, 1);
+	private static final SkillHolder VENOM_TELEPORT = new SkillHolder(4995, 1);
+	private static final SkillHolder RANGE_TELEPORT = new SkillHolder(4996, 1);
+	
+	private L2Npc _venom;
+	private L2Npc _massymore;
+	
+	private int _venomX;
+	private int _venomY;
+	private int _venomZ;
+	
+	private boolean _aggroMode = false;
+	private boolean _prisonIsOpen = false;
+	
+	// @formatter:off
+	private static final int[] TARGET_TELEPORTS_OFFSET =
+	{
+		650, 100, 100, 100, 100, 650, 200, 200, 200, 200, 200, 650
+	};
+	// @formatter:on
+	
+	private static FastList<L2PcInstance> _targets = new FastList<>();
+	
+	public Venom(String name, String descr)
+	{
+		super(name, descr);
+		
+		addStartNpc(DUNGEON_KEEPER, TELEPORT_CUBE);
+		addFirstTalkId(DUNGEON_KEEPER, TELEPORT_CUBE);
+		addTalkId(DUNGEON_KEEPER, TELEPORT_CUBE);
+		addSpawnId(VENOM);
+		addSpellFinishedId(VENOM);
+		addAttackId(VENOM);
+		addKillId(VENOM);
+		addAggroRangeEnterId(VENOM);
+		addSiegeNotify();
+		
+		for (L2Spawn spawn : SpawnTable.getInstance().getSpawnTable())
+		{
+			
+			switch (spawn.getNpcid())
+			{
+				case DUNGEON_KEEPER:
+					_massymore = spawn.getLastSpawn();
+					break;
+				case VENOM:
+					_venom = spawn.getLastSpawn();
+					_venomX = _venom.getX();
+					_venomY = _venom.getY();
+					_venomZ = _venom.getZ();
+					_venom.disableSkill(VENOM_TELEPORT.getSkill(), 0);
+					_venom.disableSkill(RANGE_TELEPORT.getSkill(), 0);
+					_venom.doRevive();
+					((L2Attackable) _venom).setCanReturnToSpawnPoint(false);
+					if (checkStatus() == DEAD)
+					{
+						_venom.deleteMe();
+					}
+					break;
+			}
+		}
+		
+		final long currentTime = System.currentTimeMillis();
+		final long startSiegeDate = CastleManager.getInstance().getCastleById(CASTLE).getSiegeDate().getTimeInMillis();
+		final long openingDungeonDate = startSiegeDate - (HOURS_BEFORE * 360000);
+		
+		if ((currentTime > openingDungeonDate) && (currentTime < startSiegeDate))
+		{
+			_prisonIsOpen = true;
+		}
+	}
+	
+	@Override
+	public String onTalk(L2Npc npc, L2PcInstance talker)
+	{
+		switch (npc.getNpcId())
+		{
+			case TELEPORT_CUBE:
+			{
+				talker.teleToLocation(MapRegionManager.TeleportWhereType.Town);
+				break;
+			}
+			case DUNGEON_KEEPER:
+			{
+				if (_prisonIsOpen)
+				{
+					talker.teleToLocation(TELEPORT, 0);
+				}
+				else
+				{
+					return "35506-02.html";
+				}
+				break;
+			}
+		}
+		return super.onTalk(npc, talker);
+	}
+	
+	@Override
+	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
+	{
+		switch (event)
+		{
+			case "tower_check":
+				if (CastleManager.getInstance().getCastleById(CASTLE).getSiege().getControlTowerCount() <= 1)
+				{
+					changeLocation(MoveTo.THRONE);
+					broadcastNpcSay(_massymore, Say2.SHOUT, NpcStringId.OH_NO_THE_DEFENSES_HAVE_FAILED_IT_IS_TOO_DANGEROUS_TO_REMAIN_INSIDE_THE_CASTLE_FLEE_EVERY_MAN_FOR_HIMSELF);
+					cancelQuestTimer("tower_check", npc, null);
+					startQuestTimer("raid_check", 10000, npc, null, true);
+				}
+				break;
+			case "raid_check":
+				if (!npc.isInsideZone(L2Character.ZONE_SIEGE) && !npc.isTeleporting())
+				{
+					npc.teleToLocation(new Location(_venomX, _venomY, _venomZ), false);
+				}
+				break;
+			case "cube_despawn":
+				if (npc != null)
+				{
+					npc.deleteMe();
+				}
+				break;
+		}
+		return event;
+	}
+	
+	@Override
+	public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isPet)
+	{
+		if (isPet)
+		{
+			return super.onAggroRangeEnter(npc, player, isPet);
+		}
+		
+		if (_aggroMode && (_targets.size() < 10) && (getRandom(3) < 1) && !player.isDead())
+		{
+			_targets.add(player);
+		}
+		return super.onAggroRangeEnter(npc, player, isPet);
+	}
+	
+	@Override
+	public boolean onSiegeEvent(SiegeEvent event)
+	{
+		if (event.getSiege().getCastle().getCastleId() == CASTLE)
+		{
+			if (event.getSiege().getCastle().getIsTimeRegistrationOver() && !event.getSiege().getAttackerClans().isEmpty())
+			{
+				_prisonIsOpen = true;
+				changeLocation(MoveTo.PRISON);
+			}
+			
+			switch (event.getStage())
+			{
+				case START:
+					_aggroMode = true;
+					_prisonIsOpen = false;
+					if ((_venom != null) && !_venom.isDead())
+					{
+						_venom.setCurrentHp(_venom.getMaxHp());
+						_venom.setCurrentMp(_venom.getMaxMp());
+						_venom.enableSkill(VENOM_TELEPORT.getSkill());
+						_venom.enableSkill(RANGE_TELEPORT.getSkill());
+						startQuestTimer("tower_check", 30000, _venom, null, true);
+					}
+					break;
+				case END:
+					_aggroMode = false;
+					if ((_venom != null) && !_venom.isDead())
+					{
+						changeLocation(MoveTo.PRISON);
+						_venom.disableSkill(VENOM_TELEPORT.getSkill(), 0);
+						_venom.disableSkill(RANGE_TELEPORT.getSkill(), 0);
+					}
+					updateStatus(ALIVE);
+					cancelQuestTimer("tower_check", _venom, null);
+					cancelQuestTimer("raid_check", _venom, null);
+					break;
+			}
+		}
+		return true;
+	}
+	
+	@Override
+	public String onSpellFinished(L2Npc npc, L2PcInstance player, L2Skill skill)
+	{
+		switch (skill.getId())
+		{
+			case 4222:
+				npc.teleToLocation(new Location(_venomX, _venomY, _venomZ), false);
+				break;
+			case 4995:
+				teleportTarget(player);
+				((L2Attackable) npc).stopHating(player);
+				break;
+			case 4996:
+				teleportTarget(player);
+				((L2Attackable) npc).stopHating(player);
+				if ((_targets != null) && (_targets.size() > 0))
+				{
+					for (L2PcInstance target : _targets)
+					{
+						final long x = player.getX() - target.getX();
+						final long y = player.getY() - target.getY();
+						final long z = player.getZ() - target.getZ();
+						final long range = 250;
+						if (((x * x) + (y * y) + (z * z)) <= (range * range))
+						{
+							teleportTarget(target);
+							((L2Attackable) npc).stopHating(target);
+						}
+					}
+					_targets.clear();
+				}
+				break;
+		}
+		return super.onSpellFinished(npc, player, skill);
+	}
+	
+	@Override
+	public final String onSpawn(L2Npc npc)
+	{
+		if (!npc.isTeleporting())
+		{
+			if (checkStatus() == DEAD)
+			{
+				npc.deleteMe();
+			}
+			else
+			{
+				npc.doRevive();
+				broadcastNpcSay(npc, Say2.SHOUT, NpcStringId.WHO_DARES_TO_COVET_THE_THRONE_OF_OUR_CASTLE_LEAVE_IMMEDIATELY_OR_YOU_WILL_PAY_THE_PRICE_OF_YOUR_AUDACITY_WITH_YOUR_VERY_OWN_BLOOD);
+			}
+		}
+		return super.onSpawn(npc);
+	}
+	
+	@Override
+	public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isPet)
+	{
+		final double distance = Math.sqrt(npc.getPlanDistanceSq(attacker.getX(), attacker.getY()));
+		if (_aggroMode && (getRandom(100) < 25))
+		{
+			npc.setTarget(attacker);
+			npc.doCast(VENOM_TELEPORT.getSkill());
+		}
+		else if (_aggroMode && (npc.getCurrentHp() < (npc.getMaxHp() / 3)) && (getRandom(100) < 25) && !npc.isCastingNow())
+		{
+			npc.setTarget(attacker);
+			npc.doCast(RANGE_TELEPORT.getSkill());
+		}
+		else if ((distance > 300) && (getRandom(100) < 10) && !npc.isCastingNow())
+		{
+			npc.setTarget(attacker);
+			npc.doCast(VENOM_STRIKE.getSkill());
+		}
+		else if ((getRandom(100) < 10) && !npc.isCastingNow())
+		{
+			npc.setTarget(attacker);
+			npc.doCast(SONIC_STORM.getSkill());
+		}
+		return super.onAttack(npc, attacker, damage, isPet);
+	}
+	
+	@Override
+	public String onKill(L2Npc npc, L2PcInstance killer, boolean isPet)
+	{
+		updateStatus(DEAD);
+		broadcastNpcSay(npc, Say2.SHOUT, NpcStringId.ITS_NOT_OVER_YET_IT_WONT_BE_OVER_LIKE_THIS_NEVER);
+		if (!CastleManager.getInstance().getCastleById(CASTLE).getSiege().getIsInProgress())
+		{
+			L2Npc cube = addSpawn(TELEPORT_CUBE, CUBE, false, 0);
+			startQuestTimer("cube_despawn", 120000, cube, null);
+		}
+		cancelQuestTimer("raid_check", npc, null);
+		return super.onKill(npc, killer, isPet);
+	}
+	
+	/**
+	 * Alters the Venom location
+	 * @param loc enum
+	 */
+	private void changeLocation(MoveTo loc)
+	{
+		switch (loc)
+		{
+			case THRONE:
+				_venom.teleToLocation(TRHONE, false);
+				break;
+			case PRISON:
+				if ((_venom == null) || _venom.isDead() || _venom.isDecayed())
+				{
+					_venom = addSpawn(VENOM, DUNGEON, false, 0);
+				}
+				else
+				{
+					_venom.teleToLocation(DUNGEON, false);
+				}
+				cancelQuestTimer("raid_check", _venom, null);
+				cancelQuestTimer("tower_check", _venom, null);
+				break;
+		}
+		_venomX = _venom.getX();
+		_venomY = _venom.getY();
+		_venomZ = _venom.getZ();
+	}
+	
+	private void teleportTarget(L2PcInstance player)
+	{
+		if ((player != null) && !player.isDead())
+		{
+			final int rnd = getRandom(11);
+			player.teleToLocation(TARGET_TELEPORTS[rnd], TARGET_TELEPORTS_OFFSET[rnd]);
+			player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
+		}
+	}
+	
+	/**
+	 * Checks if Venom is Alive or Dead
+	 * @return status
+	 */
+	private int checkStatus()
+	{
+		int checkStatus = ALIVE;
+		if (GlobalVariablesManager.getInstance().isVariableStored("VenomStatus"))
+		{
+			checkStatus = Integer.parseInt(GlobalVariablesManager.getInstance().getStoredVariable("VenomStatus"));
+		}
+		else
+		{
+			GlobalVariablesManager.getInstance().storeVariable("VenomStatus", "0");
+		}
+		return checkStatus;
+	}
+	
+	/**
+	 * Update the Venom status
+	 * @param status the new status. 0 = ALIVE, 1 = DEAD.
+	 */
+	private void updateStatus(int status)
+	{
+		GlobalVariablesManager.getInstance().storeVariable("VenomStatus", Integer.toString(status));
+	}
+	
+	private enum MoveTo
+	{
+		THRONE,
+		PRISON
+	}
+	
+	public static void main(String[] args)
+	{
+		new Venom(Venom.class.getSimpleName(), "ai/individual");
+	}
+}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java b/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java
index 25d99df40a33150b0b452be56a907955f59e8de8..c172c294adaa3f7301270ecd81c7899c22fd75ab 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/teleports/ToIVortex/ToIVortex.java
@@ -33,7 +33,6 @@ public class ToIVortex extends Quest
 	private static final int DIMENSION_VORTEX_1 = 30952;
 	private static final int DIMENSION_VORTEX_2 = 30953;
 	private static final int DIMENSION_VORTEX_3 = 30954;
-	private static final int TELEPORT_CUBIC = 29055;
 	
 	// ITEMS
 	private static final int ADENA = 57;
@@ -243,49 +242,6 @@ public class ToIVortex extends Quest
 		return htmltext;
 	}
 	
-	@Override
-	public String onTalk(L2Npc npc, L2PcInstance player)
-	{
-		String htmltext = "";
-		QuestState st = player.getQuestState(getName());
-		
-		if (st == null)
-			return null;
-		
-		// ToI Vortex exit
-		if (npc.getNpcId() == TELEPORT_CUBIC)
-		{
-			int chance = getRandom(3);
-			int x, y, z;
-			
-			switch (chance)
-			{
-				case 0:
-					x = 108784 + getRandom(100);
-					y = 16000 + getRandom(100);
-					z = -4928;
-					break;
-				
-				case 1:
-					x = 113824 + getRandom(100);
-					y = 10448 + getRandom(100);
-					z = -5164;
-					break;
-				
-				default:
-					x = 115488 + getRandom(100);
-					y = 22096 + getRandom(100);
-					z = -5168;
-					break;
-			}
-			
-			player.teleToLocation(x, y, z);
-			st.exitQuest(true);
-		}
-		
-		return htmltext;
-	}
-	
 	public ToIVortex(int questId, String name, String descr)
 	{
 		super(questId, name, descr);
@@ -302,8 +258,6 @@ public class ToIVortex extends Quest
 		addTalkId(DIMENSION_VORTEX_2);
 		addStartNpc(DIMENSION_VORTEX_3);
 		addTalkId(DIMENSION_VORTEX_3);
-		addStartNpc(TELEPORT_CUBIC);
-		addTalkId(TELEPORT_CUBIC);
 	}
 	
 	public static void main(String[] args)
diff --git a/L2J_DataPack_BETA/dist/sql/game/npc.sql b/L2J_DataPack_BETA/dist/sql/game/npc.sql
index 0845fe092060916a332c6c0ba6ea3856a1c91dab..c34083d78da779cdb37a9bd3382d6ee4ac14ce7b 100644
--- a/L2J_DataPack_BETA/dist/sql/game/npc.sql
+++ b/L2J_DataPack_BETA/dist/sql/game/npc.sql
@@ -6205,7 +6205,7 @@ INSERT INTO `npc` VALUES
 (29052, 29052, "", 0, "", 0, "LineageMonster3.Organ_Dummy", 1, 35, 85, "female", "L2Monster", 40, 3960.034064, 2056.828841, 8.585, 3.03, 40, 43, 30, 21, 20, 20, 0, 0, 1216.23929, 3864.96881, 838.83911, 2826.63526, 253, 4, 333, 0, 0, 0, 10, 1, 0, 1), 
 (29053, 29053, "", 0, "", 0, "LineageMonster3.Follower_Dummy", 1, 58, 85, "female", "L2Monster", 40, 5448.837225, 2036.464199, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 1456.32495, 383.42192, 994.48116, 280.57152, 253, 4, 333, 0, 0, 0, 10, 1, 0, 1), 
 (29054, 29054, "Benom", 0, "Triol's Leader", 0, "LineageMonster3.benom", 20, 56, 75, "male", "L2RaidBoss", 40, 568382.4, 4071.06, 357, 8.1, 60, 57, 73, 76, 70, 80, 2499951, 1757872, 4510, 2554, 3279, 467.22, 253, 4, 333, 8203, 8203, 0, 79, 220, 0, 1), 
-(29055, 29055, "Teleportation Cubic", 0, "", 0, "LineageNPC.teleport_npc", 40, 80, 70, "etc", "L2Teleporter", 40, 2444.46819, 1345.8, 7.5, 2.7, 40, 43, 30, 21, 20, 20, 0, 0, 688.86373, 295.91597, 470.40463, 216.53847, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
+(29055, 29055, "Teleportation Cubic", 0, "", 0, "LineageNPC.teleport_npc", 40, 80, 70, "etc", "L2Npc", 40, 2444.46819, 1345.8, 7.5, 2.7, 40, 43, 30, 21, 20, 20, 0, 0, 688.86373, 295.91597, 470.40463, 216.53847, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
 (29056, 29056, "Ice Fairy Sirra", 0, "Raid Boss", 0, "LineageMonster3.ice_fairy", 16, 35.6, 60, "female", "L2RaidBoss", 40, 79149.92, 1036.8, 147.557641, 2.4, 60, 57, 73, 76, 70, 80, 1610848, 371722, 1277.93618, 1981.2, 434.60179, 362.44, 253, 4, 333, 0, 0, 0, 30, 190, 0, 1), 
 (29057, 29057, "Sirra's Page", 0, "Raid Fighter", 0, "LineageMonster.sylph_110p", 12, 39.7, 59, "female", "L2Monster", 40, 7721.463, 1007, 57.96894, 2.4, 40, 43, 30, 21, 20, 20, 0, 0, 1181.243, 971.28, 386.9314, 355.36, 253, 1, 333, 0, 0, 0, 60, 190, 0, 1), 
 (29058, 29058, "Sirra's Beholder", 0, "Raid Fighter", 0, "LineageMonster.field_stalker_20_bi", 18, 36, 59, "male", "L2Monster", 40, 3860.731, 1007, 57.96894, 2.4, 40, 43, 30, 21, 20, 20, 0, 0, 1181.241, 971.28, 386.9314, 355.36, 253, 4, 333, 0, 0, 0, 70, 190, 0, 1), 
@@ -9418,7 +9418,7 @@ INSERT INTO `npc` VALUES
 (35503, 35503, "Outer Doorman", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
 (35504, 35504, "Inner Doorman", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
 (35505, 35505, "Inner Doorman", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
-(35506, 35506, "Dungeon Gatekeeper", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2CastleDoormen", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
+(35506, 35506, "Dungeon Gatekeeper", 0, "Rune", 0, "LineageNPC.e_elmore_guard_Mhuman", 8, 23.5, 75, "male", "L2Npc", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
 (35507, 35507, "Blacksmith", 0, "Rune", 0, "LineageNPC.a_smith_MDwarf", 7, 16.5, 75, "male", "L2CastleBlacksmith", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 89, 0, 0, 50, 120, 0, 1), 
 (35508, 35508, "Warehouse Keeper", 0, "Rune", 0, "LineageNPC.a_warehouse_keeper_MDwarf", 8, 17, 75, "male", "L2CastleWarehouse", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
 (35509, 35509, "Frederick", 0, "Chamberlain", 0, "LineageNPC.a_chamberlain_MHuman", 9.5, 22.5, 75, "male", "L2CastleChamberlain", 40, 2676.65854, 1507.8, 8.5, 3, 40, 43, 30, 21, 20, 20, 0, 0, 794.70901, 319.24623, 542.68324, 233.61053, 253, 4, 333, 0, 0, 0, 50, 120, 0, 1), 
diff --git a/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql b/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql
index 02630e3a860498b82f832073034bde7467429fae..355fb2a420ada8229fe6f71534f29941861e6550 100644
--- a/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql
+++ b/L2J_DataPack_BETA/dist/sql/game/npcaidata.sql
@@ -6189,7 +6189,7 @@ INSERT INTO `npcaidata` VALUES
 (29051, 7, 15, 0, 1500, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, "frintessa_clan", 2000, "null", 0, 0, "balanced"), -- Breath of Halisha
 (29052, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "frintessa_clan", 0, "null", 0, 0, "balanced"), --  
 (29053, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "frintessa_clan", 0, "null", 0, 0, "balanced"), --  
-(29054, 7, 15, 0, 1000, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, "null", 0, "null", 0, 0, "fighter"), -- Benom
+(29054, 7, 15, 0, 1000, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, "null", 0, "null", 0, 0, "fighter"), -- Benom
 (29055, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "null", 300, "null", 0, 0, "balanced"), -- Teleportation Cubic
 (29056, 7, 15, 0, 1000, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 500, 0, "ice_clan", 300, "null", 0, 0, "balanced"), -- Ice Fairy Sirra
 (29057, 7, 15, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "ice_clan", 300, "null", 0, 0, "balanced"), -- Sirra's Page