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

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC,
TELEPORT,
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.Summon;
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.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -411,6 +412,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects.
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);
}

View File

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

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC,
TELEPORT,
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.Summon;
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.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -411,6 +412,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects.
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);
}

View File

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

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC,
TELEPORT,
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.Summon;
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.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -411,6 +412,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects.
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);
}

View File

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

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC,
TELEPORT,
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.Summon;
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.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -407,6 +408,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects.
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);
}

View File

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

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC,
TELEPORT,
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.Summon;
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.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -407,6 +408,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects.
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);
}

View File

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

View File

@ -62,5 +62,6 @@ public enum EffectType
SUMMON_NPC,
TELEPORT,
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.Summon;
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.events.EventDispatcher;
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSkillFinishCast;
@ -407,6 +408,19 @@ public class SkillCaster implements Runnable
// Trigger any skill cast start effects.
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);
}