diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } } diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/SummonAI.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/SummonAI.java index 541ea37f21..ba0715d3b9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/SummonAI.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/ai/SummonAI.java @@ -225,7 +225,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -240,7 +240,7 @@ public class SummonAI extends PlayableAI implements Runnable if (_isDefending) { - defendAttack(attacker); + allServitorsDefend(attacker); } else { @@ -248,6 +248,19 @@ public class SummonAI extends PlayableAI implements Runnable } } + private void allServitorsDefend(Creature attacker) + { + final Creature Owner = getActor().getOwner(); + if ((Owner != null) && Owner.getActingPlayer().hasServitors()) + { + Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); + } + else + { + defendAttack(attacker); + } + } + private void avoidAttack(Creature attacker) { // Don't move while casting. It breaks casting animation, but still casts the skill... looks so bugged. @@ -273,9 +286,9 @@ public class SummonAI extends PlayableAI implements Runnable } final Summon summon = getActor(); - if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false) && summon.getOwner().isInsideRadius3D(_actor, 2 * AVOID_RADIUS)) + if ((summon.getOwner() != null) && (summon.getOwner() != attacker) && !summon.isMoving() && summon.canAttack(attacker, false)) { - summon.doAutoAttack(attacker); + summon.doAttack(attacker); } }