Files
lakebane/src/engine/mobileAI/Threads/MobAIThread.java
T

87 lines
3.4 KiB
Java
Raw Normal View History

2023-08-01 20:13:23 -05:00
package engine.mobileAI.Threads;
2023-08-08 10:54:36 -05:00
import engine.gameManager.ConfigManager;
2023-08-01 20:13:23 -05:00
import engine.gameManager.ZoneManager;
2025-03-28 07:08:30 -05:00
import engine.mobileAI.SuperSimpleMobAI;
2023-08-01 20:13:23 -05:00
import engine.objects.Mob;
import engine.objects.Zone;
import org.pmw.tinylog.Logger;
public class MobAIThread implements Runnable{
public static int AI_BASE_AGGRO_RANGE = 60;
public static int AI_DROP_AGGRO_RANGE = 60;
public static int AI_PULSE_MOB_THRESHOLD = 200;
public static int AI_PATROL_DIVISOR = 15;
2023-08-08 10:54:36 -05:00
public static float AI_CAST_FREQUENCY;
2023-08-01 20:13:23 -05:00
// Thread constructor
public MobAIThread() {
Logger.info(" MobAIThread thread has started!");
}
@Override
public void run() {
2023-08-08 10:54:36 -05:00
//cache config value for mobile casting delay
AI_CAST_FREQUENCY = Float.parseFloat(ConfigManager.MB_AI_CAST_FREQUENCY.getValue());
2023-08-08 10:56:33 -05:00
AI_BASE_AGGRO_RANGE = (int)(60 * Float.parseFloat(ConfigManager.MB_AI_AGGRO_RANGE.getValue()));
2023-08-01 20:13:23 -05:00
while (true) {
for (Zone zone : ZoneManager.getAllZones()) {
2025-03-28 07:08:30 -05:00
if (zone != null) {
2025-01-18 03:19:08 -06:00
synchronized (zone.zoneMobSet) {
for (Mob mob : zone.zoneMobSet) {
try {
if (mob != null) {
2025-03-28 07:08:30 -05:00
//MobAI.DetermineAction(mob);
if(mob.isSiege() || mob.isPet() || mob.isPlayerGuard()){
SuperSimpleMobAI.run(mob);
return;
}
boolean override;
switch (mob.BehaviourType) {
case GuardCaptain:
case GuardMinion:
case GuardWallArcher:
case Pet1:
case HamletGuard:
override = false;
break;
default:
override = true;
break;
}
if(mob.isSiege())
override = false;
if(mob.isPet())
override = false;
if(override){
SuperSimpleMobAI.run(mob);
return;
}
2025-01-18 03:19:08 -06:00
}
} catch (Exception e) {
Logger.error("Error processing Mob [Name: {}, UUID: {}]", mob.getName(), mob.getObjectUUID(), e);
}
}
2023-08-01 20:13:23 -05:00
}
}
2025-01-27 10:03:57 -06:00
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Logger.error("AI Thread interrupted", e);
Thread.currentThread().interrupt();
2023-08-01 20:13:23 -05:00
}
}
}
public static void startAIThread() {
Thread aiThread;
aiThread = new Thread(new MobAIThread());
aiThread.setName("aiThread");
aiThread.start();
}
}