Topic: [Fixed - persists in 3.83] Duplicated hide with pausable crafting  (Read 3323 times)


Plotinus

« on: April 17, 2024, 01:23:00 PM »
My character Aaro is ready to drop, but he starts tanning a rinsed black-grouse skin on a log. It gets 10% done then pauses because he's so tired.

I move the log away and test whether I can continue tanning. I can't, the log is needed.  So far so good. I decide to leave it alone because I want to test if the partially-crafted hide can rot while it's on the ground in the partially crafted state.

A while later, I notice that I have a rinsed black-grouse skin in my inventory, and there's also still the one on the ground that is in partially-crafted state. I go back through my message log.txt, and it looks like it happened when it cancelled continuing the tanning.

I think there is some logic for returning ingredients to inventory so that they don't disappear if you can't start crafting the item, and it is incorrectly causing the hide to be returned to my inventory, duplicating it.

I have a save available.

Output of grep -a "black grouse" msglog.txt

This shows me first picking it up, and then dropping my whole inventory, showing there's only one rinsed black grouse-skin in my inventory at that time:

Code: [Select]
(575757):h5j0:[_]{01F70065}      | The rinsed black grouse-skin will be ready in half an hour. You may not pick it up yet.
(3C5A98):h5j0:[:]{01F70065}      | You pick up the rinsed black grouse-skin.
(3C5A98):h5j0:[:]{01F70065}      | You drop the rinsed black grouse-skin.
(3C5A98):h5j0:[:]{01F70065}      | You drop the 132 black grouse feathers.
(3C5A98):h5j0:[:]{01F70065}      | You drop the 8 black grouse feathers.
(3C5A98):h5j0:[:]{01F70065}      | You drop the black grouse cut.
(3C5A98):h5j1:[:]{01F70065}      | You pick up the rinsed black grouse-skin.

This part shows that i've started tanning it and don't have any other skins in my inventory:
Code: [Select]
(575757):h5j2:[_]{01F70065}      | The rinsed black grouse-skin here is not ready yet. You may not pick it up.
(3C5A98):h5j2:[:]{01F70065}      | You pick up the 132 black grouse feathers.
(3C5A98):h5j2:[:]{01F70065}      | You pick up the 8 black grouse feathers.
(3C5A98):h5j2:[:]{01F70065}      | You pick up the black grouse cut.
(143270):h5j5:[#]{01F70065}      | You see an initially prepared rinsed black grouse-skin (work in progress) here.

here's where i think the duplication happened:
Code: [Select]
(143270):h5j8:[#]{01F70065}      | You continue working on the initially prepared rinsed black grouse-skin.
(575757):h5j8:[_]{01F70065}      | The rinsed black grouse-skin here is not ready yet. You may not pick it up.
(3C5A98):h5j8:[:]{01F70065}      | You pick up the 132 black grouse feathers.
(3C5A98):h5j8:[:]{01F70065}      | You pick up the 8 black grouse feathers.
(3C5A98):h5j8:[:]{01F70065}      | You pick up the black grouse cut.
(143270):i5j0:[#]{01F70065}      | You see an initially prepared rinsed black grouse-skin (work in progress) here.
(575757):i5j0:[_]{01F70065}      | The rinsed black grouse-skin here is not ready yet. You may not pick it up.
(143270):i5j6:[#]{01F70065}      | You see an initially prepared rinsed black grouse-skin (work in progress) here.
(3C5A98):i5j6:[:]{01F70065}      | You drop the rinsed black grouse-skin.
(3C5A98):i5j6:[:]{01F70065}      | You drop the 132 black grouse feathers.
(3C5A98):i5j6:[:]{01F70065}      | You drop the 8 black grouse feathers.
(3C5A98):i5j6:[:]{01F70065}      | You drop the black grouse cut.

grep "[h|i]5j" msglog.txt -a shows some more surrounding context, and i5j6 is the first time that i drop my whole inventory after the moment that i think it was duplicated

Code: [Select]
(143270):h5j8:[#]{01F70065}      | Using: HIDEWORKING
(143270):h5j8:[#]{01F70065}      | Hidework option: Tan the skin
(143270):h5j8:[#]{01F70065}      | You continue working on the initially prepared rinsed black grouse-skin.
(143270):h5j8:[#]{01F70065}      | Tanning process now requires you to soften the skin.
(147870):h5j8:[?]{01F70065}      | (1) You need workbench or working surface.
(575757):h5j8:[_]{01F70065}      | (A table, bench or even a big tree trunk will do as a workbench at which manual work is done.)
(147870):h5j8:[?]{01F70065}      | (1) You need workbench or working surface.
(575757):h5j8:[_]{01F70065}      | (A table, bench or even a big tree trunk will do as a workbench at which manual work is done.)
(A80000):h5j8:[!]{01F70065}      | Canceled.
(575757):h5j8:[_]{01F70065}      | The rinsed black grouse-skin here is not ready yet. You may not pick it up.

« Last Edit: April 25, 2024, 06:41:44 PM by Sami »

JP_Finn

  • Honorary Lifetime Supporter
  • Member
  • *
  • Posts: 1207
  • Total likes: 656
  • Thawed Finn in SoCal
    • View Profile
« Reply #1 on: April 18, 2024, 05:44:29 AM »
Sounds like the engine treats the recipe as canceled and doesn’t consume the required items, but returns it.
As previously the softening of the rinsed skin wouldn’t stop even at starvation, fatigue at 100%, or starting the last step at “Ready to drop”

Great find Plotinus!

Sami

  • UnReal World creator
  • Administrator
  • Member
  • *****
  • Posts: 1270
  • Total likes: 3177
  • UnReal World creator
    • View Profile
    • UnReal World
« Reply #2 on: April 24, 2024, 07:50:02 PM »
I tried to reproduce on my end creating similar condition where the tanning task was started, but cancelled at some point because of the character being too tired.
However the duplication didn't happen on my end, so there are some underlying variables that mix things up.
Plotinus, if you still got the save please send it over, and I'll see if I can reproduce it on that location with that character.
- Sami | UnReal World creator

Sami

  • UnReal World creator
  • Administrator
  • Member
  • *****
  • Posts: 1270
  • Total likes: 3177
  • UnReal World creator
    • View Profile
    • UnReal World
« Reply #3 on: April 25, 2024, 06:41:26 PM »
And now it's found and fixed. Duplication occurs if the task gets cancelled right at the item requirements dialog. So in this case it happened when Plotinus tried if the tanning could be proceeded without the working log being present. The requirements dialog appeared and got cancelled due to missing log, and at that phase the duplication occurs.

Fixed - persists in 3.83
- Sami | UnReal World creator