|  |  | @ -16,16 +16,17 @@ import java.util.HashSet; | 
			
		
	
		
		
			
				
					
					|  |  |  | public class StandardMob { |  |  |  | public class StandardMob { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public static void run(Mob mob){ |  |  |  |     public static void run(Mob mob){ | 
			
		
	
		
		
			
				
					
					|  |  |  |         if(!mob.isAlive()){ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             CheckForRespawn(mob); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         HashSet<AbstractWorldObject> inRange = WorldGrid.getObjectsInRangePartial(mob.loc, MBServerStatics.CHARACTER_LOAD_RANGE, MBServerStatics.MASK_PLAYER); |  |  |  |         HashSet<AbstractWorldObject> inRange = WorldGrid.getObjectsInRangePartial(mob.loc, MBServerStatics.CHARACTER_LOAD_RANGE, MBServerStatics.MASK_PLAYER); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if(inRange.isEmpty()) |  |  |  |         if(inRange.isEmpty()) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if(!mob.isAlive()){ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             CheckForRespawn(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mob.isMoving()) { |  |  |  |         if (mob.isMoving()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             mob.setLoc(mob.getMovementLoc()); |  |  |  |             mob.setLoc(mob.getMovementLoc()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             mob.updateLocation(); |  |  |  |             mob.updateLocation(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -78,7 +79,6 @@ public class StandardMob { | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!mob.despawned) { |  |  |  |         if (!mob.despawned) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (mob.getCharItemManager().getInventoryCount() > 0) { |  |  |  |             if (mob.getCharItemManager().getInventoryCount() > 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (System.currentTimeMillis() > mob.deathTime + MBServerStatics.DESPAWN_TIMER_WITH_LOOT) { |  |  |  |                 if (System.currentTimeMillis() > mob.deathTime + MBServerStatics.DESPAWN_TIMER_WITH_LOOT) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     mob.despawn(); |  |  |  |                     mob.despawn(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -193,9 +193,18 @@ public class StandardMob { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if(mob.combatTarget != null){ |  |  |  |         if(mob.combatTarget != null){ | 
			
		
	
		
		
			
				
					
					|  |  |  |             //chase player
 |  |  |  |             //chase player
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if(!CombatUtilities.inRange2D(mob,mob.combatTarget,mob.getRange())) { |  |  |  |             if(!CombatUtilities.inRange2D(mob,mob.combatTarget,mob.getRange())) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if(mob.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     PlayerCharacter target = (PlayerCharacter)mob.combatTarget; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if(target.isMoving()){ | 
			
		
	
		
		
			
				
					
					|  |  |  |                         MovementUtilities.aiMove(mob, mob.combatTarget.loc, false); |  |  |  |                         MovementUtilities.aiMove(mob, mob.combatTarget.loc, false); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         return; | 
			
		
	
		
		
			
				
					
					|  |  |  |                     }else{ |  |  |  |                     }else{ | 
			
		
	
		
		
			
				
					
					|  |  |  |                 mob.stopMovement(mob.getMovementLoc()); |  |  |  |                         Vector3fImmutable smoothLoc = Vector3fImmutable.getRandomPointOnCircle(mob.combatTarget.loc,mob.getRange() -1); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         MovementUtilities.aiMove(mob, smoothLoc, false); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         return; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 MovementUtilities.aiMove(mob, mob.combatTarget.loc, false); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         }else{ |  |  |  |         }else{ | 
			
		
	
	
		
		
			
				
					|  |  | @ -228,8 +237,6 @@ public class StandardMob { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if(!CombatUtilities.inRange2D(mob,mob.combatTarget,mob.getRange())) |  |  |  |         if(!CombatUtilities.inRange2D(mob,mob.combatTarget,mob.getRange())) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         mob.updateLocation(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         //InterestManager.forceLoad(mob);
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         InterestManager.setObjectDirty(mob); |  |  |  |         InterestManager.setObjectDirty(mob); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (mainHand == null && offHand == null) { |  |  |  |         if (mainHand == null && offHand == null) { | 
			
		
	
	
		
		
			
				
					|  |  | 
 |