This was achieved by making the detection pattern stricter to avoid
matching the dat file or other extraneous files in the savegame path.
This fixes bug #3539774 "TEENAGENT : teenagent.dat considered as a
savegame".
Also did some minor formatting and string function usage cleanup.
It's perfectly normal behavior to have locals with a smaller segment ID
than the ID of their respective script, e.g. when scripts are
uninstantiated and then instantiated again
When resetting the segment manager, sometimes the locals block for a
script is placed in a segment smaller than the script itself. This
shouldn't be happening, but it isn't fatal, however it should be resolved
in a proper manner
This makes sure that the workaround works for subclassed objects as well,
such as "theProfessor" talker. Fixes bug #3539350 - "SCI: SQ4 CD -
Crash in sewer when text and speech enabled"
Using Ryan's watch within the game, the watch time always started at
19.30 from point of use, which did not seem correct.
Checking with the original CD and Floppy interpreters under DOSBox
showed they used the current system time, so this was incorrect.
Bisection shows that this regression was introduced by commit
57e940f678 i.e. "DREAMWEB: Move all saved
variables to a GameVars struct" and was probably a side effect of a
minor call ordering change in the equivalent of setupInitialVars()
with respect to the getTime() call.
However, to ensure no further regressions, it was easier to fix this
by replacing the initial value setting by a getTime() call.
Fixes bug #3539031 - "LURE: Crash at Copy Protection Screen".
This reverts the previous fix which only worked for QWERTY keyboards
and made the issue worse for AZERTY keyboards. It now uses the ASCII
code instead of the keycode for the sanity check.
Fixes bug #3539031 - "LURE: Crash at Copy Protection Screen".
Previously, the code didn't prevent keyboard events with modifiers being
used. Since the ascii values for these were outside the 0-9 numeric
range, this resulted in an invalid frame number being used and thus the
engine aborted at an asertion.