aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/draci/game.cpp12
-rw-r--r--engines/draci/script.cpp22
2 files changed, 13 insertions, 21 deletions
diff --git a/engines/draci/game.cpp b/engines/draci/game.cpp
index 6051e0d651..419e2e9c29 100644
--- a/engines/draci/game.cpp
+++ b/engines/draci/game.cpp
@@ -168,8 +168,10 @@ void Game::start() {
if (_newRoom != _currentRoom._roomNum) {
// Set the first two variables to the new room / gate
- _variables[0] = _newGate;
- _variables[1] = _newRoom;
+ // Before setting these variables we have to convert the values to
+ // 1-based indexing because this is how everything is stored in the data files
+ _variables[0] = _newGate + 1;
+ _variables[1] = _newRoom + 1;
// If the new room is the map room, set the appropriate coordinates
// for the dragon in the persons array
@@ -263,8 +265,10 @@ void Game::init() {
_newRoom = _currentRoom._roomNum;
_newGate = _currentGate;
- _variables[0] = _currentGate;
- _variables[1] = _currentRoom._roomNum;
+ // Before setting these variables we have to convert the values to 1-based indexing
+ // because this is how everything is stored in the data files
+ _variables[0] = _currentGate + 1;
+ _variables[1] = _currentRoom._roomNum + 1;
changeRoom(_currentRoom._roomNum);
runGateProgram(_currentGate);
diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp
index b30a081027..f526bdc874 100644
--- a/engines/draci/script.cpp
+++ b/engines/draci/script.cpp
@@ -394,20 +394,8 @@ void Script::start(Common::Queue<int> &params) {
return;
}
- int objID = params.pop();
- int animID = params.pop();
-
- // Fixes bug in the data files which makes the game crash in the intro
- // TODO: This is possibly exclusive to the English version, so check for that
- if (animID == 657) {
- Common::Queue<int> tmp;
- tmp.push(objID);
- tmp.push(animID);
- this->load(tmp);
- }
-
- objID -= 1;
- animID -= 1;
+ int objID = params.pop() - 1;
+ int animID = params.pop() - 1;
GameObject *obj = _vm->_game->getObject(objID);
@@ -780,12 +768,12 @@ int Script::handleMathExpression(Common::MemoryReadStream &reader) {
break;
case kMathVariable:
- value = reader.readSint16LE();
+ value = reader.readSint16LE() - 1;
- stk.push(_vm->_game->getVariable(value-1));
+ stk.push(_vm->_game->getVariable(value));
debugC(3, kDraciBytecodeDebugLevel, "\t\tvariable: %d (%d)", value,
- _vm->_game->getVariable(value-1));
+ _vm->_game->getVariable(value));
break;
case kMathFunctionCall: