#16967 closed defect (fixed)
ASYLUM: Sanitarium can become unresponsive when talking to Timber
| Reported by: | eriktorbjorn | Owned by: | alexbevi |
|---|---|---|---|
| Priority: | normal | Component: | Engine: Asylum |
| Version: | Keywords: | ||
| Cc: | Game: | Sanitarium |
Description (last modified by )
In chapter 4 (Circus of Fools), you come across a cage with a werewolf-looking guy named Timber. If you stand in the wrong spot when trying to talk to him, the view of his cage will close while you're automatically walking to the wrong spot and the conversation will never trigger. The game becomes unresponsive.
I'm attaching a savegame that should make it easy to reproduce. I have no idea if this also happens in the original.
Attachments (3)
Change History (9)
by , 7 weeks ago
| Attachment: | asylum.009 added |
|---|
by , 7 weeks ago
| Attachment: | scummvm-asylum-00000.png added |
|---|
comment:1 by , 7 weeks ago
| Description: | modified (diff) |
|---|
comment:2 by , 7 weeks ago
comment:3 by , 7 weeks ago
After some messing around, I managed to get the game limping along into the Circus chapter, and I was able to reproduce the bug with the original EXE. Which means that we'd need a workaround, rather than a fix, for it I guess.
by , 7 weeks ago
| Attachment: | SAVES.tar.bz2 added |
|---|
comment:4 by , 6 days ago
| Owner: | set to |
|---|
comment:6 by , 6 days ago
The failure sequence was:
- Exit scripts clear flag 480 and begin fading object 1462 out.
- Script 13 runs before the fade completes.
- It tests flag 479, which is still set, and returns.
- The exit finishes and clears 479.
- Object 1462 becomes invisible, stops advancing, and script 149 waits forever for frame 24.
Patched script now changes that command to test flag 480. This preserves the intended sequence:
- 479=1, 480=1: already visible, skip the fade.
- 479=0, 480=0: restore the wagon.
- 479=1, 480=0: cancel the in-progress exit fade.
[Script] Queuing Script idx: 149 from kHitObject (id: 1462, name: 'Timber (049) SQ') [Script idx: 149] 0: JumpIfActionFind (1462, 6, 0, 0, 0, 0, 0, 0, 0) [Script idx: 149] 7: HideCursor (0, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 1, 1, 0, 0, 0) [changeStatus] 2 point1(1568:597) point2(34:66) [Script] Entered ActionArea (idx: 46, name: Dog Boy Wagon Exit2) [Script] Queuing Script #1 (idx: 0) for Actor (idx: 0) [Script] Queuing Script #2 (idx: 12) for Actor (idx: 0) [Script idx: 0] 0: Return (0, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 12] 0: JumpIfGameFlag (479, 1, 5, 0, 0, 0, 0, 0, 0) [Script idx: 12] 1: ClearGameFlag (480, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script] Entered ActionArea (idx: 45, name: Dog Boy Wagon Exit) [Script] Queuing Script #1 (idx: 0) for Actor (idx: 0) [Script] Queuing Script #2 (idx: 11) for Actor (idx: 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 0] 0: Return (0, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 11] 0: JumpIfGameFlag (479, 1, 5, 0, 0, 0, 0, 0, 0) [Script idx: 11] 1: ClearGameFlag (480, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script] Entered ActionArea (idx: 47, name: Dog Boy Wagon Enter) [Script] Queuing Script #1 (idx: 0) for Actor (idx: 0) [Script] Queuing Script #2 (idx: 13) for Actor (idx: 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 0] 0: Return (0, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 13] 0: JumpIfGameFlag (479, 0, 4, 0, 0, 0, 0, 0, 0) [Script idx: 13] 5: Return (0, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 12] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 12] 3: JumpIfGameFlag (480, 0, 5, 0, 0, 0, 0, 0, 0) [Script idx: 12] 4: ClearGameFlag (479, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 12] 5: Return (0, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [Script idx: 11] 2: EnableObjects (1667, 3, 1, 1462, 0, 0, 0, 0, 0) [Script idx: 11] 3: JumpIfGameFlag (480, 0, 5, 0, 0, 0, 0, 0, 0) [Script idx: 11] 4: ClearGameFlag (479, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 11] 5: Return (0, 0, 0, 0, 0, 0, 0, 0, 0) [Script idx: 149] 8: JumpAndSetDirection (0, 1569, 722, 8, 2, 1, 0, 0, 0) [changeStatus] 4 point1(1535:656) point2(34:66) [Script idx: 149] 9: JumpIfActorCoordinates (0, 1569, 722, 20, 0, 0, 0, 0, 0) [Script idx: 149] 10: ActorFaceTarget (0, 1462, 0, 0, 0, 0, 0, 0, 0) [Actor] Facing target 1462 using direction from 0 [Script idx: 149] 11: WaitUntilFramePlayed (1462, 24, 0, 0, 0, 0, 0, 0, 0) [Script idx: 149] 11: WaitUntilFramePlayed (1462, 24, 0, 0, 0, 0, 0, 0, 0) [Script idx: 149] 11: WaitUntilFramePlayed (1462, 24, 0, 0, 0, 0, 0, 0, 0) [Script idx: 149] 11: WaitUntilFramePlayed (1462, 24, 0, 0, 0, 0, 0, 0, 0) ...


I tried playing the game in Wine, but once I got to where the Circus chapter was supposed to start the game crashed and I couldn't proceed. I'm attaching the savegames I made along the way, in case someone wants to pick it up from there.