Opened 8 weeks ago

Closed 6 weeks ago

#15386 closed defect (fixed)

TWINE: LBA: Twinsen and Zoe soft locked when going down the final trap door

Reported by: antoniou79 Owned by: mgerhardy
Priority: normal Component: Engine: TwinE
Version: Keywords:
Cc: Game: Little Big Adventure

Description

This is on Windows 10, ScummVM 2.9.0git (recent build from master HEAD), with GOG version of the game.

In the scene before the last, Twinsen and Zoe go down a vertical rock formation and reach a trap door. I think the game waits for both to be on the trap door, and then pressing space in Normal mood, the trap door breaks open and the two are supposed to fall down.

However, Twinsen and Zoe stay over the hole that has opened, soft locked.

I am attaching a saved game.

Full disclosure, in the playthrough where this saved game comes from I had to use a debug command to work around the bug with the locked door on Funfrock's Fortress on Principal Island. I am unsure if this somehow would cause some corruption to the subsequent saved games (I did not seem so).

Attachments (1)

lba-win-1.002 (6.4 KB ) - added by antoniou79 8 weeks ago.

Download all attachments as: .zip

Change History (10)

by antoniou79, 8 weeks ago

Attachment: lba-win-1.002 added

comment:1 by mgerhardy, 6 weeks ago

change_scene 112

Scene 112
Script dump

Actor 0
 - move script: 27
   LABEL 0
     ANIM 1
     GOTO_POINT 1
   LABEL 2
     ANIM 0
     ANGLE 0
   LABEL 100
     STOP
   LABEL 1
     ANIM 11
     WAIT_ANIM
     ANIM 0
   LABEL 110
     STOP
     END
 - life script: 97
   COMPORTMENT main
     BETA 0
     POS_POINT 0
     SET_COMPORTMENT 9
   END_COMPORTMENT
   COMPORTMENT 1
     SWITCH_IF ACTION == 1
       IF ZONE == 6
         IF ZONE_OBJ 2 == 6
           SET_BEHAVIOUR 0
           SET_DIRMODE 0
           SET_TRACK 13
           SET_DIRMODE_OBJ 2 0
           SET_TRACK_OBJ 2 37
           SET_COMPORTMENT_OBJ 2 290
           SET_COMPORTMENT 50
         ENDIF
       ENDIF
     ENDIF
   END_COMPORTMENT
   COMPORTMENT 2
     IF TRACK == 0
       ANIM 1
     ENDIF
     IF TRACK == 100
       ONEIF TRACK_OBJ 2 == 100
         SET_TRACK 16
         SET_TRACK_OBJ 2 40
       ENDIF
     ENDIF
     IF TRACK == 110
       ONEIF TRACK_OBJ 2 == 110
         SET_TRACK_OBJ 3 0
       ENDIF
     ENDIF
   END_COMPORTMENT
   END

Actor 1
 - staticflags: 34883
 - body: 9
 - genBody: 0
 - genAnim: 1
 - sprite: 0
 - posx: 0
 - posy: 0
 - posz: 0
 - strengthOfHit: 0
 - bonusflags: 96
 - beta: 0
 - speed: 30
 - controlMode: 7
 - cropLeft: 0
 - cropTop: 0
 - cropRight: -1
 - cropBottom: -1
 - bonusAmount: 5
 - talkColor: 0
 - armor: 1
 - lifePoints: 50
 - move script: 1
   END
 - life script: 32
   COMPORTMENT main
     INIT_PINGOUIN 1
     SET_COMPORTMENT 6
   END_COMPORTMENT
   COMPORTMENT 1
     ONEIF LIFE_POINT <= 45
       GIVE_BONUS 0
     ENDIF
     ONEIF LIFE_POINT <= 30
       GIVE_BONUS 0
     ENDIF
     ONEIF LIFE_POINT <= 15
       GIVE_BONUS 0
     ENDIF
   END_COMPORTMENT
   END

