diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/scumm/script.cpp | 34 | ||||
-rw-r--r-- | engines/scumm/scumm.cpp | 2 | ||||
-rw-r--r-- | engines/scumm/scumm_v0.h | 2 | ||||
-rw-r--r-- | engines/scumm/vars.cpp | 2 |
4 files changed, 15 insertions, 25 deletions
diff --git a/engines/scumm/script.cpp b/engines/scumm/script.cpp index 0864022c59..e34c81d0d4 100644 --- a/engines/scumm/script.cpp +++ b/engines/scumm/script.cpp @@ -196,12 +196,8 @@ int ScummEngine::getVerbEntrypoint(int obj, int entry) { } else if (_game.version <= 2) { do { const int kFallbackEntry = (_game.version == 0 ? 0x0F : 0xFF); - if (!*verbptr) { - if (_game.version == 0 && entry == kVerbWalkTo) - return 13; - else - return 0; - } + if (!*verbptr) + return 0; if (*verbptr == entry || *verbptr == kFallbackEntry) break; verbptr += 2; @@ -1160,8 +1156,6 @@ void ScummEngine_v0::walkToActorOrObject(int object) { } void ScummEngine_v0::checkAndRunSentenceScript() { - const ScriptSlot *ss; - if (_walkToObjectIdx) { ActorC64 *a = (ActorC64 *)derefActor(VAR(VAR_EGO), "checkAndRunSentenceScript"); if (a->_moving) @@ -1175,7 +1169,6 @@ void ScummEngine_v0::checkAndRunSentenceScript() { if (!_sentenceNum || _sentence[_sentenceNum - 1].freezeCount) return; - //_sentenceNum--; SentenceTab &st = _sentence[_sentenceNum - 1]; if (st.preposition && st.objectB == st.objectA) @@ -1232,30 +1225,27 @@ void ScummEngine_v0::checkAndRunSentenceScript() { void ScummEngine_v0::runSentenceScript() { int obj = OBJECT_V0(_cmdObjectNr, _cmdObjectType); - // FIXME: should it really ever return 0xD on WalkTo, seems wrong? if (getVerbEntrypoint(obj, _cmdVerb) != 0) { - if (_cmdVerb == kVerbRead && VAR(VAR_CURRENT_LIGHTS) == 0) { - //slot = 0xFF; - VAR(VAR_ACTIVE_VERB) = _cmdVerb; - runScript(3, 0, 0, 0); - return; - } else { - VAR(VAR_ACTIVE_ACTOR) = _cmdObject2Nr; + // do not read in the dark + if (!(_cmdVerb == kVerbRead && _currentLights == 0)) { + VAR(VAR_ACTIVE_OBJECT2) = _cmdObject2Nr; runObjectScript(obj, _cmdVerb, false, false, NULL); return; } } else { if (_cmdVerb == kVerbGive) { + // no "give to"-script: give to other kid or ignore if (_cmdObject2Nr < 8) setOwnerOf(obj, _cmdObject2Nr); return; - } else if (_cmdVerb == kVerbWalkTo) { - //slot = 0xFF; - VAR(VAR_ACTIVE_VERB) = _cmdVerb; - runScript(3, 0, 0, 0); - return; } } + + if (_cmdVerb != kVerbWalkTo) { + // perform verb's fallback action + VAR(VAR_ACTIVE_VERB) = _cmdVerb; + runScript(3, 0, 0, 0); + } } void ScummEngine_v2::runInputScript(int clickArea, int val, int mode) { diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp index e6ec2b0dab..2eda5cac80 100644 --- a/engines/scumm/scumm.cpp +++ b/engines/scumm/scumm.cpp @@ -726,7 +726,7 @@ ScummEngine_v0::ScummEngine_v0(OSystem *syst, const DetectorResult &dr) _cmdObject2Nr = 0; _cmdObject2Type = 0; - VAR_ACTIVE_ACTOR = 0xFF; + VAR_ACTIVE_OBJECT2 = 0xFF; VAR_IS_SOUND_RUNNING = 0xFF; VAR_ACTIVE_VERB = 0xFF; } diff --git a/engines/scumm/scumm_v0.h b/engines/scumm/scumm_v0.h index 031a73acf9..3335a15ad2 100644 --- a/engines/scumm/scumm_v0.h +++ b/engines/scumm/scumm_v0.h @@ -159,7 +159,7 @@ protected: void o_beginOverride(); void o_setOwnerOf(); - byte VAR_ACTIVE_ACTOR; + byte VAR_ACTIVE_OBJECT2; byte VAR_IS_SOUND_RUNNING; byte VAR_ACTIVE_VERB; }; diff --git a/engines/scumm/vars.cpp b/engines/scumm/vars.cpp index 26a6a2f3b1..6365a728d2 100644 --- a/engines/scumm/vars.cpp +++ b/engines/scumm/vars.cpp @@ -115,7 +115,7 @@ void ScummEngine_v0::setupScummVars() { VAR_CAMERA_POS_X = 2; VAR_HAVE_MSG = 3; VAR_ROOM = 4; - VAR_ACTIVE_ACTOR = 5; + VAR_ACTIVE_OBJECT2 = 5; VAR_OVERRIDE = 6; VAR_IS_SOUND_RUNNING = 8; VAR_ACTIVE_VERB = 9; |