Tempfix for the delayed TriggerSkillByDualRange effect skill.

Thanks to marciox25.
This commit is contained in:
MobiusDevelopment 2022-08-05 13:04:51 +00:00
parent 9fc619d24f
commit b3c55bd00d
18 changed files with 144 additions and 78 deletions

View File

@ -16,13 +16,12 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.Skill;
@ -52,6 +51,12 @@ public class TriggerSkillByDualRange extends AbstractEffect
return true; return true;
} }
@Override
public EffectType getEffectType()
{
return EffectType.DUAL_RANGE;
}
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void instant(Creature effector, Creature effected, Skill skill, Item item)
{ {
@ -67,15 +72,6 @@ public class TriggerSkillByDualRange extends AbstractEffect
return; return;
} }
final SkillUseHolder queuedSkill = effector.getActingPlayer().getQueuedSkill(); effector.getActingPlayer().useMagic(triggerSkill, null, false, true);
if (queuedSkill != null)
{
ThreadPool.schedule(() ->
{
effector.getActingPlayer().setQueuedSkill(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed());
}, 10);
}
effector.getActingPlayer().setQueuedSkill(triggerSkill, null, false, false);
} }
} }

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC, SUMMON_NPC,
TELEPORT, TELEPORT,
TELEPORT_TO_TARGET, TELEPORT_TO_TARGET,
ABNORMAL_SHIELD ABNORMAL_SHIELD,
DUAL_RANGE
} }

View File

@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -411,6 +412,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects. // Trigger any skill cast start effects.
if (target.isCreature()) if (target.isCreature())
{ {
// Tempfix for the delayed TriggerSkillByDualRange effect skill.
final List<AbstractEffect> effects = _skill.getEffects(EffectScope.GENERAL);
if ((effects != null) && !effects.isEmpty())
{
for (AbstractEffect effect : effects)
{
if (effect.getEffectType() == EffectType.DUAL_RANGE)
{
effect.instant(caster, (Creature) target, _skill, null);
return false;
}
}
}
_skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false); _skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false);
} }

View File

@ -16,13 +16,12 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.Skill;
@ -52,6 +51,12 @@ public class TriggerSkillByDualRange extends AbstractEffect
return true; return true;
} }
@Override
public EffectType getEffectType()
{
return EffectType.DUAL_RANGE;
}
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void instant(Creature effector, Creature effected, Skill skill, Item item)
{ {
@ -67,15 +72,6 @@ public class TriggerSkillByDualRange extends AbstractEffect
return; return;
} }
final SkillUseHolder queuedSkill = effector.getActingPlayer().getQueuedSkill(); effector.getActingPlayer().useMagic(triggerSkill, null, false, true);
if (queuedSkill != null)
{
ThreadPool.schedule(() ->
{
effector.getActingPlayer().setQueuedSkill(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed());
}, 10);
}
effector.getActingPlayer().setQueuedSkill(triggerSkill, null, false, false);
} }
} }

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC, SUMMON_NPC,
TELEPORT, TELEPORT,
TELEPORT_TO_TARGET, TELEPORT_TO_TARGET,
ABNORMAL_SHIELD ABNORMAL_SHIELD,
DUAL_RANGE
} }

View File

@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -411,6 +412,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects. // Trigger any skill cast start effects.
if (target.isCreature()) if (target.isCreature())
{ {
// Tempfix for the delayed TriggerSkillByDualRange effect skill.
final List<AbstractEffect> effects = _skill.getEffects(EffectScope.GENERAL);
if ((effects != null) && !effects.isEmpty())
{
for (AbstractEffect effect : effects)
{
if (effect.getEffectType() == EffectType.DUAL_RANGE)
{
effect.instant(caster, (Creature) target, _skill, null);
return false;
}
}
}
_skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false); _skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false);
} }

View File

@ -16,13 +16,12 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.Skill;
@ -52,6 +51,12 @@ public class TriggerSkillByDualRange extends AbstractEffect
return true; return true;
} }
@Override
public EffectType getEffectType()
{
return EffectType.DUAL_RANGE;
}
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void instant(Creature effector, Creature effected, Skill skill, Item item)
{ {
@ -67,15 +72,6 @@ public class TriggerSkillByDualRange extends AbstractEffect
return; return;
} }
final SkillUseHolder queuedSkill = effector.getActingPlayer().getQueuedSkill(); effector.getActingPlayer().useMagic(triggerSkill, null, false, true);
if (queuedSkill != null)
{
ThreadPool.schedule(() ->
{
effector.getActingPlayer().setQueuedSkill(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed());
}, 10);
}
effector.getActingPlayer().setQueuedSkill(triggerSkill, null, false, false);
} }
} }

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC, SUMMON_NPC,
TELEPORT, TELEPORT,
TELEPORT_TO_TARGET, TELEPORT_TO_TARGET,
ABNORMAL_SHIELD ABNORMAL_SHIELD,
DUAL_RANGE
} }

View File

@ -50,6 +50,7 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -411,6 +412,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects. // Trigger any skill cast start effects.
if (target.isCreature()) if (target.isCreature())
{ {
// Tempfix for the delayed TriggerSkillByDualRange effect skill.
final List<AbstractEffect> effects = _skill.getEffects(EffectScope.GENERAL);
if ((effects != null) && !effects.isEmpty())
{
for (AbstractEffect effect : effects)
{
if (effect.getEffectType() == EffectType.DUAL_RANGE)
{
effect.instant(caster, (Creature) target, _skill, null);
return false;
}
}
}
_skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false); _skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false);
} }

View File

