[Scummvm-tracker] [ScummVM] #10835: QFG4: Mage stuck unable to cast spells in endgame crystal room

Vhati trac at scummvm.org
Thu Dec 13 22:06:40 CET 2018


#10835: QFG4: Mage stuck unable to cast spells in endgame crystal room
--------------------------------+----------------------------
  Reporter:  Vhati              |      Owner:  (none)
      Type:  defect             |     Status:  new
  Priority:  high               |  Component:  Engine: SCI
Resolution:                     |   Keywords:  SCI32 original
      Game:  Quest for Glory 4  |
--------------------------------+----------------------------

Comment (by Vhati):

 project (ScriptID 32) is triggered in a lot of ways: every spell
 projectile, and throwing dagger.
 \\
 \\
 script 730 - rm730::doVerb()
 {{{
 # Does not set g441 and g442.
 # ...
 (86
         # 26 is g273_myFlameDartSkill.
         (g0_hero trySkill: 26)
         (= loc1 4)
         (self setScript: (ScriptID 32) self 86)
 )
 (88
         # 28 is g275_myForceBoltSkill.
         (g0_hero trySkill: 28)
         (= loc1 5)
         (self setScript: (ScriptID 32) self 88)
 )
 (79
         # 34 is g281_myFrostbiteSkill.
         (g0_hero trySkill: 34)
         (= loc1 6)
         (self setScript: (ScriptID 32) self 79)
 )
 # ...
 (93
         # 33 is g280_myLightningBallSkill.
         (g0_hero trySkill: 33)
         (= loc1 8)
         (self setScript: (ScriptID 32) self 93)
 )
 }}}
 \\
 \\
 script 730 - avis::doVerb()
 {{{
 # Seems to inform project.
 (= g441 ((User curEvent?) x?))
 (= g442 ((User curEvent?) y?))
 # ...
 (21
         (g0_hero trySkill: 10)
         (= loc1 0)
         (g0_hero use: 6)
         (g2_myCurrentRoom setScript: (ScriptID 32) 0 21)
 )
 (37
         (if (== (global0 has: 5) 1)
                 # "You are down to your last dagger.
                 #   You'd better hold on to it."
                 (g91_gloryMessager say: 6 6 40)
         else
                 # 10 is g257_myThrowing.
                 (g0_hero trySkill: 10)

                 # 5 is theThrowdagger (available via debugger with "send
 hero get 5").
                 (g0_hero use: 5)
                 (= loc1 0)
                 (g2_myCurrentRoom setScript: (ScriptID 32) 0 37)
         )
 )
 (86
         # 26 is g273_myFlameDartSkill.
         (g0_hero trySkill: 26)
         (= loc1 4)
         (g2_myCurrentRoom setScript: (ScriptID 32) 0 86)
 )
 (88
         # 28 is g275_myForceBoltSkill.
         (g0_hero trySkill: 28)
         (= loc1 5)
         (g2_myCurrentRoom setScript: (ScriptID 32) 0 88)
 )
 (93
         # 33 is g280_myLightningBallSkill.
         (g0_hero trySkill: 33)
         (= loc1 8)
         (g2_myCurrentRoom setScript: (ScriptID 32) 0 93)
 )
 (79
         # 34 is g281_myFrostbiteSkill.
         (g0_hero trySkill: 34)
         (= loc1 6)
         (g2_myCurrentRoom setScript: (ScriptID 32) 0 79)
 )
 # ...
 }}}
 \\
 \\
 script 730 - crystal::doVerb()
 {{{
 (if loc2_avisDied
         # Seems to inform project.
         (= g441 ((User curEvent?) x?))
         (= g442 ((User curEvent?) y?))

         (switch param1
 # ...
                 # theThrowDagger item.
                 (37
                         (if (== (g0_hero has: 5) 1)
                                 # "You are down to your last dagger.
                                 #   You'd better hold on to it."
                                 (g91_gloryMessager say: 6 6 40)
                         else
                                 # Blank.
                                 (g91_gloryMessager say: 1 37 0 0)
                         )
                 )
 # ...
                 # Flame Dart
                 (86
                         (self setScript: (ScriptID 32) crystal 86)
                 )
                 # Force Bolt
                 (88
                         (self setScript: (ScriptID 32) crystal 88)
                 )
                 # Frostbite
                 (79
                         (self setScript: (ScriptID 32) crystal 79)
                 )
 # ...
                 # Lightning Ball
                 (93
                         (self setScript: (ScriptID 32) crystal 93)
                 )
 # ...
                 # theStaff item, given to non-mage heroes,
                 #   available via debugger with ("send hero get 47")
                 (157
                         (g2_myCurrentRoom setScript: sDoTheEndGame)
                 )
 # ...
         )
 else
         # "You don't have time to deal with the crystal right now
         #   -- Ad Avis is trying to kill you!"
         (g91_gloryMessager say: 1 157 0 0)
 )
 }}}
 \\
 \\
 script 32 - project::init()
 {{{
 (method (init param1 param2 param3 param4)
         (= loc6 (IntArray with: 20 -20 10 -10))
         (= loc7 (IntArray with: 0 0 0 0))
         (= loc8 (IntArray with: 10 -10 -10 10))
         (= loc9 (IntArray with: -5 -5 -5 -5))
         (= loc10 (IntArray with: 0 1 0 0 0 1 0 1))
         (= loc11 (IntArray with: 2 3 6 7))
         (= lastTicks g88)
         (if (>= argc 1)
                 ((= client param1) script: self)
                 (if (>= argc 2)
                         (= caller param2)
                         (if (>= argc 3)
                                 (= register param3)
                                 (if (>= argc 4) (= loc4 param4) else (=
 loc4 0))
                         )
                 )
         )
         (= state (- start 1))
         (self cue:)
 )
 }}}

--
Ticket URL: <https://bugs.scummvm.org/ticket/10835#comment:6>
ScummVM <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list