CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.71k stars 4.2k forks source link

Use high skills instead of tools #18643

Closed Waladil closed 7 years ago

Waladil commented 8 years ago

A thought based on Coolthulhu's points in discussion about #18538 -- perhaps include high skill levels as alternatives to certain tools, implying that highly skilled practitioners have learned how to quickly improvise tools or work without them.

So, for example, removing a car door would take mechanics 2, and bolt turning 2+ OR mechanics 6. At mechanics 2-5 you need the wrench, but a skilled mechanic could work without it.

Rivet-the-Zombie commented 8 years ago

So, for example, removing a car door would take mechanics 2, and bolt turning 2+ OR mechanics 6. At mechanics 2-5 you need the wrench, but a skilled mechanic could work without it.

Advice from a real life mechanic: you're still going to need the wrench.

Waladil commented 8 years ago

Hehe, I'll take your word on it, then. At best, my RL mechanics skill is 2.

mugling commented 8 years ago

I'm working on a crafting implementation that support skills or time. How we use that is very much up fro debate

HeadWar commented 8 years ago

Could that implementation also support the possibility that better tools than required could reduce time?

Coolthulhu commented 8 years ago

A generic enough implementation could support even tools saving other ingredients. Though the UI may be a big problem.

mugling commented 8 years ago

A sane JSON syntax is whats holding that back

Coolthulhu commented 8 years ago

JSON syntax is easier than displaying it to the user. AND/OR tree with depth 2 would be easy to do on the JSON side, but displaying it could easily lead to weirdness.

We'd have to do away with tools/components/qualities being separate groups and just toss them all into one group, with flags determining whether charges or whole items are used. This isn't a problem on the JSON side, but would lead to lower readability on the UI.

mugling commented 8 years ago

Can you outline an example syntax?

Coolthulhu commented 8 years ago
"ingredients": [
  [ [ "fire", -1 ], [ "hotplate", 20, "tool" ] ],
  [ { "skill": "cooking", "level": 3 }, [ "fire", -1 ], [ "hotplate", 10, "tool" ] ],
  [
    { "AND": [ { "OR": [ [ "two_by_four", 2 ], [ "stick", 2 ] ], { "skill": "fabrication", "level": 2 ] } ] },
    { "AND": [ [ "scrap", 10 ], [ "welder", 20, "tool" ], { "skill": "mechanics", "level": 2 ] } ] },
    { "using": "plastic_working", "amount": 10 }
  ]
  [ [ "plastic_chunk", 10 ] ]
]

This is a bit convoluted example. Would be simplified by using "using"s, especially for things like woodworking (we want wood, saw, wood skill) or metalworking (scrap, welder, mechanics). Though it could also spaghettify it.

Basically,

DaliTimelord commented 8 years ago

* Rant Redacted *

aeoo commented 8 years ago

So, for example, removing a car door would take mechanics 2, and bolt turning 2+ OR mechanics 6. At mechanics 2-5 you need the wrench, but a skilled mechanic could work without it.

I'm trying to think how this might be done without a wrench. I'm assuming there are some bolts that need to be unscrewed. They could conceivably be drilled out instead -- then you need a drill instead of a wrench, and doing it this way you lose the bolts. Maaaybe in some cases, if you sprayed the bolt with some grease, and banged on it a bit with a rock or something, it would loosen up enough to unscrew with just your fingers or pliers? Now I'm really getting into some hypotheticals here, maybe if you heated the bolt with a blow torch and rapidly cooled it with ice water, it would snap, but something other than the bolt might also snap. That isn't exactly a clean way to remove the door.

If you have a lot of skill with a small drill and/or a tiny circular saw, you could drill a straight groove on the surface of the bolt, and then use a normal screwdriver to turn the bolt through the newly created groove. You need a drill and a screwdriver or something like a screwdriver, but I don't think you can replace the drill or a saw of some sort.

I think your idea is not wrong, but to replace the wrench you often need other tools (so not tool-free), and/or, you need to be some sort of a mechanics maestro, so it would be mechanics 8 rather than 6, I think. Someone with mechanics 6 is a highly trained mechanic but not necessarily someone who knows how to think outside the box, or how to think from first-principles, which is something people do at the very top of their skill level.

Xpyder commented 8 years ago

I wonder if we could implement "workaround" tools like a mattock or crowbar for extracting things, with disadvantages like damage to the parts, possibility for injury, and special parts disallowing them?

For example, most batteries could theoretically be freed by crowbaring them out, destroying the securing bar and at risk of damaging the battery connectors

EDIT: for those who don't know a Mattock is related to a pickaxe/hatchet/crowbar. It's designed for shallow digging, chopping roots, and prying up rocks and soil (though it would work well for forcing entry into doors and lots of other destructive barrier bypassing)

DaliTimelord commented 8 years ago

I've made a forum post on this issue, since it's likely that this will be discussed in the future, not just now. The recipes (disassembly, crafting, vehicle, etc), properties, and tools in those recipes should be referenced by a list of exceptions that would be handled by a small system called 'Substitution', rather than have those exceptions directly added to the recipe. This would keep recipes static while exceptions, being as heinous as they are, would be dynamic. When separated, 'downsides' like additional time needed, breaking of salvaged parts, and taking into account the skill needed to actually use the substitute can be handled by Substitution, rather than have all those fun penalties skipped when a substitute is directly added to a recipe.

Leland commented 7 years ago

Closing due to stalled discussion. Ping me here to reopen if there's still interest.