Browse Source

BETA: Datapack part for ​[L5439].

Adry_85 13 years ago
parent
commit
e8cbb02593
77 changed files with 302 additions and 496 deletions
  1. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Antharas.java
  2. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java
  3. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Beleth.java
  4. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/HellboundCore.java
  5. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Valakas.java
  6. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java
  7. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBan.java
  8. 3 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java
  9. 1 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Betray.java
  10. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ChameleonRest.java
  11. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CharmOfCourage.java
  12. 3 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ClanGate.java
  13. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ConfuseMob.java
  14. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHeal.java
  15. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealPercent.java
  16. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Disarm.java
  17. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Grow.java
  18. 6 8
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java
  19. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java
  20. 5 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java
  21. 1 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ImmobilePetBuff.java
  22. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/IncreaseCharges.java
  23. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java
  24. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java
  25. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java
  26. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhoenixBless.java
  27. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RandomizeHate.java
  28. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Recovery.java
  29. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Relax.java
  30. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetAntiSummon.java
  31. 6 10
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetMDam.java
  32. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetNoise.java
  33. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Spoil.java
  34. 4 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TargetMe.java
  35. 3 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TransferDamage.java
  36. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Transformation.java
  37. 4 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/BalanceLife.java
  38. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/BallistaBomb.java
  39. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/BeastSkills.java
  40. 11 12
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Blow.java
  41. 3 26
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Cancel.java
  42. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/ChainHeal.java
  43. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Charge.java
  44. 20 16
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java
  45. 7 54
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/CpDam.java
  46. 3 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/CpDamPercent.java
  47. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Craft.java
  48. 1 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/DeluxeKey.java
  49. 15 15
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Disablers.java
  50. 4 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Dummy.java
  51. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Fishing.java
  52. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/FishingSkill.java
  53. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/GetPlayer.java
  54. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/GiveReco.java
  55. 5 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/GiveVitality.java
  56. 8 10
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Heal.java
  57. 4 6
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/HealPercent.java
  58. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/InstantJump.java
  59. 8 7
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/ManaHeal.java
  60. 17 44
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Manadam.java
  61. 29 50
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Mdam.java
  62. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/NornilsPower.java
  63. 17 19
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Pdam.java
  64. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/RefuelAirShip.java
  65. 10 8
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Resurrect.java
  66. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/ShiftTarget.java
  67. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Soul.java
  68. 3 4
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Sow.java
  69. 2 3
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Spoil.java
  70. 5 38
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/StealBuffs.java
  71. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/StrSiegeAssault.java
  72. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/SummonFriend.java
  73. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/TakeCastle.java
  74. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/TakeFort.java
  75. 2 2
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/TransformDispel.java
  76. 4 5
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Trap.java
  77. 1 1
      L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Unlock.java

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Antharas.java

