diff options
Diffstat (limited to 'scumm/script_v2.cpp')
-rw-r--r-- | scumm/script_v2.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp index ca3fd53e9a..956c1687c3 100644 --- a/scumm/script_v2.cpp +++ b/scumm/script_v2.cpp @@ -40,7 +40,7 @@ void Scumm_v2::setupOpcodes() { /* 04 */ OPCODE(o5_isGreaterEqual), OPCODE(o2_drawObject), - OPCODE(o5_getActorElevation), + OPCODE(o2_getActorElevation), OPCODE(o2_setState08), /* 08 */ OPCODE(o5_isNotEqual), @@ -200,7 +200,7 @@ void Scumm_v2::setupOpcodes() { /* 84 */ OPCODE(o5_isGreaterEqual), OPCODE(o2_drawObject), - OPCODE(o5_getActorElevation), + OPCODE(o2_getActorElevation), OPCODE(o2_setState08), /* 88 */ OPCODE(o5_isNotEqual), @@ -1060,12 +1060,19 @@ void Scumm_v2::o2_putActorAtObject() { a->putActor(x, y, a->room); } +void Scumm_v2::o2_getActorElevation() { + getResultPos(); + int act = getVarOrDirectByte(0x80); + Actor *a = derefActor(act, "o2_getActorElevation"); + setResult(a->elevation / 2); +} + void Scumm_v2::o2_setActorElevation() { int act = getVarOrDirectByte(0x80); int elevation = getVarOrDirectByte(0x40); Actor *a = derefActor(act, "o2_setActorElevation"); - a->elevation = elevation; + a->elevation = elevation * 2; } void Scumm_v2::o2_animateActor() { |