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

feat(balance): tweaks for crafting and disassembly consistency #3517

Merged
merged 4 commits into from
Nov 6, 2023

Conversation

YeOldeMiller
Copy link
Contributor

@YeOldeMiller YeOldeMiller commented Oct 28, 2023

Summary

SUMMARY: Balance "Improve crafting and disassembling consistency for common clothing and other items"

Purpose of change

Item disassembly is annoying for two reasons. Firstly, some clothing articles commonly encountered in loot take way too long to take apart for no good reason despite not producing anything particularly valuable.

Secondly, way too many items slip through the cracks of the generic salvage system while having no specific disassembly recipes of their own. After handling another haul of loot you're often left with a bunch of garbage items that are so utterly useless you end up just having to throw them into fire. Or, alternatively, you have to pick and choose your loot more carefully, but that's just one annoyance to escape another.

Describe the solution

UPDATE: Wow this went outside of initial scope fast. I first planned to focus on disassembly only and keep the existing pattern of using threads as substitute for partial rags in recipe outputs, while reducing the time it takes to unravel rags into thread across the board to compensate, but both ideas quickly went out the window. Let's see what we ended up with instead.

I changed existing uncraft recipes that return threads to instead output a piece of rag. Returning a single rag makes uncraft recipes for cotton items consistent with those for leather and fur that already return a single patch of respective material.

One exception from this is knitted items. Some of the existing kititing recipes are marked as reversible, others are not. I went ahead and made them all reversible gave them special uncraft recipes with 10% the time requirement and full return of material, since any knitted clothing can be easily unraveled IRL. I had to make changes to amounts of crafting inputs, times and / or item weights in a few cases to keep things roughly consistent.

Additionally:

  • moved a number of entries for clothing items uncraft recipes from generic.json into armor.json
  • added BLIND_HARD tag to recipes that represent cutting an item into pieces (it was already present on some recipes so it was either remove completely or apply to all similar)
  • adjusted craft and uncraft recipe for copper pot to be consistent with both each other and the item's weight, added a similar uncraft recipe for copper frying pan
  • fixed copper tubing disassembling into more copper than it costs to craft
  • fixed wool poncho salvaging into more material than it costs to craft
  • added uncraft recipes for a few random household clutter items
  • added BLIND_EASY tag to generic recipes that result in just plastic or metal scrap, as those clearly require no precision

Describe alternatives you've considered

Maybe knitted items could be given separate uncraft recipes that take less time instead of making them reversible, but that can be changed later. Done

Testing

Checked that individual items report correct expected components in the deconstruct menu. Then set the character to 'deconstruct everything once' in my garbage pile, until there was nothing left but basic materials.

@github-actions github-actions bot added the JSON related to game datas in JSON format. label Oct 28, 2023
@chaosvolt
Copy link
Member

Nice. This is going to make the recipe rebalancing easier in the long run for me since I'd already decided I was gonna want to just undo a lot of the material weight increases I did for the small items and just rely on uncrafts instead.

@Zireael07
Copy link
Contributor

Zireael07 commented Oct 28, 2023

10 minutes to uncraft underwear into fiber is too little imho - 10 minutes would be okay if it were randomly tearing things up which this obviously is not

@YeOldeMiller
Copy link
Contributor Author

YeOldeMiller commented Oct 28, 2023

10 minutes to uncraft underwear into fiber is too little imho - 10 minutes would be okay if it were randomly tearing things up which this obviously is not

Realistically, you're probably right. Problem is, if it takes much longer, it stops being worth it for the player altogether. Here's another important thing to consider: IRL you wouldn't necessarily pull those smaller items into threads, you might want to keep them as smaller patches of fabric. Since there's no such thing in the game as a smaller patch of fabric, and there's no way to return half a rag, we just return an equivalent amount of thread and call it even, but what isn't even is of course time spent on disassembly.

As an alternative, we could ignore the weight difference and return a single rag even from smaller items; hell, that's what already happens with some of them, I just thought it felt especially idiotic with small items. A bikini top is crafted out of 4 rags, but would it look right if that little thing actually disassembled into 4 rags, or even one? Either way, it's not realistic, the question is, what would be more balanced / work better for gameplay.

As yet another alternative, I think @scarf005 has been experimenting with converting most materials to stackable charges. If that gets mainlined, it might be a good idea it to just set the standard rag size smaller so that even small items would qualify to be salvaged into at least one patch instead of a bunch of threads.

EDIT: I'm not opposed to setting the time to 30 / 15 minutes if that'd be more balanced but let's see more opinions before I make any changes. I'm actually interested in more feedback on other values as well.

@Zireael07
Copy link
Contributor

Bikini = 1 rag, or making standard rag smaller with charges/stackability/whatever both sound like good solutions

@YeOldeMiller YeOldeMiller marked this pull request as draft October 28, 2023 20:02
@YeOldeMiller YeOldeMiller changed the title feat(balance): less frustrating generic loot & clothing disassembly feat(balance): tweaks for crafting and disassembly consistency Oct 29, 2023
@YeOldeMiller YeOldeMiller marked this pull request as ready for review October 29, 2023 13:17
@YeOldeMiller
Copy link
Contributor Author

For extra context, take a look at #3521. I think my changes would complement that PR well by fixing all the underwear uncrafts that still take ages despite base rag disassembly time having been reduced.

@RoyalFox2140
Copy link
Collaborator

I know I'm very late to this discussion. The reason I generally dislike salvage by weight is due to instances returning 0 items due to being under the required weight to output even a single item. That also applies to stuff like underwear needing to be weaved into thread. I think that a minimum return of 1 on salvage by weight (realism is an issue but we need to focus on balance and reward here) is a way to solve this. If that is out of the question for any reason, than manually adding an uncraft to forcibly have them give 1 rag is the brute force way to do it.

With balance questions like these I think the best solution is to gather as much data as possible to conclude why some items just suck to uncraft. My examples for getting rags is always going to be mattresses and sheets which is basically everywhere thanks to houses/cabins having beds and windows. For thread its sheets and string which itself can be found on curtains and mattresses. I feel I've stumbled upon the potential need to heavily nerf mattresses and curtains if buffing other sources is out of the question.

@RoyalFox2140
Copy link
Collaborator

RoyalFox2140 commented Oct 30, 2023

10 minutes to uncraft underwear into fiber is too little imho - 10 minutes would be okay if it were randomly tearing things up which this obviously is not

Here is some relevant followup math I will take into consideration for the balance of uncrafting into raw thread. @YeOldeMiller @Zireael07

  1. Mattress: 22 seconds, 60 rags and 4 sheets.
  2. Sheet: 10 minutes, 20 rags 50 thread
  3. Long string: 5 minutes, 6 short strings.
  4. Short string: 5 minutes, 50 thread.

40 minutes and 22 seconds disassembling a mattress and its sheets gives 200 thread and 140 rags.

1A: Window with curtains: 2 sheets, 1 long string.
Dissasembling the string on the window is 300 thread in 35 minutes plus the seconds it took to take down those curtains. The sheets is an extra 10 minutes and 40 rags 100 thread. 400 thread 40 rags in 45 minutes

We have a huge inconsistency on time versus reward and a lot of ways to address this.

@YeOldeMiller
Copy link
Contributor Author

YeOldeMiller commented Oct 30, 2023

I think that a minimum return of 1 on salvage by weight (realism is an issue but we need to focus on balance and reward here) is a way to solve this. If that is out of the question for any reason, than manually adding an uncraft to forcibly have them give 1 rag is the brute force way to do it.

I considered the possibility of adjusting the salvage system to give a minimum of 1 rag, but who knows what possible side effects might be. I consider the uncraft way to be less 'brute force' and more 'manageable and easily curated list of exceptions'.

