forked from MagicBane/Server
respawnQues operate per zone
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user