Refactors SM Delaminations to be strategies (#68599)

I'm a badmin, how do I force a specific delam?

To set the sm to delam in a specific way, do set_delam(2, delam_path) delam_path is stuffs like /datum/sm_delam_strat/cascade
To make the sm delam, call force_delam()
About The Pull Request

If you're boring enough to click on a refactor pr you probably already know what a strat is, otherwise https://refactoring.guru/design-patterns/strategy.
Behavior Rundown
Note that the actual delamination event is evaluated at the end of countdown. It's possible for say a tesla delam to explode normally if at the end of the countdown it loses enough power. See: and commit
Why It's Good For The Game

a7ce9e2
Changelog

cl
refactor: All four SM delams got recoded, no significant gameplay changes expected.
qol: SM healing is broadcasted on crew radio too now instead of just engi
qol: SM going singulo or tesla will be announced on common comms when the damage is getting severe enough.
code: Only engines considered to be a main engine can spawn stationwide anomalies and trigger cascades.
fix: Fixed the sm not having a boxy overlay on normal delams when counting down. This is what the radio message was referring to as "causality field".
/cl
This commit is contained in:
vincentiusvin
2022-08-03 12:57:55 +12:00
committed by GitHub
parent 5ed244d3b5
commit b8551336aa
13 changed files with 698 additions and 634 deletions
@@ -46,8 +46,8 @@
desc = "Your benefactors conveinently neglected to mention it's already assembled."
anchored = TRUE
radio_key = /obj/item/encryptionkey/syndicate
engineering_channel = "Syndicate"
common_channel = "Syndicate"
emergency_channel = "Syndicate"
warning_channel = "Syndicate"
include_in_cims = FALSE
/obj/machinery/power/supermatter_crystal/shard/syndicate/attackby(obj/item/item, mob/living/user, params)