Addition of skillLevelScaleTo parameter to some TriggerSkill effects.
Thanks to fruit.
This commit is contained in:
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
@@ -54,6 +55,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
private final boolean _allowNormalAttack;
|
private final boolean _allowNormalAttack;
|
||||||
private final boolean _allowSkillAttack;
|
private final boolean _allowSkillAttack;
|
||||||
private final boolean _allowReflect;
|
private final boolean _allowReflect;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByAttack(StatSet params)
|
public TriggerSkillByAttack(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -68,6 +70,7 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
_allowNormalAttack = params.getBoolean("allowNormalAttack", true);
|
||||||
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
_allowSkillAttack = params.getBoolean("allowSkillAttack", false);
|
||||||
_allowReflect = params.getBoolean("allowReflect", false);
|
_allowReflect = params.getBoolean("allowReflect", false);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
|
|
||||||
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
if (params.getString("allowWeapons", "ALL").equalsIgnoreCase("ALL"))
|
||||||
{
|
{
|
||||||
@@ -132,24 +135,34 @@ public class TriggerSkillByAttack extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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());
|
return;
|
||||||
if ((info == null) || (info.getSkill().getLevel() < triggerSkill.getLevel()))
|
}
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getAttacker(), (Creature) target, triggerSkill);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -43,6 +45,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param params
|
* @param params
|
||||||
@@ -52,6 +55,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
private void onAvoidEvent(OnCreatureAttackAvoid event)
|
||||||
@@ -73,21 +77,39 @@ public class TriggerSkillByAvoid extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@ package handlers.effecthandlers;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.l2jmobius.commons.util.Rnd;
|
import org.l2jmobius.commons.util.Rnd;
|
||||||
|
import org.l2jmobius.gameserver.data.xml.SkillData;
|
||||||
import org.l2jmobius.gameserver.enums.InstanceType;
|
import org.l2jmobius.gameserver.enums.InstanceType;
|
||||||
import org.l2jmobius.gameserver.handler.TargetHandler;
|
import org.l2jmobius.gameserver.handler.TargetHandler;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
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.events.listeners.ConsumerEventListener;
|
||||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
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.Skill;
|
||||||
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
import org.l2jmobius.gameserver.model.skill.SkillCaster;
|
||||||
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
import org.l2jmobius.gameserver.model.skill.targets.TargetType;
|
||||||
@@ -48,6 +50,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
private final InstanceType _attackerType;
|
private final InstanceType _attackerType;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
|
|
||||||
public TriggerSkillByDamage(StatSet params)
|
public TriggerSkillByDamage(StatSet params)
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,7 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel", 1));
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.SELF);
|
||||||
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
_attackerType = params.getEnum("attackerType", InstanceType.class, InstanceType.Creature);
|
||||||
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
private void onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||||
@@ -98,21 +102,39 @@ public class TriggerSkillByDamage extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Skill triggerSkill = _skill.getSkill();
|
|
||||||
WorldObject target = null;
|
WorldObject target = null;
|
||||||
try
|
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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), 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
|
@Override
|
||||||
|
Reference in New Issue
Block a user