CleverRaven / Cataclysm-DDA

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

portal storms can teleport turrets out of position #56593

Open esotericist opened 2 years ago

esotericist commented 2 years ago

Describe the bug

i camped out at the artisans overnight, and a portal storm hit while i was sleeping. during which, some of the turrets got relocated multiple times.

Steps to reproduce

  1. be at a location with turrets
  2. have a portal storm occur
  3. have whatever in portal storms that teleports things do so
  4. end up with migrated turrets

Expected behavior

genuinely immobile things shouldn't be getting moved around by the portal storm effects.

also, it occurs to me if NPCs get moved and they don't know to move back to their original location (or can't), it might very well irreversibly break the NPC.

Screenshots

debug clairvoyance to show the layout of the artisan base aftermath. three destroyed turrets, two misplaced turrets. (obviously, destroyed turrets are only unfortunate, not bug-shaped behavior) image

the migrated locations of the western most and northwestern most turrets. note this is not where they ended up immediately; there was more than one teleport event for them. image

Versions and configuration

Additional context

of note, i seem to regularly get 'invalid alpha talker' errors during portal storms. this happens when i'm at my base away from everything else, but i never got around to posting anything. it also happened here during the turret teleporting nonsense:

14:32:40.526 ERROR GAME : src/do_turn.cpp:413: game:monmove: custom plated turret can't move to its location!  (57:72:0),
 covered pit
14:32:41.829 ERROR GAME : src/do_turn.cpp:413: game:monmove: custom plated turret can't move to its location!  (54:69:0),
 pavement
14:32:41.830 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
14:32:49.040 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
14:32:49.563 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
14:32:49.983 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
14:32:50.279 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
14:32:50.857 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
[ Previous repeated 28 times ]
14:32:50.880 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
14:32:50.891 ERROR GAME : src/do_turn.cpp:413: game:monmove: custom plated turret can't move to its location!  (51:66:0),
 grass
14:32:50.894 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
[ Previous repeated 245 times ]
14:32:50.957 ERROR : src/npctalk.cpp:1650 [talker* dialogue::actor(bool) const] Tried to use an invalid alpha talker.
14:32:50.967 ERROR GAME : src/do_turn.cpp:413: game:monmove: custom plated turret can't move to its location!  (50:95:0),
 grass

full debug log: debug.log

based on what @Ramza13 put in a comment in #55726 it seems like the alpha talker thing and the teleport thing might be related, just inadequately fixed? i dunno. i just play here.

i don't expect the save file to be useful, but here it is just in case. (this is absolutely not me using github as an off-site save backup mechanism, nope, nuh-uh) dry_run.zip

also also if i'm following the issue that led to that PR correctly, portal storms can spontaneously teleport you even if you're indoors? i'd like to register an objection to that, if that's still the case. if even being inside doesn't protect you, there's basically no counter play there. you just get screwed. that's not good gameplay.

esotericist commented 2 years ago

I didn't notice this while I was opening the issue, but the portal storm also managed to murder jay, so there is a more severe and fundamental issue with how portal storms interact with substantive content. i'm not currently in a place to write that issue, though

Ramza13 commented 2 years ago

So I just tried to reproduce this but had no luck. It's possible I'm missing something or possible that fixing the invalid alpha talker bug fixed this, not sure. Are you still able to reproduce this issue at all?

esotericist commented 2 years ago

i can't reproduce the turret teleportation issue, no. but i do still have cody heading outside to pick fights with things during a portal storm and the turrets getting pretty thoroughly wrecked, so that's still unfortunate.

esotericist commented 2 years ago

correction, i just reproduced the turret teleportation. image

all i did here was generate the artisans special, head to it, close all the curtains and doors, head inside one of the buildings, and trigger a normal portal storm. waiting it out made a mess as usual (cody died to things outside), and towards the very end of it the turrets got teleported.

i did not get a recurrence of the invalid talker bug, so that isn't connected.