Opened 2 years ago

Last modified 5 weeks ago

#13731 new defect

TWINE: The movement of the meca penguin is different from dos version

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

Description

This issue was reported on the lba discord:


This is how it works in the original dos version and how it always worked. (screencast 192921)

This is what it does in the scummvm version (screencast 193231)

I am 100% sure it did not meander in lba1
That's the way I've been passing the Temple of BU puzzle since 94
Stand on the pressure plate, move a few steps back, release the penguin
and then go wait by the door

it does go straight, just in the wrong direction


there are different opinions about the issue - the meca penguin has random movement assigned - so it should meander

Still needs investigation.

Attachments (2)

Change History (11)

comment:1 by mgerhardy, 2 years ago

change_scene 8
toggle_freecamera - scroll with syxc-keys (wasd like) to the location in the videos and hit v
give_allitems (to have the meca penguin)

Version 0, edited 2 years ago by mgerhardy (next)

comment:2 by mgerhardy, 2 years ago

99164665ba09fb09f6e855dbf1efb0faf33c250d fixed using the wrong penguin angle at spawn - but it still doesn't behave as shown in the video of the dosbox run.

comment:3 by mgerhardy, 22 months ago

TwinEEngine::processInventoryAction() case kiPenguin

comment:4 by mgerhardy, 22 months ago

after spawning the penguin is doing a rotation. that is unexpected.

comment:5 by mgerhardy, 22 months ago

actor->brickCausesDamage() returns true for the penguin. Looks like the issue might also be connected to the tank issue in https://bugs.scummvm.org/ticket/13177

comment:6 by mgerhardy, 16 months ago

Keywords: collision-detection added

comment:7 by mgerhardy, 14 months ago

a hack is in place now - see https://github.com/scummvm/scummvm/commit/39d60856aaca25a2a609b7f15727e0f6aced592b

bIsFalling being 1 results in calls for doDir() which in turn rotates the penguin

comment:8 by mgerhardy, 14 months ago

the life script lINIT_PINGOUIN would have set that actor to dead - but unfortunately the collision detection was executed already for that actor and Animations::doAnim set the bIsFalling to true.

comment:9 by mgerhardy, 5 weeks ago

The issue only happens on the first penguin spawn - I've removed the hack to test this again and noticed that when I give myself the penguin again and spawn it a second time the movement is correct.

Note: See TracTickets for help on using tickets.