bane live processing with vulnerable buildings
This commit is contained in:
@@ -340,6 +340,8 @@ public final class Bane {
|
|||||||
return newBane;
|
return newBane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isStarted = false;
|
||||||
|
|
||||||
//Call this to prematurely end a bane
|
//Call this to prematurely end a bane
|
||||||
|
|
||||||
public SiegePhase getSiegePhase() {
|
public SiegePhase getSiegePhase() {
|
||||||
@@ -639,4 +641,21 @@ public final class Bane {
|
|||||||
return cityUUID;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -476,6 +476,9 @@ public class WorldServer {
|
|||||||
Logger.info("Processing mine window.");
|
Logger.info("Processing mine window.");
|
||||||
HourlyJobThread.processMineWindow();
|
HourlyJobThread.processMineWindow();
|
||||||
|
|
||||||
|
Logger.info("Processing Banes...");
|
||||||
|
HourlyJobThread.processBanes();
|
||||||
|
|
||||||
// Calculate bootstrap time and rest boot time to current time.
|
// Calculate bootstrap time and rest boot time to current time.
|
||||||
|
|
||||||
Duration bootDuration = Duration.between(LocalDateTime.now(), bootTime);
|
Duration bootDuration = Duration.between(LocalDateTime.now(), bootTime);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import engine.net.MessageDispatcher;
|
|||||||
import engine.net.client.msg.chat.ChatSystemMsg;
|
import engine.net.client.msg.chat.ChatSystemMsg;
|
||||||
import engine.objects.*;
|
import engine.objects.*;
|
||||||
import engine.server.world.WorldServer;
|
import engine.server.world.WorldServer;
|
||||||
|
import org.joda.time.DateTime;
|
||||||
import org.pmw.tinylog.Logger;
|
import org.pmw.tinylog.Logger;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
@@ -279,10 +280,20 @@ public class HourlyJobThread implements Runnable {
|
|||||||
Logger.error("missing city map");
|
Logger.error("missing city map");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
processBanes();
|
||||||
|
|
||||||
// Log metrics to console
|
// Log metrics to console
|
||||||
Logger.info(WorldServer.getUptimeString());
|
Logger.info(WorldServer.getUptimeString());
|
||||||
Logger.info(SimulationManager.getPopulationString());
|
Logger.info(SimulationManager.getPopulationString());
|
||||||
Logger.info(MessageDispatcher.getNetstatString());
|
Logger.info(MessageDispatcher.getNetstatString());
|
||||||
Logger.info(PurgeOprhans.recordsDeleted.toString() + "orphaned items deleted");
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user