@ -16,13 +16,12 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.Skill;
@ -52,6 +51,12 @@ public class TriggerSkillByDualRange extends AbstractEffect
return true; return true;
} }
@Override
public EffectType getEffectType()
{
return EffectType.DUAL_RANGE;
}
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void instant(Creature effector, Creature effected, Skill skill, Item item)
{ {
@ -67,15 +72,6 @@ public class TriggerSkillByDualRange extends AbstractEffect
return; return;
} }
final SkillUseHolder queuedSkill = effector.getActingPlayer().getQueuedSkill(); effector.getActingPlayer().useMagic(triggerSkill, null, false, true);
if (queuedSkill != null)
{
ThreadPool.schedule(() ->
{
effector.getActingPlayer().setQueuedSkill(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed());
}, 10);
}
effector.getActingPlayer().setQueuedSkill(triggerSkill, null, false, false);
} }
} }

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC, SUMMON_NPC,
TELEPORT, TELEPORT,
TELEPORT_TO_TARGET, TELEPORT_TO_TARGET,
ABNORMAL_SHIELD ABNORMAL_SHIELD,
DUAL_RANGE
} }

View File

@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -407,6 +408,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects. // Trigger any skill cast start effects.
if (target.isCreature()) if (target.isCreature())
{ {
// Tempfix for the delayed TriggerSkillByDualRange effect skill.
final List<AbstractEffect> effects = _skill.getEffects(EffectScope.GENERAL);
if ((effects != null) && !effects.isEmpty())
{
for (AbstractEffect effect : effects)
{
if (effect.getEffectType() == EffectType.DUAL_RANGE)
{
effect.instant(caster, (Creature) target, _skill, null);
return false;
}
}
}
_skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false); _skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false);
} }

View File

@ -16,13 +16,12 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.Skill;
@ -52,6 +51,12 @@ public class TriggerSkillByDualRange extends AbstractEffect
return true; return true;
} }
@Override
public EffectType getEffectType()
{
return EffectType.DUAL_RANGE;
}
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void instant(Creature effector, Creature effected, Skill skill, Item item)
{ {
@ -67,15 +72,6 @@ public class TriggerSkillByDualRange extends AbstractEffect
return; return;
} }
final SkillUseHolder queuedSkill = effector.getActingPlayer().getQueuedSkill(); effector.getActingPlayer().useMagic(triggerSkill, null, false, true);
if (queuedSkill != null)
{
ThreadPool.schedule(() ->
{
effector.getActingPlayer().setQueuedSkill(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed());
}, 10);
}
effector.getActingPlayer().setQueuedSkill(triggerSkill, null, false, false);
} }
} }

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC, SUMMON_NPC,
TELEPORT, TELEPORT,
TELEPORT_TO_TARGET, TELEPORT_TO_TARGET,
ABNORMAL_SHIELD ABNORMAL_SHIELD,
DUAL_RANGE
} }

View File

@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -407,6 +408,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects. // Trigger any skill cast start effects.
if (target.isCreature()) if (target.isCreature())
{ {
// Tempfix for the delayed TriggerSkillByDualRange effect skill.
final List<AbstractEffect> effects = _skill.getEffects(EffectScope.GENERAL);
if ((effects != null) && !effects.isEmpty())
{
for (AbstractEffect effect : effects)
{
if (effect.getEffectType() == EffectType.DUAL_RANGE)
{
effect.instant(caster, (Creature) target, _skill, null);
return false;
}
}
}
_skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false); _skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false);
} }

View File

@ -16,13 +16,12 @@
*/ */
package handlers.effecthandlers; package handlers.effecthandlers;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData; import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.holders.SkillHolder; import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.item.instance.Item;
import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.model.skill.Skill;
@ -52,6 +51,12 @@ public class TriggerSkillByDualRange extends AbstractEffect
return true; return true;
} }
@Override
public EffectType getEffectType()
{
return EffectType.DUAL_RANGE;
}
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, Item item) public void instant(Creature effector, Creature effected, Skill skill, Item item)
{ {
@ -67,15 +72,6 @@ public class TriggerSkillByDualRange extends AbstractEffect
return; return;
} }
final SkillUseHolder queuedSkill = effector.getActingPlayer().getQueuedSkill(); effector.getActingPlayer().useMagic(triggerSkill, null, false, true);
if (queuedSkill != null)
{
ThreadPool.schedule(() ->
{
effector.getActingPlayer().setQueuedSkill(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed());
}, 10);
}
effector.getActingPlayer().setQueuedSkill(triggerSkill, null, false, false);
} }
} }

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC, SUMMON_NPC,
TELEPORT, TELEPORT,
TELEPORT_TO_TARGET, TELEPORT_TO_TARGET,
ABNORMAL_SHIELD ABNORMAL_SHIELD,
DUAL_RANGE
} }

View File

@ -51,6 +51,7 @@ import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.events.EventDispatcher; import org.l2jmobius.gameserver.model.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast; import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -407,6 +408,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects. // Trigger any skill cast start effects.
if (target.isCreature()) if (target.isCreature())
{ {
// Tempfix for the delayed TriggerSkillByDualRange effect skill.
final List<AbstractEffect> effects = _skill.getEffects(EffectScope.GENERAL);
if ((effects != null) && !effects.isEmpty())
{
for (AbstractEffect effect : effects)
{
if (effect.getEffectType() == EffectType.DUAL_RANGE)
{
effect.instant(caster, (Creature) target, _skill, null);
return false;
}
}
}
_skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false); _skill.applyEffectScope(EffectScope.START, new BuffInfo(caster, (Creature) target, _skill, false, _item, null), true, false);
} }