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