mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-19 22:23:11 +00:00
* FIxes Time Stop being a 3x3 instead of a 5x5 (no seriously) (#73339) ## About The Pull Request Keen eyes will notice time stop is intended to have a radius of 23c0013dfa5/code/modules/spells/spell_types/self/stop_time.dm (L14-L17)This implies it's supposed to be a 5x5 - radius of 2 Back when it was originally coded, it was a 5x5f2abe13f51(scroll down a bit, and you will see `orange(2)`. This is a 5x5.) So where did it become a 3x3? I can't find a single PR nerfing it, and the radius is still 2 as it always has been The answer: Here, in 2017 it was refactored to use fields #30858 Fields track their inner fields and edge fields separately, but it used the same radius as before, so it quietly shrunk by 1 tile as the outer edge was no longer counted as frozen, and I guess no one noticed? or cared? I don't know?? So I updated advanced fields to have a "mode" that tracks edge fields as field turfs. While I was here, I fixed some other issues with timestop. A runtime when movelooping mobs were time stopped, sign languagers (emote mute). And while I was "while I was here", Gravity aura had a similar issue, causing the grav gen's aura to never work. That was fixed as well ## Why It's Good For The Game This caused an hour long search over a 5 year old bug ## Changelog 🆑 Melbert fix: Fixed a FIVE YEAR OLD issue causing Time Stop to be a 3x3 instead of a 5x5. Really. fix: The gravity generator correctly gives "forced gravity" to all adjacent mobs fix: Fixed some runtimes with Time Stop, and other miscellaneous issues /🆑 * FIxes Time Stop being a 3x3 instead of a 5x5 (no seriously) --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
25 lines
753 B
Plaintext
25 lines
753 B
Plaintext
/datum/proximity_monitor/advanced/gravity
|
|
edge_is_a_field = TRUE
|
|
var/gravity_value = 0
|
|
var/list/modified_turfs = list()
|
|
|
|
/datum/proximity_monitor/advanced/gravity/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, gravity)
|
|
. = ..()
|
|
gravity_value = gravity
|
|
recalculate_field()
|
|
|
|
/datum/proximity_monitor/advanced/gravity/setup_field_turf(turf/target)
|
|
. = ..()
|
|
if (isnull(modified_turfs[target]))
|
|
return
|
|
|
|
target.AddElement(/datum/element/forced_gravity, gravity_value)
|
|
modified_turfs[target] = gravity_value
|
|
|
|
/datum/proximity_monitor/advanced/gravity/cleanup_field_turf(turf/target)
|
|
. = ..()
|
|
if(isnull(modified_turfs[target]))
|
|
return
|
|
target.RemoveElement(/datum/element/forced_gravity, modified_turfs[target])
|
|
modified_turfs -= target
|