@ -682,7 +682,7 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -682,7 +682,7 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        DbManager . addToCache ( minionMobile ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        minionMobile . setLoc ( minionMobile . bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // minionMobile.despawn();
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        minionMobile . despawn ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        int  slot  =  guardCaptain . siegeMinionMap . size ( )  +  1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        guardCaptain . siegeMinionMap . put ( minionMobile ,  slot ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1680,12 +1680,9 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -1680,12 +1680,9 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ConfigManager . serverType . equals ( ServerType . LOGINSERVER ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        try  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . building  =  BuildingManager . getBuilding ( this . buildingUUID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  catch  ( Exception  e )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . building  =  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Logger . error ( e . getMessage ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . gridObjectType  =  GridObjectType . DYNAMIC ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . mobBase  =  MobBase . getMobBase ( loadID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . building  =  BuildingManager . getBuilding ( this . buildingUUID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . contractUUID  = =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . contract  =  null ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1719,6 +1716,11 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -1719,6 +1716,11 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Default to the mobbase for AI if nothing is hte mob field to override.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . behaviourType  = =  null  | |  this . behaviourType . equals ( MobBehaviourType . None ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . behaviourType  =  this . getMobBase ( ) . fsm ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . building  ! =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . guild  =  this . building . getGuild ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -1727,8 +1729,6 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -1727,8 +1729,6 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . guild  = =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . guild  =  Guild . getErrantGuild ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . mobBase  =  MobBase . getMobBase ( loadID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . setObjectTypeMask ( MBServerStatics . MASK_MOB  |  this . getTypeMasks ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . firstName . isEmpty ( ) )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -1742,7 +1742,6 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -1742,7 +1742,6 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . lastName  =  this . getContract ( ) . getName ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . gridObjectType  =  GridObjectType . DYNAMIC ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . healthMax  =  this . mobBase . getHealthMax ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . manaMax  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . staminaMax  =  0 ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1778,39 +1777,36 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -1778,39 +1777,36 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . parentZone . zoneMobSet . remove ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . parentZone . zoneMobSet . add ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Setup location for this Mobile
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . bindLoc  =  this . parentZone . getLoc ( ) . add ( this . bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . loc  =  new  Vector3fImmutable ( bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . endLoc  =  new  Vector3fImmutable ( bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Handle Mobiles within buildings
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . building  ! =  null )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . building  = =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . bindLoc  =  this . parentZone . getLoc ( ) . add ( this . bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Mobiles inside buildings are offset from it not the zone
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . bindLoc  =  new  Vector3fImmutable ( this . statLat ,  this . statAlt ,  this . statLon ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . bindLoc  =  this . building . getLoc ( ) . add ( this . bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // with the exceptions being  mobiles
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // with a contract.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . contract  ! =  null  | |  this . isSiege )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                NPCManager . slotCharacterInBuilding ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . bindLoc  =  building . getLoc ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Setup location for this Mobile
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . loc  =  new  Vector3fImmutable ( bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . endLoc  =  new  Vector3fImmutable ( bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Initialize inventory
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . charItemManager . load ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . loadInventory ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        try  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . equipmentSetID  ! =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . equip  =  MobBase . loadEquipmentSet ( this . equipmentSetID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . equip  =  new  HashMap < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  catch  ( Exception  e )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Logger . error ( e . getMessage ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . equipmentSetID  ! =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . equip  =  MobBase . loadEquipmentSet ( this . equipmentSetID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . equip  =  new  HashMap < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Powers from mobbase
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -1832,7 +1828,7 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -1832,7 +1828,7 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Combine mobbase and mob aggro arrays into one bitvector
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        //skip for pets
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . isPet ( )  = =  false  & &  ( this . agentType . equals ( AIAgentType . PET ) )  = =  false  & &  this . isNecroPet ( )  = =  false )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . isPet ( )  = =  false  & &  this . isNecroPet ( )  = =  false )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . getMobBase ( ) . notEnemy . size ( )  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . notEnemy . addAll ( this . getMobBase ( ) . notEnemy ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1873,19 +1869,6 @@ public class Mob extends AbstractIntelligenceAgent {
				@@ -1873,19 +1869,6 @@ public class Mob extends AbstractIntelligenceAgent {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . behaviourType  = =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . behaviourType  =  this . getMobBase ( ) . fsm ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . isPlayerGuard ( )  & &  this . contract  ! =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( NPC . ISWallArcher ( this . getContract ( ) ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    this . behaviourType  =  MobBehaviourType . GuardWallArcher ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    this . spawnTime  =  450 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                }  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    this . behaviourType  =  MobBehaviourType . GuardCaptain ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    this . spawnTime  =  900 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    this . guardedCity  =  ZoneManager . getCityAtLocation ( this . bindLoc ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . deathTime  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }  catch  ( Exception  e )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Logger . error ( e . getMessage ( ) ) ;