Auto-leveling camp modifications

This commit is contained in:
2024-08-19 19:48:52 -04:00
parent 785a5eb736
commit 96387aa4f4
3 changed files with 53 additions and 35 deletions
@@ -26,7 +26,6 @@ import org.pmw.tinylog.Logger;
public class MobRespawnThread implements Runnable {
public MobRespawnThread() {
Logger.info(" MobRespawnThread thread has started!");
@@ -35,9 +34,14 @@ public class MobRespawnThread implements Runnable {
@Override
public void run() {
long startTime = System.currentTimeMillis();
long rollingKeepFraction = (Zone.rollingAvgMobsAliveDepth - 1) / Zone.rollingAvgMobsAliveDepth;
long rollingAddFraction = 1 / Zone.rollingAvgMobsAliveDepth;
while (true) {
try {
for (Zone zone : ZoneManager.getAllZones()) {
/*
@@ -51,53 +55,64 @@ public class MobRespawnThread implements Runnable {
}
*/
int aliveCount = 0;
int deadCount = 0;
for (Mob mob : zone.zoneMobSet) {
if (!mob.isAlive()) {
if (mob.isAlive()) {
aliveCount = aliveCount + 1;
}
else {
deadCount = deadCount + 1;
}
}
if (deadCount > Math.floor(zone.zoneMobSet.size() / 2.0)) {
zone.rollingAvgMobsAlive =
((zone.rollingAvgMobsAlive * (Zone.rollingAvgMobsAliveDepth - 1) + aliveCount) / Zone.rollingAvgMobsAliveDepth);
/*
if (startTime + ZoneLevel.msDelayToCampLevel < System.currentTimeMillis()) {
if (aliveCount > Math.floor(zone.zoneMobSet.size() / 2.0)) {
if (zone.levelUpTimer == 0) {
zone.levelUpTimer = System.currentTimeMillis();
}
else if (zone.levelUpTimer + ZoneLevel.msTolevelUp < System.currentTimeMillis()) {
} else if (zone.levelUpTimer + ZoneLevel.msTolevelUp < System.currentTimeMillis()) {
zone.setCampLvl(zone.getCampLvl() + 1);
zone.levelUpTimer = 0;
}
}
else if (deadCount == 0) {
} else if (aliveCount == 0) {
if (zone.levelDownTimer == 0) {
zone.levelDownTimer = System.currentTimeMillis();
}
else if (zone.levelDownTimer + ZoneLevel.msToLevelDown < System.currentTimeMillis()) {
} else if (zone.levelDownTimer + ZoneLevel.msToLevelDown < System.currentTimeMillis()) {
if (zone.getCampLvl() > 0) {
zone.setCampLvl(zone.getCampLvl() + 1);
zone.levelDownTimer = 0;
}
}
}
else {
} else {
zone.levelUpTimer = 0;
zone.levelDownTimer = 0;
}
}
*/
}
if (zone.respawnQue.isEmpty() == false && zone.lastRespawn + 100 < System.currentTimeMillis()) {
// --------------------------------------------------------------------------------------------------------------------
// Manage mob respawn
// --------------------------------------------------------------------------------------------------------------------
if (!Zone.respawnQue.isEmpty() && Zone.lastRespawn + 100 < System.currentTimeMillis()) {
Mob respawner = zone.respawnQue.iterator().next();
Mob respawner = Zone.respawnQue.iterator().next();
if (respawner == null)
continue;
respawner.respawn();
zone.respawnQue.remove(respawner);
zone.lastRespawn = System.currentTimeMillis();
}
Zone.respawnQue.remove(respawner);
Zone.lastRespawn = System.currentTimeMillis();
}
} catch (Exception e) {
Logger.error(e);
}
+2
View File
@@ -68,6 +68,8 @@ public class Zone extends AbstractGameObject {
private int campLvl = 0;
public long levelUpTimer = 0;
public long levelDownTimer = 0;
public int rollingAvgMobsAlive = 0;
public static final int rollingAvgMobsAliveDepth = 100;
/**
* ResultSet Constructor
+1
View File
@@ -16,6 +16,7 @@ public class ZoneLevel {
public static final int queueLengthToLevelUp = 5;
public static final int msToLevelDown = 60 * 1000;
public static final int msTolevelUp = 60 * 1000;
public static final long msDelayToCampLevel = 60 * 1000;
private static final String[] nameMap =
{