[Scummvm-tracker] [ScummVM] #9806: SCI: SQ4 Windows: Stuck when picking up matches
dafioram
trac at scummvm.org
Sun Oct 29 16:20:27 CET 2017
#9806: SCI: SQ4 Windows: Stuck when picking up matches
----------------------------+-------------------------
Reporter: dafioram | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: Engine: SCI
Resolution: | Keywords:
Game: Space Quest 4 |
----------------------------+-------------------------
Comment (by dafioram):
Once roger has knocked over the bikes, gone to his ship, and if you
decided to go directly to the bar one of 3 things can happen:
1. You enter the bar using the walk or grab icon. In this case you don't
get points for dodging the bike, but you are able to pick up the matches,
so no bug. The bike appearing or not is a random event.
2. You use the walk or grab icon to head to the bar and the biker appears
and the game pauses you with the biker headed straight for you. If you
walk left or right you will roll and get points and points sound for
dodging and if you rolled far enough away then you will also not die. You
can then enter the bar using the walk or hand icon and no bug.
3. The bug case. Similar setup to 2. You use the walk or grab icon to head
to the bar entrance and the biker appears and the game pauses you with the
biker headed straight for you. If you click on the bar entrance with the
**grab icon** you will walk straight into the bar and not do a roll. You
will also not get any points for avoiding this. In this case if you pick
up the matches the game will show the waiting message and not release it.
The game is now stuck.
When the biker is headed at roger if he dodges left or right using the
walk icon then the {{{theDodgeR::handleEvent}}} of script 706 will be
called. However, if the hand icon is used on the bar door instead then the
{{{theDodgeR::handleEvent}}} function will not be called. It seems the
hand entering the bar bypasses the other checks.
If I enter the bar without running into any bikers (case 1) versus
entering the bar after seeing a biker, but using the hand icon (case 3)
then the global variables are different. This difference is shown here:
https://gist.github.com/dafioram/d7b0e0e977934836b35f1d6ac63db49f/revisions
I ran the bug state again and looked at the globals again and all the ones
that were different are now different from those cases except globals 196,
197, 198, i.e., Those have the same values in the bug state as I gave in
the gist (for the bad = bugged state). Setting these 3 global values in
the bug state to be the same as the non-bug state values before trying to
grab the matches does not prevent the bug. In fact these globals get
changed back to those values.
The biker approaching outside the bar happens in script 610 and the
matches bug happens in the bar in script 615.
In the bug state if you click on the matches with the hand icon
{{{getMatches::changeState}}} of script 615 will be called 3 times while
in the bug free case that function will be called 4 times. After the third
call the waiting message will be displayed and after the fourth call it
will go away freeing up roger (in the no bug case).
--
Ticket URL: <https://bugs.scummvm.org/ticket/9806#comment:3>
ScummVM <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list