diff options
author | Travis Howell | 2006-07-24 12:49:58 +0000 |
---|---|---|
committer | Travis Howell | 2006-07-24 12:49:58 +0000 |
commit | 7fe844cac62a7513fced5a3679b79eb7bf7b6a73 (patch) | |
tree | 79663cd21ba71604c1d0ba7ebeeb524c7a604edc | |
parent | f464830a1779e327fbcc98a36400563ca28815fd (diff) | |
download | scummvm-rg350-7fe844cac62a7513fced5a3679b79eb7bf7b6a73.tar.gz scummvm-rg350-7fe844cac62a7513fced5a3679b79eb7bf7b6a73.tar.bz2 scummvm-rg350-7fe844cac62a7513fced5a3679b79eb7bf7b6a73.zip |
Fix bug #1496523 - MM: Weird Ed appears backwards at door
svn-id: r23589
-rw-r--r-- | engines/scumm/actor.h | 4 | ||||
-rw-r--r-- | engines/scumm/intern.h | 1 | ||||
-rw-r--r-- | engines/scumm/script_c64.cpp | 8 | ||||
-rw-r--r-- | engines/scumm/script_v2.cpp | 27 |
4 files changed, 32 insertions, 8 deletions
diff --git a/engines/scumm/actor.h b/engines/scumm/actor.h index 151c272da9..38636f7746 100644 --- a/engines/scumm/actor.h +++ b/engines/scumm/actor.h @@ -233,6 +233,10 @@ public: return _facing; } + void setFacing(int newFacing) { + _facing = newFacing; + } + int getAnimVar(byte var) const; void setAnimVar(byte var, int value); diff --git a/engines/scumm/intern.h b/engines/scumm/intern.h index 0f59212beb..0bf8b9b67e 100644 --- a/engines/scumm/intern.h +++ b/engines/scumm/intern.h @@ -364,6 +364,7 @@ protected: void o2_pickupObject(); void o2_putActor(); void o2_putActorAtObject(); + void o2_putActorInRoom(); void o2_resourceRoutines(); void o2_restart(); void o2_roomOps(); diff --git a/engines/scumm/script_c64.cpp b/engines/scumm/script_c64.cpp index a6ecd2cc23..7882f44f05 100644 --- a/engines/scumm/script_c64.cpp +++ b/engines/scumm/script_c64.cpp @@ -92,7 +92,7 @@ void ScummEngine_c64::setupOpcodes() { OPCODE(o_setActorBitVar), /* 2C */ OPCODE(o_stopCurrentScript), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o_print_c64), OPCODE(o2_ifState08), /* 30 */ @@ -172,7 +172,7 @@ void ScummEngine_c64::setupOpcodes() { OPCODE(o_setActorBitVar), /* 6C */ OPCODE(o_stopCurrentScript), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o2_dummy), OPCODE(o2_ifState08), /* 70 */ @@ -252,7 +252,7 @@ void ScummEngine_c64::setupOpcodes() { OPCODE(o_setActorBitVar), /* AC */ OPCODE(o_stopCurrentScript), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o_print_c64), OPCODE(o2_ifNotState08), /* B0 */ @@ -332,7 +332,7 @@ void ScummEngine_c64::setupOpcodes() { OPCODE(o_setActorBitVar), /* EC */ OPCODE(o_stopCurrentScript), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o2_dummy), OPCODE(o2_ifNotState08), /* F0 */ diff --git a/engines/scumm/script_v2.cpp b/engines/scumm/script_v2.cpp index fc9924ffca..374cb6d498 100644 --- a/engines/scumm/script_v2.cpp +++ b/engines/scumm/script_v2.cpp @@ -94,7 +94,7 @@ void ScummEngine_v2::setupOpcodes() { OPCODE(o5_delayVariable), /* 2C */ OPCODE(o2_assignVarByte), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o2_delay), OPCODE(o2_ifNotState04), /* 30 */ @@ -174,7 +174,7 @@ void ScummEngine_v2::setupOpcodes() { OPCODE(o2_dummy), /* 6C */ OPCODE(o2_getObjPreposition), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o2_dummy), OPCODE(o2_ifState04), /* 70 */ @@ -254,7 +254,7 @@ void ScummEngine_v2::setupOpcodes() { OPCODE(o2_switchCostumeSet), /* AC */ OPCODE(o2_drawSentence), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o2_waitForMessage), OPCODE(o2_ifNotState04), /* B0 */ @@ -334,7 +334,7 @@ void ScummEngine_v2::setupOpcodes() { OPCODE(o2_dummy), /* EC */ OPCODE(o2_getObjPreposition), - OPCODE(o5_putActorInRoom), + OPCODE(o2_putActorInRoom), OPCODE(o2_dummy), OPCODE(o2_ifState04), /* F0 */ @@ -1146,6 +1146,9 @@ void ScummEngine_v2::o2_putActor() { x = getVarOrDirectByte(PARAM_2) * 8; y = getVarOrDirectByte(PARAM_3) * 2; + if (_game.id == GID_MANIAC && _game.version <= 1 && _game.platform != Common::kPlatformNES) + a->setFacing(180); + a->putActor(x, y, a->_room); } @@ -1227,6 +1230,22 @@ void ScummEngine_v2::o2_putActorAtObject() { a->putActor(x, y, a->_room); } +void ScummEngine_v2::o2_putActorInRoom() { + Actor *a; + int act = getVarOrDirectByte(PARAM_1); + int room = getVarOrDirectByte(PARAM_2); + + a = derefActor(act, "o2_putActorInRoom"); + + a->_room = room; + if (!room) { + if (_game.id == GID_MANIAC && _game.version <= 1 && _game.platform != Common::kPlatformNES) + a->setFacing(180); + + a->putActor(0, 0, 0); + } +} + void ScummEngine_v2::o2_getActorElevation() { getResultPos(); int act = getVarOrDirectByte(PARAM_1); |