From c2d8864dd7724e72c2107c1c01c4874899aa7b61 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 18 Aug 2021 14:39:50 +0000 Subject: [PATCH] Synced previous changes with TriggerSkillByMagicType effect. --- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- .../TriggerSkillByMagicType.java | 77 ++++++++++--------- .../effecthandlers/TriggerSkillBySkill.java | 16 ++-- 42 files changed, 1029 insertions(+), 924 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_7.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_8.0_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Essence_5.0_Sylph/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java index 6c17ffeec0..d7eed659c5 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByMagicType.java @@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType; /** * Trigger skill by isMagic type. - * @author Nik + * @author Zealar */ public class TriggerSkillByMagicType extends AbstractEffect { private final int[] _magicTypes; private final int _chance; - private final int _skillLevelScaleTo; private final SkillHolder _skill; + private final int _skillLevelScaleTo; private final TargetType _targetType; - - /** - * @param params - */ + private final boolean _replace; public TriggerSkillByMagicType(StatSet params) { - _chance = params.getInt("chance", 100); _magicTypes = params.getIntArray("magicTypes", ";"); + _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _replace = params.getBoolean("replace", true); + } + + @Override + public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) + { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) + { + return; + } + + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); + } + + @Override + public void onExit(Creature effector, Creature effected, Skill skill) + { + effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); } private void onSkillUseEvent(OnCreatureSkillFinishCast event) @@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect return; } + WorldObject target = null; + try + { + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false); + } + catch (Exception e) + { + LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + } + if ((target == null) || !target.isCreature()) + { + return; + } + final Skill triggerSkill; if (_skillLevelScaleTo <= 0) { @@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect } else { - final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); if (buffInfo != null) { triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); @@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect } } - WorldObject target = null; - try + // Remove existing effect, otherwise time will not be renewed at max level. + if (_replace) { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false); - } - catch (Exception e) - { - LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); + ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); } - if ((target != null) && target.isCreature()) - { - SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); - } - } - - @Override - public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) - { - if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0)) - { - return; - } - - effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); - } - - @Override - public void onExit(Creature effector, Creature effected, Skill skill) - { - effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this); + SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java index 0841446637..3ba2ee58c9 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillBySkill.java @@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect { _castSkillId = params.getInt("castSkillId"); _chance = params.getInt("chance", 100); - _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel")); + _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); _replace = params.getBoolean("replace", true); @@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect @Override public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item) { + if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)) + { + return; + } + effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this)); } @@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect private void onSkillUseEvent(OnCreatureSkillFinishCast event) { - if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))) + if (!event.getTarget().isCreature()) { return; } @@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect return; } - if (!event.getTarget().isCreature()) - { - return; - } - if ((_chance < 100) && (Rnd.get(100) > _chance)) { return; @@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect // Remove existing effect, otherwise time will not be renewed at max level. if (_replace) { - ((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill); + ((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill); } SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);