aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/script.cpp2
-rw-r--r--scumm/scummvm.cpp3
-rw-r--r--scumm/verbs.cpp27
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);
+ }
}
}
}