From 7af362f30aa85c8241244e111bd32681c418d019 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 14 Sep 2021 21:34:05 +0000 Subject: [PATCH] Skill queue related adjustments. Contributed by paparas21. --- .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ .../org/l2jmobius/gameserver/ai/PlayerAI.java | 32 +++++++++++-------- .../clientpackets/RequestTargetCanceld.java | 5 +++ 38 files changed, 456 insertions(+), 247 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_8.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/PlayerAI.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/PlayerAI.java index 045a290f35..0194939558 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/PlayerAI.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/ai/PlayerAI.java @@ -263,21 +263,27 @@ public class PlayerAI extends PlayableAI private void thinkAttack() { final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill(); - if ((queuedSkill != null)) + if (queuedSkill != null) { - // Abort attack. - _actor.abortAttack(); - - // Recharge shots. - if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) - { - _actor.rechargeShots(true, false, false); - } - - // Use queued skill. - _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + // Remove the skill from queue. _actor.getActingPlayer().setQueuedSkill(null, null, false, false); - return; + + // Check if player has the needed MP for the queued skill. + if (_actor.getCurrentMp() >= _actor.getStat().getMpInitialConsume(queuedSkill.getSkill())) + { + // Abort attack. + _actor.abortAttack(); + + // Recharge shots. + if (!_actor.isChargedShot(ShotType.SOULSHOTS) && !_actor.isChargedShot(ShotType.BLESSED_SOULSHOTS)) + { + _actor.rechargeShots(true, false, false); + } + + // Use queued skill. + _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed()); + return; + } } final WorldObject target = getTarget(); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java index 59f6e96364..939ce243f8 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/RequestTargetCanceld.java @@ -51,6 +51,11 @@ public class RequestTargetCanceld implements IClientIncomingPacket return; } + if (player.getQueuedSkill() != null) + { + player.setQueuedSkill(null, null, false, false); + } + if (player.isCastingNow()) { player.abortAllSkillCasters();