Opened 9 years ago

Closed 9 years ago

#4841 closed defect (fixed)

LURE: Engine Abort looking through Shopkeeper's Window

Reported by: digitall Owned by: dreammaster
Priority: normal Component: Engine: Lure
Keywords: Cc:
Game: Lure of the Temptress

Description

While looking through the Shopkeeper's (Ewan) window, an engine abort occurs.

This error appears to be reliably repeatable with the attached savegame.

Just load, leave the shop, look through the window and wait.
After about 1-2 mins, an engine abort with error will occur :
"Access made to non-defined action support record!"

ScummVM 1.1.0pre48419 (Mar 23 2010 23:16:52) with local r48425 patch
Features compiled in: Vorbis FLAC MP3 ALSA RGB zLib FluidSynth
built on Linux x86_32 2.6.31 by GCC 4.3.4

Ticket imported from: #2979683. Ticket imported from: bugs/4841.

Attachments (1)

lure.008 (20.1 KB) - added by digitall 9 years ago.
Savegame for replication

Download all attachments as: .zip

Change History (8)

Changed 9 years ago by digitall

Attachment: lure.008 added

Savegame for replication

comment:1 Changed 9 years ago by digitall

Replicated with ScummVM 1.1.0pre48432 i.e. HEAD. Looks like reliable replication.

comment:2 Changed 9 years ago by digitall

Component: Engine: Lure
Game: Lure of the Temptress
Owner: set to dreammaster

comment:3 Changed 9 years ago by digitall

Managed to replicate under Valgrind. No errors associated, so problem is likely in engine scripts.

comment:4 Changed 9 years ago by dreammaster

Bravo for finding what seems to be a very weird chain of events that reveals several rare issues.

* The first is that the ultimate cause of the problem was Goewin - even though she's outside the cave, she bizarrely seemed to have an NPC action sequence assigned to her to return to the caves.

* This identified a second problem - the game has a single large mapping of room to room, indicating which intermediate room an NPC should go to from a given source room to help them ultimately get to a given destination room. I've had one or two problems with this mapping being wrong in the past - such as an NPC getting stuck moving between two rooms, because each room had the other as the room to move to in order to get to a specific destination room. The problem here is similar - it seems that Goewin is stuck in the two rooms by the sewer exit. In this case the second room shouldn't be pointing back to the sewer exit room as the intermediate room to go to in order to get back to the caves.

* Thirdly, because of the to and fro between the rooms, in addition to Ratpouch showing up, the code designed to abort an npc's command sequence has kicked in, and in this case revealed a problem - it tries to check an NPC's support data to see whether they're already trying to 'return' to the player, and if not initiate it. In this case, Goewin's current command didn't have any support data, so it's throwing a wobbly.

* Fourthly, I'm not sure why Ratpouch is hanging around the sewer anyway, so I'll have to look into his schedule further. From my brief initial review, it looks like, somehow, Goewin wasn't properly 'detached' from the player, and Ratpouch 're-attached', which allowed her to act as a follower beyond the period she should have been.

I haven't yet had a chance to review the schedules and flags in the necessary greater detail, but I'm hopeful that this string of events was initiated by a rare case event, and that Lure in 1.1 won't be completely broken.

comment:5 Changed 9 years ago by digitall

Thanks. I do have a tendency to hit weird issues.

comment:6 Changed 9 years ago by dreammaster

I think I've finally tracked what caused this sequence:

When Goewin was reactivated in the caves, she could have an outstanding actions in her schedule (primarily still trying to go to the next room, since the player was originally in that room). After you leave the caves, she's forced to return to the apothecary. However, since she still had the outstanding schedule to try and follow the player's original movement to the dragon room, she started trying to go back to the caves.

The game programmers, however, didn't ever intend for an NPC to have to go back to the caves from any other outdoors room, so the room to room map doesn't have correct entries for how to get to the caves. That's how Goewin ended up going to the sewer outlet instead, and getting caught in a loop between rooms.

The latest fix I've done that clears Goewin's schedule when you rejoin her should fix both the issue with her not immediately following you, as well as this problem, since when she leaves the caves with you and returns to the apothecary, there's no possibility that she will have any old schedule entries that initiated the problem.

comment:7 Changed 9 years ago by dreammaster

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.