forked from MagicBane/Server
siege engine AI handler
This commit is contained in:
@@ -619,6 +619,11 @@ public class MobAI {
|
|||||||
public static void DetermineAction(Mob mob) {
|
public static void DetermineAction(Mob mob) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
if(mob.isSiege() || mob.isPet() || mob.isPlayerGuard()){
|
||||||
|
SuperSimpleMobAI.run(mob);
|
||||||
|
return;
|
||||||
|
}
|
||||||
boolean override = false;
|
boolean override = false;
|
||||||
switch (mob.BehaviourType) {
|
switch (mob.BehaviourType) {
|
||||||
case GuardCaptain:
|
case GuardCaptain:
|
||||||
|
|||||||
@@ -1,19 +1,44 @@
|
|||||||
package engine.mobileAI.MobHandlers;
|
package engine.mobileAI.MobHandlers;
|
||||||
|
|
||||||
import engine.Enum;
|
import engine.Enum;
|
||||||
|
import engine.mobileAI.utilities.CombatUtilities;
|
||||||
|
import engine.objects.Building;
|
||||||
import engine.objects.Mob;
|
import engine.objects.Mob;
|
||||||
|
|
||||||
public class SiegeHandler {
|
public class SiegeHandler {
|
||||||
public static void run(Mob engine){
|
public static void run(Mob engine){
|
||||||
|
|
||||||
if(!engine.isAlive())
|
if(!engine.isAlive()) {
|
||||||
|
check_siege_respawn(engine);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(engine.getOwner() == null || !engine.getOwner().isAlive())
|
if(engine.getOwner() == null || !engine.getOwner().isAlive() || !engine.playerAgroMap.containsKey(engine.getOwner().getObjectUUID()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(engine.combatTarget == null || !engine.combatTarget.getObjectType().equals(Enum.GameObjectType.Building))
|
if(engine.combatTarget == null || !engine.combatTarget.getObjectType().equals(Enum.GameObjectType.Building))
|
||||||
return;
|
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,18 +12,14 @@ public class SuperSimpleMobAI {
|
|||||||
if(mob.isPet() && !mob.isSiege()) {
|
if(mob.isPet() && !mob.isSiege()) {
|
||||||
PetHandler.run(mob);
|
PetHandler.run(mob);
|
||||||
return;
|
return;
|
||||||
}
|
}else if (mob.isSiege()) {
|
||||||
if (mob.isSiege()) {
|
|
||||||
SiegeHandler.run(mob);
|
SiegeHandler.run(mob);
|
||||||
return;
|
return;
|
||||||
}
|
}else if(mob.isPlayerGuard()){
|
||||||
if(mob.isPlayerGuard()){
|
|
||||||
PlayerGuardHandler.run(mob);
|
PlayerGuardHandler.run(mob);
|
||||||
return;
|
return;
|
||||||
|
}else {
|
||||||
|
MobHandler.run(mob);
|
||||||
}
|
}
|
||||||
MobHandler.run(mob);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//##generic methods for all mobs
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user