|
|
@ -998,30 +998,22 @@ public class MobAI { |
|
|
|
public static void GuardMinionLogic(Mob mob) { |
|
|
|
public static void GuardMinionLogic(Mob mob) { |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
try { |
|
|
|
if (!mob.guardCaptain.isAlive()) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mob.getCombatTarget() == null) { |
|
|
|
if (mob.getCombatTarget() == null) |
|
|
|
CheckForPlayerGuardAggro(mob); |
|
|
|
CheckForPlayerGuardAggro(mob); |
|
|
|
} else { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AbstractWorldObject newTarget = ChangeTargetFromHateValue(mob); |
|
|
|
AbstractWorldObject newTarget = ChangeTargetFromHateValue(mob); |
|
|
|
|
|
|
|
|
|
|
|
if (newTarget != null) { |
|
|
|
if (newTarget != null) { |
|
|
|
|
|
|
|
|
|
|
|
if (newTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)) { |
|
|
|
if (newTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)) { |
|
|
|
if (GuardCanAggro(mob, (PlayerCharacter) newTarget)) |
|
|
|
if (GuardCanAggro(mob, (PlayerCharacter) newTarget)) |
|
|
|
mob.setCombatTarget(newTarget); |
|
|
|
mob.setCombatTarget(newTarget); |
|
|
|
} else |
|
|
|
} else |
|
|
|
mob.setCombatTarget(newTarget); |
|
|
|
mob.setCombatTarget(newTarget); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}else { |
|
|
|
|
|
|
|
if (mob.guardCaptain.getCombatTarget() != null) |
|
|
|
|
|
|
|
mob.setCombatTarget(mob.guardCaptain.getCombatTarget()); |
|
|
|
|
|
|
|
else if (mob.getCombatTarget() != null) |
|
|
|
|
|
|
|
mob.setCombatTarget(null); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CheckMobMovement(mob); |
|
|
|
CheckMobMovement(mob); |
|
|
|
CheckForAttack(mob); |
|
|
|
CheckForAttack(mob); |
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
@ -1140,6 +1132,15 @@ public class MobAI { |
|
|
|
if (!mob.isAlive()) |
|
|
|
if (!mob.isAlive()) |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Defer to captain if possible for current target
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mob.agentType.equals(Enum.AIAgentType.GUARDMINION) && |
|
|
|
|
|
|
|
mob.combatTarget == null && mob.guardCaptain.isAlive() |
|
|
|
|
|
|
|
&& mob.guardCaptain.combatTarget != null) { |
|
|
|
|
|
|
|
mob.setCombatTarget(mob.guardCaptain.combatTarget); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ConcurrentHashMap<Integer, Float> loadedPlayers = mob.playerAgroMap; |
|
|
|
ConcurrentHashMap<Integer, Float> loadedPlayers = mob.playerAgroMap; |
|
|
|
|
|
|
|
|
|
|
|
for (Entry playerEntry : loadedPlayers.entrySet()) { |
|
|
|
for (Entry playerEntry : loadedPlayers.entrySet()) { |
|
|
|