diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java index ac9e996c2a..fd3b7a50f9 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5477,7 +5477,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java index c120bac554..cbe5ecaca9 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5479,7 +5479,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java index 84ac0dd39d..f36a33500b 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5481,7 +5481,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java index b561307b65..3d075dd43d 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5477,7 +5477,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java index d25123ff99..d9901377ed 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5493,7 +5493,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java index 9d7f29fbce..1ef427df42 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5493,7 +5493,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java index f0c02fe9d0..598f9103e1 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5494,7 +5494,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java index 81995ee3a3..871003c4d5 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5459,7 +5459,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index ae4c857fdf..dcf895f715 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java index 657cd518e7..16187cc5d8 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5503,7 +5503,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index ae4c857fdf..dcf895f715 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java index 73063e793a..7886880412 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5520,7 +5520,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index ae4c857fdf..dcf895f715 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java index 68278100b4..8406f5e9c9 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5553,7 +5553,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index ae4c857fdf..dcf895f715 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java index 68278100b4..8406f5e9c9 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5553,7 +5553,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index ae4c857fdf..dcf895f715 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java index 376c57cd03..d7881acc13 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5454,7 +5454,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java index 45ee92dfe0..f30a43275e 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5454,7 +5454,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java index 2066d892f7..23332666b5 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5439,7 +5439,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java index fb87bd4b9a..540aaea536 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5453,7 +5453,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java index cdd1b2bfcb..fc2081df3b 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5453,7 +5453,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java index 5dc0aa1fe8..a38f472e72 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5408,7 +5408,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index ae4c857fdf..dcf895f715 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -26,6 +26,7 @@ import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -80,6 +81,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { 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 8d78b021a8..5288c0930d 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 @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java index cd916db855..8481d9eab1 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5435,7 +5435,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java index 7045e61297..db1cdce58c 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5492,7 +5492,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index aa92562385..b3394e772e 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java index f537bdf2be..a141380dd1 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5533,7 +5533,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index aa92562385..b3394e772e 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { 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 8d78b021a8..5288c0930d 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 @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java index d269b604cd..262a64a2fd 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5539,7 +5539,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index aa92562385..b3394e772e 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java index d269b604cd..262a64a2fd 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -5539,7 +5539,6 @@ public class Player extends Playable { final List summons = new ArrayList<>(); summons.addAll(getServitors().values()); - if (_pet != null) { summons.add(_pet); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java index aa92562385..b3394e772e 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/network/clientpackets/autoplay/ExRequestActivateAutoShortcut.java @@ -22,6 +22,7 @@ import org.l2jmobius.gameserver.enums.ShortcutType; import org.l2jmobius.gameserver.model.ShortCuts; import org.l2jmobius.gameserver.model.Shortcut; import org.l2jmobius.gameserver.model.actor.Player; +import org.l2jmobius.gameserver.model.actor.Summon; import org.l2jmobius.gameserver.model.item.instance.Item; import org.l2jmobius.gameserver.model.skill.Skill; import org.l2jmobius.gameserver.network.GameClient; @@ -76,6 +77,24 @@ public class ExRequestActivateAutoShortcut implements IClientIncomingPacket if (shortcut.getType() == ShortcutType.SKILL) { skill = player.getKnownSkill(shortcut.getId()); + if (skill == null) + { + if (player.hasServitors()) + { + for (Summon summon : player.getServitors().values()) + { + skill = summon.getKnownSkill(shortcut.getId()); + if (skill != null) + { + break; + } + } + } + if ((skill == null) && player.hasPet()) + { + skill = player.getPet().getKnownSkill(shortcut.getId()); + } + } } else { diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java index 8d78b021a8..5288c0930d 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/taskmanager/AutoUseTaskManager.java @@ -184,27 +184,50 @@ public class AutoUseTaskManager implements Runnable break BUFFS; } - final Skill skill = player.getKnownSkill(skillId.intValue()); + Playable pet = null; + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoBuffs().remove(skillId); - continue BUFFS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoBuffs().remove(skillId); + continue BUFFS; + } } final WorldObject target = player.getTarget(); if (canCastBuff(player, target, skill)) { + final Playable caster = pet != null ? pet : player; + // Playable target cast. if ((target != null) && target.isPlayable() && !((Playable) target).isAlikeDead() && (target.getActingPlayer().getPvpFlag() == 0) && (target.getActingPlayer().getReputation() >= 0)) { - player.doCast(skill); + caster.doCast(skill); } else // Target self, cast and re-target. { final WorldObject savedTarget = target; - player.setTarget(player); - player.doCast(skill); - player.setTarget(savedTarget); + caster.setTarget(caster); + caster.doCast(skill); + caster.setTarget(savedTarget); } } } @@ -230,13 +253,34 @@ public class AutoUseTaskManager implements Runnable } // Acquire next skill. + Playable pet = null; final Integer skillId = player.getAutoUseSettings().getNextSkillId(); - final Skill skill = player.getKnownSkill(skillId.intValue()); + Skill skill = player.getKnownSkill(skillId.intValue()); if (skill == null) { - player.getAutoUseSettings().getAutoSkills().remove(skillId); - player.getAutoUseSettings().resetSkillOrder(); - break SKILLS; + if (player.hasServitors()) + { + SUMMON_SEARCH: for (Summon summon : player.getServitors().values()) + { + pet = summon; + skill = summon.getKnownSkill(skillId.intValue()); + if (skill != null) + { + break SUMMON_SEARCH; + } + } + } + if ((skill == null) && player.hasPet()) + { + pet = player.getPet(); + skill = pet.getKnownSkill(skillId.intValue()); + } + if (skill == null) + { + player.getAutoUseSettings().getAutoSkills().remove(skillId); + player.getAutoUseSettings().resetSkillOrder(); + break SKILLS; + } } // Casting on self stops movement. @@ -258,7 +302,7 @@ public class AutoUseTaskManager implements Runnable break SKILLS; } - if (!canUseMagic(player, target, skill) || player.useMagic(skill, null, true, false)) + if (!canUseMagic(player, target, skill) || (pet != null ? pet : player).useMagic(skill, null, true, false)) { player.getAutoUseSettings().incrementSkillOrder(); }