2 changed files with 62 additions and 1 deletions
@ -1,10 +1,60 @@ |
|||||||
package engine.mobileAI.MobHandlers; |
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.Mob; |
||||||
|
import engine.objects.PlayerCharacter; |
||||||
|
|
||||||
public class PetHandler { |
public class PetHandler { |
||||||
|
|
||||||
public static void run(Mob pet){ |
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