Browse Source

bane handling system

lakebane-recovery
FatBoy-DOTC 6 days ago
parent
commit
3375217b36
  1. 45
      src/engine/gameManager/BaneManager.java
  2. 38
      src/engine/workthreads/BaneThread.java
  3. 12
      src/engine/workthreads/HourlyJobThread.java

45
src/engine/gameManager/BaneManager.java

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
package engine.gameManager;
import engine.Enum;
import engine.objects.Bane;
import org.joda.time.DateTime;
public class BaneManager {
public static void default_check(){
for(Bane bane : Bane.banes.values()){
if(!bane.daySet || !bane.timeSet || !bane.capSet){
DateTime placementDate = bane.getPlacementDate();
if(DateTime.now().isAfter(placementDate.plusHours(48))){
//set bane for default time
if(!bane.daySet){
bane.daySet = true;
DbManager.BaneQueries.SET_BANE_DAY_NEW(3,bane.getCityUUID());
}
if(!bane.timeSet){
bane.timeSet = true;
DbManager.BaneQueries.SET_BANE_TIME_NEW(9,bane.getCityUUID());
}
if(!bane.capSet){
bane.capSet = true;
bane.capSize = 20;
DbManager.BaneQueries.SET_BANE_CAP_NEW(20,bane.getCityUUID());
}
bane.setLiveDate(DbManager.BaneQueries.getLiveDate(bane.getCityUUID()));
}
}
}
}
public static void pulse_banes(){
//used to pulse the anti-zerg mechanic of active banes
for(Bane bane : Bane.banes.values()){
if(bane.getSiegePhase().equals(Enum.SiegePhase.WAR)){
// bane is live, handle bane anti-zerg mechanic stuff
bane.applyZergBuffs();
}
}
}
}

38
src/engine/workthreads/BaneThread.java

@ -13,6 +13,7 @@ import engine.Enum; @@ -13,6 +13,7 @@ import engine.Enum;
import engine.InterestManagement.WorldGrid;
import engine.db.archive.DataWarehouse;
import engine.db.archive.MineRecord;
import engine.gameManager.BaneManager;
import engine.gameManager.BuildingManager;
import engine.gameManager.ChatManager;
import engine.gameManager.StrongholdManager;
@ -27,44 +28,21 @@ import java.util.ArrayList; @@ -27,44 +28,21 @@ import java.util.ArrayList;
public class BaneThread implements Runnable {
private volatile Long lastRun;
public static final Long instancedelay = 1000L;
public BaneThread() {
Logger.info(" BaneThread thread has started!");
}
public void processBanesWindow() {
try {
synchronized (Bane.banes) {
for (int baneId : Bane.banes.keySet()) {
Bane bane = Bane.banes.get(baneId);
if (bane != null && bane.getSiegePhase().equals(Enum.SiegePhase.WAR)) {
bane.applyZergBuffs();
}
}
}
} catch (Exception e) {
Logger.error("BANE ERROR",e);
}
}
public void run() {
lastRun = System.currentTimeMillis();
while (true) {
if (System.currentTimeMillis() >= lastRun + instancedelay) { // Correct condition
this.processBanesWindow();
lastRun = System.currentTimeMillis(); // Update lastRun after processing
}else {
try {
Thread.sleep(100); // Pause for 100ms to reduce CPU usage
} catch (InterruptedException e) {
Logger.error("Thread interrupted", e);
Thread.currentThread().interrupt();
}
//this.processBanesWindow();
BaneManager.pulse_banes();
try {
Thread.sleep(100); // Pause for 100ms to reduce CPU usage
} catch (InterruptedException e) {
Logger.error("Thread interrupted", e);
Thread.currentThread().interrupt();
}
}
}

12
src/engine/workthreads/HourlyJobThread.java

@ -92,11 +92,11 @@ public class HourlyJobThread implements Runnable { @@ -92,11 +92,11 @@ public class HourlyJobThread implements Runnable {
Logger.info(MessageDispatcher.getNetstatString());
Logger.info(PurgeOprhans.recordsDeleted.toString() + "orphaned items deleted");
for (Bane bane : Bane.banes.values()){
if(bane.getSiegePhase().equals(Enum.SiegePhase.CHALLENGE)){
bane.setDefaultTime();
}
}
//for (Bane bane : Bane.banes.values()){
// if(bane.getSiegePhase().equals(Enum.SiegePhase.CHALLENGE)){
// bane.setDefaultTime();
// }
//}
try{
Logger.info("Trashing Multibox Cheaters");
@ -119,5 +119,7 @@ public class HourlyJobThread implements Runnable { @@ -119,5 +119,7 @@ public class HourlyJobThread implements Runnable {
}catch(Exception e){
Logger.error("Failed To Run Ban Multibox Abusers");
}
BaneManager.default_check();
}
}

Loading…
Cancel
Save