Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blanket can be exploited for extra materials. #45063

Closed
Xindage opened this issue Oct 25, 2020 · 16 comments · Fixed by #45779
Closed

Blanket can be exploited for extra materials. #45063

Xindage opened this issue Oct 25, 2020 · 16 comments · Fixed by #45779
Labels
Crafting / Construction / Recipes Includes: Uncrafting / Disassembling <Exploit> Unintended interactions or behavior, usually breaking how the game is balanced Good First Issue This is a good first issue for a new contributor [JSON] Changes (can be) made in JSON

Comments

@Xindage
Copy link

Xindage commented Oct 25, 2020

Describe the bug

Blanket can be either disassembled or "butchered" to get it material, cutting the blanket was supposed to give me less than 35 rags, but instead it give me around 59 rags in a matter of 15 seconds. disassembling give me 35 rags in 20 minutes, sure something is wrong here.

Steps To Reproduce

  1. Have a cutting tool.
  2. Spawn 2 blankets.
  3. Disassembly one and cut the other.
  4. Notice the difference.

Expected behavior

Salvaging less material after cutting the blanket, something around 20 to 30.

Edit from devs: for the purposes of fixing this bug, the resources to craft the blanket need to be increased to be equal to or greater than what you get from butchering it, or the weight/volume of the blanket need to be reduced to match the components that go into it. These are both very easy JSON fixes. --erk

Screenshots

image

Versions and configuration

  • OS: Linux
    • OS Version: Distributor ID: Ubuntu; Description: Ubuntu 20.04.1 LTS; Release: 20.04; Codename: focal;
  • Game Version: 0.E-7041-gdb7d137 [64-bit]
  • Graphics Version: Tiles
  • Game Language: English [en]
  • Mods loaded: [ Dark Days Ahead [dda], Disable NPC Needs [no_npc_food], Bionic Professions [package_bionic_professions], Stats Through Skills [StatsThroughSkills]]
@Drafting-Goblin
Copy link
Contributor

I was able to reproduce this on Windows on the latest build.

@Xpyder
Copy link
Contributor

Xpyder commented Oct 26, 2020

This also occurs with Sheets.
It's possible all the "Cutting" needs to be audited for materials dropped vs volume/weight of source though Blankets and Sheets seems like a good place to start

