Cataclysm-DDA icon indicating copy to clipboard operation
Cataclysm-DDA copied to clipboard

Obsolete and migrate legacy wire

Open XygenSS opened this issue 1 year ago • 3 comments

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 for wire to lc_wire. Create a migration for piano wire to qt_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_wire only, 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_wire requirement 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_link to lc_chain_link Create a migration for link_sheet to lc_link_sheet All recipes that use chain_link or link_sheet now 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.

XygenSS avatar Sep 05 '24 05:09 XygenSS

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).

PatrikLundell avatar Sep 05 '24 08:09 PatrikLundell

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.

XygenSS avatar Sep 12 '24 00:09 XygenSS

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.

XygenSS avatar Sep 12 '24 00:09 XygenSS

Should it migrate in-progress items or such migrations are not implemented?

MikasaTanikawa avatar Sep 18 '24 15:09 MikasaTanikawa

Should it migrate in-progress items or such migrations are not implemented?

I'm not aware of any ways of doing that, no.

XygenSS avatar Sep 19 '24 05:09 XygenSS