Browse Source

respawnQues operate per zone

master
FatBoy-DOTC 1 year ago
parent
commit
6e1ed24b30
  1. 12
      src/engine/ai/MobileFSM.java
  2. 5
      src/engine/ai/MobileFSMManager.java
  3. 3
      src/engine/objects/Zone.java

12
src/engine/ai/MobileFSM.java

@ -32,8 +32,8 @@ import java.util.concurrent.ThreadLocalRandom;
import static engine.math.FastMath.sqr; import static engine.math.FastMath.sqr;
public class MobileFSM { public class MobileFSM {
public static ArrayList<Mob> respawnQue = new ArrayList<>();
public static long lastRespawn = 0;
private static void AttackTarget(Mob mob, AbstractWorldObject target) { private static void AttackTarget(Mob mob, AbstractWorldObject target) {
if (mob == null) if (mob == null)
return; return;
@ -342,11 +342,7 @@ public class MobileFSM {
public static void DetermineAction(Mob mob) { public static void DetermineAction(Mob mob) {
//always check the respawn que, respawn 1 mob max per second to not flood the client //always check the respawn que, respawn 1 mob max per second to not flood the client
if(respawnQue.size() > 0 && lastRespawn + 100 < System.currentTimeMillis()){
respawnQue.get(0).respawn();
respawnQue.remove(0);
lastRespawn = System.currentTimeMillis();
}
if (mob == null) if (mob == null)
return; return;
if (mob.despawned && mob.getMobBase().getLoadID() == 13171) { if (mob.despawned && mob.getMobBase().getLoadID() == 13171) {
@ -555,7 +551,7 @@ public class MobileFSM {
} }
} else if (System.currentTimeMillis() > (aiAgent.deathTime + (aiAgent.spawnTime * 1000))) { } else if (System.currentTimeMillis() > (aiAgent.deathTime + (aiAgent.spawnTime * 1000))) {
//aiAgent.respawn(); //aiAgent.respawn();
respawnQue.add(aiAgent); aiAgent.getParentZone().respawnQue.add(aiAgent);
} }
} }

5
src/engine/ai/MobileFSMManager.java

@ -98,6 +98,11 @@ public class MobileFSMManager {
for (Zone zone : ZoneManager.getAllZones()) { for (Zone zone : ZoneManager.getAllZones()) {
if(zone.respawnQue.size() > 0 && zone.lastRespawn + 100 < System.currentTimeMillis()){
zone.respawnQue.get(0).respawn();
zone.respawnQue.remove(0);
zone.lastRespawn = System.currentTimeMillis();
}
for (Mob mob : zone.zoneMobSet) { for (Mob mob : zone.zoneMobSet) {
try { try {

3
src/engine/objects/Zone.java

@ -58,7 +58,8 @@ public class Zone extends AbstractGameObject {
private String hash; private String hash;
private float worldAltitude = 0; private float worldAltitude = 0;
private float seaLevel = 0; private float seaLevel = 0;
public static ArrayList<Mob> respawnQue = new ArrayList<>();
public static long lastRespawn = 0;
/** /**
* ResultSet Constructor * ResultSet Constructor
*/ */

Loading…
Cancel
Save