SCUMM: Restore the first frame of Indy's reaction drinking from the Grail #3984
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Once again, this comes from ATMachine's detailed analysis:
https://web.archive.org/web/20111015233333/http://home.comcast.net/~ervind/ij3misc.html
Context
When you find the real Grail in Indy 3 and drink from it, the original game shows this:
It's… OK, but Indy looks a bit old and upset for someone who's just found the Grail, no?
That's because the real first frame of this animation has always been hidden until now:
Here's script no. 200 in room 87, which deals with this animation:
The big
if ()
is when you pick up the wrong Grail.Notice that
drawObject(899,255,255)
appears twice, at the top. That's actually the second frame of animation. The first one is the background image, and then some objects are printed on top of it to make the animation.The problem is the first
drawObject(899,255,255)
call: it's unconditional and done immediately, so the background is always hidden by this second frame when the closeup starts. I think it's been done so that this cutscene would always reset to a clean state, with no leftover from a previous death (since it will load again as long as you pick up the wrong Grail).So this PR tries to look to the first (unconditional)
drawObject()
call, and replaces it with a full reset of any previous object in this cutscene room (the only objects in this room are the animation frames, anyway). This restores the missing first frame of this animation if you die, and makes Indy happier when he finds the Grail.How to test
room 86
in the debugger(If you need to know which Grail is the real one, look at
Var[253]
in the debugger, that should be the number of the real Grail when counting from the left)