[Scummvm-tracker] [ScummVM :: Bugs] #12734: SCUMM: Missing sentence when Rapp gives the map piece

ScummVM :: Bugs trac at scummvm.org
Mon Jul 26 11:47:25 UTC 2021


#12734: SCUMM: Missing sentence when Rapp gives the map piece
---------------------+------------------------------
Reporter:  dwatteau  |       Owner:  (none)
    Type:  defect    |      Status:  new
Priority:  normal    |   Component:  Engine: SCUMM
 Version:            |  Resolution:
Keywords:            |        Game:  Monkey Island 2
---------------------+------------------------------
Comment (by dwatteau):

 Thank you very much!

 I had done some local tests with some hand-patching of the original
 LFLF_0019/ROOM/LSCR_0203 script.

 With your first suggestion, I changed:

 {{{
 print(255,[Text(" ")]);
 }}}

 to this:

 {{{
 WaitForMessage();
 print(255,[Text(" ")]);
 }}}

 and now the text is printed. But indeed, if you do it this way, Rapp
 "waits" for your lines before doing his final goodbye animation, and it's
 a bit strange, especially if Rapp's map is the last one, because Guybrush
 speaks even more, then.

 So I tried doing it a bit differently.

 Instead of doing this in the original script:

 {{{
 (0A)     startScript(109,[200]);
 (**)   }
 (**) }
 (58) endOverride();
 (14) print(255,[Text(" ")]);
 (0A) startScript(204,[Bit[586]]);
 (80) breakHere();
 (68) VAR_RESULT = isScriptRunning(204);
 (28) unless (!VAR_RESULT) goto XXXX;
 (48) if (VAR_VERB_SCRIPT == 14) {
 (1A)   VAR_VERB_SCRIPT = 201;
 (0A)   startScript(16,[2]);
 (**) }
 (2C) CursorShow();
 (2C) UserputOn();
 (80) breakHere();
 (A0) stopObjectCode();
 }}}

 I did this:

 {{{
 (**)     (nothing)              # <== not starting script 109 here anymore
 (1)
 (**)   }
 (**) }
 (58) endOverride();
 (14) print(255,[Text(" ")]);
 (0A) startScript(204,[Bit[586]]);
 (80) breakHere();
 (68) VAR_RESULT = isScriptRunning(204);
 (28) unless (!VAR_RESULT) goto XXXX;
 (A8) if (Bit[366]) {            # <== only start script 109 there, if the
 map was given (2)
 (0A)   startScript(109,[200]);  # <== (2)
 (AE)   WaitForMessage();        # <== (2)
 (**) }                          # <== (2)
 (48) if (VAR_VERB_SCRIPT == 14) {
 (1A)   VAR_VERB_SCRIPT = 201;
 (0A)   startScript(16,[2]);
 (**) }
 (2C) CursorShow();
 (2C) UserputOn();
 (80) breakHere();
 (A0) stopObjectCode();
 }}}

 i.e. I start Guybrush's lines once Rapp is done animating.

 The problem with my "solution" is that it's a bit more invasive so it's
 probably harder to work around in ScummVM, and it's potentially more
 risky.

 I'll test your PR as soon as possible. The case I'm most interested is
 when Rapp's map is the last one you get. Guybrush has a couple more lines
 in that case, so I'd like to make sure that it doesn't cause any problem.

 Thanks!
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/12734#comment:5>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list