forked from MagicBane/Server
pet AI handler
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user