Obsolete and migrate legacy wire
Summary
Balance "Obsolete and migrate legacy wire in favor of mild steel wire"
Purpose of change
See #75840. Legacy steel should be discontinued and split instances of wire and lc_wire should be unified.
Describe the solution
-
Migration and item handling Mass replace
"wire"with"lc_wire". Create a migration forwiretolc_wire. Create a migration for piano wire toqt_wire. Create an"any_wire"requirement group that contains all wires (except legacy wire). Include it in appropriate places. -
Constructions All constructions and deconstructions of terrain and furniture will use
lc_wireonly, except: Light, heavy, old, electronic machinery may drop all grades of wire Reinforced glass drops medium steel wire -
Loot Itemgroups such as steel mill, farm supplies, hardware stores, exodii metal supplies may contain all grades of wire
-
Items, recipes, uncrafts Most recipes where wire grade does not matter uses
any_wirerequirement group wire baskets and cages use lc_wire only remove the recipe that converts wire to scrap mattresses no longer drop springs, instead drop high steel wire -
chainmail Create a migration for
chain_linktolc_chain_linkCreate a migration forlink_sheettolc_link_sheetAll recipes that usechain_linkorlink_sheetnow use appropriate graded steel versions
Describe alternatives you've considered
Not using an any_wire requirement group, or using it less
Testing
Create a world without changes. Spawn items. Update to include changes. Verify proper migration and handling.
- [ ] Legacy wire and piano wire migrates properly, no other wires affected
- [ ] Cannot craft legacy wire anymore
- [ ] Deconstruct piano
- [ ] TBD...
Additional context
You know, it would be best if we just got rid of medium steel altogether. Mild steel > case hardened steel High steel > tempered steel Pretty elegant I think. Medium steel makes the existence of case hardened and high steels complicated. But that's an issue for another... issue.
Testing: As well as you can. Some ideas:
- Make/find save with legacy wire available. Verify it transforms without issue when loaded with new code.
- Examine a number or recipes that used to use legacy wire and verify they now require mild steel wire.
- Craft a couple of random modified recipes to verify they still work but uses mild steel wire.
- Debug spawn some mild steel wire and verify it stacks with migrated wire (so the migrated one doesn't become some weird shadow version).
Should I keep the scrap > lc_wire recipe (old recipe was scrap > wire), or remove it in favor of lc_steel_chunk > lc_wire? I think removing one might mess with innawoods.
How broadly should the "any_wire" requirement group be used? Currently they're used in every recipe involving wire where the wire grade does not matter (anything like space heaters, wooden wheel mounts, canteens, vehicle controls, butchering racks...). However mild steel wire is indeed easier to work and weld, and the material properties of different wire grades are different. So the alternative is to only allow mild steel wire, which makes it very commonly used, but makes other wire grades harder to use, which may be a non-issue.
Should it migrate in-progress items or such migrations are not implemented?
Should it migrate in-progress items or such migrations are not implemented?
I'm not aware of any ways of doing that, no.