| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -439,7 +439,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                msg.setUnknown04(2); | 
					 | 
					 | 
					 | 
					                msg.setUnknown04(2); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                PowersManager.finishUseMobPower(msg, mob, 0, 0); | 
					 | 
					 | 
					 | 
					                PowersManager.finishUseMobPower(msg, mob, 0, 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                long randomCooldown = (long)((ThreadLocalRandom.current().nextInt(10,15) * 1000) * MobAIThread.AI_CAST_FREQUENCY); | 
					 | 
					 | 
					 | 
					                long randomCooldown = (long) ((ThreadLocalRandom.current().nextInt(10, 15) * 1000) * MobAIThread.AI_CAST_FREQUENCY); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                mob.nextCastTime = System.currentTimeMillis() + randomCooldown; | 
					 | 
					 | 
					 | 
					                mob.nextCastTime = System.currentTimeMillis() + randomCooldown; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return true; | 
					 | 
					 | 
					 | 
					                return true; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -575,7 +575,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            //no players loaded, no need to proceed
 | 
					 | 
					 | 
					 | 
					            //no players loaded, no need to proceed
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.playerAgroMap.isEmpty()) { | 
					 | 
					 | 
					 | 
					            if (mob.playerAgroMap.isEmpty()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if(mob.getCombatTarget() != null) | 
					 | 
					 | 
					 | 
					                if (mob.getCombatTarget() != null) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    mob.setCombatTarget(null); | 
					 | 
					 | 
					 | 
					                    mob.setCombatTarget(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -722,16 +722,16 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                case Pet1: | 
					 | 
					 | 
					 | 
					                case Pet1: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if ((PlayerCharacter) mob.guardCaptain == null) | 
					 | 
					 | 
					 | 
					                    if (mob.guardCaptain == null) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        return; | 
					 | 
					 | 
					 | 
					                        return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (!mob.playerAgroMap.containsKey(((PlayerCharacter) mob.guardCaptain).getObjectUUID())) { | 
					 | 
					 | 
					 | 
					                    if (!mob.playerAgroMap.containsKey(mob.guardCaptain.getObjectUUID())) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        //mob no longer has its owner loaded, translocate pet to owner
 | 
					 | 
					 | 
					 | 
					                        //mob no longer has its owner loaded, translocate pet to owner
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        MovementManager.translocate(mob, ((PlayerCharacter) mob.guardCaptain).getLoc(), null); | 
					 | 
					 | 
					 | 
					                        MovementManager.translocate(mob, mob.guardCaptain.getLoc(), null); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        return; | 
					 | 
					 | 
					 | 
					                        return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (mob.getCombatTarget() == null) { | 
					 | 
					 | 
					 | 
					                    if (mob.getCombatTarget() == null) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -739,11 +739,11 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        //move back to owner
 | 
					 | 
					 | 
					 | 
					                        //move back to owner
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        if (CombatUtilities.inRange2D(mob, (PlayerCharacter) mob.guardCaptain, 6)) | 
					 | 
					 | 
					 | 
					                        if (CombatUtilities.inRange2D(mob, mob.guardCaptain, 6)) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            return; | 
					 | 
					 | 
					 | 
					                            return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        mob.destination = ((PlayerCharacter) mob.guardCaptain).getLoc(); | 
					 | 
					 | 
					 | 
					                        mob.destination = mob.guardCaptain.getLoc(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        MovementUtilities.moveToLocation(mob, mob.destination, 5); | 
					 | 
					 | 
					 | 
					                        MovementUtilities.moveToLocation(mob, mob.destination, 5); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } else | 
					 | 
					 | 
					 | 
					                    } else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        chaseTarget(mob); | 
					 | 
					 | 
					 | 
					                        chaseTarget(mob); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -893,7 +893,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                mob.setCombatTarget(null); | 
					 | 
					 | 
					 | 
					                mob.setCombatTarget(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for (Integer playerEntry : mob.playerAgroMap.keySet()) | 
					 | 
					 | 
					 | 
					                for (Integer playerEntry : mob.playerAgroMap.keySet()) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    mob.playerAgroMap.put(playerEntry,0f); | 
					 | 
					 | 
					 | 
					                    mob.playerAgroMap.put(playerEntry, 0f); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: CheckToSendMobHome" + " " + e.getMessage()); | 
					 | 
					 | 
					 | 
					            Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: CheckToSendMobHome" + " " + e.getMessage()); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -907,7 +907,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            float rangeSquared = mob.getRange() * mob.getRange(); | 
					 | 
					 | 
					 | 
					            float rangeSquared = mob.getRange() * mob.getRange(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            float distanceSquared = mob.getLoc().distanceSquared2D(mob.getCombatTarget().getLoc()); | 
					 | 
					 | 
					 | 
					            float distanceSquared = mob.getLoc().distanceSquared2D(mob.getCombatTarget().getLoc()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if(mob.isMoving() == true && distanceSquared < rangeSquared - 50) { | 
					 | 
					 | 
					 | 
					            if (mob.isMoving() == true && distanceSquared < rangeSquared - 50) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                mob.destination = mob.getLoc(); | 
					 | 
					 | 
					 | 
					                mob.destination = mob.getLoc(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                MovementUtilities.moveToLocation(mob, mob.destination, 0); | 
					 | 
					 | 
					 | 
					                MovementUtilities.moveToLocation(mob, mob.destination, 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } else if (CombatUtilities.inRange2D(mob, mob.getCombatTarget(), mob.getRange()) == false) { | 
					 | 
					 | 
					 | 
					            } else if (CombatUtilities.inRange2D(mob, mob.getCombatTarget(), mob.getRange()) == false) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1135,7 +1135,7 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            // Defer to captain if possible for current target
 | 
					 | 
					 | 
					 | 
					            // Defer to captain if possible for current target
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.agentType.equals(Enum.AIAgentType.GUARDMINION) && | 
					 | 
					 | 
					 | 
					            if (mob.agentType.equals(Enum.AIAgentType.GUARDMINION) && | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    mob.combatTarget == null && mob.guardCaptain.isAlive() | 
					 | 
					 | 
					 | 
					                    mob.guardCaptain.isAlive() | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    && mob.guardCaptain.combatTarget != null) { | 
					 | 
					 | 
					 | 
					                    && mob.guardCaptain.combatTarget != null) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                mob.setCombatTarget(mob.guardCaptain.combatTarget); | 
					 | 
					 | 
					 | 
					                mob.setCombatTarget(mob.guardCaptain.combatTarget); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                return; | 
					 | 
					 | 
					 | 
					                return; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |