Fixed farming patches wrongly getting diseased during offline catchup

This commit is contained in:
Player Name 2025-02-01 14:08:55 +00:00 committed by Ryan
parent cd43f8d269
commit 4a016d45e5
5 changed files with 12 additions and 4 deletions

View file

@ -24,8 +24,15 @@ abstract class RSTimer (var runInterval: Int, val identifier: String = "generict
**/ **/
open fun getInitialRunDelay() : Int { return runInterval } open fun getInitialRunDelay() : Int { return runInterval }
/**
* Called by core code before the timer is first registered. Called after parse on PersistTimers.
* Called before the timer has been added to the timer list.
**/
open fun beforeRegister (entity: Entity) {}
/** /**
* Called by core code when the timer is first registered. Called after parse on PersistTimers. * Called by core code when the timer is first registered. Called after parse on PersistTimers.
* Called after the timer has been added to the timer list.
**/ **/
open fun onRegister (entity: Entity) {} open fun onRegister (entity: Entity) {}

View file

@ -13,8 +13,9 @@ class TimerManager (val entity: Entity) {
val toRemoveTimers = ArrayList<RSTimer>() val toRemoveTimers = ArrayList<RSTimer>()
fun registerTimer (timer: RSTimer) { fun registerTimer (timer: RSTimer) {
timer.onRegister(entity) timer.beforeRegister(entity)
newTimers.add(timer) newTimers.add(timer)
timer.onRegister(entity)
} }
fun processTimers () { fun processTimers () {

View file

@ -20,7 +20,7 @@ class Disease : PersistTimer (30, "disease", flags = arrayOf(TimerFlag.ClearOnDe
hitsLeft = root["hitsLeft"].toString().toInt() hitsLeft = root["hitsLeft"].toString().toInt()
} }
override fun onRegister (entity: Entity) { override fun beforeRegister (entity: Entity) {
if (hasTimerActive<Disease>(entity)) if (hasTimerActive<Disease>(entity))
removeTimer(entity, this) removeTimer(entity, this)
else if (entity is Player) else if (entity is Player)

View file

@ -20,7 +20,7 @@ class Frozen : PersistTimer (1, "frozen", flags = arrayOf(TimerFlag.ClearOnDeath
shouldApplyImmunity = root["applyImmunity"] as? Boolean ?: false shouldApplyImmunity = root["applyImmunity"] as? Boolean ?: false
} }
override fun onRegister (entity: Entity) { override fun beforeRegister (entity: Entity) {
if (hasTimerActive<FrozenImmunity>(entity)) { if (hasTimerActive<FrozenImmunity>(entity)) {
removeTimer(entity, this) removeTimer(entity, this)
return return

View file

@ -15,7 +15,7 @@ class Miasmic : PersistTimer (1, "miasmic", flags = arrayOf(TimerFlag.ClearOnDea
return false return false
} }
override fun onRegister (entity: Entity) { override fun beforeRegister (entity: Entity) {
if (hasTimerActive<MiasmicImmunity>(entity)) if (hasTimerActive<MiasmicImmunity>(entity))
removeTimer(entity, this) removeTimer(entity, this)
if (hasTimerActive<Miasmic>(entity)) if (hasTimerActive<Miasmic>(entity))