space-station-14
space-station-14 copied to clipboard
Firelock improvements part 1
fixes #25788 fixes #25975
About the PR
These are some basic improvements to firelocks, I'll make more but I was advised to split prs.
This PR makes it so:
- Firelocks can be pried by hand at half the speed of using a crowbar.
- As a side-effect of the above, the pryingsystem was modified to take a custom modifier for PryUnpowered doors stored in the component instead of being hardcoded to 10% speed.
- Firelocks no longer have broken prediction.
- Firelocks will not be closed due to a hazardous environment for 2 seconds after you have pried them open.
Why / Balance
Firelocks often end up obstructing players to an extreme degree, being unbelievably frustrating to deal with. Making them pryable by hand alleviates some of this frustration by not stranding you in an deadly environment if you are unlucky enough to not have a crowbar. Unlike normal airlocks, firelocks can be pried by hand even when powered.
Prediction stuff is self explanatory.
Technical details
PryUnpowered doors can now provide a custom modifiers with the PryUnpoweredComponent for prying with your hands.
I moved as much stuff as I could to shared. One thing I could not move is the atmos checks that firelocks still do. Instead, to predict this properly 2 bools are set to indicate whether the firelock is locked due to hazardous temperatures or atmosphere which are synced to the client. Additionally this allows me to remove atmosphere checks when determining whether a firelock can be opened, and whenever visuals are updated since now they can just check the bool.
For the firelocks not closing I just store a default cooldown on the firelock and then store a timespan whenever the firelock is pried open and then check it on the EmergencyPressureStop function.
I originally wanted to make firelocks fully depend on fire alarms, however the following issues were raised with this:
- A lot of stations do not have adequate coverage of air alarms.
- Most shuttles do not have air alarms at all.
As such, firelocks still have magic sensors.
I additionally changed the update interval to first be a proper constant, and that it is based on tickrate so that it gets slowed down/sped up by updating the tickrate on a server. This is good considering that it runs atmos checks on firelocks.
Lastly, firelocks have the unique property of being pryable by hand without having to be unpowered. This is because the check for this is done by the airlocksystem. Firelocks do not have the airlock component.
Media
- [x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase
Breaking changes
Changelog
:cl:
- tweak: Firelocks can now be pried by hand.
- tweak: Firelocks will now not automatically close for 2 seconds after you pry them open.
- fix: Firelocks are now properly predicted.
Does this fix firelock maintenance panels? If not, could you look into that while you're at it?
Firelock maint panels used to be broken for a while, showing up empty with no wires or contacts despite still being boltable, etc.
Does this fix firelock maintenance panels? If not, could you look into that while you're at it?
Firelock maint panels used to be broken for a while, showing up empty with no wires or contacts despite still being boltable, etc.
They have maintenance panels? I thought they intentionally could not be hacked. I could do this on a follow-up pr since I was advised to split stuff so it doesn't get too big.
They have maintenance panels? I thought they intentionally could not be hacked. I could do this on a follow-up pr since I was advised to split stuff so it doesn't get too big.
If intentional it's a pain in the ass to deal with; they have panels but no wires
You'd need a firelock remote and the firelock itself would still need power, making unbolting impossible if you're not atmos
game theory remove firelocks entirely
Ah fuck, another pr was made before this that also deals with firelock prediction in a different way and I had no idea until now. I'll need to see if I can resolve this.
I guess I'll wait for the other pr to get merged and then integrate the changes.
Forgot to put this in draft because of that.
Well that pr seems to be closed with no new one coming. Undrafting.
This pull request has conflicts, please resolve those before we can evaluate the pull request.