Opened 2 weeks ago

Closed 2 weeks ago

Last modified 2 weeks ago

#11042 closed defect (fixed)

SCI: CAMELOT: Sheath-sword bug

Reported by: sluicebox Owned by: sluicebox
Priority: normal Component: Engine: SCI
Keywords: original has-pull-request Cc:
Game: Conquests of Camelot

Description

Sheathing the sword by pressing F8 while entering or exiting a room breaks the game by placing ego in an invalid state that allows walking through obstacles and prevents room changes. This also occurs in the original.

Attached is a DOS save to reproduce with.

Before attempting to reproduce, know that you have to work around an unrelated ScummVM limitation that heavily affects this game. ScummVM doesn't persist SCI game's menu state to saved games (yet!) and Camelot depends on that. This currently breaks loading a lot of Camelot saved games, including this one. These steps involve working around around that.

  1. Load the game in the monk's ruins. The menu state will incorrectly disallow sword actions.
  2. Walk north to change rooms. This will run scripts that refresh the menu to the correct state.
  3. Walk south towards the previous room and press F8 once the game takes control of walking Arthur off screen. (cursor turns to a grail)
  4. Arthur will sheath his sword, stop walking, and you now have control of and can walk through walls and walk off screen without triggering a room change.

Attachments (1)

camelot.019 (16.1 KB) - added by sluicebox 2 weeks ago.

Download all attachments as: .zip

Change History (5)

Changed 2 weeks ago by sluicebox

Attachment: camelot.019 added

comment:1 Changed 2 weeks ago by sluicebox

Owner: set to sluicebox

comment:2 Changed 2 weeks ago by bluegr

Removing the menu sync code was done by me, about 10 years ago:
https://github.com/scummvm/scummvm/commit/226f0bd23d40f4c807c33ee32f77d449a4f06837

It was a time where we had two different graphics codes: one from FreeSCI, and one from Greg Frieger, which was much closer to the original SCI behavior. Having said that, the cases where menu state syncing is actually used are quite rare (found in Jones, PQ2, and now Camelot).

We should either choose to save the menu state for all games, or handle this specific case with a script patch, which should also work when loading from the launcher.

The code that handles menus when loading in Jones and PQ2 was done in these commits:
https://github.com/scummvm/scummvm/commit/5b1631960e1c10e8fe60261eee0cec62756e3d66
https://github.com/scummvm/scummvm/commit/1d5536da02c20c5c635e02dd19aa38fb3b1128ec
https://github.com/scummvm/scummvm/commit/fc1464155a7e48b05829401c7605c3f65bda0000

comment:3 Changed 2 weeks ago by bluegr

Resolution: fixed
Status: newclosed

comment:4 Changed 2 weeks ago by Filippos Karapetis <bluegr@…>

In 3bc1c807:

SCI: Fix CAMELOT sword sheathing during room change

Fixes bug #11042

Note: See TracTickets for help on using tickets.