mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-20 22:16:51 +00:00
## About The Pull Request This is starting to hit an atomisation threshold but I promise all of these fixes are related (they need the same new proc in their fix) First of all, I needed to debug specific types of dimensional anomaly because some of them replace the floor with floor tiles and some of them replace the floor with underlay tiles (like glass plating), so I added an event override to allow you to pick which to activate. This actually could be easily removed into another PR if desired, or even delayed until after the freeze if you don't think it's appropriate, it just seemed like after I wrote it then I might as well include it and I'll still need it to retest after addressing any reviews here. Fixes #39222 Fixes #70161 In both of these instances we were using `ChangeTurf` to turn one kind of floor into another kind of floor, but this is naive because in both cases we are also using a mix of "under" floors and "over" floors (from now on I will refer to these as "plating" and "floor tiles" because those are easier to understand). Transforming a plating into a plating, or a tile into a tile works fine and preserves expected behaviour. Transforming a tile into a plating is also fine, it just deletes the "over" layer and leaves you with some floor you can't remove with a crowbar. Transforming a plating into a tile creates a floor that you can remove with a crowbar _and which has no baseturf underneath_, instantly breaching it to space (or making a hole to the lower z level). This isn't expected behaviour for either of these effects. In order to fix this I added a helper proc to `turf/open` called `replace_floor`. If you pass this proc a plating it will simply replace the existing turf. If you pass it a tile then it will _always_ ensure that there is a plating underneath, making it breach-safe for any future effect (or other existing one I have forgotten about) which wants to transform floors. Also I generally refactored the "transform an area" version of the colossus crystal because that code was old and smelled bad. Fixes #55821 Finally I also fixed this for cult constructs, which was a similar but different bug. This was creating a _wall_ on top of a plating with changeturf which would _also_ destroy the plating and leave a void underneath. I haven't found any other instances of this so I fixed it in the Conjure spell rather than with a helper proc, but I can make one instead if desired. ## Why It's Good For The Game All three of these cases result in unexpected hull breaches, which can be quite annoying. In the case of both anomalous items they can cover quite a wide area in floor which can be trivially breached with a crowbar and then tedious to replace after it has destroyed all of the air. In the case of the artificer it could create breaches in cult bases (very frequently built in maint, which is mostly plating) which would immediately start suffocating your team. This is obviously not ideal. Also being able to pick the theme of the anomaly is fun. ## Changelog 🆑 fix: Plating replaced by floor tiles from a dimensional anomaly or colossus crystal will now still have plating underneath when crowbarred, instead of space (or open space on z level maps). fix: Summoning a cult wall on plating as an Artificer will leave the plating intact underneath when it is removed, rather than replacing it with a void. admin: Admins can pick the initial flavour of a manually triggered dimensional anomaly. /🆑