#618 closed defect (fixed)
INDY3: Levitating guard
Reported by: | eriktorbjorn | Owned by: | fingolfin |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | Keywords: | ||
Cc: | Game: | Indiana Jones 3 |
Description
The drunken guard in Castle Brunwald is often drawn without his head, and if you fight him he starts to levitate. This happens both with 0.3.0b and recent CVS snapshots.
Ticket imported from: #650736. Ticket imported from: bugs/618.
Attachments (3)
Change History (16)
by , 22 years ago
comment:1 by , 22 years ago
This could actually be due to endy's hack to prevent indy and a few other characters being headless or just an instance it didn't touch. We need to find a nice correct fix...
see startAnimActor() in actor.cpp currently around line 460 for the fixme
comment:2 by , 22 years ago
Well, it's not DUE to the hack, it's just a case that the hack doesn't prevent.
Yes, a proper fix would be oh-so-nice... but both myself and Yaz have spent considerable time trying to find the cause of the actor animation problems, and failed.
comment:3 by , 22 years ago
Right. The existing Indy 3 anti-decapitation hack only remaps frame 3 to initFrame, as far as I can see. With the drunken guard it seems to be frames 6 and 7 that, for whatever reason, are lacking a head.
I think I did figure out what's causing the guard to levitate, though. It appears to be script 37 that controls his movements, and this is what it does:
[0024] (C3) Local[0] = getActorX(Var[219]) [0029] (A3) Local[1] = getActorY(Var[219]) [002E] (BA) Local[0] -= Var[221]; [0033] (F8) if (Local[0] < Var[222]) { [003A] (5A) Local[0] += 8; [003F] (**) } [003F] (C4) if (Local[0] > Var[223]) { [0046] (3A) Local[0] -= 8; [004B] (**) } [004B] (E1) putActor(Var[219],Local[0],Local[1])
Which would be fine, except there's an Indy 3 hack in o5_getActorY() that makes the result one less than it should be. Apparently this is to fix bug #636433. I haven't gotten far enough to know anything about that one though.
comment:4 by , 22 years ago
I removed the indy 3 head hack today, it's not needed anymore. I wonder if this problem got any better, too. Sadly the attached save game doesn't work for me, so I can't verify it.
comment:5 by , 22 years ago
he seems to have his head now but still levitates when you fight him. I assume thats a different bug though...
comment:6 by , 22 years ago
As mentioned below, the levitation is probably because of another Indy 3 hack in o5_getActorY(). But I haven't looked at this in a long time now...
comment:7 by , 22 years ago
Maybe the hack in o5_getActorY() can be restricted to the room where it is needed only.. or maybe it is not even needed anymore even there?
comment:8 by , 22 years ago
Summary: | INDY3: Headless guard → INDY3: Levitating guard |
---|
comment:10 by , 22 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:12 by , 22 years ago
Owner: | set to |
---|
comment:13 by , 6 years ago
Component: | → Engine: SCUMM |
---|---|
Game: | → Indiana Jones 3 |
Savegame outside the guard's room