Actor 2
 - staticflags: 51207
 - body: 22
 - genBody: 0
 - genAnim: 0
 - sprite: 0
 - posx: 28160
 - posy: 5800
 - posz: 26624
 - strengthOfHit: 0
 - bonusflags: 0
 - beta: 0
 - speed: 40
 - controlMode: 0
 - cropLeft: -1
 - cropTop: -1
 - cropRight: -1
 - cropBottom: -1
 - bonusAmount: 1
 - talkColor: 3
 - armor: 51
 - lifePoints: 1
 - move script: 83
   LABEL 0
     ANIM 116
     WAIT_NUM_ANIM 2 0
     ANIM 0
     WAIT_ANIM
     GOTO_SYM_POINT 0
   LABEL 1
     ANIM 1
     GOTO_POINT 3
     ANIM 0
   LABEL 101
     STOP
   LABEL 2
     ANIM 1
     GOTO_POINT 2
   LABEL 5
     ANIM 0
     ANGLE 0
   LABEL 100
     STOP
   LABEL 3
     ANIM 11
     WAIT_ANIM
     ANIM 0
   LABEL 110
     STOP
   LABEL 4
     ANIM 0
     STOP
   LABEL 6
     ANIM 1
     GOTO_POINT 4
     ANIM 0
   LABEL 101
     STOP
   LABEL 7
     ANIM 1
     STOP
   LABEL 8
     ANIM 1
     GOTO_POINT 5
     ANIM 0
   LABEL 101
     STOP
     END
 - life script: 320
   COMPORTMENT main
     SET_DIRMODE 2 0
     SET_COMPORTMENT 7
   END_COMPORTMENT
   COMPORTMENT 1
     SET_FLAG_CUBE 1 0
     SET_FLAG_CUBE 2 0
     IF ZONE == 2
       IF ZONE_OBJ 0 != 2
         IF ZONE_OBJ 0 != 3
           IF ZONE_OBJ 0 != 4
             SET_DIRMODE 0
             SET_FLAG_CUBE 2 1
             SET_TRACK 13
             SET_COMPORTMENT 299
           ENDIF
         ENDIF
       ENDIF
       IF ZONE_OBJ 0 == 2
         SET_FLAG_CUBE 1 1
       ENDIF
     ELSE
     ENDIF
   ENDIF
   IF ZONE == 4
     IF ZONE_OBJ 0 != 5
       SET_DIRMODE 0
       SET_FLAG_CUBE 2 1
       SET_TRACK 55
       SET_COMPORTMENT 299
     ELSE
     ENDIF
   ENDIF
   IF ZONE_OBJ 0 == 4
     SET_FLAG_CUBE 1 1
   ENDIF
 ELSE
 ENDIF
 ENDIF
 IF ZONE == 5
 IF ZONE_OBJ 0 != 0
   SET_DIRMODE 0
   SET_FLAG_CUBE 2 1
   SET_TRACK 71
   SET_COMPORTMENT 299
 ELSE
 ENDIF
 ENDIF
 IF ZONE_OBJ 0 == 5
 SET_FLAG_CUBE 1 1
 ENDIF
   ELSE
   ENDIF
     ENDIF
     IF ZONE == 0
   IF ZONE_OBJ 0 == 0
 SET_FLAG_CUBE 1 1
   ELSE
   ENDIF
     ENDIF
     IF DISTANCE 0 > 1500
   SET_FLAG_CUBE 2 1
   ANIM 1
     ELSE
     ENDIF
       ENDIF
       IF DISTANCE 0 < 1200
     ANIM 0
       ENDIF
         ELSE
         ENDIF
           ENDIF
           SET_FLAG_CUBE 1 1
           IF FLAG_CUBE 2 == 0
         IF DISTANCE_3D 0  < 600
       IF FLAG_CUBE 1 == 1
     IF TRACK != 0
   SET_TRACK 0
     ENDIF
       ELSE
       ENDIF
         ENDIF
         IF TRACK != 4
       SET_TRACK 50
         ENDIF
           ELSE
           ENDIF
             ENDIF
             IF DISTANCE_3D 0  > 800
           IF FLAG_CUBE 1 == 1
         IF TRACK != 7
       SET_TRACK 66
         ENDIF
           ELSE
           ENDIF
             ENDIF
             OR_IF TRACK == 7
             OR_IF TRACK == 0
             IF TRACK == 101
           SET_TRACK 50
             ENDIF
               ENDIF
                 ENDIF
                   END_COMPORTMENT
                   COMPORTMENT 2
                 IF TRACK == 2
               ANIM 1
                 ENDIF
                   END_COMPORTMENT
                   COMPORTMENT 3
                 IF TRACK == 101
               SET_DIRMODE 2 0
               ANIM 0
               SET_COMPORTMENT 7
                 ELSE
                 ENDIF
                   ENDIF
                   ANIM 1
                     END_COMPORTMENT
                     END

