diff --git a/Server/src/main/core/game/system/timer/RSTimer.kt b/Server/src/main/core/game/system/timer/RSTimer.kt index a995bac75..75770b7bc 100644 --- a/Server/src/main/core/game/system/timer/RSTimer.kt +++ b/Server/src/main/core/game/system/timer/RSTimer.kt @@ -24,8 +24,15 @@ abstract class RSTimer (var runInterval: Int, val identifier: String = "generict **/ 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 after the timer has been added to the timer list. **/ open fun onRegister (entity: Entity) {} diff --git a/Server/src/main/core/game/system/timer/TimerManager.kt b/Server/src/main/core/game/system/timer/TimerManager.kt index fd63b7ec5..92bd50e8c 100644 --- a/Server/src/main/core/game/system/timer/TimerManager.kt +++ b/Server/src/main/core/game/system/timer/TimerManager.kt @@ -13,8 +13,9 @@ class TimerManager (val entity: Entity) { val toRemoveTimers = ArrayList() fun registerTimer (timer: RSTimer) { + timer.beforeRegister(entity) + newTimers.add(timer) timer.onRegister(entity) - newTimers.add (timer) } fun processTimers () { diff --git a/Server/src/main/core/game/system/timer/impl/Disease.kt b/Server/src/main/core/game/system/timer/impl/Disease.kt index 7d270e0a9..cfc72ac84 100644 --- a/Server/src/main/core/game/system/timer/impl/Disease.kt +++ b/Server/src/main/core/game/system/timer/impl/Disease.kt @@ -20,7 +20,7 @@ class Disease : PersistTimer (30, "disease", flags = arrayOf(TimerFlag.ClearOnDe hitsLeft = root["hitsLeft"].toString().toInt() } - override fun onRegister (entity: Entity) { + override fun beforeRegister (entity: Entity) { if (hasTimerActive(entity)) removeTimer(entity, this) else if (entity is Player) diff --git a/Server/src/main/core/game/system/timer/impl/Frozen.kt b/Server/src/main/core/game/system/timer/impl/Frozen.kt index 94c5456a4..97fd002f8 100644 --- a/Server/src/main/core/game/system/timer/impl/Frozen.kt +++ b/Server/src/main/core/game/system/timer/impl/Frozen.kt @@ -20,7 +20,7 @@ class Frozen : PersistTimer (1, "frozen", flags = arrayOf(TimerFlag.ClearOnDeath shouldApplyImmunity = root["applyImmunity"] as? Boolean ?: false } - override fun onRegister (entity: Entity) { + override fun beforeRegister (entity: Entity) { if (hasTimerActive(entity)) { removeTimer(entity, this) return diff --git a/Server/src/main/core/game/system/timer/impl/Miasmic.kt b/Server/src/main/core/game/system/timer/impl/Miasmic.kt index d9c1eca18..9af8ee3ad 100644 --- a/Server/src/main/core/game/system/timer/impl/Miasmic.kt +++ b/Server/src/main/core/game/system/timer/impl/Miasmic.kt @@ -15,7 +15,7 @@ class Miasmic : PersistTimer (1, "miasmic", flags = arrayOf(TimerFlag.ClearOnDea return false } - override fun onRegister (entity: Entity) { + override fun beforeRegister (entity: Entity) { if (hasTimerActive(entity)) removeTimer(entity, this) if (hasTimerActive(entity))