| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -96,7 +96,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.callsForHelp) | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.callsForHelp) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                MobCallForHelp(mob); | 
					 | 
					 | 
					 | 
					                MobCallForHelp(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (!MovementUtilities.inRangeDropAggro(mob, target)) { | 
					 | 
					 | 
					 | 
					            if (!MovementUtilities.inRangeDropAggro(mob, target)) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -165,7 +165,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (playercity != null) | 
					 | 
					 | 
					 | 
					            if (playercity != null) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for (Mob guard : playercity.getParent().zoneMobSet) | 
					 | 
					 | 
					 | 
					                for (Mob guard : playercity.getParent().zoneMobSet) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (guard.BehaviourType != null && guard.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) | 
					 | 
					 | 
					 | 
					                    if (guard.behaviourType != null && guard.behaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        if (guard.getCombatTarget() == null && !guard.getGuild().equals(mob.getGuild())) | 
					 | 
					 | 
					 | 
					                        if (guard.getCombatTarget() == null && !guard.getGuild().equals(mob.getGuild())) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            guard.setCombatTarget(mob); | 
					 | 
					 | 
					 | 
					                            guard.setCombatTarget(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -260,7 +260,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            //guard captains inherit barracks patrol points dynamically
 | 
					 | 
					 | 
					 | 
					            //guard captains inherit barracks patrol points dynamically
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) { | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                Building barracks = mob.building; | 
					 | 
					 | 
					 | 
					                Building barracks = mob.building; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -280,7 +280,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for (Entry<Mob, Integer> minion : mob.siegeMinionMap.entrySet()) | 
					 | 
					 | 
					 | 
					                for (Entry<Mob, Integer> minion : mob.siegeMinionMap.entrySet()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -312,7 +312,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                int contractID; | 
					 | 
					 | 
					 | 
					                int contractID; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if(mob.BehaviourType.equals(Enum.MobBehaviourType.GuardMinion)) | 
					 | 
					 | 
					 | 
					                if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardMinion)) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    contractID = mob.npcOwner.contract.getContractID(); | 
					 | 
					 | 
					 | 
					                    contractID = mob.npcOwner.contract.getContractID(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                else | 
					 | 
					 | 
					 | 
					                else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    contractID = mob.contract.getContractID(); | 
					 | 
					 | 
					 | 
					                    contractID = mob.contract.getContractID(); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -350,7 +350,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            ArrayList<Integer> purgeTokens; | 
					 | 
					 | 
					 | 
					            ArrayList<Integer> purgeTokens; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            AbstractCharacter target = (AbstractCharacter) mob.getCombatTarget(); | 
					 | 
					 | 
					 | 
					            AbstractCharacter target = (AbstractCharacter) mob.getCombatTarget(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.callsForHelp) | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.callsForHelp) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                MobCallForHelp(mob); | 
					 | 
					 | 
					 | 
					                MobCallForHelp(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            // Generate a list of tokens from the mob powers for this mobile.
 | 
					 | 
					 | 
					 | 
					            // Generate a list of tokens from the mob powers for this mobile.
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -433,7 +433,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            ArrayList<Integer> purgeTokens; | 
					 | 
					 | 
					 | 
					            ArrayList<Integer> purgeTokens; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            AbstractCharacter target = (AbstractCharacter) mob.getCombatTarget(); | 
					 | 
					 | 
					 | 
					            AbstractCharacter target = (AbstractCharacter) mob.getCombatTarget(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.callsForHelp) | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.callsForHelp) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                MobCallForHelp(mob); | 
					 | 
					 | 
					 | 
					                MobCallForHelp(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            // Generate a list of tokens from the mob powers for this mobile.
 | 
					 | 
					 | 
					 | 
					            // Generate a list of tokens from the mob powers for this mobile.
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -564,7 +564,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Zone mobCamp = mob.getParentZone(); | 
					 | 
					 | 
					 | 
					            Zone mobCamp = mob.getParentZone(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            for (Mob helper : mobCamp.zoneMobSet) { | 
					 | 
					 | 
					 | 
					            for (Mob helper : mobCamp.zoneMobSet) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (helper.BehaviourType.respondsToCallForHelp && helper.BehaviourType.BehaviourHelperType.equals(mob.BehaviourType)) { | 
					 | 
					 | 
					 | 
					                if (helper.behaviourType.respondsToCallForHelp && helper.behaviourType.BehaviourHelperType.equals(mob.behaviourType)) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    helper.setCombatTarget(mob.getCombatTarget()); | 
					 | 
					 | 
					 | 
					                    helper.setCombatTarget(mob.getCombatTarget()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    callGotResponse = true; | 
					 | 
					 | 
					 | 
					                    callGotResponse = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -608,7 +608,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.despawned && mob.isPlayerGuard) { | 
					 | 
					 | 
					 | 
					            if (mob.despawned && mob.isPlayerGuard) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (mob.BehaviourType.equals(Enum.MobBehaviourType.GuardMinion)) { | 
					 | 
					 | 
					 | 
					                if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardMinion)) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (mob.npcOwner.isAlive() == false || ((Mob) mob.npcOwner).despawned == true) { | 
					 | 
					 | 
					 | 
					                    if (mob.npcOwner.isAlive() == false || ((Mob) mob.npcOwner).despawned == true) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        //minions don't respawn while guard captain is dead
 | 
					 | 
					 | 
					 | 
					                        //minions don't respawn while guard captain is dead
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -625,7 +625,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                //check to send mob home for player guards to prevent exploit of dragging guards away and then teleporting
 | 
					 | 
					 | 
					 | 
					                //check to send mob home for player guards to prevent exploit of dragging guards away and then teleporting
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (mob.BehaviourType.equals(Enum.MobBehaviourType.Pet1) == false) | 
					 | 
					 | 
					 | 
					                if (mob.behaviourType.equals(Enum.MobBehaviourType.Pet1) == false) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    CheckToSendMobHome(mob); | 
					 | 
					 | 
					 | 
					                    CheckToSendMobHome(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -646,7 +646,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.equals(Enum.MobBehaviourType.Pet1) == false) | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.equals(Enum.MobBehaviourType.Pet1) == false) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                CheckToSendMobHome(mob); | 
					 | 
					 | 
					 | 
					                CheckToSendMobHome(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.getCombatTarget() != null) { | 
					 | 
					 | 
					 | 
					            if (mob.getCombatTarget() != null) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -673,7 +673,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            switch (mob.BehaviourType) { | 
					 | 
					 | 
					 | 
					            switch (mob.behaviourType) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                case GuardCaptain: | 
					 | 
					 | 
					 | 
					                case GuardCaptain: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    GuardCaptainLogic(mob); | 
					 | 
					 | 
					 | 
					                    GuardCaptainLogic(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    break; | 
					 | 
					 | 
					 | 
					                    break; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -782,7 +782,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            mob.updateLocation(); | 
					 | 
					 | 
					 | 
					            mob.updateLocation(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            switch (mob.BehaviourType) { | 
					 | 
					 | 
					 | 
					            switch (mob.behaviourType) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                case Pet1: | 
					 | 
					 | 
					 | 
					                case Pet1: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (mob.getOwner() == null) | 
					 | 
					 | 
					 | 
					                    if (mob.getOwner() == null) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -894,7 +894,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					                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.BehaviourType.equals(Enum.MobBehaviourType.Pet1) == false) { | 
					 | 
					 | 
					 | 
					                    mob.behaviourType.equals(Enum.MobBehaviourType.Pet1) == false) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                mob.setCombatTarget(null); | 
					 | 
					 | 
					 | 
					                mob.setCombatTarget(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -910,10 +910,10 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    private static void CheckToSendMobHome(Mob mob) { | 
					 | 
					 | 
					 | 
					    private static void CheckToSendMobHome(Mob mob) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        try { | 
					 | 
					 | 
					 | 
					        try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.isAgressive) { | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.isAgressive) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (mob.isPlayerGuard()) { | 
					 | 
					 | 
					 | 
					                if (mob.isPlayerGuard()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (mob.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) | 
					 | 
					 | 
					 | 
					                    if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        CheckForPlayerGuardAggro(mob); | 
					 | 
					 | 
					 | 
					                        CheckForPlayerGuardAggro(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } else { | 
					 | 
					 | 
					 | 
					                } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    CheckForAggro(mob); | 
					 | 
					 | 
					 | 
					                    CheckForAggro(mob); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -933,7 +933,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    PowersManager.useMobPower(mob, mob, recall, 40); | 
					 | 
					 | 
					 | 
					                    PowersManager.useMobPower(mob, mob, recall, 40); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    mob.setCombatTarget(null); | 
					 | 
					 | 
					 | 
					                    mob.setCombatTarget(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (mob.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain) && mob.isAlive()) { | 
					 | 
					 | 
					 | 
					                    if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardCaptain) && mob.isAlive()) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        //guard captain pulls his minions home with him
 | 
					 | 
					 | 
					 | 
					                        //guard captain pulls his minions home with him
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1014,7 +1014,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if ((aggroMob.agentType.equals(Enum.AIAgentType.GUARD))) | 
					 | 
					 | 
					 | 
					                if ((aggroMob.agentType.equals(Enum.AIAgentType.GUARD))) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    continue; | 
					 | 
					 | 
					 | 
					                    continue; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (aggroMob.BehaviourType.equals(Enum.MobBehaviourType.Pet1)) | 
					 | 
					 | 
					 | 
					                if (aggroMob.behaviourType.equals(Enum.MobBehaviourType.Pet1)) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    continue; | 
					 | 
					 | 
					 | 
					                    continue; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (mob.getLoc().distanceSquared2D(aggroMob.getLoc()) > sqr(50)) | 
					 | 
					 | 
					 | 
					                if (mob.getLoc().distanceSquared2D(aggroMob.getLoc()) > sqr(50)) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1107,7 +1107,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (ZoneManager.getSeaFloor().zoneMobSet.contains(mob)) | 
					 | 
					 | 
					 | 
					                if (ZoneManager.getSeaFloor().zoneMobSet.contains(mob)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    mob.killCharacter("no owner"); | 
					 | 
					 | 
					 | 
					                    mob.killCharacter("no owner"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (MovementUtilities.canMove(mob) && mob.BehaviourType.canRoam) | 
					 | 
					 | 
					 | 
					            if (MovementUtilities.canMove(mob) && mob.behaviourType.canRoam) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                CheckMobMovement(mob); | 
					 | 
					 | 
					 | 
					                CheckMobMovement(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            CheckForAttack(mob); | 
					 | 
					 | 
					 | 
					            CheckForAttack(mob); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1157,7 +1157,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.getCombatTarget() != null && mob.playerAgroMap.containsKey(mob.getCombatTarget().getObjectUUID()) == false) | 
					 | 
					 | 
					 | 
					            if (mob.getCombatTarget() != null && mob.playerAgroMap.containsKey(mob.getCombatTarget().getObjectUUID()) == false) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                mob.setCombatTarget(null); | 
					 | 
					 | 
					 | 
					                mob.setCombatTarget(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.isAgressive) { | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.isAgressive) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                AbstractWorldObject newTarget = ChangeTargetFromHateValue(mob); | 
					 | 
					 | 
					 | 
					                AbstractWorldObject newTarget = ChangeTargetFromHateValue(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1165,7 +1165,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    mob.setCombatTarget(newTarget); | 
					 | 
					 | 
					 | 
					                    mob.setCombatTarget(newTarget); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                else { | 
					 | 
					 | 
					 | 
					                else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (mob.getCombatTarget() == null) { | 
					 | 
					 | 
					 | 
					                    if (mob.getCombatTarget() == null) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        if (mob.BehaviourType == Enum.MobBehaviourType.HamletGuard) | 
					 | 
					 | 
					 | 
					                        if (mob.behaviourType == Enum.MobBehaviourType.HamletGuard) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            SafeGuardAggro(mob);  //safehold guard
 | 
					 | 
					 | 
					 | 
					                            SafeGuardAggro(mob);  //safehold guard
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        else | 
					 | 
					 | 
					 | 
					                        else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            CheckForAggro(mob);   //normal aggro
 | 
					 | 
					 | 
					 | 
					                            CheckForAggro(mob);   //normal aggro
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1175,12 +1175,12 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            //check if mob can move for patrol or moving to target
 | 
					 | 
					 | 
					 | 
					            //check if mob can move for patrol or moving to target
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.canRoam) | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.canRoam) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                CheckMobMovement(mob); | 
					 | 
					 | 
					 | 
					                CheckMobMovement(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            //check if mob can attack if it isn't wimpy
 | 
					 | 
					 | 
					 | 
					            //check if mob can attack if it isn't wimpy
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (!mob.BehaviourType.isWimpy && mob.getCombatTarget() != null) | 
					 | 
					 | 
					 | 
					            if (!mob.behaviourType.isWimpy && mob.getCombatTarget() != null) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                CheckForAttack(mob); | 
					 | 
					 | 
					 | 
					                CheckForAttack(mob); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1245,7 +1245,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.getGuild().getNation().equals(target.getGuild().getNation())) | 
					 | 
					 | 
					 | 
					            if (mob.getGuild().getNation().equals(target.getGuild().getNation())) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return false; | 
					 | 
					 | 
					 | 
					                return false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.equals(Enum.MobBehaviourType.GuardMinion)) { | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardMinion)) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (((Mob) mob.npcOwner).building.getCity().cityOutlaws.contains(target.getObjectUUID()) == true) { | 
					 | 
					 | 
					 | 
					                if (((Mob) mob.npcOwner).building.getCity().cityOutlaws.contains(target.getObjectUUID()) == true) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    return true; | 
					 | 
					 | 
					 | 
					                    return true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1330,7 +1330,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) { | 
					 | 
					 | 
					 | 
					            if (mob.behaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for (Entry<Mob, Integer> minion : mob.siegeMinionMap.entrySet()) { | 
					 | 
					 | 
					 | 
					                for (Entry<Mob, Integer> minion : mob.siegeMinionMap.entrySet()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |