#598 closed defect (fixed)
INDY3: wrong Indy costume in intro
Reported by: | SF/sir_kill_a_lot | Owned by: | SF/khalek |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | Keywords: | ||
Cc: | Game: | Indiana Jones 3 |
Description
I wonder why not already someone else reported this bug. In the intro when Indy shows Henry the Cross of Coronado he has the wrong costume. If you skip the first part of the intro, then you can see the small train from the lucasarts logo instead of indy (see screenshot). If you look at the whole intro, then he looks like the young Indy after falling into the railroad car.
ScummVM 0.2.82 CVS Built on Nov 28 2002, Indiana Jones 3 VGA German on Win32
Ticket imported from: #645300. Ticket imported from: bugs/598.
Attachments (1)
Change History (10)
by , 22 years ago
Attachment: | indytrain.png added |
---|
comment:1 by , 22 years ago
I've been trying to figure this one out, and as far as I can see what happens is that it doesn't change the costume on actor 1, so whatever was used most recently will be be used for the scene you describe.
From what I remember - I don't have my notes available - there is a line in the entry script for the room that will set the costume for actor 1, but only if script 1 isn't running, i.e. it won't happen during the intro. A good thing, too, because that's the "Indy in a suit" costume. My point is, there isn't any "else" clause, so apparently it should be setting the costume elsewhere and I don't know where.
There is a "Loading room 0" message during the intro, and startScene() treats this as a special case where it skips most things that would happen when loading any other room. Could it be that room 0 should have an entry script that we never run? (I'm just guessing wildly here. MonkeyVGA also produces a "Loading room 0" message, and that one works just fine.)
comment:3 by , 22 years ago
erik: Monkey Island uses in fact the feature of the bootparam inside. It setzts a variable, that it's not a debugging session andsets the bootparam to a value. Than it in fact restarts the game and depending on the bootparam-value starts a room with a bunch of items.
I'll look again inside Indy's script, to tell, if I can help you...
comment:4 by , 22 years ago
As a last resort, we could put something like this at the end of startScene():
if (_gameId == GID_INDY3_256 && _currentRoom == 1 && isScriptRunning(1)) { Actor *a;
a = derefActorSafe(1, "Indy 3 intro hack"); if (a) a->setActorCostume(10); }
But I'd really rather not. I mean, there *has* to be some better way than this, right?
comment:5 by , 22 years ago
Summary: | INDY3VGA: wrong Indy costume in intro → INDY3: wrong Indy costume in intro |
---|
comment:7 by , 22 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:8 by , 22 years ago
I ended up adding a hack for this similiar to what erik mentioned but in o5_loadRoom. closing.
comment:9 by , 22 years ago
Patch #729365 ("INDY3: Better (but incomomplete) fix for intro costume bug") has a better fix for this problem.
Indy as train