Files
magicbane/src/engine/mobileAI/MobHandlers/SiegeHandler.java
T

56 lines
2.0 KiB
Java
Raw Normal View History

2025-03-25 20:16:50 -05:00
package engine.mobileAI.MobHandlers;
import engine.Enum;
2025-03-28 06:43:16 -05:00
import engine.gameManager.MovementManager;
import engine.gameManager.ZoneManager;
2025-03-28 06:28:07 -05:00
import engine.mobileAI.utilities.CombatUtilities;
2025-03-28 06:43:16 -05:00
import engine.mobileAI.utilities.MovementUtilities;
2025-03-28 06:28:07 -05:00
import engine.objects.Building;
2025-03-28 06:43:16 -05:00
import engine.objects.City;
2025-03-25 20:16:50 -05:00
import engine.objects.Mob;
import engine.server.MBServerStatics;
2025-03-25 20:16:50 -05:00
public class SiegeHandler {
public static void run(Mob engine){
2025-03-28 06:28:07 -05:00
if(!engine.isAlive()) {
check_siege_respawn(engine);
2025-03-25 20:16:50 -05:00
return;
2025-03-28 06:28:07 -05:00
}
2025-03-25 20:16:50 -05:00
2025-03-28 06:28:07 -05:00
if(engine.getOwner() == null || !engine.getOwner().isAlive() || !engine.playerAgroMap.containsKey(engine.getOwner().getObjectUUID()))
2025-03-25 20:16:50 -05:00
return;
if(engine.combatTarget == null || !engine.combatTarget.getObjectType().equals(Enum.GameObjectType.Building))
return;
2025-03-28 06:28:07 -05:00
siege_attack(engine);
}
public static void check_siege_respawn(Mob engine){
if(!engine.despawned) {
engine.despawn();
}else{
if(engine.deathTime + MBServerStatics.FIFTEEN_MINUTES > System.currentTimeMillis()){
2025-03-28 06:28:07 -05:00
engine.respawn();
}
}
}
public static void siege_attack(Mob engine){
if(engine.getLastAttackTime() > System.currentTimeMillis())
return;
if(CombatUtilities.inRangeToAttack(engine,engine.combatTarget)){
CombatUtilities.combatCycle(engine, engine.combatTarget, true, null);
2025-03-28 06:43:16 -05:00
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);
2025-03-28 06:28:07 -05:00
}
2025-03-25 20:16:50 -05:00
}
}