[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