aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/script_v5.cpp10
-rw-r--r--scumm/script_v6.cpp13
2 files changed, 13 insertions, 10 deletions
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp
index 1f2afdd98f..f624eec045 100644
--- a/scumm/script_v5.cpp
+++ b/scumm/script_v5.cpp
@@ -2348,10 +2348,12 @@ void Scumm_v5::o5_wait()
_opcode = fetchScriptByte();
switch (_opcode & 0x1F) {
- case 1: /* wait for actor */
- if (derefActorSafe(getVarOrDirectByte(0x80), "o5_wait")->moving)
- break;
- return;
+ case 1: { /* wait for actor */
+ Actor *a = derefActorSafe(getVarOrDirectByte(0x80), "o5_wait");
+ if (a && a->isInCurrentRoom() && a->moving)
+ break;
+ return;
+ }
case 2: /* wait for message */
if (_vars[VAR_HAVE_MSG])
break;
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp
index 800405e540..2acdb068aa 100644
--- a/scumm/script_v6.cpp
+++ b/scumm/script_v6.cpp
@@ -2072,13 +2072,14 @@ void Scumm_v6::o6_wait()
{
switch (fetchScriptByte()) {
case 168:{
- int offs = fetchScriptWordSigned();
- if (derefActorSafe(pop(), "o6_wait")->moving) {
- _scriptPointer += offs;
- o6_breakHere();
- }
- return;
+ Actor *a = derefActorSafe(pop(), "o6_wait");
+ int offs = (int16)fetchScriptWord();
+ if (a && a->isInCurrentRoom() && a->moving) {
+ _scriptPointer += offs;
+ o6_breakHere();
}
+ return;
+ }
case 169:
// HACK: For Conroy Bumpus' song in Sam & Max.
// During the song three calls to o6_wait() appear,