Ambience Buzz Handling Changes + Ambience buzz requires enviorment power (#84479)

## About The Pull Request
Partial port of https://github.com/DaedalusDock/daedalusdock/pull/996
- Fixes ambience prefrence inconsistancy issues with Observers unable to
turn off the ambience buzz.
- Ambience buzz requires a working, existing, charged APC with power to
the enviorment.
- Moves ``update_ambience_area()`` and ``refresh_looping_ambience()``
into ``code\controllers\subsystem\ambience.dm`` for better organization.

## Why It's Good For The Game

Mostly to tackle a prefrence bug where ghosts are unable to turn off
ambience buzz. But this also includes ambience buzz requiring a powered
area. Makes the station feel more dead when there's no enviorment power.
There should also be no buzzing inside space.

## Changelog

🆑 Kapu (ported by StrangeWeirdKitten)
fix: Ambience buzz will now respect ship ambience prefrences for
observers.
sound: Ambience buzz requires APC enviorment power to function
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
The Sharkening
2024-07-01 10:52:23 +02:00
committed by GitHub
co-authored by Ghom
parent 8c605d151d
commit b643391e5a
6 changed files with 64 additions and 34 deletions
@@ -359,6 +359,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
abstract_move(destination) // move like the wind
return TRUE
/mob/dead/observer/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
. = ..()
var/area/new_area = get_area(src)
if(new_area != ambience_tracked_area)
update_ambience_area(new_area)
/mob/dead/observer/verb/reenter_corpse()
set category = "Ghost"
set name = "Re-enter Corpse"