| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -288,18 +288,22 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.agentType.equals(Enum.AIAgentType.GUARDCAPTAIN)) | 
					 | 
					 | 
					 | 
					            if (mob.agentType.equals(Enum.AIAgentType.GUARDCAPTAIN)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for (Entry<Mob, Integer> minion : mob.siegeMinionMap.entrySet()) | 
					 | 
					 | 
					 | 
					                for (Integer minionUUUD : mob.minions) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    Mob minion = Mob.getMob(minionUUUD); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (minion.getKey().despawned == false) { | 
					 | 
					 | 
					 | 
					                    if (minion.despawned == false) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        if (MovementUtilities.canMove(minion.getKey())) { | 
					 | 
					 | 
					 | 
					                        if (MovementUtilities.canMove(minion)) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            Vector3f minionOffset = Formation.getOffset(2, minion.getValue() + 3); | 
					 | 
					 | 
					 | 
					                            Vector3f minionOffset = Formation.getOffset(2, mob.minions.indexOf(minionUUUD) + 3); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            minion.getKey().updateLocation(); | 
					 | 
					 | 
					 | 
					                            minion.updateLocation(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            Vector3fImmutable formationPatrolPoint = new Vector3fImmutable(mob.destination.x + minionOffset.x, mob.destination.y, mob.destination.z + minionOffset.z); | 
					 | 
					 | 
					 | 
					                            Vector3fImmutable formationPatrolPoint = new Vector3fImmutable(mob.destination.x + minionOffset.x, mob.destination.y, mob.destination.z + minionOffset.z); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            MovementUtilities.aiMove(minion.getKey(), formationPatrolPoint, true); | 
					 | 
					 | 
					 | 
					                            MovementUtilities.aiMove(minion, formationPatrolPoint, true); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
					 | 
					 | 
					 | 
					        } catch (Exception e) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: AttackTarget" + " " + e.getMessage()); | 
					 | 
					 | 
					 | 
					            Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: AttackTarget" + " " + e.getMessage()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -987,9 +991,11 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        //guard captain pulls his minions home with him
 | 
					 | 
					 | 
					 | 
					                        //guard captain pulls his minions home with him
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        for (Entry<Mob, Integer> minion : mob.siegeMinionMap.entrySet()) { | 
					 | 
					 | 
					 | 
					                        for (Integer minionUUID : mob.minions) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            PowersManager.useMobPower(minion.getKey(), minion.getKey(), recall, 40); | 
					 | 
					 | 
					 | 
					                            Mob minion = Mob.getMob(minionUUID); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            minion.getKey().setCombatTarget(null); | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            PowersManager.useMobPower(minion, minion, recall, 40); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            minion.setCombatTarget(null); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        } | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1381,16 +1387,18 @@ public class MobAI { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
					 | 
					 | 
					 | 
					            MovementUtilities.aiMove(mob, mob.destination, true); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if (mob.agentType.equals(Enum.AIAgentType.GUARDCAPTAIN)) { | 
					 | 
					 | 
					 | 
					            if (mob.agentType.equals(Enum.AIAgentType.GUARDCAPTAIN)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for (Entry<Mob, Integer> minion : mob.siegeMinionMap.entrySet()) { | 
					 | 
					 | 
					 | 
					                for (Integer minionUUID : mob.minions) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    Mob minion = Mob.getMob(minionUUID); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
					 | 
					 | 
					 | 
					                    //make sure mob is out of combat stance
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if (minion.getKey().despawned == false) { | 
					 | 
					 | 
					 | 
					                    if (minion.despawned == false) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        if (MovementUtilities.canMove(minion.getKey())) { | 
					 | 
					 | 
					 | 
					                        if (MovementUtilities.canMove(minion)) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            Vector3f minionOffset = Formation.getOffset(2, minion.getValue() + 3); | 
					 | 
					 | 
					 | 
					                            Vector3f minionOffset = Formation.getOffset(2, mob.minions.indexOf(minionUUID) + 3); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            minion.getKey().updateLocation(); | 
					 | 
					 | 
					 | 
					                            minion.updateLocation(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            Vector3fImmutable formationPatrolPoint = new Vector3fImmutable(mob.destination.x + minionOffset.x, mob.destination.y, mob.destination.z + minionOffset.z); | 
					 | 
					 | 
					 | 
					                            Vector3fImmutable formationPatrolPoint = new Vector3fImmutable(mob.destination.x + minionOffset.x, mob.destination.y, mob.destination.z + minionOffset.z); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                            MovementUtilities.aiMove(minion.getKey(), formationPatrolPoint, true); | 
					 | 
					 | 
					 | 
					                            MovementUtilities.aiMove(minion, formationPatrolPoint, true); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        } | 
					 | 
					 | 
					 | 
					                        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    } | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |