Walls 2: Electric Boogaloo #8482
Merged
+23,128
−26,050
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
About The Pull Request
This is PR that initially came to be as an alternative way of drawing 3/4 wall sprites,
Intended to make a fancy wall style that one of our downstreams came up with actually functional,
and spriter experience with making new walls better.
For one, time of making a wall style for cyberspace was not fun, to put it mildly, but changes in this PR should make such process a whole lot easier in the future.
This is how downstream church walls look on Eris:
(screenshot is somewhat outdated, window corner looks better now)
We won't be having these walls added anywhere with this PR, it just makes them possible, not replaces any textures.
Sprite sheets looks like this now:
Visualisation of internal logic:
While implementing and testing all that, however, I've been constantly reminded by runtime errors that we have infinite loops and some messed up recursion in turf code (unrelated to sprites) and it annoyed me one time too many,
So I've changed a bit of internal logic there, eliminating runtimes, unused variables, and marginally improving performance of the whole thing.
After discussing this with Handyman, I've also went ahead and
out of spiteremoved material walls, made low walls a subtype of regular walls with full-tile windows baked in (code-wise), and (de)construction process simplified.This mostly works, but some parts of wall/turf code are yet to be rewritten (thermite melting and whatnot), new low wallsneed to work with atmos better and with 100% reliability, and there are some more optimisations to be made.And as such, this PR is here as a draft, in case if someone wants to check on ~50k diffs here or offer an opinion.UPD:
This is only one girder now, is worth 5 steel and will create a regular wall with 5 more steel.
Or a low wall, if it's pried first.
Alternatively it could be reinforced with 2 steel rods and turned into a reinforced wall with 5 plasteel.
Wrenching the girder will (un)anchor it, but reinforced girder can't be moved.
Disassembling the reinforced wall now requires fewer steps:
Bolt turning, prying, wire cutting, hammering and welding.
Hammering tool must be of quality 15 at least.
Wire cutting step depends on tool quality much more.
Why It's Good For The Game
Not having a proc overwrite spaghetti with infinite loops in the code should be pretty good.
Slight performance improvement.
Merging low walls with floor and windows should cull 5000+ objects from the map. Not that big of a deal, but still nice.
Making new walls is much more straightforward process. Not happens often, but still.
Moving on from bay12 procedurally colored material walls might be a tad controversial, even if this feature was used by literally no one, but ultimately for the best too.
Testing
Lots.
Changelog
🆑
tweak: Changed reinforced wall deconstruction steps.
refactor: Refactored part of turf code, including wall.
code: Changed how wall sprites are generated.
/:cl: