Menu

#5080 PQ2 : Restoring in Scuba Van causes Parser Issues

SCI: Police Quest 2
closed-fixed
5
2010-12-22
2010-07-31
digitall
No

Restoring a game in Scuba Van at Cotton Cove (Room 66), after taking a tank:
Enter "Examine Tank" or "Drop Tank" i.e. the currently held Tank 1 results in a "Command Not Recognised" type of response, instead of the expected
display of tank level or return of tank to rack. "Drop Tank 1" does still work however.

Have compared this with the original and this does not happen there.

ScummVM 1.2.0svn51543 (Jul 31 2010 17:38:42)
Features compiled in: Vorbis FLAC MP3 ALSA SEQ RGB zLib FluidSynth
on Linux 2.4.34 x86_32

Discussion

  • digitall

    digitall - 2010-07-31

    ScummVM Savegame for Replication

     
  • digitall

    digitall - 2010-07-31

    Original Interpreter Savegame for Comparison

     
  • Willem Jan Palenstijn

    Forgot to comment on this: this is caused by the synonyms not working at that time. Haven't looked into why that is yet.

     
  • Filippos Karapetis

    Do you have a saved game before entering this room?

     
  • digitall

    digitall - 2010-11-08

    ScummVM Savegame from 1.3.0svn54143 prior to entering van at Cotton Cove

     
  • digitall

    digitall - 2010-11-08

    Savegame attached...

     
  • Filippos Karapetis

    The problem lies in kSetSynonyms. It's called with a list outside the van, and a different list inside the van. When loading inside the van, kSetSynonyms is called with the list outside the van...

    I don't know why this happens, as we save the local variables for each script. Seems like something is not preserved in the save/load code

     
  • Filippos Karapetis

    Update: kSetSynonyms is called from Game::newRoom (script 994)

    This doesn't get called when the saved game is restored (i.e. there is no kSetSynonyms() call in Game::replay()), thus the synonym list from the previous room where the game was loaded from is used instead.

    This is a more generic problem, especially for PQ2. Perhaps we can just store the list of synonyms in the saved game, and call kSetSynonyms explicitly. Or, we can call Game::newRoom which could however reset the state of the current room, depending on the game

     
  • Filippos Karapetis

    • assigned_to: nobody --> thebluegr
    • status: open --> closed-fixed
     
  • Filippos Karapetis

    Fixed in rev #55017