From 349014127c898749bf5015ef1d52bcac8574ed6e Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 20 Jul 2021 00:20:13 +0000 Subject: [PATCH] Addition of auto use skill availability methods. Thanks to manax182. --- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- .../taskmanager/AutoUseTaskManager.java | 78 +++++++++---------- 8 files changed, 312 insertions(+), 312 deletions(-) diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player)) diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player)) diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player)) diff --git a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_9.2_ReturnOfTheQueenAnt_Ch2/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player)) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player)) diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player)) diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player)) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 70019cb4a8..f32d6f9d09 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -171,51 +171,19 @@ public class AutoUseTaskManager continue BUFFS; } - // Casting on self stops movement. - final WorldObject target = player.getTarget(); - if (target == player) - { - continue BUFFS; - } - // Fixes start area issue. if (isInPeaceZone) { continue BUFFS; } - // TODO: Use getSkillRemainingReuseTime? - if (!player.isAffectedBySkill(skillId.intValue()) && !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + final WorldObject target = player.getTarget(); + if (canCastBuff(skill, player, target)) { - // Summon check. - if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) - { - if (!player.hasServitors()) // Is this check truly needed? - { - continue BUFFS; - } - int occurrences = 0; - for (Summon servitor : player.getServitors().values()) - { - if (servitor.isAffectedBySkill(skillId.intValue())) - { - occurrences++; - } - } - if (occurrences == player.getServitors().size()) - { - continue BUFFS; - } - } - - // Check buff target. - if ((target == null) || !target.isPlayable()) - { - final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); - } + final WorldObject savedTarget = target; + player.setTarget(player); + player.doCast(skill); + player.setTarget(savedTarget); } } @@ -259,7 +227,7 @@ public class AutoUseTaskManager continue SKILLS; } - if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + if (canUseMagic(skill, player, target)) { player.useMagic(skill, null, true, false); } @@ -307,6 +275,38 @@ public class AutoUseTaskManager }, 1000, 1000); } + private boolean canCastBuff(Skill skill, PlayerInstance player, WorldObject target) + { + // Summon check. + if (skill.getAffectScope() == AffectScope.SUMMON_EXCEPT_MASTER) + { + if (!player.hasServitors()) // Is this check truly needed? + { + return false; + } + int occurrences = 0; + for (Summon servitor : player.getServitors().values()) + { + if (servitor.isAffectedBySkill(skill.getId())) + { + occurrences++; + } + } + if (occurrences == player.getServitors().size()) + { + return false; + } + } + + // TODO: Use getSkillRemainingReuseTime? + return !player.isAffectedBySkill(skill.getId()) && canUseMagic(skill, player, target); + } + + private boolean canUseMagic(Skill skill, PlayerInstance player, WorldObject target) + { + return !player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false); + } + public void startAutoUseTask(PlayerInstance player) { if (!PLAYERS.contains(player))