aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTravis Howell2006-07-24 12:49:58 +0000
committerTravis Howell2006-07-24 12:49:58 +0000
commit7fe844cac62a7513fced5a3679b79eb7bf7b6a73 (patch)
tree79663cd21ba71604c1d0ba7ebeeb524c7a604edc /engines
parentf464830a1779e327fbcc98a36400563ca28815fd (diff)
downloadscummvm-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
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/actor.h4
-rw-r--r--engines/scumm/intern.h1
-rw-r--r--engines/scumm/script_c64.cpp8
-rw-r--r--engines/scumm/script_v2.cpp27
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);