diff --git a/src/engine/mobileAI/MobAI.java b/src/engine/mobileAI/MobAI.java index 091766dd..df1c7581 100644 --- a/src/engine/mobileAI/MobAI.java +++ b/src/engine/mobileAI/MobAI.java @@ -619,6 +619,11 @@ public class MobAI { public static void DetermineAction(Mob mob) { try { + + if(mob.isSiege() || mob.isPet() || mob.isPlayerGuard()){ + SuperSimpleMobAI.run(mob); + return; + } boolean override = false; switch (mob.BehaviourType) { case GuardCaptain: diff --git a/src/engine/mobileAI/MobHandlers/SiegeHandler.java b/src/engine/mobileAI/MobHandlers/SiegeHandler.java index 2dc41f36..8d7dfdae 100644 --- a/src/engine/mobileAI/MobHandlers/SiegeHandler.java +++ b/src/engine/mobileAI/MobHandlers/SiegeHandler.java @@ -1,19 +1,44 @@ package engine.mobileAI.MobHandlers; import engine.Enum; +import engine.mobileAI.utilities.CombatUtilities; +import engine.objects.Building; import engine.objects.Mob; public class SiegeHandler { public static void run(Mob engine){ - if(!engine.isAlive()) + if(!engine.isAlive()) { + check_siege_respawn(engine); return; + } - if(engine.getOwner() == null || !engine.getOwner().isAlive()) + if(engine.getOwner() == null || !engine.getOwner().isAlive() || !engine.playerAgroMap.containsKey(engine.getOwner().getObjectUUID())) return; if(engine.combatTarget == null || !engine.combatTarget.getObjectType().equals(Enum.GameObjectType.Building)) return; + siege_attack(engine); + } + + public static void check_siege_respawn(Mob engine){ + if(!engine.despawned) { + engine.despawn(); + }else{ + if(engine.deathTime + (engine.spawnTime * 1000) > System.currentTimeMillis()){ + engine.respawn(); + } + } + } + + public static void siege_attack(Mob engine){ + if(engine.getLastAttackTime() > System.currentTimeMillis()) + return; + + if(CombatUtilities.inRangeToAttack(engine,engine.combatTarget)){ + CombatUtilities.combatCycle(engine, engine.combatTarget, true, null); + engine.setLastAttackTime(System.currentTimeMillis() + 11000); + } } } diff --git a/src/engine/mobileAI/SuperSimpleMobAI.java b/src/engine/mobileAI/SuperSimpleMobAI.java index e18b34c2..dd04d436 100644 --- a/src/engine/mobileAI/SuperSimpleMobAI.java +++ b/src/engine/mobileAI/SuperSimpleMobAI.java @@ -12,18 +12,14 @@ public class SuperSimpleMobAI { if(mob.isPet() && !mob.isSiege()) { PetHandler.run(mob); return; - } - if (mob.isSiege()) { + }else if (mob.isSiege()) { SiegeHandler.run(mob); return; - } - if(mob.isPlayerGuard()){ + }else if(mob.isPlayerGuard()){ PlayerGuardHandler.run(mob); return; + }else { + MobHandler.run(mob); } - MobHandler.run(mob); } - - //##generic methods for all mobs - }