Actor 3
 - staticflags: 21504
 - body: 65535
 - genBody: 0
 - genAnim: 0
 - sprite: 29
 - posx: 28400
 - posy: 240
 - posz: 30432
 - strengthOfHit: 0
 - bonusflags: 0
 - beta: 0
 - speed: 0
 - controlMode: 0
 - cropLeft: -1
 - cropTop: -1
 - cropRight: -1
 - cropBottom: -1
 - bonusAmount: 1
 - talkColor: 5
 - armor: 51
 - lifePoints: 1
 - move script: 9
   LABEL 0
     SAMPLE 37
   LABEL 100
     STOP
     END
 - life script: 9
   COMPORTMENT main
     IF TRACK == 100
       SUICIDE
     ENDIF
   END_COMPORTMENT
   END
Zone: 0
 - zoneminsx: 27904
 - zoneminsy: 0
 - zoneminsz: 29952
 - zonemaxsx: 28927
 - zonemaxsy: 255
 - zonemaxsz: 30975
 - zonetype: 0
 - zonenum: 113
 - info0: 25344
 - info1: 1536
 - info2: 30464
 - info3: 0
Zone: 1
 - zoneminsx: 29440
 - zoneminsy: 1280
 - zoneminsz: 28416
 - zonemaxsx: 30463
 - zonemaxsy: 2815
 - zonemaxsz: 28927
 - zonetype: 2
 - zonenum: 0
 - info0: 0
 - info1: 0
 - info2: 0
 - info3: 0
Zone: 2
 - zoneminsx: 26368
 - zoneminsy: 256
 - zoneminsz: 25856
 - zonemaxsx: 32511
 - zonemaxsy: 511
 - zonemaxsz: 32511
 - zonetype: 2
 - zonenum: 1
 - info0: 0
 - info1: 0
 - info2: 0
 - info3: 0
Zone: 3
 - zoneminsx: 27904
 - zoneminsy: 4864
 - zoneminsz: 26368
 - zonemaxsx: 29439
 - zonemaxsy: 7167
 - zonemaxsz: 27903
 - zonetype: 2
 - zonenum: 2
 - info0: 0
 - info1: 0
 - info2: 0
 - info3: 0
Zone: 4
 - zoneminsx: 27904
 - zoneminsy: 4096
 - zoneminsz: 27904
 - zonemaxsx: 29439
 - zonemaxsy: 5631
 - zonemaxsz: 28927
 - zonetype: 2
 - zonenum: 3
 - info0: 0
 - info1: 0
 - info2: 0
 - info3: 0
Zone: 5
 - zoneminsx: 29440
 - zoneminsy: 3328
 - zoneminsz: 26880
 - zonemaxsx: 30975
 - zonemaxsy: 5887
 - zonemaxsz: 27903
 - zonetype: 2
 - zonenum: 4
 - info0: 0
 - info1: 0
 - info2: 0
 - info3: 0
