forked from MagicBane/Server
pet AI handler
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
package engine.mobileAI.MobHandlers;
|
package engine.mobileAI.MobHandlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.Enum;
|
||||||
|
import engine.gameManager.MovementManager;
|
||||||
|
import engine.gameManager.ZoneManager;
|
||||||
import engine.mobileAI.utilities.CombatUtilities;
|
import engine.mobileAI.utilities.CombatUtilities;
|
||||||
|
import engine.mobileAI.utilities.MovementUtilities;
|
||||||
import engine.objects.Building;
|
import engine.objects.Building;
|
||||||
|
import engine.objects.City;
|
||||||
import engine.objects.Mob;
|
import engine.objects.Mob;
|
||||||
|
|
||||||
public class SiegeHandler {
|
public class SiegeHandler {
|
||||||
@@ -38,7 +42,14 @@ public class SiegeHandler {
|
|||||||
|
|
||||||
if(CombatUtilities.inRangeToAttack(engine,engine.combatTarget)){
|
if(CombatUtilities.inRangeToAttack(engine,engine.combatTarget)){
|
||||||
CombatUtilities.combatCycle(engine, engine.combatTarget, true, null);
|
CombatUtilities.combatCycle(engine, engine.combatTarget, true, null);
|
||||||
engine.setLastAttackTime(System.currentTimeMillis() + 11000);
|
engine.setLastAttackTime(System.currentTimeMillis() + 15000);
|
||||||
|
City playercity = ZoneManager.getCityAtLocation(engine.getLoc());
|
||||||
|
if (playercity != null)
|
||||||
|
for (Mob guard : playercity.getParent().zoneMobSet)
|
||||||
|
if (guard.isPlayerGuard && guard.combatTarget == null && guard.getGuild() != null && engine.getGuild() != null && !guard.getGuild().equals(engine.getGuild()))
|
||||||
|
MovementUtilities.aiMove(guard,engine.loc,false);
|
||||||
|
|
||||||
|
MovementManager.sendRWSSMsg(engine);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user