forked from MagicBane/Server
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
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); |
|
} |
|
} |
|
} |
|
}
|
|
|