|  |  | @ -467,6 +467,9 @@ public class MobileFSM { | 
			
		
	
		
		
			
				
					
					|  |  |  |         //checks if mob can attack based on attack timer and range
 |  |  |  |         //checks if mob can attack based on attack timer and range
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.isAlive() == false) |  |  |  |         if (mob.isAlive() == false) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if(mob.getCombatTarget() == null){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.getCombatTarget().getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && MovementUtilities.inRangeDropAggro(mob, (PlayerCharacter)mob.getCombatTarget()) == false) { |  |  |  |         if (mob.getCombatTarget().getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && MovementUtilities.inRangeDropAggro(mob, (PlayerCharacter)mob.getCombatTarget()) == false) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             mob.setCombatTarget(null); |  |  |  |             mob.setCombatTarget(null); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (mob.isCombat()) { |  |  |  |             if (mob.isCombat()) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -560,8 +563,7 @@ public class MobileFSM { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.getCombatTarget() == null) |  |  |  |         if (mob.getCombatTarget() == null) | 
			
		
	
		
		
			
				
					
					|  |  |  |             CheckForPlayerGuardAggro(mob); |  |  |  |             CheckForPlayerGuardAggro(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |         CheckMobMovement(mob); |  |  |  |         CheckMobMovement(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.getCombatTarget() != null) |  |  |  |         CheckForAttack(mob); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             CheckForAttack(mob); |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static void GuardMinionLogic(Mob mob) { |  |  |  |     public static void GuardMinionLogic(Mob mob) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!mob.npcOwner.isAlive() && mob.getCombatTarget() == null) { |  |  |  |         if (!mob.npcOwner.isAlive() && mob.getCombatTarget() == null) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -572,8 +574,7 @@ public class MobileFSM { | 
			
		
	
		
		
			
				
					
					|  |  |  |          else |  |  |  |          else | 
			
		
	
		
		
			
				
					
					|  |  |  |             mob.setCombatTarget(null); |  |  |  |             mob.setCombatTarget(null); | 
			
		
	
		
		
			
				
					
					|  |  |  |         CheckMobMovement(mob); |  |  |  |         CheckMobMovement(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.getCombatTarget() != null) |  |  |  |         CheckForAttack(mob); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             CheckForAttack(mob); |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static void GuardWallArcherLogic(Mob mob) { |  |  |  |     public static void GuardWallArcherLogic(Mob mob) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.getCombatTarget() == null) |  |  |  |         if (mob.getCombatTarget() == null) | 
			
		
	
	
		
		
			
				
					|  |  | @ -586,7 +587,6 @@ public class MobileFSM { | 
			
		
	
		
		
			
				
					
					|  |  |  |             mob.setCombatTarget(null); |  |  |  |             mob.setCombatTarget(null); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (MovementUtilities.canMove(mob) && mob.BehaviourType.canRoam) |  |  |  |         if (MovementUtilities.canMove(mob) && mob.BehaviourType.canRoam) | 
			
		
	
		
		
			
				
					
					|  |  |  |             CheckMobMovement(mob); |  |  |  |             CheckMobMovement(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.getCombatTarget() != null) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             CheckForAttack(mob); |  |  |  |             CheckForAttack(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static void HamletGuardLogic(Mob mob) { |  |  |  |     private static void HamletGuardLogic(Mob mob) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -598,7 +598,6 @@ public class MobileFSM { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 SafeGuardAggro(mob); |  |  |  |                 SafeGuardAggro(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.getCombatTarget() != null) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             CheckForAttack(mob); |  |  |  |             CheckForAttack(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static void DefaultLogic(Mob mob) { |  |  |  |     private static void DefaultLogic(Mob mob) { | 
			
		
	
	
		
		
			
				
					|  |  | 
 |