@@ -561,7 +561,7 @@ public class Antharas extends L2AttackableAIScript
 		{
 			for (L2Character characters : _Zone.getCharactersInside())
 			{
-				if (characters instanceof L2PcInstance)
+				if (characters.isPlayer())
 				{
 					characters.sendPacket(mov);
 				}

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Baium.java

@@ -36,7 +36,6 @@ import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.StatsSet;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.instance.L2DecoyInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -470,11 +469,11 @@ public class Baium extends L2AttackableAIScript
 		{
 			for (L2Object obj : objs)
 			{
-				if ((obj instanceof L2Playable) || (obj instanceof L2DecoyInstance))
+				if (obj.isPlayable() || obj instanceof L2DecoyInstance)
 				{
-					if (obj instanceof L2PcInstance)
+					if (obj.isPlayer())
 					{
-						if (((L2PcInstance) obj).getAppearance().getInvisible())
+						if (obj.getActingPlayer().getAppearance().getInvisible())
 						{
 							continue;
 						}
@@ -485,7 +484,7 @@ public class Baium extends L2AttackableAIScript
 						continue;
 					}
 				}
-				if ((obj instanceof L2Playable) || (obj instanceof L2DecoyInstance))
+				if (obj.isPlayable() || obj instanceof L2DecoyInstance)
 				{
 					if (Util.checkIfInRange(9000, npc, obj, true) && !((L2Character) obj).isDead())
 					{

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Beleth.java

@@ -186,7 +186,7 @@ public class Beleth extends L2AttackableAIScript
 						movie = true;
 						for (L2Character npc : _zone.getCharactersInside())
 						{
-							if (npc instanceof L2Npc)
+							if (npc.isNpc())
 							{
 								npc.deleteMe();
 							}
@@ -390,7 +390,7 @@ public class Beleth extends L2AttackableAIScript
 	@Override
 	public String onEnterZone(L2Character character, L2ZoneType zone)
 	{
-		if (((character instanceof L2PcInstance) && (GrandBossManager.getInstance().getBossStatus(29118) == 1)) || (debug && (GrandBossManager.getInstance().getBossStatus(29118) != 2) && (character instanceof L2PcInstance)))
+		if (((character.isPlayer()) && (GrandBossManager.getInstance().getBossStatus(29118) == 1)) || (debug && (GrandBossManager.getInstance().getBossStatus(29118) != 2) && (character.isPlayer())))
 		{
 			startSpawnTask();
 			GrandBossManager.getInstance().setBossStatus(29118, 2);

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/HellboundCore.java

@@ -40,7 +40,7 @@ public class HellboundCore extends Quest
 		{
 			for (L2Character naia : npc.getKnownList().getKnownCharactersInRadius(900))
 			{
-				if ((naia != null) && (naia instanceof L2MonsterInstance) && (((L2MonsterInstance) naia).getNpcId() == NAIA) && !naia.isDead())
+				if (naia != null && naia.isMonster() && ((L2MonsterInstance) naia).getNpcId() == NAIA && !naia.isDead())
 				{
 					naia.setTarget(npc);
 					naia.doSimultaneousCast(BEAM.getSkill());

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/ai/individual/Valakas.java

@@ -30,7 +30,6 @@ import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.StatsSet;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2DecoyInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -1373,7 +1372,7 @@ public class Valakas extends L2AttackableAIScript
 		{
 			for (L2Character cha : objs)
 			{
-				if ((cha instanceof L2PcInstance) || (cha instanceof L2Summon) || (cha instanceof L2DecoyInstance))
+				if (cha.isPlayer() || cha.isSummon() || cha instanceof L2DecoyInstance)
 				{
 					if (Util.checkIfInRange(5000, npc, cha, true) && !cha.isDead() && !cha.isGM())
 					{

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminAdmin.java

@@ -145,9 +145,9 @@ public class AdminAdmin implements IAdminCommandHandler
 		{
 			L2PcInstance target = null;
 			
-			if (activeChar.getTarget() instanceof L2PcInstance)
+			if (activeChar.getTarget().isPlayer())
 			{
-				target = (L2PcInstance) activeChar.getTarget();
+				target = activeChar.getTarget().getActingPlayer();
 				target.setHero(target.isHero() ? false : true);
 			}
 			else

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBan.java

@@ -88,9 +88,9 @@ public class AdminBan implements IAdminCommandHandler
 		}
 		else
 		{
-			if (activeChar.getTarget() != null && activeChar.getTarget() instanceof L2PcInstance)
+			if (activeChar.getTarget() != null && activeChar.getTarget().isPlayer())
 			{
-				targetPlayer = (L2PcInstance)activeChar.getTarget();
+				targetPlayer = activeChar.getTarget().getActingPlayer();
 			}
 		}
 		

+ 3 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java

@@ -137,7 +137,7 @@ public class AdminBuffs implements IAdminCommandHandler
 				
 				for (L2Character knownChar : activeChar.getKnownList().getKnownCharactersInRadius(radius))
 				{
-					if ((knownChar instanceof L2PcInstance) && !(knownChar.equals(activeChar)))
+					if (knownChar.isPlayer() && !knownChar.equals(activeChar))
 						knownChar.stopAllEffects();
 				}
 				
@@ -174,9 +174,9 @@ public class AdminBuffs implements IAdminCommandHandler
 					return false;
 				}
 			}
-			else if (activeChar.getTarget() instanceof L2PcInstance)
+			else if (activeChar.getTarget().isPlayer())
 			{
-				player = (L2PcInstance) activeChar.getTarget();
+				player = activeChar.getTarget().getActingPlayer();
 			}
 			else
 			{

+ 1 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Betray.java

@@ -16,7 +16,6 @@ package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.model.CharEffectList;
-import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
@@ -42,8 +41,7 @@ public class Betray extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffector() instanceof L2PcInstance &&
-				getEffected() instanceof L2Summon)
+		if (getEffector().isPlayer() && getEffected().isSummon())
 		{
 			L2PcInstance targetOwner = getEffected().getActingPlayer();
 			getEffected().getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, targetOwner);

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ChameleonRest.java

@@ -16,7 +16,6 @@ package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.model.CharEffectList;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -40,9 +39,9 @@ public class ChameleonRest extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			((L2PcInstance) getEffected()).sitDown(false);
+			getEffected().getActingPlayer().sitDown(false);
 		}
 		else
 			getEffected().getAI().setIntention(CtrlIntention.AI_INTENTION_REST);
@@ -65,9 +64,9 @@ public class ChameleonRest extends L2Effect
 		if (getSkill().getSkillType() != L2SkillType.CONT)
 			return false;
 		
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			if (!((L2PcInstance) getEffected()).isSitting())
+			if (!getEffected().getActingPlayer().isSitting())
 				return false;
 		}
 		

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CharmOfCourage.java

@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.CharEffectList;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -41,9 +40,9 @@ public class CharmOfCourage extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			getEffected().broadcastPacket(new EtcStatusUpdate((L2PcInstance) getEffected()));
+			getEffected().broadcastPacket(new EtcStatusUpdate(getEffected().getActingPlayer()));
 			return true;
 		}
 		return false;
@@ -52,9 +51,9 @@ public class CharmOfCourage extends L2Effect
 	@Override
 	public void onExit()
 	{
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			getEffected().broadcastPacket(new EtcStatusUpdate((L2PcInstance) getEffected()));
+			getEffected().broadcastPacket(new EtcStatusUpdate(getEffected().getActingPlayer()));
 		}
 	}
 	

+ 3 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ClanGate.java

@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.L2Clan;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.AbnormalEffect;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
@@ -38,13 +37,13 @@ public class ClanGate extends L2Effect
 	public boolean onStart()
 	{
 		getEffected().startAbnormalEffect(AbnormalEffect.MAGIC_CIRCLE);
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			L2Clan clan = ((L2PcInstance) getEffected()).getClan();
+			L2Clan clan = getEffected().getActingPlayer().getClan();
 			if (clan != null)
 			{
 				SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.COURT_MAGICIAN_CREATED_PORTAL);
-				clan.broadcastToOtherOnlineMembers(msg, ((L2PcInstance) getEffected()));
+				clan.broadcastToOtherOnlineMembers(msg, getEffected().getActingPlayer());
 			}
 		}
 		

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ConfuseMob.java

@@ -22,7 +22,6 @@ import javolution.util.FastList;
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.model.CharEffectList;
 import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
@@ -73,7 +72,7 @@ public class ConfuseMob extends L2Effect
 		{
 			for (L2Object obj : objs)
 			{
-				if ((obj instanceof L2Attackable) && (obj != getEffected()))
+				if (obj.isL2Attackable() && obj != getEffected())
 					targetList.add((L2Character) obj);
 			}
 		}

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHeal.java

@@ -4,7 +4,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -34,7 +33,7 @@ public class CpHeal extends L2Effect
 	public boolean onStart()
 	{
 		L2Character target = getEffected();
-		if (target == null || target.isDead() || target instanceof L2DoorInstance)
+		if (target == null || target.isDead() || target.isDoor())
 			return false;
 		StatusUpdate su = new StatusUpdate(target);
 		

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CpHealPercent.java

@@ -4,7 +4,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -34,7 +33,7 @@ public class CpHealPercent extends L2Effect
 	public boolean onStart()
 	{
 		L2Character target = getEffected();
-		if (target == null || target.isDead() || target instanceof L2DoorInstance)
+		if (target == null || target.isDead() || target.isDoor())
 			return false;
 		StatusUpdate su = new StatusUpdate(target);
 		double amount = 0;

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Disarm.java

@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.CharEffectList;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -40,10 +39,10 @@ public class Disarm extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (!(getEffected() instanceof L2PcInstance))
+		if (!getEffected().isPlayer())
 			return false;
 		
-		((L2PcInstance) getEffected()).disarmWeapons();
+		getEffected().getActingPlayer().disarmWeapons();
 		return true;
 		
 	}

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Grow.java

@@ -37,7 +37,7 @@ public class Grow extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffected() instanceof L2Npc)
+		if (getEffected().isNpc())
 		{
 			L2Npc npc = (L2Npc) getEffected();
 			//TODO: Uncomment line when fix for mobs falling underground is found
@@ -59,7 +59,7 @@ public class Grow extends L2Effect
 	@Override
 	public void onExit()
 	{
-		if (getEffected() instanceof L2Npc)
+		if (getEffected().isNpc())
 		{
 			L2Npc npc = (L2Npc) getEffected();
 			//TODO: Uncomment line when fix for mobs falling underground is found

+ 6 - 8
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Heal.java

@@ -17,8 +17,6 @@ package handlers.effecthandlers;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -52,7 +50,7 @@ public class Heal extends L2Effect
 	{
 		L2Character target = getEffected();
 		L2Character activeChar = getEffector();
-		if (target == null || target.isDead() || target instanceof L2DoorInstance)
+		if (target == null || target.isDead() || target.isDoor())
 			return false;
 		
 		double amount = calc();
@@ -62,7 +60,7 @@ public class Heal extends L2Effect
 		
 		if (weaponInst != null && weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE)
 		{
-			if (activeChar instanceof L2PcInstance && ((L2PcInstance) activeChar).isMageClass())
+			if (activeChar.isPlayer() && activeChar.getActingPlayer().isMageClass())
 			{
 				staticShotBonus = getSkill().getMpConsume(); // static bonus for spiritshots
 				
@@ -97,7 +95,7 @@ public class Heal extends L2Effect
 			weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
 		}
 		// If there is no weapon equipped, check for an active summon.
-		else if (activeChar instanceof L2Summon && ((L2Summon) activeChar).getChargedSpiritShot() != L2ItemInstance.CHARGED_NONE)
+		else if (activeChar.isSummon() && ((L2Summon) activeChar).getChargedSpiritShot() != L2ItemInstance.CHARGED_NONE)
 		{
 			staticShotBonus = getSkill().getMpConsume(); // static bonus for spiritshots
 			
@@ -111,7 +109,7 @@ public class Heal extends L2Effect
 			
 			((L2Summon) activeChar).setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
 		}
-		else if (activeChar instanceof L2Npc && ((L2Npc) activeChar)._spiritshotcharged)
+		else if (activeChar.isNpc() && ((L2Npc) activeChar)._spiritshotcharged)
 		{
 			staticShotBonus = 2.4 * getSkill().getMpConsume(); // always blessed spiritshots
 			mAtkMul = 4;
@@ -145,7 +143,7 @@ public class Heal extends L2Effect
 		su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
 		target.sendPacket(su);
 		
-		if (target instanceof L2PcInstance)
+		if (target.isPlayer())
 		{
 			if (getSkill().getId() == 4051)
 			{
@@ -154,7 +152,7 @@ public class Heal extends L2Effect
 			}
 			else
 			{
-				if (activeChar instanceof L2PcInstance && activeChar != target)
+				if (activeChar.isPlayer() && activeChar != target)
 				{
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_RESTORED_BY_C1);
 					sm.addString(activeChar.getName());

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/HealPercent.java

@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -45,7 +44,7 @@ public class HealPercent extends L2Effect
 	public boolean onStart()
 	{
 		L2Character target = getEffected();
-		if (target == null || target.isDead() || target instanceof L2DoorInstance)
+		if (target == null || target.isDead() || target.isDoor())
 			return false;
 		
 		StatusUpdate su = new StatusUpdate(target);

+ 5 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Hide.java

@@ -49,9 +49,9 @@ public class Hide extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			L2PcInstance activeChar = ((L2PcInstance) getEffected());
+			L2PcInstance activeChar = getEffected().getActingPlayer();
 			activeChar.getAppearance().setInvisible();
 			activeChar.startAbnormalEffect(AbnormalEffect.STEALTH);
 			
@@ -72,7 +72,7 @@ public class Hide extends L2Effect
 						target.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
 					}
 					
-					if (target instanceof L2PcInstance)
+					if (target.isPlayer())
 						target.sendPacket(del);
 				}
 				catch (NullPointerException e)
@@ -86,9 +86,9 @@ public class Hide extends L2Effect
 	@Override
 	public void onExit()
 	{
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			L2PcInstance activeChar = ((L2PcInstance) getEffected());
+			L2PcInstance activeChar = getEffected().getActingPlayer();
 			if (!activeChar.inObserverMode())
 				activeChar.getAppearance().setVisible();
 			activeChar.stopAbnormalEffect(AbnormalEffect.STEALTH);

+ 1 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ImmobilePetBuff.java

@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -44,9 +43,7 @@ public class ImmobilePetBuff extends L2Effect
 	{
 		_pet = null;
 		
-		if (getEffected() instanceof L2Summon
-				&& getEffector() instanceof L2PcInstance
-				&& ((L2Summon) getEffected()).getOwner() == getEffector())
+		if (getEffected().isSummon() && getEffector().isPlayer() && ((L2Summon) getEffected()).getOwner() == getEffector())
 		{
 			_pet = (L2Summon) getEffected();
 			_pet.setIsImmobilized(true);

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/IncreaseCharges.java

@@ -14,7 +14,6 @@
  */
 package handlers.effecthandlers;
 
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -44,10 +43,10 @@ public class IncreaseCharges extends L2Effect
 		if (getEffected() == null)
 			return false;
 		
-		if (!(getEffected() instanceof L2PcInstance))
+		if (!getEffected().isPlayer())
 			return false;
 		
-		((L2PcInstance)getEffected()).increaseCharges((int)calc(), getCount());
+		getEffected().getActingPlayer().increaseCharges((int)calc(), getCount());
 		return true;
 	}
 	

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHeal.java

@@ -4,7 +4,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -35,7 +34,7 @@ public class ManaHeal extends L2Effect
 	public boolean onStart()
 	{
 		L2Character target = getEffected();
-		if (target == null || target.isDead() || target instanceof L2DoorInstance)
+		if (target == null || target.isDead() || target.isDoor())
 			return false;
 	
 		StatusUpdate su = new StatusUpdate(target);

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealByLevel.java

@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -46,7 +45,7 @@ public class ManaHealByLevel extends L2Effect
 	public boolean onStart()
 	{
 		L2Character target = getEffected();
-		if (target == null || target.isDead() || target instanceof L2DoorInstance)
+		if (target == null || target.isDead() || target.isDoor())
 			return false;
 	
 		StatusUpdate su = new StatusUpdate(target);

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/ManaHealPercent.java

@@ -4,7 +4,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -34,7 +33,7 @@ public class ManaHealPercent extends L2Effect
 	public boolean onStart()
 	{
 		L2Character target = getEffected();
-		if (target == null || target.isDead() || target instanceof L2DoorInstance)
+		if (target == null || target.isDead() || target.isDoor())
 			return false;
 		StatusUpdate su = new StatusUpdate(target);
 		double amount = 0;

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/PhoenixBless.java

@@ -46,7 +46,7 @@ public class PhoenixBless extends L2Effect
 	@Override
 	public void onExit()
 	{
-		if (getEffected() instanceof L2Playable)
+		if (getEffected().isPlayable())
 			((L2Playable) getEffected()).stopPhoenixBlessing(this);
 	}
 	

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/RandomizeHate.java

@@ -47,7 +47,7 @@ public class RandomizeHate extends L2Effect
 			return false;
 		
 		// Effect is for mobs only.
-		if (!(getEffected() instanceof L2Attackable))
+		if (!getEffected().isL2Attackable())
 			return false;
 		
 		L2Attackable effectedMob = (L2Attackable) getEffected();
@@ -62,7 +62,7 @@ public class RandomizeHate extends L2Effect
 			if (cha != null && (cha != effectedMob) && (cha != getEffector()))
 			{
 				// Aggro cannot be transfered to a mob of the same faction.
-				if (cha instanceof L2Attackable && ((L2Attackable) cha).getFactionId() != null && ((L2Attackable) cha).getFactionId().equals(effectedMob.getFactionId()))
+				if (cha.isL2Attackable() && ((L2Attackable) cha).getFactionId() != null && ((L2Attackable) cha).getFactionId().equals(effectedMob.getFactionId()))
 					continue;
 				
 				targetList.add(cha);

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Recovery.java

@@ -14,7 +14,6 @@
  */
 package handlers.effecthandlers;
 
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -39,9 +38,9 @@ public class Recovery extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			((L2PcInstance) getEffected()).reduceDeathPenaltyBuffLevel();
+			getEffected().getActingPlayer().reduceDeathPenaltyBuffLevel();
 			return true;
 		}
 		return false;

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Relax.java

@@ -16,7 +16,6 @@ package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.model.CharEffectList;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -39,9 +38,9 @@ public class Relax extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			((L2PcInstance) getEffected()).sitDown(false);
+			getEffected().getActingPlayer().sitDown(false);
 		}
 		else
 			getEffected().getAI().setIntention(CtrlIntention.AI_INTENTION_REST);
@@ -60,9 +59,9 @@ public class Relax extends L2Effect
 		if (getEffected().isDead())
 			return false;
 		
-		if (getEffected() instanceof L2PcInstance)
+		if (getEffected().isPlayer())
 		{
-			if (!((L2PcInstance) getEffected()).isSitting())
+			if (!getEffected().getActingPlayer().isSitting())
 				return false;
 		}
 		

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetAntiSummon.java

@@ -16,7 +16,6 @@ package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.ai.CtrlEvent;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2EffectPointInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
@@ -58,22 +57,22 @@ public class SignetAntiSummon extends L2Effect
 			return true; // do nothing first time
 		int mpConsume = getSkill().getMpConsume();
 		
-		L2PcInstance caster = (L2PcInstance) getEffector();
+		L2PcInstance caster = getEffector().getActingPlayer();
 		
 		for (L2Character cha : _actor.getKnownList().getKnownCharactersInRadius(getSkill().getSkillRadius()))
 		{
 			if (cha == null)
 				continue;
 			
-			if (cha instanceof L2Playable)
+			if (cha.isPlayable())
 			{
 				if (caster.canAttackCharacter(cha))
 				{
 					L2PcInstance owner = null;
-					if (cha instanceof L2Summon)
+					if (cha.isSummon())
 						owner = ((L2Summon) cha).getOwner();
 					else
-						owner = (L2PcInstance) cha;
+						owner = cha.getActingPlayer();
 					
 					if (owner != null && owner.getPet() != null)
 					{

+ 6 - 10
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetMDam.java

@@ -23,10 +23,7 @@ import javolution.util.FastList;
 import com.l2jserver.gameserver.ai.CtrlEvent;
 import com.l2jserver.gameserver.datatables.NpcTable;
 import com.l2jserver.gameserver.idfactory.IdFactory;
-import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2EffectPointInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
@@ -75,10 +72,9 @@ public class SignetMDam extends L2Effect
 		int y = getEffector().getY();
 		int z = getEffector().getZ();
 		
-		if (getEffector() instanceof L2PcInstance
-				&& getSkill().getTargetType() == L2TargetType.TARGET_GROUND)
+		if (getEffector().isPlayer() && getSkill().getTargetType() == L2TargetType.TARGET_GROUND)
 		{
-			Point3D wordPosition = ((L2PcInstance) getEffector()).getCurrentSkillWorldPosition();
+			Point3D wordPosition = getEffector().getActingPlayer().getCurrentSkillWorldPosition();
 			
 			if (wordPosition != null)
 			{
@@ -102,7 +98,7 @@ public class SignetMDam extends L2Effect
 			return true; // do nothing first 2 times
 		int mpConsume = getSkill().getMpConsume();
 		
-		L2PcInstance caster = (L2PcInstance) getEffector();
+		L2PcInstance caster = getEffector().getActingPlayer();
 		
 		boolean ss = false;
 		boolean bss = false;
@@ -130,7 +126,7 @@ public class SignetMDam extends L2Effect
 			if (cha == null || cha == caster)
 				continue;
 			
-			if (cha instanceof L2Attackable || cha instanceof L2Playable)
+			if (cha.isL2Attackable() || cha.isPlayable())
 			{
 				if (cha.isAlikeDead())
 					continue;
@@ -142,7 +138,7 @@ public class SignetMDam extends L2Effect
 				}
 				
 				caster.reduceCurrentMp(mpConsume);
-				if (cha instanceof L2Playable)
+				if (cha.isPlayable())
 				{
 					if (caster.canAttackCharacter(cha))
 					{
@@ -164,7 +160,7 @@ public class SignetMDam extends L2Effect
 				byte shld = Formulas.calcShldUse(caster, target, getSkill());
 				int mdam = (int) Formulas.calcMagicDam(caster, target, getSkill(), shld, ss, bss, mcrit);
 				
-				if (target instanceof L2Summon)
+				if (target.isSummon())
 					target.broadcastStatusUpdate();
 				
 				if (mdam > 0)

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/SignetNoise.java

@@ -54,7 +54,7 @@ public class SignetNoise extends L2Effect
 		if (getCount() == getTotalCount() - 1)
 			return true; // do nothing first time
 		
-		L2PcInstance caster = (L2PcInstance) getEffector();
+		L2PcInstance caster = getEffector().getActingPlayer();
 		
 		for (L2Character target : _actor.getKnownList().getKnownCharactersInRadius(getSkill().getSkillRadius()))
 		{

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Spoil.java

@@ -16,7 +16,6 @@ package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.ai.CtrlEvent;
 import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -46,10 +45,10 @@ public class Spoil extends L2Effect
 	public boolean onStart()
 	{
 		
-		if (!(getEffector() instanceof L2PcInstance))
+		if (!getEffector().isPlayer())
 			return false;
 		
-		if (!(getEffected() instanceof L2MonsterInstance))
+		if (!getEffected().isMonster())
 			return false;
 		
 		L2MonsterInstance target = (L2MonsterInstance) getEffected();

+ 4 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TargetMe.java

@@ -14,9 +14,7 @@
  */
 package handlers.effecthandlers;
 
-import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeSummonInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
@@ -43,7 +41,7 @@ public class TargetMe extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (getEffected() instanceof L2Playable)
+		if (getEffected().isPlayable())
 		{
 			if (getEffected() instanceof L2SiegeSummonInstance)
 				return false;
@@ -52,13 +50,13 @@ public class TargetMe extends L2Effect
 			{
 				// Target is different
 				getEffected().setTarget(getEffector());
-				if (getEffected() instanceof L2PcInstance)
+				if (getEffected().isPlayer())
 					getEffected().sendPacket(new MyTargetSelected(getEffector().getObjectId(), 0));
 			}
 			((L2Playable)getEffected()).setLockedTarget(getEffector());
 			return true;
 		}
-		else if (getEffected() instanceof L2Attackable && !getEffected().isRaid())
+		else if (getEffected().isL2Attackable() && !getEffected().isRaid())
 			return true;
 		
 		return false;
@@ -67,7 +65,7 @@ public class TargetMe extends L2Effect
 	@Override
 	public void onExit()
 	{
-		if (getEffected() instanceof L2Playable)
+		if (getEffected().isPlayable())
 			((L2Playable)getEffected()).setLockedTarget(null);
 	}
 	

+ 3 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/TransferDamage.java

@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.EffectTemplate;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -45,15 +44,15 @@ public class TransferDamage extends L2Effect
    @Override
    public boolean onStart()
    {
-      if (getEffected() instanceof L2Playable && getEffector() instanceof L2PcInstance)
-    	  ((L2Playable) getEffected()).setTransferDamageTo((L2PcInstance) getEffector());
+      if (getEffected().isPlayable() && getEffector().isPlayer())
+    	  ((L2Playable) getEffected()).setTransferDamageTo(getEffector().getActingPlayer());
       return true;
    }
    
    @Override
    public void onExit()
    {
-      if (getEffected() instanceof L2Playable && getEffector() instanceof L2PcInstance)
+      if (getEffected().isPlayable() && getEffector().isPlayer())
          ((L2Playable) getEffected()).setTransferDamageTo(null);
    }
    

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Transformation.java

@@ -48,12 +48,12 @@ public class Transformation extends L2Effect
 	@Override
 	public boolean onStart()
 	{
-		if (!(getEffected() instanceof L2PcInstance))
+		if (!getEffected().isPlayer())
 		{
 			return false;
 		}
 		
-		L2PcInstance trg = (L2PcInstance) getEffected();
+		L2PcInstance trg = getEffected().getActingPlayer();
 		if (trg == null)
 		{
 			return false;

+ 4 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/BalanceLife.java

@@ -45,8 +45,8 @@ public class BalanceLife implements ISkillHandler
 			handler.useSkill(activeChar, skill, targets);
 		
 		L2PcInstance player = null;
-		if (activeChar instanceof L2PcInstance)
-			player = (L2PcInstance) activeChar;
+		if (activeChar.isPlayer())
+			player = activeChar.getActingPlayer();
 		
 		double fullHP = 0;
 		double currentHPs = 0;
@@ -60,7 +60,7 @@ public class BalanceLife implements ISkillHandler
 			// Player holding a cursed weapon can't be healed and can't heal
 			if (target != activeChar)
 			{
-				if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquipped())
+				if (target.isPlayer() && target.getActingPlayer().isCursedWeaponEquipped())
 					continue;
 				else if (player != null && player.isCursedWeaponEquipped())
 					continue;
@@ -80,7 +80,7 @@ public class BalanceLife implements ISkillHandler
 			// Player holding a cursed weapon can't be healed and can't heal
 			if (target != activeChar)
 			{
-				if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquipped())
+				if (target.isPlayer() && target.getActingPlayer().isCursedWeaponEquipped())
 					continue;
 				else if (player != null && player.isCursedWeaponEquipped())
 					continue;

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/BallistaBomb.java

@@ -18,7 +18,6 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2FortBallistaInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.util.Rnd;
@@ -33,7 +32,7 @@ public class BallistaBomb implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
 		L2Object[] targetList = skill.getTargetList(activeChar);

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/BeastSkills.java

@@ -40,7 +40,7 @@ public class BeastSkills implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
 		L2SkillType type = skill.getSkillType();

+ 11 - 12
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Blow.java

@@ -22,7 +22,6 @@ import com.l2jserver.Config;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
@@ -102,9 +101,9 @@ public class Blow implements ISkillHandler
 				byte shld = Formulas.calcShldUse(activeChar, target, skill);
 				
 				double damage = skill.isStaticDamage() ? skill.getPower() : (int) Formulas.calcBlowDamage(activeChar, target, skill, shld, soul);
-				if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar instanceof L2PcInstance)
+				if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar.isPlayer())
 				{
-					switch (((L2PcInstance) activeChar).getSouls())
+					switch (activeChar.getActingPlayer().getSouls())
 					{
 						case 0:
 							break;
@@ -134,7 +133,7 @@ public class Blow implements ISkillHandler
 					weapon.setChargedSoulshot(L2ItemInstance.CHARGED_NONE);
 				
 				if (Config.LOG_GAME_DAMAGE
-						&& activeChar instanceof L2Playable
+						&& activeChar.isPlayable()
 						&& damage > Config.LOG_GAME_DAMAGE_THRESHOLD)
 				{
 					LogRecord record = new LogRecord(Level.INFO, "");
@@ -148,13 +147,13 @@ public class Blow implements ISkillHandler
 				// vengeance reflected damage
 				if ((reflect & Formulas.SKILL_REFLECT_VENGEANCE) != 0)
 				{
-					if (target instanceof L2PcInstance)
+					if (target.isPlayer())
 					{
 						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.COUNTERED_C1_ATTACK);
 						sm.addCharName(activeChar);
 						target.sendPacket(sm);
 					}
-					if (activeChar instanceof L2PcInstance)
+					if (activeChar.isPlayer())
 					{
 						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_PERFORMING_COUNTERATTACK);
 						sm.addCharName(target);
@@ -172,9 +171,9 @@ public class Blow implements ISkillHandler
 					target.breakCast();
 				}
 
-				if(activeChar instanceof L2PcInstance)
+				if(activeChar.isPlayer())
 				{
-					L2PcInstance activePlayer = (L2PcInstance) activeChar;
+					L2PcInstance activePlayer = activeChar.getActingPlayer();
 					
 					activePlayer.sendDamageMessage(target, (int)damage, false, true, false);
 				}
@@ -183,17 +182,17 @@ public class Blow implements ISkillHandler
 			// Sending system messages
 			if (skillIsEvaded)
 			{
-				if (activeChar instanceof L2PcInstance)
+				if (activeChar.isPlayer())
 				{
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_DODGES_ATTACK);
 					sm.addString(target.getName());
-					((L2PcInstance) activeChar).sendPacket(sm);
+					activeChar.getActingPlayer().sendPacket(sm);
 				}
-				if (target instanceof L2PcInstance)
+				if (target.isPlayer())
 				{
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.AVOIDED_C1_ATTACK);
 					sm.addString(activeChar.getName());
-					((L2PcInstance) target).sendPacket(sm);
+					target.getActingPlayer().sendPacket(sm);
 				}
 			}
 			

+ 3 - 26
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Cancel.java

@@ -19,9 +19,7 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.effects.L2Effect;
-import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.model.stats.Formulas;
@@ -42,30 +40,9 @@ public class Cancel implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		final L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
-		if (weaponInst != null)
-		{
-			if (skill.isMagic())
-			{
-				if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-					weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-				else if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-					weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-			}
-		}
-		else if (activeChar instanceof L2Summon)
-		{
-			final L2Summon activeSummon = (L2Summon) activeChar;
-			
-			if (skill.isMagic())
-			{
-				if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-					activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-				else if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-					activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-			}
-		}
-		else if (activeChar instanceof L2Npc)
+		activeChar.ssChecker();
+		
+		if (activeChar.isNpc())
 		{
 			((L2Npc)activeChar)._soulshotcharged = false;
 			((L2Npc)activeChar)._spiritshotcharged = false;

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/ChainHeal.java

@@ -24,7 +24,6 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.handler.SkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -67,7 +66,7 @@ public class ChainHeal implements ISkillHandler
 			// Cursed weapon owner can't heal or be healed
 			if (character != activeChar)
 			{
-				if (character instanceof L2PcInstance && ((L2PcInstance) character).isCursedWeaponEquipped())
+				if (character.isPlayer() && character.getActingPlayer().isCursedWeaponEquipped())
 					continue;
 			}
 			

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Charge.java

@@ -19,7 +19,6 @@ import java.util.logging.Logger;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
@@ -40,9 +39,9 @@ public class Charge implements ISkillHandler
 		
 		for (L2Object target: targets)
 		{
-			if (!(target instanceof L2PcInstance))
+			if (!target.isPlayer())
 				continue;
-			skill.getEffects(activeChar, (L2PcInstance) target);
+			skill.getEffects(activeChar, target.getActingPlayer());
 		}
 		
 		// self Effect :]

+ 20 - 16
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Continuous.java

@@ -20,14 +20,11 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.instancemanager.DuelManager;
 import com.l2jserver.gameserver.model.L2Object;
-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.L2Playable;
 import com.l2jserver.gameserver.model.actor.L2Summon;
 import com.l2jserver.gameserver.model.actor.instance.L2ClanHallManagerInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
@@ -65,8 +62,8 @@ public class Continuous implements ISkillHandler
 		boolean acted = true;
 		
 		L2PcInstance player = null;
-		if (activeChar instanceof L2PcInstance)
-			player = (L2PcInstance) activeChar;
+		if (activeChar.isPlayer())
+			player = activeChar.getActingPlayer();
 		
 		if (skill.getEffectId() != 0)
 		{
@@ -83,6 +80,8 @@ public class Continuous implements ISkillHandler
 			boolean bss = false;
 			byte shld = 0;
 			
+			L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
+			
 			if (Formulas.calcSkillReflect(target, skill) == Formulas.SKILL_REFLECT_SUCCEED)
 				target = activeChar;
 			
@@ -91,9 +90,9 @@ public class Continuous implements ISkillHandler
 			{
 				if (target != activeChar)
 				{
-					if (target instanceof L2PcInstance)
+					if (target.isPlayer())
 					{
-						L2PcInstance trg = (L2PcInstance)target;
+						L2PcInstance trg = target.getActingPlayer();
 						if(trg.isCursedWeaponEquipped())
 							continue;
 						// Avoiding block checker players get buffed from outside
@@ -115,9 +114,14 @@ public class Continuous implements ISkillHandler
 					break;
 			}
 			
+			if (skill.getSkillType() == L2SkillType.BUFF)
+			{
+				
+				activeChar.ssChecker();
+			}
+			
 			if (skill.isOffensive() || skill.isDebuff())
 			{
-				L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
 				if (weaponInst != null)
 				{
 					if (skill.isMagic())
@@ -142,7 +146,7 @@ public class Continuous implements ISkillHandler
 							weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_NONE);
 					}
 				}
-				else if (activeChar instanceof L2Summon)
+				else if (activeChar.isSummon())
 				{
 					L2Summon activeSummon = (L2Summon) activeChar;
 					if (skill.isMagic())
@@ -164,7 +168,7 @@ public class Continuous implements ISkillHandler
 						activeSummon.setChargedSoulShot(L2ItemInstance.CHARGED_NONE);
 					}
 				}
-				else if (activeChar instanceof L2Npc)
+				else if (activeChar.isNpc())
 				{
 					ss = ((L2Npc) activeChar)._soulshotcharged;
 					((L2Npc) activeChar)._soulshotcharged = false;
@@ -200,19 +204,19 @@ public class Continuous implements ISkillHandler
 				// if this is a debuff let the duel manager know about it
 				// so the debuff can be removed after the duel
 				// (player & target must be in the same duel)
-				if (target instanceof L2PcInstance && ((L2PcInstance) target).isInDuel() && (skill.getSkillType() == L2SkillType.DEBUFF || skill.getSkillType() == L2SkillType.BUFF) && player != null
-						&& player.getDuelId() == ((L2PcInstance) target).getDuelId())
+				if (target.isPlayer() && target.getActingPlayer().isInDuel() && (skill.getSkillType() == L2SkillType.DEBUFF || skill.getSkillType() == L2SkillType.BUFF) && player != null
+						&& player.getDuelId() == target.getActingPlayer().getDuelId())
 				{
 					DuelManager dm = DuelManager.getInstance();
 					for (L2Effect buff : skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss)))
 						if (buff != null)
-							dm.onBuff(((L2PcInstance) target), buff);
+							dm.onBuff(target.getActingPlayer(), buff);
 				}
 				else
 				{
 					L2Effect[] effects = skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
 					L2Summon summon = target.getPet();
-					if (summon != null && summon != activeChar && summon instanceof L2ServitorInstance && effects.length > 0)
+					if (summon != null && summon != activeChar && summon.isServitor() && effects.length > 0)
 					{
 						if (effects[0].canBeStolen() || skill.isHeroSkill())
 							skill.getEffects(activeChar, target.getPet(), new Env(shld, ss, sps, bss));
@@ -221,9 +225,9 @@ public class Continuous implements ISkillHandler
 				
 				if (skill.getSkillType() == L2SkillType.AGGDEBUFF)
 				{
-					if (target instanceof L2Attackable)
+					if (target.isL2Attackable())
 						target.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, activeChar, (int) skill.getPower());
-					else if (target instanceof L2Playable)
+					else if (target.isPlayable())
 					{
 						if (target.getTarget() == activeChar)
 							target.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, activeChar);

+ 7 - 54
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/CpDam.java

@@ -17,10 +17,6 @@ package handlers.skillhandlers;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.model.stats.Env;
@@ -37,59 +33,13 @@ public class CpDam implements ISkillHandler
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		if (activeChar.isAlikeDead())
-			return;
-		
-		boolean ss = false;
-		boolean sps = false;
-		boolean bss = false;
-		
-		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
-		
-		if (weaponInst != null)
-		{
-			if (skill.isMagic())
-			{
-				if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-				{
-					bss = true;
-				}
-				else if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-				{
-					sps = true;
-				}
-			}
-			else if (weaponInst.getChargedSoulshot() == L2ItemInstance.CHARGED_SOULSHOT)
-			{
-				ss = true;
-			}
-		}
-		// If there is no weapon equipped, check for an active summon.
-		else if (activeChar instanceof L2Summon)
 		{
-			L2Summon activeSummon = (L2Summon) activeChar;
-			
-			if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-			{
-				bss = true;
-				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-			}
-			else if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-			{
-				ss = true;
-				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-			}
-		}
-		else if (activeChar instanceof L2Npc)
-		{
-			ss = ((L2Npc) activeChar)._soulshotcharged;
-			((L2Npc) activeChar)._soulshotcharged = false;
-			bss = ((L2Npc) activeChar)._spiritshotcharged;
-			((L2Npc) activeChar)._spiritshotcharged = false;
+			return;
 		}
 		
-		for (L2Character target: (L2Character[]) targets)
+		for (L2Character target : (L2Character[]) targets)
 		{
-			if (activeChar instanceof L2PcInstance && target instanceof L2PcInstance && ((L2PcInstance)target).isFakeDeath())
+			if (activeChar.isPlayer() && target.isPlayer() && target.getActingPlayer().isFakeDeath())
 			{
 				target.stopFakeDeath(true);
 			}
@@ -108,10 +58,13 @@ public class CpDam implements ISkillHandler
 				target.breakAttack();
 				target.breakCast();
 			}
-			skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
+			skill.getEffects(activeChar, target, new Env(shld, activeChar.isSoulshotCharged(skill), activeChar.isSpiritshotCharged(skill), activeChar.isBlessedSpiritshotCharged(skill)));
 			activeChar.sendDamageMessage(target, damage, false, false, false);
 			target.setCurrentCp(target.getCurrentCp() - damage);
 		}
+		
+		activeChar.ssChecker();
+		
 	}
 	
 	@Override

+ 3 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/CpDamPercent.java

@@ -19,7 +19,6 @@ import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
@@ -64,7 +63,7 @@ public class CpDamPercent implements ISkillHandler
 			}
 		}
 		// If there is no weapon equipped, check for an active summon.
-		else if (activeChar instanceof L2Summon)
+		else if (activeChar.isSummon())
 		{
 			L2Summon activeSummon = (L2Summon) activeChar;
 			
@@ -79,7 +78,7 @@ public class CpDamPercent implements ISkillHandler
 				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
 			}
 		}
-		else if (activeChar instanceof L2Npc)
+		else if (activeChar.isNpc())
 		{
 			ss = ((L2Npc) activeChar)._soulshotcharged;
 			((L2Npc) activeChar)._soulshotcharged = false;
@@ -89,7 +88,7 @@ public class CpDamPercent implements ISkillHandler
 		
 		for (L2Character target: (L2Character[]) targets)
 		{
-			if (activeChar instanceof L2PcInstance && target instanceof L2PcInstance && ((L2PcInstance)target).isFakeDeath())
+			if (activeChar.isPlayer() && target.isPlayer() && target.getActingPlayer().isFakeDeath())
 			{
 				target.stopFakeDeath(true);
 			}

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Craft.java

@@ -37,10 +37,10 @@ public class Craft implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
-		L2PcInstance player = (L2PcInstance) activeChar;
+		L2PcInstance player = activeChar.getActingPlayer();
 		
 		if (player.getPrivateStoreType() != 0)
 		{

+ 1 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/DeluxeKey.java

@@ -19,7 +19,6 @@ import java.util.logging.Logger;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 
@@ -38,7 +37,7 @@ public class DeluxeKey implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
 		L2Object[] targetList = skill.getTargetList(activeChar);

+ 15 - 15
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Disablers.java

@@ -102,7 +102,7 @@ public class Disablers implements ISkillHandler
 				ss = true;
 		}
 		// If there is no weapon equipped, check for an active summon.
-		else if (activeChar instanceof L2Summon)
+		else if (activeChar.isSummon())
 		{
 			L2Summon activeSummon = (L2Summon) activeChar;
 			
@@ -122,7 +122,7 @@ public class Disablers implements ISkillHandler
 			else
 				ss = true;
 		}
-		else if (activeChar instanceof L2Npc)
+		else if (activeChar.isNpc())
 		{
 			ss = ((L2Npc) activeChar)._soulshotcharged;
 			((L2Npc) activeChar)._soulshotcharged = false;
@@ -172,7 +172,7 @@ public class Disablers implements ISkillHandler
 						skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
 					else
 					{
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 							sm.addCharName(target);
@@ -192,7 +192,7 @@ public class Disablers implements ISkillHandler
 						skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
 					else
 					{
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 							sm.addCharName(target);
@@ -221,7 +221,7 @@ public class Disablers implements ISkillHandler
 					}
 					else
 					{
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 							sm.addCharName(target);
@@ -234,7 +234,7 @@ public class Disablers implements ISkillHandler
 				case CONFUSE_MOB_ONLY:
 				{
 					// do nothing if not on mob
-					if (target instanceof L2Attackable)
+					if (target.isL2Attackable())
 					{
 						if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, ss, sps, bss))
 						{
@@ -248,7 +248,7 @@ public class Disablers implements ISkillHandler
 						}
 						else
 						{
-							if (activeChar instanceof L2PcInstance)
+							if (activeChar.isPlayer())
 							{
 								SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 								sm.addCharName(target);
@@ -263,7 +263,7 @@ public class Disablers implements ISkillHandler
 				}
 				case AGGDAMAGE:
 				{
-					if (target instanceof L2Attackable)
+					if (target.isL2Attackable())
 						target.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, activeChar, (int) ((150 * skill.getPower()) / (target.getLevel() + 7)));
 					// TODO [Nemesiss] should this have 100% chance?
 					skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
@@ -272,7 +272,7 @@ public class Disablers implements ISkillHandler
 				case AGGREDUCE:
 				{
 					// these skills needs to be rechecked
-					if (target instanceof L2Attackable)
+					if (target.isL2Attackable())
 					{
 						skill.getEffects(activeChar, target, new Env(shld, ss, sps, bss));
 						
@@ -291,7 +291,7 @@ public class Disablers implements ISkillHandler
 					// these skills needs to be rechecked
 					if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, ss, sps, bss))
 					{
-						if (target instanceof L2Attackable)
+						if (target.isL2Attackable())
 						{
 							L2Attackable targ = (L2Attackable) target;
 							targ.stopHating(activeChar);
@@ -307,7 +307,7 @@ public class Disablers implements ISkillHandler
 					}
 					else
 					{
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 							sm.addCharName(target);
@@ -321,7 +321,7 @@ public class Disablers implements ISkillHandler
 				case AGGREMOVE:
 				{
 					// these skills needs to be rechecked
-					if (target instanceof L2Attackable && !target.isRaid())
+					if (target.isL2Attackable() && !target.isRaid())
 					{
 						if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, ss, sps, bss))
 						{
@@ -335,7 +335,7 @@ public class Disablers implements ISkillHandler
 						}
 						else
 						{
-							if (activeChar instanceof L2PcInstance)
+							if (activeChar.isPlayer())
 							{
 								SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 								sm.addCharName(target);
@@ -380,7 +380,7 @@ public class Disablers implements ISkillHandler
 					}
 					else
 					{
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 							sm.addCharName(target);
@@ -501,7 +501,7 @@ public class Disablers implements ISkillHandler
 					}
 					else
 					{
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
 							sm.addCharName(target);

+ 4 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Dummy.java

@@ -37,9 +37,11 @@ public class Dummy implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
+		activeChar.ssChecker();
+		
 		switch(skill.getId())
 		{
 			case 5852:
@@ -47,7 +49,7 @@ public class Dummy implements ISkillHandler
 			{
 				final L2Object obj = targets[0];
 				if(obj != null)
-					useBlockCheckerSkill((L2PcInstance)activeChar, skill, obj);
+					useBlockCheckerSkill(activeChar.getActingPlayer(), skill, obj);
 				break;
 			}
 			default:

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Fishing.java

@@ -45,7 +45,7 @@ public class Fishing implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
 		final L2PcInstance player = activeChar.getActingPlayer();

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/FishingSkill.java

@@ -40,12 +40,12 @@ public class FishingSkill implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 		{
 			return;
 		}
 		
-		L2PcInstance player = (L2PcInstance) activeChar;
+		L2PcInstance player = activeChar.getActingPlayer();
 		
 		L2Fishing fish = player.getFishCombat();
 		if (fish == null)

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/GetPlayer.java

@@ -40,9 +40,9 @@ public class GetPlayer implements ISkillHandler
 			return;
 		for (L2Object target : targets)
 		{
-			if (target instanceof L2PcInstance)
+			if (target.isPlayer())
 			{
-				L2PcInstance trg = (L2PcInstance) target;
+				L2PcInstance trg = target.getActingPlayer();
 				if (trg.isAlikeDead())
 					continue;
 				//trg.teleToLocation(activeChar.getX(), activeChar.getY(), activeChar.getZ(), true);

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/GiveReco.java

@@ -40,9 +40,9 @@ public class GiveReco implements ISkillHandler
 	{
 		for (L2Object obj : targets)
 		{
-			if (obj instanceof L2PcInstance)
+			if (obj.isPlayer())
 			{
-				L2PcInstance target = (L2PcInstance) obj;
+				L2PcInstance target = obj.getActingPlayer();
 				int power = (int)skill.getPower();
 				int reco  = target.getRecomHave();
 				

+ 5 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/GiveVitality.java

@@ -17,7 +17,6 @@ package handlers.skillhandlers;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -36,18 +35,18 @@ public class GiveVitality implements ISkillHandler
 	{
 		for (L2Object target : targets)
 		{
-			if (target instanceof L2PcInstance)
+			if (target.isPlayer())
 			{
 				if (skill.hasEffects())
 				{
-					((L2PcInstance) target).stopSkillEffects(skill.getId());
-					skill.getEffects(activeChar, ((L2PcInstance)target));
+					target.getActingPlayer().stopSkillEffects(skill.getId());
+					skill.getEffects(activeChar, target.getActingPlayer());
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
 					sm.addSkillName(skill);
 					target.sendPacket(sm);
 				}
-				((L2PcInstance) target).updateVitalityPoints((float)skill.getPower(), false, false);
-				((L2PcInstance) target).sendPacket(new UserInfo((L2PcInstance)target));
+				target.getActingPlayer().updateVitalityPoints((float)skill.getPower(), false, false);
+				target.getActingPlayer().sendPacket(new UserInfo(target.getActingPlayer()));
 			}
 		}
 	}

+ 8 - 10
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Heal.java

@@ -20,8 +20,6 @@ import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeFlagInstance;
 import com.l2jserver.gameserver.model.items.L2Item;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
@@ -63,7 +61,7 @@ public class Heal implements ISkillHandler
 				if (weaponInst != null
 						&& weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE)
 				{
-					if (activeChar instanceof L2PcInstance && ((L2PcInstance)activeChar).isMageClass())
+					if (activeChar.isPlayer() && activeChar.getActingPlayer().isMageClass())
 					{
 						staticShotBonus = skill.getMpConsume(); // static bonus for spiritshots
 						
@@ -98,7 +96,7 @@ public class Heal implements ISkillHandler
 					weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
 				}
 				// If there is no weapon equipped, check for an active summon.
-				else if (activeChar instanceof L2Summon
+				else if (activeChar.isSummon()
 						&& ((L2Summon)activeChar).getChargedSpiritShot() != L2ItemInstance.CHARGED_NONE)
 				{
 					staticShotBonus = skill.getMpConsume(); // static bonus for spiritshots
@@ -113,7 +111,7 @@ public class Heal implements ISkillHandler
 					
 					((L2Summon)activeChar).setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
 				}
-				else if (activeChar instanceof L2Npc && ((L2Npc)activeChar)._spiritshotcharged)
+				else if (activeChar.isNpc() && ((L2Npc)activeChar)._spiritshotcharged)
 				{
 					staticShotBonus = 2.4 * skill.getMpConsume(); // always blessed spiritshots
 					mAtkMul = 4;
@@ -131,15 +129,15 @@ public class Heal implements ISkillHandler
 			if (target == null || target.isDead() || target.isInvul())
 				continue;
 			
-			if (target instanceof L2DoorInstance || target instanceof L2SiegeFlagInstance)
+			if (target.isDoor() || target instanceof L2SiegeFlagInstance)
 				continue;
 			
 			// Player holding a cursed weapon can't be healed and can't heal
 			if (target != activeChar)
 			{
-				if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquipped())
+				if (target.isPlayer() && target.getActingPlayer().isCursedWeaponEquipped())
 					continue;
-				else if (activeChar instanceof L2PcInstance && ((L2PcInstance)activeChar).isCursedWeaponEquipped())
+				else if (activeChar.isPlayer() && activeChar.getActingPlayer().isCursedWeaponEquipped())
 					continue;
 			}
 			
@@ -175,7 +173,7 @@ public class Heal implements ISkillHandler
 			su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
 			target.sendPacket(su);
 			
-			if (target instanceof L2PcInstance)
+			if (target.isPlayer())
 			{
 				if (skill.getId() == 4051)
 				{
@@ -184,7 +182,7 @@ public class Heal implements ISkillHandler
 				}
 				else
 				{
-					if (activeChar instanceof L2PcInstance && activeChar != target)
+					if (activeChar.isPlayer() && activeChar != target)
 					{
 						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HP_RESTORED_BY_C1);
 						sm.addString(activeChar.getName());

+ 4 - 6
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/HealPercent.java

@@ -18,8 +18,6 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.handler.SkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2SiegeFlagInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
@@ -88,19 +86,19 @@ public class HealPercent implements ISkillHandler
 			if ((target == null || target.isDead() || target.isInvul()) && skill.getId() != 1505)
 				continue;
 			
-			targetPlayer = target instanceof L2PcInstance;
+			targetPlayer = target.isPlayer();
 			
 			// Cursed weapon owner can't heal or be healed
 			if (target != activeChar)
 			{
-				if (activeChar instanceof L2PcInstance && ((L2PcInstance)activeChar).isCursedWeaponEquipped())
+				if (activeChar.isPlayer() && activeChar.getActingPlayer().isCursedWeaponEquipped())
 					continue;
-				if (targetPlayer && ((L2PcInstance)target).isCursedWeaponEquipped())
+				if (targetPlayer && target.getActingPlayer().isCursedWeaponEquipped())
 					continue;
 			}
 			
 			// Doors and flags can't be healed in any way
-			if (hp && (target instanceof L2DoorInstance || target instanceof L2SiegeFlagInstance))
+			if (hp && (target.isDoor() || target instanceof L2SiegeFlagInstance))
 				continue;
 			
 			if (targetPlayer)

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/InstantJump.java

@@ -21,7 +21,6 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.model.stats.Formulas;
@@ -51,17 +50,17 @@ public class InstantJump implements ISkillHandler
 		
 		if (Formulas.calcPhysicalSkillEvasion(target, skill))
 		{
-			if (activeChar instanceof L2PcInstance)
+			if (activeChar.isPlayer())
 			{
 				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_DODGES_ATTACK);
 				sm.addString(target.getName());
-				((L2PcInstance) activeChar).sendPacket(sm);
+				activeChar.getActingPlayer().sendPacket(sm);
 			}
-			if (target instanceof L2PcInstance)
+			if (target.isPlayer())
 			{
 				SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.AVOIDED_C1_ATTACK);
 				sm.addString(activeChar.getName());
-				((L2PcInstance) target).sendPacket(sm);
+				target.getActingPlayer().sendPacket(sm);
 			}
 			return;
 		}

+ 8 - 7
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/ManaHeal.java

@@ -17,7 +17,6 @@ package handlers.skillhandlers;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
@@ -39,8 +38,10 @@ public class ManaHeal implements ISkillHandler
 	};
 	
 	@Override
-	public void useSkill(L2Character actChar, L2Skill skill, L2Object[] targets)
+	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
+		activeChar.ssChecker();
+		
 		for (L2Character target: (L2Character[]) targets)
 		{
 			if (target.isInvul())
@@ -99,10 +100,10 @@ public class ManaHeal implements ISkillHandler
 			target.sendPacket(sump);
 			
 			SystemMessage sm;
-			if (actChar instanceof L2PcInstance && actChar != target)
+			if (activeChar.isPlayer() && activeChar != target)
 			{
 				sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_RESTORED_BY_C1);
-				sm.addString(actChar.getName());
+				sm.addString(activeChar.getName());
 				sm.addNumber((int) mp);
 				target.sendPacket(sm);
 			}
@@ -116,7 +117,7 @@ public class ManaHeal implements ISkillHandler
 			if (skill.hasEffects())
 			{
 				target.stopSkillEffects(skill.getId());
-				skill.getEffects(actChar, target);
+				skill.getEffects(activeChar, target);
 				sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
 				sm.addSkillName(skill);
 				target.sendPacket(sm);
@@ -125,14 +126,14 @@ public class ManaHeal implements ISkillHandler
 		
 		if (skill.hasSelfEffects())
 		{
-			L2Effect effect = actChar.getFirstEffect(skill.getId());
+			L2Effect effect = activeChar.getFirstEffect(skill.getId());
 			if (effect != null && effect.isSelfEffect())
 			{
 				//Replace old effect with new one.
 				effect.exit();
 			}
 			// cast self effect if any
-			skill.getEffectsSelf(actChar);
+			skill.getEffectsSelf(activeChar);
 		}
 	}
 	

+ 17 - 44
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Manadam.java

@@ -17,10 +17,7 @@ package handlers.skillhandlers;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
-import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.model.stats.Env;
@@ -44,46 +41,16 @@ public class Manadam implements ISkillHandler
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		if (activeChar.isAlikeDead())
-			return;
-		
-		boolean ss = false;
-		boolean bss = false;
-		
-		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
-		
-		if (weaponInst != null)
-		{
-			if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-			{
-				bss = true;
-				weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-			}
-			else if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-			{
-				ss = true;
-				weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-			}
-		}
-		// If there is no weapon equipped, check for an active summon.
-		else if (activeChar instanceof L2Summon)
 		{
-			L2Summon activeSummon = (L2Summon) activeChar;
-			
-			if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-			{
-				bss = true;
-				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-			}
-			else if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-			{
-				ss = true;
-				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-			}
+			return;
 		}
-		for (L2Character target: (L2Character[]) targets)
+		
+		for (L2Character target : (L2Character[]) targets)
 		{
 			if (Formulas.calcSkillReflect(target, skill) == Formulas.SKILL_REFLECT_SUCCEED)
+			{
 				target = activeChar;
+			}
 			
 			boolean acted = Formulas.calcMagicAffected(activeChar, target, skill);
 			if (target.isInvul() || !acted)
@@ -96,8 +63,10 @@ public class Manadam implements ISkillHandler
 				{
 					byte shld = Formulas.calcShldUse(activeChar, target, skill);
 					target.stopSkillEffects(skill.getId());
-					if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, false, ss, bss))
-						skill.getEffects(activeChar, target, new Env(shld, ss, false, bss));
+					if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, false, activeChar.isSpiritshotCharged(skill), activeChar.isBlessedSpiritshotCharged(skill)))
+					{
+						skill.getEffects(activeChar, target, new Env(shld, activeChar.isSpiritshotCharged(skill), false, activeChar.isBlessedSpiritshotCharged(skill)));
+					}
 					else
 					{
 						SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
@@ -107,7 +76,7 @@ public class Manadam implements ISkillHandler
 					}
 				}
 				
-				double damage = skill.isStaticDamage() ? skill.getPower() : Formulas.calcManaDam(activeChar, target, skill, ss, bss);
+				double damage = skill.isStaticDamage() ? skill.getPower() : Formulas.calcManaDam(activeChar, target, skill, activeChar.isSpiritshotCharged(skill), activeChar.isBlessedSpiritshotCharged(skill));
 				
 				if (!skill.isStaticDamage() && Formulas.calcMCrit(activeChar.getMCriticalHit(target, skill)))
 				{
@@ -118,9 +87,11 @@ public class Manadam implements ISkillHandler
 				double mp = (damage > target.getCurrentMp() ? target.getCurrentMp() : damage);
 				target.reduceCurrentMp(mp);
 				if (damage > 0)
+				{
 					target.stopEffectsOnDamage(true);
+				}
 				
-				if (target instanceof L2PcInstance)
+				if (target.isPlayer())
 				{
 					StatusUpdate sump = new StatusUpdate(target);
 					sump.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
@@ -133,7 +104,7 @@ public class Manadam implements ISkillHandler
 					target.sendPacket(sm);
 				}
 				
-				if (activeChar instanceof L2PcInstance)
+				if (activeChar.isPlayer())
 				{
 					SystemMessage sm2 = SystemMessage.getSystemMessage(SystemMessageId.YOUR_OPPONENTS_MP_WAS_REDUCED_BY_S1);
 					sm2.addNumber((int) mp);
@@ -148,12 +119,14 @@ public class Manadam implements ISkillHandler
 			L2Effect effect = activeChar.getFirstEffect(skill.getId());
 			if (effect != null && effect.isSelfEffect())
 			{
-				//Replace old effect with new one.
+				// Replace old effect with new one.
 				effect.exit();
 			}
 			// cast self effect if any
 			skill.getEffectsSelf(activeChar);
 		}
+		
+		activeChar.ssChecker();
 	}
 	
 	@Override

+ 29 - 50
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Mdam.java

@@ -22,11 +22,7 @@ import com.l2jserver.Config;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Playable;
-import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
-import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.model.stats.Env;
@@ -49,46 +45,13 @@ public class Mdam implements ISkillHandler
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		if (activeChar.isAlikeDead())
-			return;
-		
-		boolean ss = false;
-		boolean bss = false;
-		
-		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
-		
-		if (weaponInst != null)
 		{
-			if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-			{
-				bss = true;
-				weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-			}
-			else if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-			{
-				ss = true;
-				weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-			}
-		}
-		// If there is no weapon equipped, check for an active summon.
-		else if (activeChar instanceof L2Summon)
-		{
-			L2Summon activeSummon = (L2Summon) activeChar;
-			
-			if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-			{
-				bss = true;
-				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-			}
-			else if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-			{
-				ss = true;
-				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-			}
+			return;
 		}
 		
-		for (L2Character target: (L2Character[]) targets)
+		for (L2Character target : (L2Character[]) targets)
 		{
-			if (activeChar instanceof L2PcInstance && target instanceof L2PcInstance && ((L2PcInstance)target).isFakeDeath())
+			if (activeChar.isPlayer() && target.isPlayer() && target.getActingPlayer().isFakeDeath())
 			{
 				target.stopFakeDeath(true);
 			}
@@ -101,14 +64,16 @@ public class Mdam implements ISkillHandler
 			final byte shld = Formulas.calcShldUse(activeChar, target, skill);
 			final byte reflect = Formulas.calcSkillReflect(target, skill);
 			
-			int damage = skill.isStaticDamage() ? (int)skill.getPower() : (int) Formulas.calcMagicDam(activeChar, target, skill, shld, ss, bss, mcrit);
+			int damage = skill.isStaticDamage() ? (int) skill.getPower() : (int) Formulas.calcMagicDam(activeChar, target, skill, shld, activeChar.isSpiritshotCharged(skill), activeChar.isBlessedSpiritshotCharged(skill), mcrit);
 			
 			if (!skill.isStaticDamage() && skill.getDependOnTargetBuff() != 0)
+			{
 				damage += (int) (damage * target.getBuffCount() * skill.getDependOnTargetBuff());
+			}
 			
-			if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar instanceof L2PcInstance)
+			if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar.isPlayer())
 			{
-				switch (((L2PcInstance) activeChar).getSouls())
+				switch (activeChar.getActingPlayer().getSouls())
 				{
 					case 0:
 						break;
@@ -146,7 +111,9 @@ public class Mdam implements ISkillHandler
 				// DS: because only skill using vengeanceMdam is Shield Deflect Magic
 				// and for this skill no damage should pass to target, just hardcode it for now
 				if ((reflect & Formulas.SKILL_REFLECT_VENGEANCE) != 0)
+				{
 					activeChar.reduceCurrentHp(damage, target, skill);
+				}
 				else
 				{
 					activeChar.sendDamageMessage(target, damage, mcrit, false, false);
@@ -167,8 +134,10 @@ public class Mdam implements ISkillHandler
 					{
 						// activate attacked effects, if any
 						target.stopSkillEffects(skill.getId());
-						if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, false, ss, bss))
-							skill.getEffects(activeChar, target, new Env(shld, ss, false, bss));
+						if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, false, activeChar.isSpiritshotCharged(skill), activeChar.isBlessedSpiritshotCharged(skill)))
+						{
+							skill.getEffects(activeChar, target, new Env(shld, activeChar.isSpiritshotCharged(skill), false, activeChar.isBlessedSpiritshotCharged(skill)));
+						}
 						else
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_RESISTED_YOUR_S2);
@@ -180,12 +149,18 @@ public class Mdam implements ISkillHandler
 				}
 				
 				// Logging damage
-				if (Config.LOG_GAME_DAMAGE
-						&& activeChar instanceof L2Playable
-						&& damage > Config.LOG_GAME_DAMAGE_THRESHOLD)
+				if (Config.LOG_GAME_DAMAGE && activeChar.isPlayable() && damage > Config.LOG_GAME_DAMAGE_THRESHOLD)
 				{
 					LogRecord record = new LogRecord(Level.INFO, "");
-					record.setParameters(new Object[]{activeChar, " did damage ", damage, skill, " to ", target});
+					record.setParameters(new Object[]
+					{
+						activeChar,
+						" did damage ",
+						damage,
+						skill,
+						" to ",
+						target
+					});
 					record.setLoggerName("mdam");
 					_logDamage.log(record);
 				}
@@ -198,14 +173,18 @@ public class Mdam implements ISkillHandler
 			final L2Effect effect = activeChar.getFirstEffect(skill.getId());
 			if (effect != null && effect.isSelfEffect())
 			{
-				//Replace old effect with new one.
+				// Replace old effect with new one.
 				effect.exit();
 			}
 			skill.getEffectsSelf(activeChar);
 		}
 		
 		if (skill.isSuicideAttack())
+		{
 			activeChar.doDie(activeChar);
+		}
+		
+		activeChar.ssChecker();
 	}
 	
 	@Override

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/NornilsPower.java

@@ -20,7 +20,6 @@ import com.l2jserver.gameserver.instancemanager.InstanceManager.InstanceWorld;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -36,13 +35,13 @@ public class NornilsPower implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		InstanceWorld world = null;
 
 		final int instanceId = activeChar.getInstanceId();
 		if (instanceId > 0)
-			world = InstanceManager.getInstance().getPlayerWorld((L2PcInstance)activeChar);
+			world = InstanceManager.getInstance().getPlayerWorld(activeChar.getActingPlayer());
 		
 		if (world != null && world.instanceId == instanceId && world.templateId == 11)
 		{

+ 17 - 19
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Pdam.java

@@ -23,9 +23,7 @@ import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.items.type.L2WeaponType;
@@ -64,7 +62,7 @@ public class Pdam implements ISkillHandler
 		boolean soul = (weapon != null && weapon.getChargedSoulshot() == L2ItemInstance.CHARGED_SOULSHOT && weapon.getItemType() != L2WeaponType.DAGGER);
 		
 		// If there is no weapon equipped, check for an active summon.
-		if (weapon == null && activeChar instanceof L2Summon)
+		if (weapon == null && activeChar.isSummon())
 		{
 			L2Summon activeSummon = (L2Summon) activeChar;
 			if (activeSummon.getChargedSoulShot() == L2ItemInstance.CHARGED_SOULSHOT)
@@ -77,7 +75,7 @@ public class Pdam implements ISkillHandler
 		for (L2Character target: (L2Character[]) targets)
 		{
 			
-			if (activeChar instanceof L2PcInstance && target instanceof L2PcInstance && ((L2PcInstance)target).isFakeDeath())
+			if (activeChar.isPlayer() && target.isPlayer() && target.getActingPlayer().isFakeDeath())
 			{
 				target.stopFakeDeath(true);
 			}
@@ -96,9 +94,9 @@ public class Pdam implements ISkillHandler
 				damage = 0;
 			else
 				damage = skill.isStaticDamage() ? (int)skill.getPower() : (int) Formulas.calcPhysDam(activeChar, target, skill, shld, false, dual, soul);
-			if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar instanceof L2PcInstance)
+			if (!skill.isStaticDamage() && skill.getMaxSoulConsumeCount() > 0 && activeChar.isPlayer())
 			{
-				switch (((L2PcInstance) activeChar).getSouls())
+				switch (activeChar.getActingPlayer().getSouls())
 				{
 					case 0:
 						break;
@@ -161,7 +159,7 @@ public class Pdam implements ISkillHandler
 					activeChar.sendDamageMessage(target, damage, false, crit, false);
 					
 					if (Config.LOG_GAME_DAMAGE
-							&& activeChar instanceof L2Playable
+							&& activeChar.isPlayable()
 							&& damage > Config.LOG_GAME_DAMAGE_THRESHOLD)
 					{
 						LogRecord record = new LogRecord(Level.INFO, "");
@@ -178,13 +176,13 @@ public class Pdam implements ISkillHandler
 					// vengeance reflected damage
 					if ((reflect & Formulas.SKILL_REFLECT_VENGEANCE) != 0)
 					{
-						if (target instanceof L2PcInstance)
+						if (target.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.COUNTERED_C1_ATTACK);
 							sm.addCharName(activeChar);
 							target.sendPacket(sm);
 						}
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_PERFORMING_COUNTERATTACK);
 							sm.addCharName(target);
@@ -200,24 +198,24 @@ public class Pdam implements ISkillHandler
 			}
 			else
 			{
-				if (activeChar instanceof L2PcInstance)
+				if (activeChar.isPlayer())
 				{
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_DODGES_ATTACK);
 					sm.addString(target.getName());
-					((L2PcInstance) activeChar).sendPacket(sm);
+					activeChar.getActingPlayer().sendPacket(sm);
 				}
-				if (target instanceof L2PcInstance)
+				if (target.isPlayer())
 				{
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.AVOIDED_C1_ATTACK);
 					sm.addString(activeChar.getName());
-					((L2PcInstance) target).sendPacket(sm);
+					target.getActingPlayer().sendPacket(sm);
 				}
 				
 				// Possibility of a lethal strike despite skill is evaded
 				Formulas.calcLethalHit(activeChar, target, skill);
 			}
 			
-			if (activeChar instanceof L2PcInstance)
+			if (activeChar.isPlayer())
 			{
 				int soulMasteryLevel = activeChar.getSkillLevel(467);
 				if (soulMasteryLevel > 0)
@@ -225,20 +223,20 @@ public class Pdam implements ISkillHandler
 					L2Skill soulmastery = SkillTable.getInstance().getInfo(467, soulMasteryLevel);
 					if (soulmastery != null)
 					{
-						if (((L2PcInstance) activeChar).getSouls() < soulmastery.getNumSouls())
+						if (activeChar.getActingPlayer().getSouls() < soulmastery.getNumSouls())
 						{
 							int count = 0;
 							
-							if (((L2PcInstance) activeChar).getSouls() + skill.getNumSouls() <= soulmastery.getNumSouls())
+							if (activeChar.getActingPlayer().getSouls() + skill.getNumSouls() <= soulmastery.getNumSouls())
 								count = skill.getNumSouls();
 							else
-								count = soulmastery.getNumSouls() - ((L2PcInstance) activeChar).getSouls();
-							((L2PcInstance) activeChar).increaseSouls(count);
+								count = soulmastery.getNumSouls() - activeChar.getActingPlayer().getSouls();
+							activeChar.getActingPlayer().increaseSouls(count);
 						}
 						else
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SOUL_CANNOT_BE_INCREASED_ANYMORE);
-							((L2PcInstance) activeChar).sendPacket(sm);
+							activeChar.getActingPlayer().sendPacket(sm);
 						}
 					}
 				}

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/RefuelAirShip.java

@@ -19,7 +19,6 @@ import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2AirShipInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2ControllableAirShipInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 
@@ -33,10 +32,10 @@ public class RefuelAirShip implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
-		final L2AirShipInstance ship = ((L2PcInstance)activeChar).getAirShip();
+		final L2AirShipInstance ship = activeChar.getActingPlayer().getAirShip();
 		if (ship == null
 				|| !(ship instanceof L2ControllableAirShipInstance)
 				|| ship.getFuel() >= ship.getMaxFuel())

+ 10 - 8
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Resurrect.java

@@ -40,15 +40,17 @@ public class Resurrect implements ISkillHandler
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		L2PcInstance player = null;
-		if (activeChar instanceof L2PcInstance)
-			player = (L2PcInstance) activeChar;
+		if (activeChar.isPlayer())
+			player = activeChar.getActingPlayer();
+		
+		activeChar.ssChecker();
 		
 		L2PcInstance targetPlayer;
 		List<L2Character> targetToRes = new FastList<>();
 		
 		for (L2Character target: (L2Character[]) targets)
 		{
-			if (target instanceof L2PcInstance)
+			if (target.isPlayer())
 			{
 				targetPlayer = target.getActingPlayer();
 				
@@ -72,12 +74,12 @@ public class Resurrect implements ISkillHandler
 		}
 		
 		for (L2Character cha : targetToRes)
-			if (activeChar instanceof L2PcInstance)
+			if (activeChar.isPlayer())
 			{
-				if (cha instanceof L2PcInstance)
-					((L2PcInstance) cha).reviveRequest((L2PcInstance) activeChar, skill, false);
-				else if (cha instanceof L2PetInstance)
-					((L2PetInstance) cha).getOwner().reviveRequest((L2PcInstance) activeChar, skill, true);
+				if (cha.isPlayer())
+					cha.getActingPlayer().reviveRequest(activeChar.getActingPlayer(), skill, false);
+				else if (cha.isPet())
+					((L2PetInstance) cha).getOwner().reviveRequest(activeChar.getActingPlayer(), skill, true);
 			}
 			else
 			{

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/ShiftTarget.java

@@ -40,7 +40,7 @@ public class ShiftTarget implements ISkillHandler
 		
 		for (L2Character obj : activeChar.getKnownList().getKnownCharactersInRadius(skill.getSkillRadius()))
 		{
-			if (!(obj instanceof L2Attackable) || obj.isDead())
+			if (!obj.isL2Attackable() || obj.isDead())
 				continue;
 			L2Attackable hater = ((L2Attackable) obj);
 			if (hater.getHating(activeChar) == 0)

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Soul.java

@@ -37,10 +37,10 @@ public class Soul implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance) || activeChar.isAlikeDead())
+		if (!activeChar.isPlayer() || activeChar.isAlikeDead())
 			return;
 		
-		L2PcInstance player = (L2PcInstance) activeChar;
+		L2PcInstance player = activeChar.getActingPlayer();
 
 		int level = player.getSkillLevel(467);
 		if (level > 0)

+ 3 - 4
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Sow.java

@@ -23,7 +23,6 @@ import com.l2jserver.gameserver.model.L2Manor;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -47,7 +46,7 @@ public class Sow implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
 		final L2Object[] targetList = skill.getTargetList(activeChar);
@@ -61,7 +60,7 @@ public class Sow implements ISkillHandler
 		
 		for (L2Object tgt: targetList)
 		{
-			if (!(tgt instanceof L2MonsterInstance))
+			if (!tgt.isMonster())
 				continue;
 			
 			target = (L2MonsterInstance) tgt;
@@ -91,7 +90,7 @@ public class Sow implements ISkillHandler
 			if (calcSuccess(activeChar, target, seedId))
 			{
 				activeChar.sendPacket(new PlaySound("Itemsound.quest_itemget"));
-				target.setSeeded((L2PcInstance)activeChar);
+				target.setSeeded(activeChar.getActingPlayer());
 				sm = SystemMessage.getSystemMessage(SystemMessageId.THE_SEED_WAS_SUCCESSFULLY_SOWN);
 			}
 			else

+ 2 - 3
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Spoil.java

@@ -19,7 +19,6 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.model.stats.Formulas;
@@ -39,7 +38,7 @@ public class Spoil implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
 		if (targets == null)
@@ -47,7 +46,7 @@ public class Spoil implements ISkillHandler
 		
 		for (L2Object tgt: targets)
 		{
-			if (!(tgt instanceof L2MonsterInstance))
+			if (!tgt.isMonster())
 				continue;
 			
 			L2MonsterInstance target = (L2MonsterInstance) tgt;

+ 5 - 38
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/StealBuffs.java

@@ -21,10 +21,7 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.L2Summon;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.effects.L2Effect;
-import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.model.skills.L2SkillType;
 import com.l2jserver.gameserver.model.stats.Env;
@@ -42,39 +39,9 @@ public class StealBuffs implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		// discharge shots
-		final L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
-		if (weaponInst != null)
-		{
-			if (skill.isMagic())
-			{
-				if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-				{
-					weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-				}
-				else if (weaponInst.getChargedSpiritshot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-				{
-					weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
-				}
-			}
-		}
-		else if (activeChar instanceof L2Summon)
-		{
-			final L2Summon activeSummon = (L2Summon) activeChar;
-			
-			if (skill.isMagic())
-			{
-				if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT)
-				{
-					activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-				}
-				else if (activeSummon.getChargedSpiritShot() == L2ItemInstance.CHARGED_SPIRITSHOT)
-				{
-					activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
-				}
-			}
-		}
-		else if (activeChar instanceof L2Npc)
+		activeChar.ssChecker();
+		
+		if (activeChar.isNpc())
 		{
 			((L2Npc) activeChar)._spiritshotcharged = false;
 		}
@@ -96,7 +63,7 @@ public class StealBuffs implements ISkillHandler
 				continue;
 			}
 			
-			if (!(target instanceof L2PcInstance))
+			if (!target.isPlayer())
 			{
 				continue;
 			}
@@ -196,7 +163,7 @@ public class StealBuffs implements ISkillHandler
 					if (effect != null)
 					{
 						effect.scheduleEffect();
-						if (effect.getShowIcon() && (activeChar instanceof L2PcInstance))
+						if (effect.getShowIcon() && activeChar.isPlayer())
 						{
 							SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);
 							sm.addSkillName(effect);

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/StrSiegeAssault.java

@@ -19,7 +19,6 @@ import com.l2jserver.gameserver.instancemanager.CastleManager;
 import com.l2jserver.gameserver.instancemanager.FortManager;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
-import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Fort;
@@ -43,14 +42,14 @@ public class StrSiegeAssault implements ISkillHandler
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
 		
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
-		L2PcInstance player = (L2PcInstance) activeChar;
+		L2PcInstance player = activeChar.getActingPlayer();
 		
 		if (!player.isRidingStrider())
 			return;
-		if (!(player.getTarget() instanceof L2DoorInstance))
+		if (!player.getTarget().isDoor())
 			return;
 		
 		Castle castle = CastleManager.getInstance().getCastle(player);
@@ -78,7 +77,7 @@ public class StrSiegeAssault implements ISkillHandler
 			for (L2Character target: (L2Character[]) targets)
 			{
 				L2ItemInstance weapon = activeChar.getActiveWeaponInstance();
-				if (activeChar instanceof L2PcInstance && target instanceof L2PcInstance && ((L2PcInstance)target).isFakeDeath())
+				if (activeChar.isPlayer() && target.isPlayer() && target.getActingPlayer().isFakeDeath())
 				{
 					target.stopFakeDeath(true);
 				}

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/SummonFriend.java

@@ -38,7 +38,7 @@ public class SummonFriend implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 		{
 			return;
 		}
@@ -58,7 +58,7 @@ public class SummonFriend implements ISkillHandler
 					continue;
 				}
 				
-				if (target instanceof L2PcInstance)
+				if (target.isPlayer())
 				{
 					if (isMastersCall) //Master's Call
 					{

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/TakeCastle.java

@@ -36,10 +36,10 @@ public class TakeCastle implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
-		L2PcInstance player = (L2PcInstance) activeChar;
+		L2PcInstance player = activeChar.getActingPlayer();
 		
 		if (player.getClan() == null || player.getClan().getLeaderId() != player.getObjectId())
 			return;

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/TakeFort.java

@@ -36,10 +36,10 @@ public class TakeFort implements ISkillHandler
 	@Override
 	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
 	{
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
-		L2PcInstance player = (L2PcInstance) activeChar;
+		L2PcInstance player = activeChar.getActingPlayer();
 		if (player.getClan() == null)
 			return;
 		

+ 2 - 2
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/TransformDispel.java

@@ -38,10 +38,10 @@ public class TransformDispel implements ISkillHandler
 		if (activeChar.isAlikeDead())
 			return;
 		
-		if (!(activeChar instanceof L2PcInstance))
+		if (!activeChar.isPlayer())
 			return;
 		
-		L2PcInstance pc = (L2PcInstance) activeChar;
+		L2PcInstance pc = activeChar.getActingPlayer();
 		
 		if (pc.isAlikeDead() || pc.isCursedWeaponEquipped())
 			return;

+ 4 - 5
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Trap.java

@@ -18,7 +18,6 @@ import com.l2jserver.gameserver.handler.ISkillHandler;
 import com.l2jserver.gameserver.model.L2Object;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Trap;
-import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.model.quest.Quest.TrapAction;
 import com.l2jserver.gameserver.model.skills.L2Skill;
@@ -45,7 +44,7 @@ public class Trap implements ISkillHandler
 			{
 				for (L2Character target: activeChar.getKnownList().getKnownCharactersInRadius(skill.getSkillRadius()))
 				{
-					if (!(target instanceof L2Trap))
+					if (!target.isTrap())
 						continue;
 					
 					if (target.isAlikeDead())
@@ -62,7 +61,7 @@ public class Trap implements ISkillHandler
 			{
 				for (L2Character target: (L2Character[]) targets)
 				{
-					if (!(target instanceof L2Trap))
+					if (!target.isTrap())
 						continue;
 					
 					if (target.isAlikeDead())
@@ -72,7 +71,7 @@ public class Trap implements ISkillHandler
 					
 					if (!trap.canSee(activeChar))
 					{
-						if (activeChar instanceof L2PcInstance)
+						if (activeChar.isPlayer())
 							activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET);
 						continue;
 					}
@@ -85,7 +84,7 @@ public class Trap implements ISkillHandler
 							quest.notifyTrapAction(trap, activeChar, TrapAction.TRAP_DISARMED);
 					
 					trap.unSummon();
-					if (activeChar instanceof L2PcInstance)
+					if (activeChar.isPlayer())
 						activeChar.sendPacket(SystemMessageId.A_TRAP_DEVICE_HAS_BEEN_STOPPED);
 				}
 			}

+ 1 - 1
L2J_DataPack_BETA/dist/game/data/scripts/handlers/skillhandlers/Unlock.java

@@ -46,7 +46,7 @@ public class Unlock implements ISkillHandler
 		
 		for (L2Object target: targets)
 		{
-			if (target instanceof L2DoorInstance)
+			if (target.isDoor())
 			{
 				L2DoorInstance door = (L2DoorInstance) target;
 				// Check if door in the different instance