CleverRaven / Cataclysm-DDA

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

Dissecting monsters without defined dissection results yields their butchery results #72788

Open Karol1223 opened 7 months ago

Karol1223 commented 7 months ago

Describe the bug

As the title says.

Dissecting a monster with a defined dissection result (tested on chickens and camouflaged mutants) yields 1 butchery refuse (separate bug) and the respective samples

Dissecting a monster without a defined dissection result (tested on kevlar brutes and migo myrmidons) yields 1 butchery refuse and the respective harvestlist results for butchery

This likely isn't intended, as this was not the case in the past and the change seems to only apply to selective few monsters.

Attach save file

Burke-trimmed.tar.gz

Steps to reproduce

  1. Spawn any monster with a defined dissection result and dissect it
  2. Spawn any monster without a defined dissection result and dissect it
  3. Compare

Expected behavior

Dissection used to yield only butchery refuse, with occasional straggler items from harvestlists, in the past. If we want this to change, the change should apply to all monsters, but I think it yielding solely dissection results and refuse was appropriate.

Screenshots

No response

Versions and configuration

Additional context

The butchery refuse only spawning a single item is a separate bug that was found yesterday on the devcord. Not sure if it's been reported yet or not.

PatrikLundell commented 7 months ago

I don't see any butchery refuse volume bug report, so I guess none has been posted.

Edit: But #72780 is a (draft) PR addressing it, so there's probably no need for a bug report.

RenechCDDA commented 7 months ago

Check out the testing section in #72491 for a proven example, definitely something off here.

RenechCDDA commented 5 months ago

On further review this is completely intentional.

https://github.com/CleverRaven/Cataclysm-DDA/blob/master/src/activity_handlers.cpp#L1019-L1020

    for( const harvest_entry &entry : ( action == butcher_type::DISSECT &&
                                        !mt.dissect.is_empty() ) ? *mt.dissect : *mt.harvest ) {
Karol1223 commented 5 months ago

On further review this is completely intentional.

https://github.com/CleverRaven/Cataclysm-DDA/blob/master/src/activity_handlers.cpp#L1019-L1020

    for( const harvest_entry &entry : ( action == butcher_type::DISSECT &&
                                        !mt.dissect.is_empty() ) ? *mt.dissect : *mt.harvest ) {

When has this become the intention? I could swear it didn't use to be like this.

PatrikLundell commented 5 months ago

I agree it seems the behavior used to be that dissection was refused if the creature couldn't be dissected.

I want to dissect creatures to either get dissection products or to gain weakpoint proficiencies, neither of which is provided by butchering. Thus, butchering it instead results in a lot of wasted time and energy for something that's likely to be garbage (since most creatures can't be eaten and other parts tend to be useless as well).

Thus, if it can't be dissected I'd want the dissection entry greyed out.

The code is obviously intentional, but that doesn't mean the intended result was an appropriate one.