[MIRROR] Minor Gravity Fixes [MDB IGNORE] (#20127)

* Minor Gravity Fixes (#74285)

## About The Pull Request

Fixes forced gravity not updating a mob (trait was added too early,
before hook signals are registered)
Fixes spawning a mob in space not causing floats (default grav was 0, so
== null was wrong)
Runs shake_everyone() (Our gravity gen reaction hook) AFTER gravity
changes, ensuring mobs hook into it

## Why It's Good For The Game

Closes #74271
Closes #74272 (Caused by being in nograv but not floating)
Closes #74274
## Changelog
🆑
fix: Fixes a bunch of minor gravity bugs, report em if you see more
yeah?
/🆑

* Minor Gravity Fixes

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-03-29 23:27:00 +02:00
committed by GitHub
parent 537e00475c
commit ee5a40cb2b
3 changed files with 12 additions and 12 deletions
+1 -1
View File
@@ -224,4 +224,4 @@
var/list/imaginary_group = null
/// What our current gravity state is. Used to avoid duplicate animates and such
var/gravity_state = 0
var/gravity_state = null
+9 -10
View File
@@ -311,14 +311,16 @@ GLOBAL_LIST_EMPTY(gravity_generators)
update_use_power(ACTIVE_POWER_USE)
soundloop.start()
if (!gravity_in_level())
var/old_gravity = gravity_in_level()
complete_state_update()
gravity_field = new(src, 2, TRUE, 6)
if (!old_gravity)
if(SSticker.current_state == GAME_STATE_PLAYING)
investigate_log("was brought online and is now producing gravity for this level.", INVESTIGATE_GRAVITY)
message_admins("The gravity generator was brought online [ADMIN_VERBOSEJMP(src)]")
shake_everyone()
gravity_field = new(src, 2, TRUE, 6)
complete_state_update()
/obj/machinery/gravity_generator/main/proc/disable()
charging_state = POWER_IDLE
@@ -327,13 +329,15 @@ GLOBAL_LIST_EMPTY(gravity_generators)
soundloop.stop()
QDEL_NULL(gravity_field)
if (gravity_in_level())
var/old_gravity = gravity_in_level()
complete_state_update()
if (old_gravity)
if(SSticker.current_state == GAME_STATE_PLAYING)
investigate_log("was brought offline and there is now no gravity for this level.", INVESTIGATE_GRAVITY)
message_admins("The gravity generator was brought offline with no backup generator. [ADMIN_VERBOSEJMP(src)]")
shake_everyone()
complete_state_update()
/obj/machinery/gravity_generator/main/proc/complete_state_update()
update_appearance()
@@ -431,11 +435,6 @@ GLOBAL_LIST_EMPTY(gravity_generators)
GLOB.gravity_generators["[z]"] -= src
SSmapping.calculate_z_level_gravity(z)
/obj/machinery/gravity_generator/main/proc/change_setting(value)
if(value != setting)
setting = value
shake_everyone()
/obj/machinery/gravity_generator/main/proc/blackout()
charge_count = 0
breaker = FALSE