Opened 18 years ago

Closed 17 years ago

Last modified 17 years ago

#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
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)

indytrain.png (22.1 KB ) - added by SF/sir_kill_a_lot 18 years ago.
Indy as train

Download all attachments as: .zip

Change History (10)

by SF/sir_kill_a_lot, 18 years ago

Attachment: indytrain.png added

Indy as train

comment:1 by eriktorbjorn, 18 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:2 by SF/khalek, 18 years ago

bug 646235 has been marked a duplicate of this and closed

comment:3 by SF/andrej4000, 18 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 eriktorbjorn, 18 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 fingolfin, 18 years ago

Summary: INDY3VGA: wrong Indy costume in introINDY3: wrong Indy costume in intro

comment:6 by SF/khalek, 18 years ago

bug #662316 has been marked a duplicate of this and closed

comment:7 by SF/khalek, 17 years ago

Owner: set to SF/khalek
Resolution: fixed
Status: newclosed

comment:8 by SF/khalek, 17 years ago

I ended up adding a hack for this similiar to what erik mentioned but in o5_loadRoom. closing.

comment:9 by eriktorbjorn, 17 years ago

Patch #729365 ("INDY3: Better (but incomomplete) fix for intro costume bug") has a better fix for this problem.

Note: See TracTickets for help on using tickets.