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 2f132f5f52..eec01dd74b 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 @@ -87,7 +87,7 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoSupplyItems().remove(itemId); - continue ITEMS; // TODO: break? + continue ITEMS; } final Item it = item.getItem(); @@ -133,8 +133,9 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoPotionItems().remove(itemId); - continue POTIONS; // TODO: break? + continue POTIONS; } + final int reuseDelay = item.getReuseDelay(); if ((reuseDelay <= 0) || (player.getItemRemainingReuseTime(item.getObjectId()) <= 0)) { @@ -150,35 +151,41 @@ public class AutoUseTaskManager if (Config.ENABLE_AUTO_BUFF && !player.isMoving()) { - SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + BUFFS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) { final Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { player.getAutoUseSettings().getAutoSkills().remove(skillId); - continue SKILLS; // TODO: break? + continue BUFFS; } - final WorldObject target = player.getTarget(); - // Casting on self stops movement. - if (target == player) + // Already casting. + if (player.isCastingNow()) { - continue SKILLS; + break BUFFS; } - // Check bad skill target. + + // Not a buff. if (skill.isBad()) { - if ((target == null) || !target.isAttackable()) - { - continue SKILLS; - } - } - // Fixes start area issue. - else if (isInPeaceZone) - { - continue SKILLS; + 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)) { // Summon check. @@ -186,7 +193,7 @@ public class AutoUseTaskManager { if (!player.hasServitors()) // Is this check truly needed? { - continue SKILLS; + continue BUFFS; } int occurrences = 0; for (Summon servitor : player.getServitors().values()) @@ -198,19 +205,58 @@ public class AutoUseTaskManager } if (occurrences == player.getServitors().size()) { - continue SKILLS; + continue BUFFS; } } - // Check non bad skill target. - if (!skill.isBad() && ((target == null) || !target.isPlayable())) + // Check buff target. + if ((target == null) || !target.isPlayable()) { final WorldObject savedTarget = target; player.setTarget(player); player.doCast(skill); player.setTarget(savedTarget); } - else if (isMageCaster(player)) + } + } + + SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + { + final Skill skill = player.getKnownSkill(skillId.intValue()); + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + continue SKILLS; + } + + // Already casting. + if (player.isCastingNow()) + { + break SKILLS; + } + + // Not an offensive skill. + if (!skill.isBad()) + { + continue SKILLS; + } + + // Casting on self stops movement. + final WorldObject target = player.getTarget(); + if (target == player) + { + continue SKILLS; + } + + // Check bad skill target. + if ((target == null) || !target.isAttackable()) + { + continue SKILLS; + } + + if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + { + if (isMageCaster(player)) { player.useMagic(skill, null, true, false); } 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 2f132f5f52..eec01dd74b 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 @@ -87,7 +87,7 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoSupplyItems().remove(itemId); - continue ITEMS; // TODO: break? + continue ITEMS; } final Item it = item.getItem(); @@ -133,8 +133,9 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoPotionItems().remove(itemId); - continue POTIONS; // TODO: break? + continue POTIONS; } + final int reuseDelay = item.getReuseDelay(); if ((reuseDelay <= 0) || (player.getItemRemainingReuseTime(item.getObjectId()) <= 0)) { @@ -150,35 +151,41 @@ public class AutoUseTaskManager if (Config.ENABLE_AUTO_BUFF && !player.isMoving()) { - SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + BUFFS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) { final Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { player.getAutoUseSettings().getAutoSkills().remove(skillId); - continue SKILLS; // TODO: break? + continue BUFFS; } - final WorldObject target = player.getTarget(); - // Casting on self stops movement. - if (target == player) + // Already casting. + if (player.isCastingNow()) { - continue SKILLS; + break BUFFS; } - // Check bad skill target. + + // Not a buff. if (skill.isBad()) { - if ((target == null) || !target.isAttackable()) - { - continue SKILLS; - } - } - // Fixes start area issue. - else if (isInPeaceZone) - { - continue SKILLS; + 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)) { // Summon check. @@ -186,7 +193,7 @@ public class AutoUseTaskManager { if (!player.hasServitors()) // Is this check truly needed? { - continue SKILLS; + continue BUFFS; } int occurrences = 0; for (Summon servitor : player.getServitors().values()) @@ -198,19 +205,58 @@ public class AutoUseTaskManager } if (occurrences == player.getServitors().size()) { - continue SKILLS; + continue BUFFS; } } - // Check non bad skill target. - if (!skill.isBad() && ((target == null) || !target.isPlayable())) + // Check buff target. + if ((target == null) || !target.isPlayable()) { final WorldObject savedTarget = target; player.setTarget(player); player.doCast(skill); player.setTarget(savedTarget); } - else if (isMageCaster(player)) + } + } + + SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + { + final Skill skill = player.getKnownSkill(skillId.intValue()); + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + continue SKILLS; + } + + // Already casting. + if (player.isCastingNow()) + { + break SKILLS; + } + + // Not an offensive skill. + if (!skill.isBad()) + { + continue SKILLS; + } + + // Casting on self stops movement. + final WorldObject target = player.getTarget(); + if (target == player) + { + continue SKILLS; + } + + // Check bad skill target. + if ((target == null) || !target.isAttackable()) + { + continue SKILLS; + } + + if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + { + if (isMageCaster(player)) { player.useMagic(skill, null, true, false); } 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 2f132f5f52..eec01dd74b 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 @@ -87,7 +87,7 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoSupplyItems().remove(itemId); - continue ITEMS; // TODO: break? + continue ITEMS; } final Item it = item.getItem(); @@ -133,8 +133,9 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoPotionItems().remove(itemId); - continue POTIONS; // TODO: break? + continue POTIONS; } + final int reuseDelay = item.getReuseDelay(); if ((reuseDelay <= 0) || (player.getItemRemainingReuseTime(item.getObjectId()) <= 0)) { @@ -150,35 +151,41 @@ public class AutoUseTaskManager if (Config.ENABLE_AUTO_BUFF && !player.isMoving()) { - SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + BUFFS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) { final Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { player.getAutoUseSettings().getAutoSkills().remove(skillId); - continue SKILLS; // TODO: break? + continue BUFFS; } - final WorldObject target = player.getTarget(); - // Casting on self stops movement. - if (target == player) + // Already casting. + if (player.isCastingNow()) { - continue SKILLS; + break BUFFS; } - // Check bad skill target. + + // Not a buff. if (skill.isBad()) { - if ((target == null) || !target.isAttackable()) - { - continue SKILLS; - } - } - // Fixes start area issue. - else if (isInPeaceZone) - { - continue SKILLS; + 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)) { // Summon check. @@ -186,7 +193,7 @@ public class AutoUseTaskManager { if (!player.hasServitors()) // Is this check truly needed? { - continue SKILLS; + continue BUFFS; } int occurrences = 0; for (Summon servitor : player.getServitors().values()) @@ -198,19 +205,58 @@ public class AutoUseTaskManager } if (occurrences == player.getServitors().size()) { - continue SKILLS; + continue BUFFS; } } - // Check non bad skill target. - if (!skill.isBad() && ((target == null) || !target.isPlayable())) + // Check buff target. + if ((target == null) || !target.isPlayable()) { final WorldObject savedTarget = target; player.setTarget(player); player.doCast(skill); player.setTarget(savedTarget); } - else if (isMageCaster(player)) + } + } + + SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + { + final Skill skill = player.getKnownSkill(skillId.intValue()); + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + continue SKILLS; + } + + // Already casting. + if (player.isCastingNow()) + { + break SKILLS; + } + + // Not an offensive skill. + if (!skill.isBad()) + { + continue SKILLS; + } + + // Casting on self stops movement. + final WorldObject target = player.getTarget(); + if (target == player) + { + continue SKILLS; + } + + // Check bad skill target. + if ((target == null) || !target.isAttackable()) + { + continue SKILLS; + } + + if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + { + if (isMageCaster(player)) { player.useMagic(skill, null, true, false); } 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 2f132f5f52..eec01dd74b 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 @@ -87,7 +87,7 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoSupplyItems().remove(itemId); - continue ITEMS; // TODO: break? + continue ITEMS; } final Item it = item.getItem(); @@ -133,8 +133,9 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoPotionItems().remove(itemId); - continue POTIONS; // TODO: break? + continue POTIONS; } + final int reuseDelay = item.getReuseDelay(); if ((reuseDelay <= 0) || (player.getItemRemainingReuseTime(item.getObjectId()) <= 0)) { @@ -150,35 +151,41 @@ public class AutoUseTaskManager if (Config.ENABLE_AUTO_BUFF && !player.isMoving()) { - SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + BUFFS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) { final Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { player.getAutoUseSettings().getAutoSkills().remove(skillId); - continue SKILLS; // TODO: break? + continue BUFFS; } - final WorldObject target = player.getTarget(); - // Casting on self stops movement. - if (target == player) + // Already casting. + if (player.isCastingNow()) { - continue SKILLS; + break BUFFS; } - // Check bad skill target. + + // Not a buff. if (skill.isBad()) { - if ((target == null) || !target.isAttackable()) - { - continue SKILLS; - } - } - // Fixes start area issue. - else if (isInPeaceZone) - { - continue SKILLS; + 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)) { // Summon check. @@ -186,7 +193,7 @@ public class AutoUseTaskManager { if (!player.hasServitors()) // Is this check truly needed? { - continue SKILLS; + continue BUFFS; } int occurrences = 0; for (Summon servitor : player.getServitors().values()) @@ -198,19 +205,58 @@ public class AutoUseTaskManager } if (occurrences == player.getServitors().size()) { - continue SKILLS; + continue BUFFS; } } - // Check non bad skill target. - if (!skill.isBad() && ((target == null) || !target.isPlayable())) + // Check buff target. + if ((target == null) || !target.isPlayable()) { final WorldObject savedTarget = target; player.setTarget(player); player.doCast(skill); player.setTarget(savedTarget); } - else if (isMageCaster(player)) + } + } + + SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + { + final Skill skill = player.getKnownSkill(skillId.intValue()); + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + continue SKILLS; + } + + // Already casting. + if (player.isCastingNow()) + { + break SKILLS; + } + + // Not an offensive skill. + if (!skill.isBad()) + { + continue SKILLS; + } + + // Casting on self stops movement. + final WorldObject target = player.getTarget(); + if (target == player) + { + continue SKILLS; + } + + // Check bad skill target. + if ((target == null) || !target.isAttackable()) + { + continue SKILLS; + } + + if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + { + if (isMageCaster(player)) { player.useMagic(skill, null, true, false); } 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 54fd32259e..f15ad658ab 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 @@ -86,7 +86,7 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoSupplyItems().remove(itemId); - continue ITEMS; // TODO: break? + continue ITEMS; } final Item it = item.getItem(); @@ -132,8 +132,9 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoPotionItems().remove(itemId); - continue POTIONS; // TODO: break? + continue POTIONS; } + final int reuseDelay = item.getReuseDelay(); if ((reuseDelay <= 0) || (player.getItemRemainingReuseTime(item.getObjectId()) <= 0)) { @@ -149,35 +150,41 @@ public class AutoUseTaskManager if (Config.ENABLE_AUTO_BUFF && !player.isMoving()) { - SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + BUFFS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) { final Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { player.getAutoUseSettings().getAutoSkills().remove(skillId); - continue SKILLS; // TODO: break? + continue BUFFS; } - final WorldObject target = player.getTarget(); - // Casting on self stops movement. - if (target == player) + // Already casting. + if (player.isCastingNow()) { - continue SKILLS; + break BUFFS; } - // Check bad skill target. + + // Not a buff. if (skill.isBad()) { - if ((target == null) || !target.isAttackable()) - { - continue SKILLS; - } - } - // Fixes start area issue. - else if (isInPeaceZone) - { - continue SKILLS; + 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)) { // Summon check. @@ -185,7 +192,7 @@ public class AutoUseTaskManager { if (!player.hasServitors()) // Is this check truly needed? { - continue SKILLS; + continue BUFFS; } int occurrences = 0; for (Summon servitor : player.getServitors().values()) @@ -197,19 +204,58 @@ public class AutoUseTaskManager } if (occurrences == player.getServitors().size()) { - continue SKILLS; + continue BUFFS; } } - // Check non bad skill target. - if (!skill.isBad() && ((target == null) || !target.isPlayable())) + // Check buff target. + if ((target == null) || !target.isPlayable()) { final WorldObject savedTarget = target; player.setTarget(player); player.doCast(skill); player.setTarget(savedTarget); } - else if (isMageCaster(player)) + } + } + + SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + { + final Skill skill = player.getKnownSkill(skillId.intValue()); + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + continue SKILLS; + } + + // Already casting. + if (player.isCastingNow()) + { + break SKILLS; + } + + // Not an offensive skill. + if (!skill.isBad()) + { + continue SKILLS; + } + + // Casting on self stops movement. + final WorldObject target = player.getTarget(); + if (target == player) + { + continue SKILLS; + } + + // Check bad skill target. + if ((target == null) || !target.isAttackable()) + { + continue SKILLS; + } + + if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + { + if (isMageCaster(player)) { player.useMagic(skill, null, true, false); } 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 54fd32259e..f15ad658ab 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 @@ -86,7 +86,7 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoSupplyItems().remove(itemId); - continue ITEMS; // TODO: break? + continue ITEMS; } final Item it = item.getItem(); @@ -132,8 +132,9 @@ public class AutoUseTaskManager if (item == null) { player.getAutoUseSettings().getAutoPotionItems().remove(itemId); - continue POTIONS; // TODO: break? + continue POTIONS; } + final int reuseDelay = item.getReuseDelay(); if ((reuseDelay <= 0) || (player.getItemRemainingReuseTime(item.getObjectId()) <= 0)) { @@ -149,35 +150,41 @@ public class AutoUseTaskManager if (Config.ENABLE_AUTO_BUFF && !player.isMoving()) { - SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + BUFFS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) { final Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { player.getAutoUseSettings().getAutoSkills().remove(skillId); - continue SKILLS; // TODO: break? + continue BUFFS; } - final WorldObject target = player.getTarget(); - // Casting on self stops movement. - if (target == player) + // Already casting. + if (player.isCastingNow()) { - continue SKILLS; + break BUFFS; } - // Check bad skill target. + + // Not a buff. if (skill.isBad()) { - if ((target == null) || !target.isAttackable()) - { - continue SKILLS; - } - } - // Fixes start area issue. - else if (isInPeaceZone) - { - continue SKILLS; + 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)) { // Summon check. @@ -185,7 +192,7 @@ public class AutoUseTaskManager { if (!player.hasServitors()) // Is this check truly needed? { - continue SKILLS; + continue BUFFS; } int occurrences = 0; for (Summon servitor : player.getServitors().values()) @@ -197,19 +204,58 @@ public class AutoUseTaskManager } if (occurrences == player.getServitors().size()) { - continue SKILLS; + continue BUFFS; } } - // Check non bad skill target. - if (!skill.isBad() && ((target == null) || !target.isPlayable())) + // Check buff target. + if ((target == null) || !target.isPlayable()) { final WorldObject savedTarget = target; player.setTarget(player); player.doCast(skill); player.setTarget(savedTarget); } - else if (isMageCaster(player)) + } + } + + SKILLS: for (Integer skillId : player.getAutoUseSettings().getAutoSkills()) + { + final Skill skill = player.getKnownSkill(skillId.intValue()); + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + continue SKILLS; + } + + // Already casting. + if (player.isCastingNow()) + { + break SKILLS; + } + + // Not an offensive skill. + if (!skill.isBad()) + { + continue SKILLS; + } + + // Casting on self stops movement. + final WorldObject target = player.getTarget(); + if (target == player) + { + continue SKILLS; + } + + // Check bad skill target. + if ((target == null) || !target.isAttackable()) + { + continue SKILLS; + } + + if (!player.hasSkillReuse(skill.getReuseHashCode()) && skill.checkCondition(player, target, false)) + { + if (isMageCaster(player)) { player.useMagic(skill, null, true, false); }