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