Files
Bubberstation/code/game/objects/effects/spawners/random/techstorage.dm
OrionTheFox 1aaa18070f Adds a station_only subtype of Atmospherics/Station Alerts Consoles that only displays station (+mining station) alarms (#88343)
## About The Pull Request
A more proper way to be solving the alarm appearing in #88335 (That PR
still actually makes the alarm read the inside of the booth so its still
important)

As it turns out, Canary already does this - when creating a new
`/datum/station_alert/` to track the alarms, it passes the optional
areas filter included in the datum with a preset of all station areas
plus the mining station areas.

This PR (after a slight rework) adds a Subtype of the monitoring
consoles called `station_only`, which have checks that only display
alarms from the station and miningstation. These replace all pre-mapped
consoles in stations only.
This will mostly be notable on Icebox and other Multi-Z stations, where
ruins will stop polluting the alarm boards and alarms on all levels will
be displayed - and, on other stations, the fact that alarm boards will
now also display the mining station.
<details><summary>z-level vs station_only</summary>


![image](https://github.com/user-attachments/assets/625eeb1a-0dcf-4842-b02d-4d4dcf9fed51)


![image](https://github.com/user-attachments/assets/1627b062-11bd-4f1e-ac3d-f8824018460f)


</details>

Examining the console will display if it's in z-level or station-area
mode, and this can be changed by multitooling the circuitboard (for crew
rebuilding both damaged station consoles, or space ruins)

<details><summary>examines</summary>


![image](https://github.com/user-attachments/assets/3e9d863e-a7f8-4fdf-8545-cf5c2c4b3bf5)

![image](https://github.com/user-attachments/assets/7e06cdc0-8dce-4006-9d75-29f2fb291cab)


</details>

- [x] TO-DO: Fix Station Alerts Consoles not get set up correctly when
rebuilt ~~(the tracking is set up before the circuit can pass on
`station_only`)~~ (Done much cleaner now, thank you Lemon/Potato)
- [x] TO-DO: Test how this behaves with renamed or newly created
areas... (Renamed functions fine, Newly Created is probably better fixed
in the creation code so that it applies to other station area checks.)

## Why It's Good For The Game
Engineering shouldn't need to worry about ruins or otherwise non-station
alarms. Appearing in the station consoles is confusing and annoying to
those who like to see the board green all across.
Plus, they SHOULD be at least slightly worried about the mining station,
or at least able to tell somebody else about alerts there.
Also of course they should just be able to see all of icebox/tram/other
multi-z stations from alert consoles instead of needing to have one
per-zlevel
## Changelog
🆑
qol: Atmospherics/Station Alerts Consoles can now be set to only display
station (+mining station) areas. Station-mapped ones are set to this by
default. Use a multitool on the circuitboard to toggle between z-level
or station-area tracking!
fix: In turn, Atmospherics Alert Consoles now actually show the whole of
multi-z stations instead of ignoring other z-levels
/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2025-01-15 11:40:57 +01:00

128 lines
4.3 KiB
Plaintext

// Tech storage circuit board spawners
/obj/effect/spawner/random/techstorage
name = "generic circuit board spawner"
icon_state = "circuit"
spawn_loot_split = TRUE
spawn_all_loot = TRUE
/obj/effect/spawner/random/techstorage/data_disk
name = "data disk spawner"
icon_state = "disk"
spawn_all_loot = FALSE
loot = list(
/obj/item/disk/data = 49,
/obj/item/disk/nuclear/fake/obvious = 1,
)
/obj/effect/spawner/random/techstorage/arcade_boards
name = "arcade board spawner"
spawn_all_loot = FALSE
spawn_loot_count = 1
loot = list(
/obj/item/circuitboard/computer/arcade/amputation,
/obj/item/circuitboard/computer/arcade/battle,
/obj/item/circuitboard/computer/arcade/orion_trail,
)
/obj/effect/spawner/random/techstorage/service_all
name = "service circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/arcade/battle,
/obj/item/circuitboard/computer/arcade/orion_trail,
/obj/item/circuitboard/machine/autolathe,
/obj/item/circuitboard/computer/mining,
/obj/item/circuitboard/machine/ore_redemption,
/obj/item/circuitboard/computer/order_console/mining,
/obj/item/circuitboard/machine/microwave,
/obj/item/circuitboard/machine/microwave/engineering,
/obj/item/circuitboard/machine/deep_fryer,
/obj/item/circuitboard/machine/griddle,
/obj/item/circuitboard/machine/reagentgrinder,
/obj/item/circuitboard/machine/oven,
/obj/item/circuitboard/machine/stove,
/obj/item/circuitboard/machine/processor,
/obj/item/circuitboard/machine/gibber,
/obj/item/circuitboard/machine/chem_dispenser/drinks,
/obj/item/circuitboard/machine/chem_dispenser/drinks/beer,
/obj/item/circuitboard/computer/slot_machine,
)
/obj/effect/spawner/random/techstorage/rnd_all
name = "RnD circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/aifixer,
/obj/item/circuitboard/machine/rdserver,
/obj/item/circuitboard/machine/mechfab,
/obj/item/circuitboard/machine/circuit_imprinter/department,
/obj/item/circuitboard/computer/teleporter,
/obj/item/circuitboard/machine/destructive_analyzer,
/obj/item/circuitboard/computer/rdconsole,
/obj/item/circuitboard/computer/scan_consolenew,
/obj/item/circuitboard/machine/dnascanner,
/obj/item/circuitboard/machine/dna_infuser,
)
/obj/effect/spawner/random/techstorage/security_all
name = "security circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/secure_data,
/obj/item/circuitboard/computer/security,
/obj/item/circuitboard/computer/prisoner,
)
/obj/effect/spawner/random/techstorage/engineering_all
name = "engineering circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/atmos_alert,
/obj/item/circuitboard/computer/station_alert,
/obj/item/circuitboard/computer/powermonitor,
)
/obj/effect/spawner/random/techstorage/tcomms_all
name = "tcomms circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/message_monitor,
/obj/item/circuitboard/machine/telecomms/broadcaster,
/obj/item/circuitboard/machine/telecomms/bus,
/obj/item/circuitboard/machine/telecomms/server,
/obj/item/circuitboard/machine/telecomms/receiver,
/obj/item/circuitboard/machine/telecomms/processor,
/obj/item/circuitboard/machine/announcement_system,
/obj/item/circuitboard/computer/comm_server,
/obj/item/circuitboard/computer/comm_monitor,
)
/obj/effect/spawner/random/techstorage/medical_all
name = "medical circuit board spawner"
loot = list(
/obj/item/circuitboard/machine/chem_dispenser,
/obj/item/circuitboard/computer/med_data,
/obj/item/circuitboard/machine/smoke_machine,
/obj/item/circuitboard/machine/chem_master,
/obj/item/circuitboard/computer/pandemic,
)
/obj/effect/spawner/random/techstorage/ai_all
name = "secure AI circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/aiupload,
/obj/item/circuitboard/computer/borgupload,
/obj/item/circuitboard/aicore,
)
/obj/effect/spawner/random/techstorage/command_all
name = "secure command circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/crew,
/obj/item/circuitboard/computer/communications,
/obj/item/circuitboard/computer/bankmachine,
)
/obj/effect/spawner/random/techstorage/rnd_secure_all
name = "secure RnD circuit board spawner"
loot = list(
/obj/item/circuitboard/computer/mecha_control,
/obj/item/circuitboard/computer/apc_control,
/obj/item/circuitboard/computer/robotics,
)