Public Repository for the Magicbane Emulator Project Called BattleBane
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
2.0 KiB

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);
}
}
}
}