Patch.
Index: java/org/l2jmobius/gameserver/ai/PlayerAI.java
===================================================================
--- java/org/l2jmobius/gameserver/ai/PlayerAI.java (revision 8817)
+++ java/org/l2jmobius/gameserver/ai/PlayerAI.java (working copy)
@@ -29,6 +29,7 @@
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance;
+import org.l2jmobius.gameserver.model.holders.SkillUseHolder;
import org.l2jmobius.gameserver.model.interfaces.ILocational;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.skills.targets.TargetType;
@@ -260,6 +261,15 @@
private void thinkAttack()
{
+ final SkillUseHolder queuedSkill = _actor.getActingPlayer().getQueuedSkill();
+ if ((queuedSkill != null))
+ {
+ _actor.abortAttack();
+ _actor.getActingPlayer().useMagic(queuedSkill.getSkill(), queuedSkill.getItem(), queuedSkill.isCtrlPressed(), queuedSkill.isShiftPressed());
+ _actor.getActingPlayer().setQueuedSkill(null, null, false, false);
+ return;
+ }
+
final WorldObject target = getTarget();
if ((target == null) || !target.isCreature())
{
Index: java/org/l2jmobius/gameserver/model/actor/Creature.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/Creature.java (revision 8911)
+++ java/org/l2jmobius/gameserver/model/actor/Creature.java (working copy)
@@ -1220,6 +1220,12 @@
QuestManager.getInstance().getQuest("PvpFlaggingStopTask").notifyEvent("FLAG_CHECK", npc, null);
}
}
+
+ // Always try to charge soulshots.
+ if (!isChargedShot(ShotType.SOULSHOTS) && !isChargedShot(ShotType.BLESSED_SOULSHOTS))
+ {
+ rechargeShots(true, false, false);
+ }
}
finally
{
Index: java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java
===================================================================
--- java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java (revision 8961)
+++ java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java (working copy)
@@ -8420,7 +8420,7 @@
// If a skill is currently being used, queue this one if this is not the same
// In case of double casting, check if both slots are occupied, then queue skill.
- if ((!doubleCast && isCastingNow(SkillCaster::isAnyNormalType)) || (isCastingNow(s -> s.getCastingType() == SkillCastingType.NORMAL) && isCastingNow(s -> s.getCastingType() == SkillCastingType.NORMAL_SECOND)))
+ if ((!doubleCast && (isAttackingNow() || isCastingNow(SkillCaster::isAnyNormalType))) || (isCastingNow(s -> s.getCastingType() == SkillCastingType.NORMAL) && isCastingNow(s -> s.getCastingType() == SkillCastingType.NORMAL_SECOND)))
{
// Do not queue skill if called by an item.
if (item == null)