Synced previous changes with TriggerSkillByMagicType effect.
This commit is contained in:
parent
399ebe3686
commit
c2d8864dd7
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
@ -38,27 +38,42 @@ import org.l2jmobius.gameserver.model.skills.targets.TargetType;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trigger skill by isMagic type.
|
* Trigger skill by isMagic type.
|
||||||
* @author Nik
|
* @author Zealar
|
||||||
*/
|
*/
|
||||||
public class TriggerSkillByMagicType extends AbstractEffect
|
public class TriggerSkillByMagicType extends AbstractEffect
|
||||||
{
|
{
|
||||||
private final int[] _magicTypes;
|
private final int[] _magicTypes;
|
||||||
private final int _chance;
|
private final int _chance;
|
||||||
private final int _skillLevelScaleTo;
|
|
||||||
private final SkillHolder _skill;
|
private final SkillHolder _skill;
|
||||||
|
private final int _skillLevelScaleTo;
|
||||||
private final TargetType _targetType;
|
private final TargetType _targetType;
|
||||||
|
private final boolean _replace;
|
||||||
/**
|
|
||||||
* @param params
|
|
||||||
*/
|
|
||||||
|
|
||||||
public TriggerSkillByMagicType(StatSet params)
|
public TriggerSkillByMagicType(StatSet params)
|
||||||
{
|
{
|
||||||
_chance = params.getInt("chance", 100);
|
|
||||||
_magicTypes = params.getIntArray("magicTypes", ";");
|
_magicTypes = params.getIntArray("magicTypes", ";");
|
||||||
|
_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));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
|
_replace = params.getBoolean("replace", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onExit(Creature effector, Creature effected, Skill skill)
|
||||||
|
{
|
||||||
|
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
@ -78,6 +93,20 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WorldObject target = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), _skill.getSkill(), false, false, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
if ((target == null) || !target.isCreature())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Skill triggerSkill;
|
final Skill triggerSkill;
|
||||||
if (_skillLevelScaleTo <= 0)
|
if (_skillLevelScaleTo <= 0)
|
||||||
{
|
{
|
||||||
@ -85,7 +114,7 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final BuffInfo buffInfo = ((Creature) event.getTarget()).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
final BuffInfo buffInfo = ((Creature) target).getEffectList().getBuffInfoBySkillId(_skill.getSkillId());
|
||||||
if (buffInfo != null)
|
if (buffInfo != null)
|
||||||
{
|
{
|
||||||
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
triggerSkill = SkillData.getInstance().getSkill(_skill.getSkillId(), Math.min(_skillLevelScaleTo, buffInfo.getSkill().getLevel() + 1));
|
||||||
@ -96,36 +125,12 @@ public class TriggerSkillByMagicType extends AbstractEffect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldObject target = null;
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
try
|
if (_replace)
|
||||||
{
|
{
|
||||||
target = TargetHandler.getInstance().getHandler(_targetType).getTarget(event.getCaster(), event.getTarget(), triggerSkill, false, false, false);
|
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
LOGGER.log(Level.WARNING, "Exception in ITargetTypeHandler.getTarget(): " + e.getMessage(), e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((target != null) && target.isCreature())
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
{
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
|
||||||
{
|
|
||||||
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_magicTypes.length == 0))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onExit(Creature effector, Creature effected, Skill skill)
|
|
||||||
{
|
|
||||||
effected.removeListenerIf(EventType.ON_CREATURE_SKILL_FINISH_CAST, listener -> listener.getOwner() == this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
{
|
{
|
||||||
_castSkillId = params.getInt("castSkillId");
|
_castSkillId = params.getInt("castSkillId");
|
||||||
_chance = params.getInt("chance", 100);
|
_chance = params.getInt("chance", 100);
|
||||||
_skill = new SkillHolder(params.getInt("skillId"), params.getInt("skillLevel"));
|
_skill = new SkillHolder(params.getInt("skillId", 0), params.getInt("skillLevel", 0));
|
||||||
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
_skillLevelScaleTo = params.getInt("skillLevelScaleTo", 0);
|
||||||
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
_targetType = params.getEnum("targetType", TargetType.class, TargetType.TARGET);
|
||||||
_replace = params.getBoolean("replace", true);
|
_replace = params.getBoolean("replace", true);
|
||||||
@ -61,6 +61,11 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
public void onStart(Creature effector, Creature effected, Skill skill, ItemInstance item)
|
||||||
{
|
{
|
||||||
|
if ((_chance == 0) || (_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
effected.addListener(new ConsumerEventListener(effected, EventType.ON_CREATURE_SKILL_FINISH_CAST, (OnCreatureSkillFinishCast event) -> onSkillUseEvent(event), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +77,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
|
|
||||||
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
private void onSkillUseEvent(OnCreatureSkillFinishCast event)
|
||||||
{
|
{
|
||||||
if ((_chance == 0) || ((_skill.getSkillId() == 0) || (_skill.getSkillLevel() == 0) || (_castSkillId == 0)))
|
if (!event.getTarget().isCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -82,11 +87,6 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!event.getTarget().isCreature())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
if ((_chance < 100) && (Rnd.get(100) > _chance))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@ -127,7 +127,7 @@ public class TriggerSkillBySkill extends AbstractEffect
|
|||||||
// Remove existing effect, otherwise time will not be renewed at max level.
|
// Remove existing effect, otherwise time will not be renewed at max level.
|
||||||
if (_replace)
|
if (_replace)
|
||||||
{
|
{
|
||||||
((Creature) target).getEffectList().stopSkillEffects(true, triggerSkill);
|
((Creature) target).getEffectList().stopSkillEffects(false, triggerSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
SkillCaster.triggerCast(event.getCaster(), (Creature) target, triggerSkill);
|
||||||
|
Loading…
Reference in New Issue
Block a user