2 changed files with 62 additions and 1 deletions
			
			
		| @ -1,10 +1,60 @@@@ -1,10 +1,60 @@ | ||||
| package engine.mobileAI.MobHandlers; | ||||
| 
 | ||||
| import engine.Enum; | ||||
| import engine.gameManager.MovementManager; | ||||
| import engine.gameManager.ZoneManager; | ||||
| import engine.mobileAI.utilities.CombatUtilities; | ||||
| import engine.mobileAI.utilities.MovementUtilities; | ||||
| import engine.objects.City; | ||||
| import engine.objects.Mob; | ||||
| import engine.objects.PlayerCharacter; | ||||
| 
 | ||||
| public class PetHandler { | ||||
| 
 | ||||
|     public static void run(Mob pet){ | ||||
|         PlayerCharacter owner = pet.getOwner(); | ||||
| 
 | ||||
|         if(owner == null) | ||||
|             return; | ||||
| 
 | ||||
|         if(!pet.isAlive()){ | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if(!owner.isAlive()) { | ||||
|             owner.dismissPet(); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         pet.updateLocation(); | ||||
| 
 | ||||
|         if(pet.combatTarget == null){ | ||||
|             //follow owner
 | ||||
|             if(!CombatUtilities.inRangeToAttack(pet,owner)) { | ||||
|                 MovementUtilities.moveToLocation(pet, owner.loc, pet.getRange()); | ||||
|             } | ||||
|         }else{ | ||||
|             //chase target
 | ||||
|             if(!CombatUtilities.inRangeToAttack(pet,pet.combatTarget)) { | ||||
|                 MovementUtilities.moveToLocation(pet, pet.combatTarget.loc, pet.getRange()); | ||||
|             }else{ | ||||
|                 if(pet.getLastAttackTime() > System.currentTimeMillis()) | ||||
|                     return; | ||||
| 
 | ||||
|                 pet.setLastAttackTime(System.currentTimeMillis() + 3000); | ||||
| 
 | ||||
|                 //attack target
 | ||||
|                 if(pet.combatTarget.getObjectType().equals(Enum.GameObjectType.Building)){ | ||||
|                     //attacking building
 | ||||
|                     City playercity = ZoneManager.getCityAtLocation(pet.getLoc()); | ||||
|                     if (playercity != null) | ||||
|                         for (Mob guard : playercity.getParent().zoneMobSet) | ||||
|                             if (guard.combatTarget == null && guard.getGuild() != null && pet.getGuild() != null && !guard.getGuild().equals(pet.getGuild())) | ||||
|                                 MovementUtilities.aiMove(guard,pet.loc,false); | ||||
|                 } | ||||
| 
 | ||||
|                 CombatUtilities.combatCycle(pet,pet.combatTarget,true,null); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
					Loading…
					
					
				
		Reference in new issue