mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-12 02:32:10 +00:00
* Kills `seconds_per_tick` from status effect `tick`, replaces it with `seconds_between_ticks` to clarify some things (#77219) ## About The Pull Request https://github.com/tgstation/tgstation/pull/66573#discussion_r861157216 `status_effect/proc/tick(seconds_per_tick)` is wildly misleading and I feel like I should address it For a majority of status effects, they process on fast processing but do not tick every fastprocessing tick This means that using `seconds_per_tick` here is not giving you the seconds between status effect ticks, it's giving you seconds between processing ticks (`0.2`) This is how it's misleading - If you have a tick interval of `1 SECONDS`, you'd think `seconds_per_tick` is, well, one. But it's actually one-fifth. So all of your effects are now 80% weaker. I have replaced the use of `seconds_per_tick` in tick with `seconds_between_ticks`. This number is, quite simply, the initial tick interval of the status effect divided by ten. An effect with the tick interval of `1 SECONDS` has a `seconds_between_ticks` of 1. As a consequence, some things which were inadvertently made weaker, such as fire and some heretic things (at a glance), are now a little stronger. ## Why It's Good For The Game See above. Makes it more clear what you're doing when working with effects. ## Changelog 🆑 Melbert code: Updated some status effect tick code to be more clear of how long is elapsing between ticks. Some effects that were inadvertently weakened are now stronger as a result (fire and some heretic effects). /🆑 * Kills `seconds_per_tick` from status effect `tick`, replaces it with `seconds_between_ticks` to clarify some things * Modular updates --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
24 lines
1.3 KiB
Plaintext
24 lines
1.3 KiB
Plaintext
/// Validates status effect tick interval setup
|
|
/datum/unit_test/status_effect_ticks
|
|
|
|
/datum/unit_test/status_effect_ticks/Run()
|
|
for(var/datum/status_effect/checking as anything in subtypesof(/datum/status_effect))
|
|
var/checking_tick = initial(checking.tick_interval)
|
|
if(checking_tick == -1)
|
|
continue
|
|
if(checking_tick == INFINITY)
|
|
TEST_FAIL("Status effect [checking] has tick_interval set to INFINITY, this is not how you prevent ticks - use tick_interval = -1 instead.")
|
|
continue
|
|
if(checking_tick == 0)
|
|
TEST_FAIL("Status effect [checking] has tick_interval set to 0, this is not how you prevent ticks - use tick_interval = -1 instead.")
|
|
continue
|
|
switch(initial(checking.processing_speed))
|
|
if(STATUS_EFFECT_FAST_PROCESS)
|
|
if(checking_tick < SSfastprocess.wait)
|
|
TEST_FAIL("Status effect [checking] has tick_interval set to [checking_tick], which is faster than SSfastprocess can tick ([SSfastprocess.wait]).")
|
|
if(STATUS_EFFECT_NORMAL_PROCESS)
|
|
if(checking_tick < SSprocessing.wait)
|
|
TEST_FAIL("Status effect [checking] has tick_interval set to [checking_tick], which is faster than SSprocessing can tick ([SSprocessing.wait]).")
|
|
else
|
|
TEST_FAIL("Invalid processing speed for status effect [checking] : [initial(checking.processing_speed)]")
|