Browse Source

siege engine AI handler

lakebane-recovery
FatBoy-DOTC 3 days ago
parent
commit
da67d4b3ea
  1. 5
      src/engine/mobileAI/MobAI.java
  2. 29
      src/engine/mobileAI/MobHandlers/SiegeHandler.java
  3. 12
      src/engine/mobileAI/SuperSimpleMobAI.java

5
src/engine/mobileAI/MobAI.java

@ -619,6 +619,11 @@ public class MobAI { @@ -619,6 +619,11 @@ public class MobAI {
public static void DetermineAction(Mob mob) {
try {
if(mob.isSiege() || mob.isPet() || mob.isPlayerGuard()){
SuperSimpleMobAI.run(mob);
return;
}
boolean override = false;
switch (mob.BehaviourType) {
case GuardCaptain:

29
src/engine/mobileAI/MobHandlers/SiegeHandler.java

@ -1,19 +1,44 @@ @@ -1,19 +1,44 @@
package engine.mobileAI.MobHandlers;
import engine.Enum;
import engine.mobileAI.utilities.CombatUtilities;
import engine.objects.Building;
import engine.objects.Mob;
public class SiegeHandler {
public static void run(Mob engine){
if(!engine.isAlive())
if(!engine.isAlive()) {
check_siege_respawn(engine);
return;
}
if(engine.getOwner() == null || !engine.getOwner().isAlive())
if(engine.getOwner() == null || !engine.getOwner().isAlive() || !engine.playerAgroMap.containsKey(engine.getOwner().getObjectUUID()))
return;
if(engine.combatTarget == null || !engine.combatTarget.getObjectType().equals(Enum.GameObjectType.Building))
return;
siege_attack(engine);
}
public static void check_siege_respawn(Mob engine){
if(!engine.despawned) {
engine.despawn();
}else{
if(engine.deathTime + (engine.spawnTime * 1000) > System.currentTimeMillis()){
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);
engine.setLastAttackTime(System.currentTimeMillis() + 11000);
}
}
}

12
src/engine/mobileAI/SuperSimpleMobAI.java

@ -12,18 +12,14 @@ public class SuperSimpleMobAI { @@ -12,18 +12,14 @@ public class SuperSimpleMobAI {
if(mob.isPet() && !mob.isSiege()) {
PetHandler.run(mob);
return;
}
if (mob.isSiege()) {
}else if (mob.isSiege()) {
SiegeHandler.run(mob);
return;
}
if(mob.isPlayerGuard()){
}else if(mob.isPlayerGuard()){
PlayerGuardHandler.run(mob);
return;
}else {
MobHandler.run(mob);
}
MobHandler.run(mob);
}
//##generic methods for all mobs
}

Loading…
Cancel
Save