We have a huge inconsistency on time versus reward and a lot of ways to address this.

Not all options are meant to be equal. Pretty sure it's fine as long as it's no longer a whole hour for a measly 80 thread.
Now I guess I should fix those reversible knitting uncrafts to be faster after all. Made no sense to unravel a sweater for 3 hours before, certainly even less so now.

@RoyalFox2140
Copy link
Collaborator

I think that a minimum return of 1 on salvage by weight (realism is an issue but we need to focus on balance and reward here) is a way to solve this. If that is out of the question for any reason, than manually adding an uncraft to forcibly have them give 1 rag is the brute force way to do it.

I considered the possibility of adjusting the salvage system to give a minimum of 1 rag, but who knows what possible side effects might be. I consider the uncraft way to be less 'brute force' and more 'manageable and easily curated list of exceptions'.

We have a huge inconsistency on time versus reward and a lot of ways to address this.

Not all options are meant to be equal. Pretty sure it's fine as long as it's no longer a whole hour for a measly 80 thread. Now I guess I should fix those reversible knitting uncrafts to be faster after all. Made no sense to unravel a sweater for 3 hours before, certainly even less so now.

I don't even know where to begin on yarn and knitting due to how difficult it is to get ahold of since you can't gut a few mattresses for an infinite supply of felt. I think carpets and pool tables were a ridiculous amount of felt that could be uncrafted into yarn but a big part of yarn is taking wool allergy for the points, and kevlar clothes or survivor suits being better choices if you want a different option to rags. You can get through most of tailoring without books just with rags and thread, and a little leather all the way. Yarn has less value compared to other options IMO but this is disputable as I haven't gathered enough data.

@YeOldeMiller
Copy link
Contributor Author

I don't even know where to begin on yarn and knitting due to how difficult it is to get ahold of since you can't gut a few mattresses for an infinite supply of felt.

I'm not going to touch felt > yarn conversion, just the knitting recipes where clothes are made directly out of yarn. Obviously IRL anything knit by hand can be very easily and quickly unraveled back into yarn, so there's no reason not to implement that.

Copy link
Member

@chaosvolt chaosvolt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Woo boy, this is...a lot. Making some wool items reversible but not others seems weird but I assume motivated by a desire to not break conservation of mass? But then you change the weight of some items to be fitting while others are left untouched, and uncrafting underwear items into rags also breaks that conservation.

It all seems to work at least and I'm gonna have to follow up on this either way to try and fix things in general, this is still closer to consistent than we started from at least.

@scarf005 scarf005 added this pull request to the merge queue Nov 6, 2023
Merged via the queue into cataclysmbnteam:upload with commit 56b8820 Nov 6, 2023
12 of 14 checks passed
@YeOldeMiller
Copy link
Contributor Author

YeOldeMiller commented Nov 7, 2023

Making some wool items reversible but not others seems weird but I assume motivated by a desire to not break conservation of mass?

I specifically made only those items reversible that are knit, i.e. require 'knitting' quality, because anything that's knit from thread can be easily unraveled. Anything made from felt I left to follow normal salvaging rules. Wool poncho is one exception because it can be both sewn out of felt as well as knit out of yarn.

desire to not break conservation of mass

Let's say I didn't want to break too far away from it. I adjusted some recipes and/or item weights to roughly match crafting components.

while others are left untouched

The logic here is that while sewing an item, you obviously cut up the fabric. Many clothing items in the game take multiple rags to make, but the end product weighs less than even one. While the ratio can get a bit ridiculous and maybe those recipes can be adjusted too, it can always be justified by saying "well obviously you've cut the fabric to make the item, so it's not all there in the end". With knit item that disassemble into the same amount of material, that justification doesn't work. If all the material is still there, the mass has to also be there.

@YeOldeMiller YeOldeMiller deleted the feature/misc-uncraft branch December 6, 2023 14:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
JSON related to game datas in JSON format.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants