From 3225d46fe0726aa42073278a84ab18667f77a439 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Fri, 5 Aug 2022 10:03:27 +0000 Subject: [PATCH] Addition of skillLevelScaleTo parameter to some TriggerSkill effects. Thanks to fruit. --- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByAttack.java | 31 ++++++++++++------ .../effecthandlers/TriggerSkillByAvoid.java | 32 ++++++++++++++++--- .../effecthandlers/TriggerSkillByDamage.java | 32 ++++++++++++++++--- 75 files changed, 1900 insertions(+), 475 deletions(-) diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_01.0_Ertheia/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_02.5_Underground/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_03.0_Helios/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_05.0_Salvation/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_06.0_Fafurion/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_08.2_Homunculus/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_10.1_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_10.2_MasterClass/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_1.0/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Classic_Interlude/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java index c5704c22fc..3350d43b22 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAttack.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect private final boolean _allowNormalAttack; private final boolean _allowSkillAttack; private final boolean _allowReflect; + private final int _skillLevelScaleTo; public TriggerSkillByAttack(StatSet params) { @@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect _allowNormalAttack = params.getBoolean("allowNormalAttack", true); _allowSkillAttack = params.getBoolean("allowSkillAttack", false); _allowReflect = params.getBoolean("allowReflect", false); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL")) { @@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), event.getTarget(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getAttacker(), 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()) + if ((target == null) || !target.isCreature()) { - final BuffInfo info = ((Creature) target).getEffectList().getBuffInfoBySkillId(triggerSkill.getId()); - if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel())) - { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); - } + return; + } + + final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId()); + final Skill triggerSkill; + if ((_skillLevelScaleTo <= 0) || (buffInfo == null)) + { + triggerSkill = _skill.getSkill(); + } + else + { + triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1)); + } + + if ((buffInfo == null) || (buffInfo.getSkill().getLevel() < triggerSkill.getLevel())) + { + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java index dc33b2f9ac..e01f739581 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByAvoid.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.handler.ITargetTypeHandler; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureAttackAvoid import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect private final int _chance; private final SkillHolder _skill; private final TargetType _targetType; + private final int _skillLevelScaleTo; /** * @param params @@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect _chance = params.getInt("chance", 100); _skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onAvoidEvent(OnCreatureAttackAvoid event) @@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java index e5983d4414..f1e125b473 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/data/scripts/handlers/effecthandlers/TriggerSkillByDamage.java @@ -19,6 +19,7 @@ package handlers.effecthandlers; import java.util.logging.Level; import org.l2jmobius.commons.util.Rnd; +import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.enums.InstanceType; import org.l2jmobius.gameserver.handler.TargetHandler; import org.l2jmobius.gameserver.model.StatSet; @@ -30,6 +31,7 @@ import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureDamageRecei import org.l2jmobius.gameserver.model.events.listeners.ConsumerEventListener; import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.item.instance.Item; +import org.l2jmobius.gameserver.model.skill.BuffInfo; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.SkillCaster; import org.l2jmobius.gameserver.model.skill.targets.TargetType; @@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect private final SkillHolder _skill; private final TargetType _targetType; private final InstanceType _attackerType; + private final int _skillLevelScaleTo; public TriggerSkillByDamage(StatSet params) { @@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect _skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1)); _targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF); _attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature); + _skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0); } private void onDamageReceivedEvent(OnCreatureDamageReceived event) @@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect return; } - final Skill triggerSkill = _skill.getSkill(); WorldObject target = null; try { - target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), triggerSkill, false, false, false); + target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getTarget(), event.getAttacker(), _skill.getSkill(), false, false, false); } catch (Exception e) { LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e); } - - if ((target != null) && target.isCreature()) + if ((target == null) || !target.isCreature()) { - SkillCaster.triggerCast(event.getTarget(), (Creature) target, triggerSkill); + return; } + + final Skill triggerSkill; + if (_skillLevelScaleTo <= 0) + { + triggerSkill = _skill.getSkill(); + } + else + { + 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)); + } + else + { + triggerSkill = _skill.getSkill(); + } + } + + SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill); } @Override