diff options
-rw-r--r-- | scumm/script.cpp | 2 | ||||
-rw-r--r-- | scumm/scummvm.cpp | 3 | ||||
-rw-r--r-- | scumm/verbs.cpp | 27 |
3 files changed, 16 insertions, 16 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp index b27b3f1b94..151b8dcb4a 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -865,7 +865,7 @@ void Scumm::doSentence(int verb, int objectA, int objectB) { void Scumm::checkAndRunSentenceScript() { int i; - ScriptSlot *ss; + const ScriptSlot *ss; int sentenceScript; if (_version <= 2) sentenceScript = 2; diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp index 9e89293c0d..77f965ef1e 100644 --- a/scumm/scummvm.cpp +++ b/scumm/scummvm.cpp @@ -1383,6 +1383,8 @@ void Scumm::startScene(int room, Actor * a, int objectNr) { _egoPositioned = false; runEntryScript(); + if (_version <= 2) + runScript(5, 0, 0, 0); if (_version < 7) { if (a && !_egoPositioned) { @@ -2086,7 +2088,6 @@ void Scumm::processKbd() { if (_lastKeyHit) { // Key Input VAR(VAR_KEYPRESS) = _lastKeyHit; - runInputScript(4, 0, 0); } } diff --git a/scumm/verbs.cpp b/scumm/verbs.cpp index ea9d361e81..62a0b5a5c0 100644 --- a/scumm/verbs.cpp +++ b/scumm/verbs.cpp @@ -273,33 +273,32 @@ void Scumm::checkExecVerbs() { for (i = 1; i < _maxVerbs; i++, vs++) { if (vs->verbid && vs->saveid == 0 && vs->curmode == 1) { if (_mouseButStat == vs->key) { + // Trigger verb as if the user clicked it runInputScript(1, vs->verbid, 1); return; } } } + // Generic keyboard input runInputScript(4, _mouseButStat, 1); } else if (_mouseButStat & MBS_MOUSE_MASK) { VirtScreen *zone = findVirtScreen(_mouse.y); byte code = _mouseButStat & MBS_LEFT_CLICK ? 1 : 2; - if (zone->number == 0) { - over = checkMouseOver(_mouse.x, _mouse.y); - if (over != 0) { - runInputScript(1, _verbs[over].verbid, code); - return; - } - runInputScript(2, 0, code); + if (_version <= 2 && zone->number == 2 && _mouse.y <= zone->topline + 8) { + // Click into V2 sentence line + runInputScript(5, 0, 0); } else if (_version <= 2 && zone->number == 2 && _mouse.y > zone->topline + 32) { + // Click into V2 inventory checkV2Inventory(_mouse.x, _mouse.y); } else { over = checkMouseOver(_mouse.x, _mouse.y); - - // FIXME For the future: Indy3 and under inv scrolling - /* - if (over >= 31 && over <= 36) - over += _inventoryOffset; - */ - runInputScript(1, over != 0 ? _verbs[over].verbid : 0, code); + if (over != 0) { + // Verb was clicked + runInputScript(1, _verbs[over].verbid, code); + } else { + // Scene was clicked + runInputScript((zone->number == 0) ? 2 : 1, 0, code); + } } } } |