From 1f703d504c23f929ce4e7eb05b8d8fb509d78f40 Mon Sep 17 00:00:00 2001
From: Rumen Nikiforov <unafraid89@gmail.com>
Date: Tue, 15 Apr 2014 21:44:31 +0000
Subject: [PATCH] BETA: DP-Part for [L6501] 	* Also including new admin
 command !//setinvis which will toggle visibility/invisibility of your target.

---
 .../dist/game/config/adminCommands.xml        |  1 +
 .../admincommandhandlers/AdminEffects.java    | 23 ++++++++++++++-----
 .../handlers/effecthandlers/Detection.java    |  2 +-
 .../scripts/handlers/effecthandlers/Hide.java | 20 ++++++----------
 .../IceQueensCastleNormalBattle.java          |  4 ++--
 5 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/L2J_DataPack_BETA/dist/game/config/adminCommands.xml b/L2J_DataPack_BETA/dist/game/config/adminCommands.xml
index 3bbc97f568..2cf8232042 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 3f84bb4a38..7346f2b62b 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 9a8f8fbd24..8885ae9822 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 40df5f1662..3309b4b18f 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 761860db67..39812e3fa1 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);
-- 
GitLab