Describe the bug
Smoking Rack to North of player position was loaded with 55 chunks of meat and set to smoke. The smoking should be complete by now. However, the smoking rack is still smoking and inspection of smoking rack shows that it is empty (but still smoking!).
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Screenshots
If applicable, add screenshots to help explain your problem.
Versions and configuration(please complete the following information):
Additional context
Savegame
Kahakuloa error 4.zip
Game log:
19:14:48.345 ERROR : (error message will follow backtrace)
(@0x5e1bbe[cataclysm-tiles.exe+0x1e1bbe]),
(@0x5e219a[cataclysm-tiles.exe+0x1e219a]),
(@0x5e3e33[cataclysm-tiles.exe+0x1e3e33]),
(IMG_LoadWEBP_RW+0x1111b5@0x107e995[cataclysm-tiles.exe+0xc7e995]),
(@0x74a50c[cataclysm-tiles.exe+0x34a50c]),
(@0x6f8557[cataclysm-tiles.exe+0x2f8557]),
(@0x6f890d[cataclysm-tiles.exe+0x2f890d]),
(@0x7183a9[cataclysm-tiles.exe+0x3183a9]),
(@0x6f7499[cataclysm-tiles.exe+0x2f7499]),
(IMG_LoadWEBP_RW+0x4c8b19@0x14362f9[cataclysm-tiles.exe+0x10362f9]),
(@0x4013ed[cataclysm-tiles.exe+0x13ed]),
(@0x4014fb[cataclysm-tiles.exe+0x14fb]),
(BaseThreadInitThunk+0x14@0x7ff8c5f63034[KERNEL32.DLL+0x13034]),
(RtlUserThreadStart+0x21@0x7ff8c8053691[ntdll.dll+0x73691]),
Backtrace emission took 0 seconds.
src/iexamine.cpp:4066 [void iexamine::smoker_options(player&, const tripoint&)] f_smoking_rack_active was empty, and had fake_smoke_plume!
This happened to me too awhile back. I set some sausage and chunks of meat to smoke, ventured out into a nearby city for a few days, and when I came back the smoking rack was empty.
My guess: probably it's because that smoker_finalize is somehow not invoked, and your chunks of meat are way rotten that they are gone, so when you come back, you see a still smoking smoker and all your food gone.
Your guess seems likely, looking into it.
Smoking rack doesn't have a mechanism for processing outside the reality bubble, so it doesn't advance unless the player gets back. The meat however does have an off-map updating mechanism and rots to nothing.
I thought of a workaround, the smoking rack can apply a flag to its contents that indicate that they're being processed, so those items get skipped by the rot calculation. Then once the smoking rack processing happens, it will figure out at what point in time the smoking completed and apply rot as appropriate.
Fixed by #27902