bane live processing with vulnerable buildings

This commit is contained in:
2024-05-22 19:27:44 -05:00
parent b4ff1a3f7f
commit aa0621bb02
3 changed files with 33 additions and 0 deletions
+19
View File
@@ -340,6 +340,8 @@ public final class Bane {
return newBane;
}
public static boolean isStarted = false;
//Call this to prematurely end a bane
public SiegePhase getSiegePhase() {
@@ -639,4 +641,21 @@ public final class Bane {
return cityUUID;
}
public void startBane(){
City city = this.getCity();
if(city == null)
return;
this.isStarted = true; //flag the bane as started
for(AbstractWorldObject awo : WorldGrid.getObjectsInRangePartial(city.loc,mbEnums.CityBoundsType.ZONE.halfExtents + 64,MBServerStatics.MASK_BUILDING)){
Building building = (Building)awo;
if(building == null)
continue;
if(building.protectionState.equals(ProtectionState.UNDERSIEGE) == false)
building.protectionState = ProtectionState.UNDERSIEGE;
}
}
}
+3
View File
@@ -476,6 +476,9 @@ public class WorldServer {
Logger.info("Processing mine window.");
HourlyJobThread.processMineWindow();
Logger.info("Processing Banes...");
HourlyJobThread.processBanes();
// Calculate bootstrap time and rest boot time to current time.
Duration bootDuration = Duration.between(LocalDateTime.now(), bootTime);
@@ -18,6 +18,7 @@ import engine.net.MessageDispatcher;
import engine.net.client.msg.chat.ChatSystemMsg;
import engine.objects.*;
import engine.server.world.WorldServer;
import org.joda.time.DateTime;
import org.pmw.tinylog.Logger;
import java.time.LocalDateTime;
@@ -279,10 +280,20 @@ public class HourlyJobThread implements Runnable {
Logger.error("missing city map");
}
processBanes();
// Log metrics to console
Logger.info(WorldServer.getUptimeString());
Logger.info(SimulationManager.getPopulationString());
Logger.info(MessageDispatcher.getNetstatString());
Logger.info(PurgeOprhans.recordsDeleted.toString() + "orphaned items deleted");
}
public static void processBanes(){
//handle banes
for(Bane bane : Bane.banes.values()){
if(bane.getLiveDate() != null && DateTime.now().isAfter(bane.getLiveDate().minusMinutes(1)) && bane.isStarted == false)
bane.startBane();
}
}
}