Fixes https://github.com/Aurorastation/Aurora.3/issues/21682
Fixes https://github.com/Aurorastation/Aurora.3/issues/21719
changes:
- bugfix: "Fixes shield diffusers no longer diffusing targeted shield
segments (used for mass driver ejection paths)."
- bugfix: "Moves air alarm hidden behind D3 starboard central hallway
shutters to visible free spot on opposite wall."
- rscadd: "Adds tintable window control to the Horizon's exam room."
- rscadd: "Adds tintable window controls for both the interior and
exterior windows of the Horizon's recovery room."
- rscadd: "Adds an additional light to a particularly dark corner of the
Horizon's d2 hard storage room."
Ship shields currently occupy something like 40% of every machinery
process ticks. Basically generators make a fuckhuge list of all
generated shields (1.5k in the Horizon's case) and then they iterate
over this list every tick strengthening the shields.
The idea in this PR is to shunt shield logic to an abstract datum.
Fields no longer store strength individually; they store damage taken.
They only process once they take damage, they reduce that damage by the
field gain tick value every tick, and then they stop processing when
they no longer need to. Shield strengthening is shunted off to a signal,
so we only need to traverse the big ass list once every round probably.
---------
Co-authored-by: Matt Atlas <liermattia@gmail.com>