I would actually argue that cutting something up instead of disassembling should return slightly less than was used to make it (80% is the number that jumps to mind but that's very open to discussion)

@Drafting-Goblin
Copy link
Contributor

This tracks with what I've found as well. Materials have a "salvaged_into" tag in the JSON files. There has been reference to a salvaging action, but I'm unsure where that would be. Currently blankets take 35 rags to craft and give 35 rags when dissembled. I'm unsure if that's functioning as intended.

@I-am-Erk
Copy link
Member

This is basically the tailoring revamp in a nutshell. The raw ingredients needed to make blankets should exceed the weight of the product, and really disassembly should just use the same algorithm for cutting up.

@Xindage
Copy link
Author

Xindage commented Oct 26, 2020

In my point of view disassembling should give more resources than cutting, by using a small logic when disassembling should be considered like a "careful" and "precise" cutting and just cutting should be something you made out of rush, "you need a rag right now", and you don't care that you'll lost most of the materials.

Still we counting what erk said but in the state that's right now.
craft blanket 35 rags
disassembly 25-30 rags
cutting 10-20

sounds reasonable.
It can be the same thing about smashing/disassembling an furniture.

@I-am-Erk
Copy link
Member

In the case of a blanket, I have no idea what the difference between disassembling it and cutting it up would be.

@MasterLiKhao
Copy link

Personally I think the disassembly here would be careful cutting or, if the blanket was indeed made from rags, carefully separate the seams - this would make sense given the time it takes. Cutting it up should be changed to ripping it up, not require a cutting tool, but only give you very few rags. I base this on the immense difference in the time it takes for disassembly compared to what is currently called "Cutting it up".

@Xpyder
Copy link
Contributor

Xpyder commented Oct 28, 2020

In the case of a blanket, I have no idea what the difference between disassembling it and cutting it up would be.

To my mind it would be the difference between roughly and unevenly cutting and tearing it, vs carefully unstitching it to get back the sheets of fabric and inner insulation.

Mechanically I think disassembly should return close to the original materials at a cost of time, while cutting should incur loss of materials (and in the case of tailoring less usable patchworks instead of sheets) in exchange for expediency in the field

@Xpyder
Copy link
Contributor

Xpyder commented Oct 28, 2020

Also I think the crafting time for blankets and a lot of the tailoring stuff should get adjusted, since it seems like that time is being shunted into the crafting of patchwork sheets. Keeping in mind that bed sheets are likely to end up being usable directly as fresh cotton sheets or possibly as a pre-assembled equivalent to patchwork sheets. The latter both making more sense and leaving space for a new fabric_roll item that could be found in clothing stores that's the higher quality sheet

Not sure what the time ratio should be. Probably differs depending on complexity with simple projects being fast if you already have sheets and complex projects taking more actual final crafting time.

But that's probably tangent and worthy of a separate issue when the time comes

@I-am-Erk
Copy link
Member

When the product is rags, how would you get fewer rags from tearing it apart than carefully dismantling it? They're rags either way, they're not dissolving under your knife or anything, they just don't look as nice.

@Xpyder
Copy link
Contributor

Xpyder commented Oct 29, 2020

how would you get fewer rags from tearing it apart than carefully dismantling it?

There's a lot of damage to the Weft which breaks down the integrity of the fabric as a whole and requires edging the pieces before they can be usable to make other things. It would also likely be torn into imperfect shapes that aren't ideally suited for what you want to do

The 20% loss was more of a general thing if all cutting is handled by a single algorithm, and is blind to the material, and the main purpose being to give you a decision between saving time but costing resources, vs spending time but conserving resources.

That being said, with wood you get splintered wood which can't be made into what you started with, and with metal you get chunks which can be remade into stuff but cost time. Maybe cloth should be somewhere in between, this could be modeled by the current system by the rags needing to be stitched back into patchworks vs disassembly of blankets returning patchwork cotton clothing parts directly.

@I-am-Erk I-am-Erk added [JSON] Changes (can be) made in JSON Crafting / Construction / Recipes Includes: Uncrafting / Disassembling Good First Issue This is a good first issue for a new contributor labels Oct 29, 2020
@I-am-Erk I-am-Erk added this to Confirmed blockers / To Do in 0.F Release Planning via automation Oct 29, 2020
@I-am-Erk
Copy link
Member

Yeah ultimately we want disassembly to yield cotton cloth, and butchery to produce rags, but the core element of this issue for stable is that blankets should require a lot more material so that the procedural butchery step doesn't produce more than the crafting recipe. I edited the issue to reflect this.

Drafting-Goblin added a commit to Drafting-Goblin/Cataclysm-DDA that referenced this issue Oct 30, 2020
This is a temp fix for Issue CleverRaven#45063
@Xpyder
Copy link
Contributor

Xpyder commented Oct 30, 2020

I think we're agreed that there's a larger issue to be fixed. Does that already have another ticket for it (or is it already in a TBD list)?

If so then I'd say the temp fix should be enough to close this
If not then should we try to create a clean ticket with the issue clearly stated and more generalized (not just blankets)?

@I-am-Erk
Copy link
Member

I-am-Erk commented Oct 31, 2020

The primary issue is that we need a CI test that checks that, at least for anything that can be procedurally butchered, the weight of the ingredients equals the weight of the product. The rest is pretty small stuff

#37063 is probably the best place to post about that stuff

@anothersimulacrum anothersimulacrum added the <Exploit> Unintended interactions or behavior, usually breaking how the game is balanced label Nov 8, 2020
@leemuar
Copy link
Contributor

leemuar commented Nov 20, 2020

probably relates to #42375 too

@I-am-Erk
Copy link
Member

Yep, same bug

@kevingranade kevingranade moved this from Confirmed blockers / To Do to In progress in 0.F Release Planning Dec 10, 2020
0.F Release Planning automation moved this from In progress to done Jan 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Crafting / Construction / Recipes Includes: Uncrafting / Disassembling <Exploit> Unintended interactions or behavior, usually breaking how the game is balanced Good First Issue This is a good first issue for a new contributor [JSON] Changes (can be) made in JSON
Projects
No open projects
Development

Successfully merging a pull request may close this issue.

7 participants