Zone: 6
 - zoneminsx: 29440
 - zoneminsy: 2304
 - zoneminsz: 27904
 - zonemaxsx: 30463
 - zonemaxsy: 3839
 - zonemaxsz: 28415
 - zonetype: 2
 - zonenum: 5
 - info0: 0
 - info1: 0
 - info2: 0
 - info3: 0
Zone: 7
 - zoneminsx: 27904
 - zoneminsy: 256
 - zoneminsz: 29952
 - zonemaxsx: 28927
 - zonemaxsy: 1023
 - zonemaxsz: 30975
 - zonetype: 2
 - zonenum: 6
 - info0: 0
 - info1: 0
 - info2: 0
 - info3: 0
Zone: 8
 - zoneminsx: 30464
 - zoneminsy: 256
 - zoneminsz: 25856
 - zonemaxsx: 31999
 - zonemaxsy: 1279
 - zonemaxsz: 27391
 - zonetype: 4
 - zonenum: 0
 - info0: 96
 - info1: 5
 - info2: 0
 - info3: 0
Zone: 9
 - zoneminsx: 30976
 - zoneminsy: 256
 - zoneminsz: 30976
 - zonemaxsx: 32511
 - zonemaxsy: 1279
 - zonemaxsz: 32511
 - zonetype: 4
 - zonenum: 0
 - info0: 96
 - info1: 5
 - info2: 0
 - info3: 0
Zone: 10
 - zoneminsx: 26368
 - zoneminsy: 256
 - zoneminsz: 30976
 - zonemaxsx: 27903
 - zonemaxsy: 1279
 - zonemaxsz: 32511
 - zonetype: 4
 - zonenum: 0
 - info0: 96
 - info1: 5
 - info2: 0
 - info3: 0
Track: 0
 - pointx: 28864
 - pointy: 5800
 - pointz: 26624
Track: 1
 - pointx: 27888
 - pointy: 256
 - pointz: 30480
Track: 2
 - pointx: 28640
 - pointy: 256
 - pointz: 30416
Track: 3
 - pointx: 30208
 - pointy: 3328
 - pointz: 27648
Track: 4
 - pointx: 29968
 - pointy: 2304
 - pointz: 28400
Track: 5
 - pointx: 30016
 - pointy: 1280
 - pointz: 28912
Scene
 - sceneTextBank: 10
 - currentGameOverScene: 112
 - alphaLight: 776
 - betaLight: 1026
 - sampleAmbiance: 65535 65535 65535 65535
 - sampleRepeat: 1 1 1 1
 - sampleRound: 500 500 1 1
 - sampleMinDelay: 10
 - sampleMinDelayRnd: 10
 - sceneMusic: 14
 - sceneHeroPosx: 29696
 - sceneHeroPosy: 256
 - sceneHeroPosz: 30720

comment:2 by mgerhardy, 6 weeks ago

the body of the trap door is set to -1 in lSUICIDE - not sure why they are not falling but still colliding.

Btw. this error is there since 2020 at least - thanks a lot for reporting

comment:3 by mgerhardy, 6 weeks ago

https://bugs.scummvm.org/ticket/13731 might be related - as it looks like collision is evaluated against invisible/inactive/dead actors.

comment:5 by mgerhardy, 6 weeks ago

Setting the working flag FALLING for twinsen will end the scene properly

comment:6 by mgerhardy, 6 weeks ago

The carriedBy actor flag is not reset after the actor 3 (the trap door) was destroyed

comment:8 by mgerhardy, 6 weeks ago

In 02794f26:

TWINE: fixed checkCarrier logic

see issue #15386 (https://bugs.scummvm.org/ticket/15386)

comment:9 by mgerhardy, 6 weeks ago

Owner: set to mgerhardy
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.