From 9072974f03fd7e09c95073cff604f53f9eb0a385 Mon Sep 17 00:00:00 2001
From: Adry_85 <Adrya85@hotmail.it>
Date: Thu, 17 May 2012 19:17:11 +0000
Subject: [PATCH] BETA: Fixed Cancel effects to land in monsters too.

---
 .../handlers/effecthandlers/Cancel.java       | 65 +++++++++++++------
 .../handlers/effecthandlers/CancelDebuff.java |  3 +-
 2 files changed, 45 insertions(+), 23 deletions(-)

diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Cancel.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Cancel.java
index b40dbccbc6..9c98d43704 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Cancel.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/Cancel.java
@@ -18,7 +18,6 @@ import java.util.logging.Logger;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.model.actor.L2Character;
-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;
@@ -59,12 +58,14 @@ public class Cancel extends L2Effect
 	
 	private static boolean cancel(L2Character caster, L2Character target, L2Effect effect)
 	{
-		if (!(target instanceof L2PcInstance)|| target.isDead())
+		if (target.isDead())
+		{
 			return false;
+		}
 		
 		final int cancelLvl = effect.getSkill().getMagicLevel();
 		int count = effect.getSkill().getMaxNegatedEffects();
-
+		
 		double rate = effect.getEffectPower();
 		final double vulnModifier = target.calcStat(Stats.CANCEL_VULN, 0, target, null);
 		final double profModifier = caster.calcStat(Stats.CANCEL_PROF, 0, target, null);
@@ -74,34 +75,32 @@ public class Cancel extends L2Effect
 		{
 			if (res < 0)
 			{
-				resMod = 1 - 0.075 * res;
+				resMod = 1 - (0.075 * res);
 				resMod = 1 / resMod;
 			}
 			else
-				resMod = 1 + 0.02 * res;
+			{
+				resMod = 1 + (0.02 * res);
+			}
 			
 			rate *= resMod;
 		}
-
+		
 		if (caster.isDebug())
 		{
 			final StringBuilder stat = new StringBuilder(100);
-			StringUtil.append(stat,
-					effect.getSkill().getName(),
-					" power:", String.valueOf((int)effect.getEffectPower()),
-					" lvl:", String.valueOf(cancelLvl),
-					" res:", String.format("%1.2f", resMod), "(",
-					String.format("%1.2f", profModifier), "/",
-					String.format("%1.2f", vulnModifier),
-					") total:", String.valueOf(rate)
-			);
+			StringUtil.append(stat, effect.getSkill().getName(), " power:", String.valueOf((int) effect.getEffectPower()), " lvl:", String.valueOf(cancelLvl), " res:", String.format("%1.2f", resMod), "(", String.format("%1.2f", profModifier), "/", String.format("%1.2f", vulnModifier), ") total:", String.valueOf(rate));
 			final String result = stat.toString();
 			if (caster.isDebug())
+			{
 				caster.sendDebugMessage(result);
+			}
 			if (Config.DEVELOPER)
+			{
 				_log.info(result);
+			}
 		}
-
+		
 		final L2Effect[] effects = target.getAllEffects();
 		
 		if (effect.getSkill().getNegateAbnormals() != null) // Cancel for abnormals
@@ -109,14 +108,18 @@ public class Cancel extends L2Effect
 			for (L2Effect eff : effects)
 			{
 				if (eff == null)
+				{
 					continue;
+				}
 				
 				for (String negateAbnormalType : effect.getSkill().getNegateAbnormals().keySet())
 				{
-					if (negateAbnormalType.equalsIgnoreCase(eff.getAbnormalType()) && effect.getSkill().getNegateAbnormals().get(negateAbnormalType) >= eff.getAbnormalLvl())
+					if (negateAbnormalType.equalsIgnoreCase(eff.getAbnormalType()) && (effect.getSkill().getNegateAbnormals().get(negateAbnormalType) >= eff.getAbnormalLvl()))
 					{
-						if (calcCancelSuccess(eff, cancelLvl, (int)rate))
+						if (calcCancelSuccess(eff, cancelLvl, (int) rate))
+						{
 							eff.exit();
+						}
 					}
 				}
 			}
@@ -130,7 +133,9 @@ public class Cancel extends L2Effect
 			{
 				eff = effects[i];
 				if (eff == null)
+				{
 					continue;
+				}
 				
 				if (!eff.canBeStolen())
 				{
@@ -140,7 +145,9 @@ public class Cancel extends L2Effect
 				
 				// first pass - dances/songs only
 				if (!eff.getSkill().isDance())
+				{
 					continue;
+				}
 				
 				if (eff.getSkill().getId() == lastCanceledSkillId)
 				{
@@ -148,8 +155,10 @@ public class Cancel extends L2Effect
 					continue;
 				}
 				
-				if (!calcCancelSuccess(eff, cancelLvl, (int)rate))
+				if (!calcCancelSuccess(eff, cancelLvl, (int) rate))
+				{
 					continue;
+				}
 				
 				lastCanceledSkillId = eff.getSkill().getId();
 				
@@ -157,7 +166,9 @@ public class Cancel extends L2Effect
 				count--;
 				
 				if (count == 0)
+				{
 					break;
+				}
 			}
 			
 			if (count != 0)
@@ -167,11 +178,15 @@ public class Cancel extends L2Effect
 				{
 					eff = effects[i];
 					if (eff == null)
+					{
 						continue;
+					}
 					
 					// second pass - all except dances/songs
 					if (eff.getSkill().isDance())
+					{
 						continue;
+					}
 					
 					if (eff.getSkill().getId() == lastCanceledSkillId)
 					{
@@ -179,15 +194,19 @@ public class Cancel extends L2Effect
 						continue;
 					}
 					
-					if (!calcCancelSuccess(eff, cancelLvl, (int)rate))
+					if (!calcCancelSuccess(eff, cancelLvl, (int) rate))
+					{
 						continue;
+					}
 					
 					lastCanceledSkillId = eff.getSkill().getId();
 					eff.exit();
 					count--;
 					
 					if (count == 0)
+					{
 						break;
+					}
 				}
 			}
 		}
@@ -198,13 +217,17 @@ public class Cancel extends L2Effect
 	private static boolean calcCancelSuccess(L2Effect effect, int cancelLvl, int baseRate)
 	{
 		int rate = 2 * (cancelLvl - effect.getSkill().getMagicLevel());
-		rate += effect.getAbnormalTime()/120;
+		rate += effect.getAbnormalTime() / 120;
 		rate += baseRate;
 		
 		if (rate < 25)
+		{
 			rate = 25;
+		}
 		else if (rate > 75)
+		{
 			rate = 75;
+		}
 		
 		return Rnd.get(100) < rate;
 	}
diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelDebuff.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelDebuff.java
index ce17523d29..b16059d1f6 100644
--- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelDebuff.java
+++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/effecthandlers/CancelDebuff.java
@@ -15,7 +15,6 @@
 package handlers.effecthandlers;
 
 import com.l2jserver.gameserver.model.actor.L2Character;
-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;
@@ -53,7 +52,7 @@ public class CancelDebuff extends L2Effect
 	
 	private static boolean cancel(L2Character caster, L2Character target, L2Skill skill, double baseRate)
 	{
-		if (!(target instanceof L2PcInstance) || target.isDead())
+		if (target.isDead())
 		{
 			return false;
 		}
-- 
GitLab