diff --git a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml
index 3bbc97f56886dcfffe2910465edd96d25379b4de..2cf8232042cbb35f5b727fc2836dab07de57d90f 100644
--- a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml
+++ b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml
@@ -155,6 +155,7 @@
 	<!-- ADMIN EFFECTS -->
 	<admin command="admin_invis" accessLevel="7" />
 	<admin command="admin_invisible" accessLevel="7" />
+	<admin command="admin_setinvis" accessLevel="7" />
 	<admin command="admin_vis" accessLevel="7" />
 	<admin command="admin_visible" accessLevel="7" />
 	<admin command="admin_invis_menu" accessLevel="7" />
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEffects.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEffects.java
index 3f84bb4a384a19c50f98c6a2ab1870898bbbae7c..7346f2b62b6f4b33b579f88a12f7640563f1562f 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEffects.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminEffects.java
@@ -62,6 +62,7 @@ public class AdminEffects implements IAdminCommandHandler
 	{
 		"admin_invis",
 		"admin_invisible",
+		"admin_setinvis",
 		"admin_vis",
 		"admin_visible",
 		"admin_invis_menu",
@@ -109,16 +110,16 @@ public class AdminEffects implements IAdminCommandHandler
 		
 		if (command.equals("admin_invis_menu"))
 		{
-			if (!activeChar.getAppearance().getInvisible())
+			if (!activeChar.isInvisible())
 			{
-				activeChar.getAppearance().setInvisible();
+				activeChar.setInvisible(true);
 				activeChar.broadcastUserInfo();
 				activeChar.decayMe();
 				activeChar.spawnMe();
 			}
 			else
 			{
-				activeChar.getAppearance().setVisible();
+				activeChar.setInvisible(false);
 				activeChar.broadcastUserInfo();
 			}
 			RegionBBSManager.getInstance().changeCommunityBoard();
@@ -127,16 +128,26 @@ public class AdminEffects implements IAdminCommandHandler
 		}
 		else if (command.startsWith("admin_invis"))
 		{
-			activeChar.getAppearance().setInvisible();
+			activeChar.setInvisible(false);
 			activeChar.broadcastUserInfo();
 			activeChar.decayMe();
 			activeChar.spawnMe();
 			RegionBBSManager.getInstance().changeCommunityBoard();
 		}
-		
+		else if (command.startsWith("admin_setinvis"))
+		{
+			if ((activeChar.getTarget() == null) || !activeChar.getTarget().isCharacter())
+			{
+				activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
+				return false;
+			}
+			final L2Character target = (L2Character) activeChar.getTarget();
+			target.setInvisible(!target.isInvisible());
+			activeChar.sendMessage("You've made " + target.getName() + " " + (target.isInvisible() ? "invisible" : "visible") + ".");
+		}
 		else if (command.startsWith("admin_vis"))
 		{
-			activeChar.getAppearance().setVisible();
+			activeChar.setInvisible(false);
 			activeChar.broadcastUserInfo();
 			RegionBBSManager.getInstance().changeCommunityBoard();
 		}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Detection.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Detection.java
index 9a8f8fbd244f2c4f0a3b613816708801a3606431..8885ae9822dd5b7485ffa6905786483ad316c946 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Detection.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Detection.java
@@ -56,7 +56,7 @@ public final class Detection extends AbstractEffect
 		final boolean hasClan = player.getClanId() > 0;
 		final boolean hasAlly = player.getAllyId() > 0;
 		
-		if (target.getAppearance().getInvisible())
+		if (target.isInvisible())
 		{
 			if (hasParty && (target.isInParty()) && (player.getParty().getLeaderObjectId() == target.getParty().getLeaderObjectId()))
 			{
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java
index 40df5f1662ff34726787b829a731cc22359b7fb7..3309b4b18f2ea9389460e9954e264b8020ecab17 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java
@@ -45,7 +45,7 @@ public final class Hide extends AbstractEffect
 			L2PcInstance activeChar = info.getEffected().getActingPlayer();
 			if (!activeChar.inObserverMode())
 			{
-				activeChar.getAppearance().setVisible();
+				activeChar.setInvisible(false);
 			}
 		}
 	}
@@ -56,7 +56,7 @@ public final class Hide extends AbstractEffect
 		if (info.getEffected().isPlayer())
 		{
 			L2PcInstance activeChar = info.getEffected().getActingPlayer();
-			activeChar.getAppearance().setInvisible();
+			activeChar.setInvisible(true);
 			
 			if ((activeChar.getAI().getNextIntention() != null) && (activeChar.getAI().getNextIntention().getCtrlIntention() == CtrlIntention.AI_INTENTION_ATTACK))
 			{
@@ -65,18 +65,12 @@ public final class Hide extends AbstractEffect
 			
 			for (L2Character target : activeChar.getKnownList().getKnownCharacters())
 			{
-				try
-				{
-					if (target.getTarget() == activeChar)
-					{
-						target.setTarget(null);
-						target.abortAttack();
-						target.abortCast();
-						target.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
-					}
-				}
-				catch (NullPointerException e)
+				if ((target != null) && (target.getTarget() == activeChar))
 				{
+					target.setTarget(null);
+					target.abortAttack();
+					target.abortCast();
+					target.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
 				}
 			}
 		}
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 761860db67a440766d28fbd9c2efa77cfe5a237d..39812e3fa15bb3907bc75d6171a0e2415cff9547 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
@@ -1301,14 +1301,14 @@ public final class IceQueensCastleNormalBattle extends AbstractNpcAI
 		final List<L2PcInstance> players = new ArrayList<>();
 		for (L2PcInstance player : world.playersInside)
 		{
-			if ((player != null) && !player.isDead() && (player.getInstanceId() == world.getInstanceId()) && !player.getAppearance().getInvisible())
+			if ((player != null) && !player.isDead() && (player.getInstanceId() == world.getInstanceId()) && !player.isInvisible())
 			{
 				players.add(player);
 			}
 		}
 		
 		Collections.shuffle(players);
-		final L2PcInstance target = (players.size() > 0) ? players.get(0) : null;
+		final L2PcInstance target = (!players.isEmpty()) ? players.get(0) : null;
 		if (target != null)
 		{
 			mob.addDamageHate(target, 0, 999);