diff options
-rw-r--r-- | engines/mads/action.cpp | 8 | ||||
-rw-r--r-- | engines/mads/action.h | 4 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes1.cpp | 16 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes2.cpp | 2 |
4 files changed, 20 insertions, 10 deletions
diff --git a/engines/mads/action.cpp b/engines/mads/action.cpp index 48393e17f6..ab4a112b71 100644 --- a/engines/mads/action.cpp +++ b/engines/mads/action.cpp @@ -385,6 +385,14 @@ bool MADSAction::isAction(int verbId, int objectNameId, int indirectObjectId) { return true; } +bool MADSAction::isObject(int objectNameId) { + return _activeAction._objectNameId == objectNameId; +} + +bool MADSAction::isTarget(int objectNameId) { + return _activeAction._indirectObjectId == objectNameId; +} + void MADSAction::checkActionAtMousePos() { Scene &scene = _vm->_game->_scene; UserInterface &userInterface = scene._userInterface; diff --git a/engines/mads/action.h b/engines/mads/action.h index ac6c35c863..24521d074d 100644 --- a/engines/mads/action.h +++ b/engines/mads/action.h @@ -151,7 +151,9 @@ public: void checkAction(); bool isAction(int verbId, int objectNameId = 0, int indirectObjectId = 0); - + bool isObject(int objectNameId); + bool isTarget(int objectNameId); + /** * Check the result of the current action on the sentence * with the provision that the action is not yet complete. diff --git a/engines/mads/nebular/nebular_scenes1.cpp b/engines/mads/nebular/nebular_scenes1.cpp index 7d8b077fc2..5629dc0934 100644 --- a/engines/mads/nebular/nebular_scenes1.cpp +++ b/engines/mads/nebular/nebular_scenes1.cpp @@ -798,7 +798,7 @@ void Scene102::actions() { return; } - if (_action._activeAction._objectNameId == 0x122 && !_fridgeOpenedFl) { + if (_action.isObject(0x122) && !_fridgeOpenedFl) { switch (_game._trigger) { case 0: _globals._sequenceIndexes[7] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[7], false, 6, 1, 0, 0); @@ -970,7 +970,7 @@ void Scene102::actions() { return; } - if ((_action._activeAction._objectNameId == 0xC7 || _action._activeAction._objectNameId == 0xA3) && (_action.isAction(VERB_LOOK) || _action.isAction(0x50) || _action.isAction(0x4F))) { + if ((_action.isObject(0xC7) || _action.isObject(0xA3)) && (_action.isAction(VERB_LOOK) || _action.isAction(0x50) || _action.isAction(0x4F))) { if (_game._objects.isInInventory(OBJ_REBREATHER)) { if (!_action.isAction(0x50) && !_action.isAction(0x4F)) { _vm->_dialogs->show(0x27F7); @@ -984,7 +984,7 @@ void Scene102::actions() { } } - if ((_action._activeAction._objectNameId == 0xC7 || _action._activeAction._objectNameId == 0xA3) && (_action.isAction(0x50) || _action.isAction(0x4F)) ) { + if ((_action.isObject(0xC7) || _action.isObject(0xA3)) && (_action.isAction(0x50) || _action.isAction(0x4F)) ) { switch (_game._trigger) { case 0: _scene->loadAnimation(formAnimName('A', -1), 1); @@ -2470,8 +2470,8 @@ void Scene109::preActions() { _game._player._walkOffScreenSceneId = 108; if ((_action.isAction(VERB_THROW) || _action.isAction(VERB_GIVE) || _action.isAction(VERB_PUT)) - && (_action.isAction(0x146) || _action.isAction(0x178)) - && (_action.isAction(0x65) || _action.isAction(0x157) || _action.isAction(0x35))) { + && (_action.isObject(0x146) || _action.isObject(0x178)) + && (_action.isObject(0x65) || _action.isObject(0x157) || _action.isObject(0x35))) { int idx = _game._objects.getIdFromDesc(_action._activeAction._objectNameId); if ((idx >= 0) && _game._objects.isInInventory(idx)) { _game._player._prepareWalkPos = Common::Point(106, 38); @@ -2482,7 +2482,7 @@ void Scene109::preActions() { } if ((_action.isAction(0x15A, 0x178) || _action.isAction(0x15C, 0x146)) - && (!_globals[kHoovicAlive] || _globals[kHoovicSated]) && (_action.isAction(0x178))) + && (!_globals[kHoovicAlive] || _globals[kHoovicSated]) && (_action.isObject(0x178))) _game._player._walkOffScreenSceneId = 110; _hungryFl = false; @@ -2495,8 +2495,8 @@ void Scene109::actions() { return; } - if ((_action.isAction(VERB_THROW) || _action.isAction(VERB_GIVE)) && ((_action.isAction(0x146) || _action.isAction(0x178)))) { - if (_action.isAction(0x65) || _action.isAction(0x157) || _action.isAction(0x35)) { + if ((_action.isAction(VERB_THROW) || _action.isAction(VERB_GIVE)) && (_action.isTarget(0x146) || _action.isTarget(0x178))) { + if (_action.isObject(0x65) || _action.isObject(0x157) || _action.isObject(0x35)) { _throwingObjectId = _game._objects.getIdFromDesc(_action._activeAction._objectNameId); if (_throwingObjectId >= 0) { if ((_game._objects.isInInventory(_throwingObjectId) && _globals[kHoovicAlive]) || _rexThrowingObject) { diff --git a/engines/mads/nebular/nebular_scenes2.cpp b/engines/mads/nebular/nebular_scenes2.cpp index a62ad6b94d..2ead2c02eb 100644 --- a/engines/mads/nebular/nebular_scenes2.cpp +++ b/engines/mads/nebular/nebular_scenes2.cpp @@ -4551,7 +4551,7 @@ void Scene212::preActions() { void Scene212::actions() { if (_action._lookFlag) _vm->_dialogs->show(0x52D9); - else if (_action.isAction(0x18C) && (_action.isAction(0x82) || _action.isAction(0xE8))) + else if (_action.isAction(0x18C) && (_action.isObject(0x82) || _action.isObject(0xE8))) _scene->_nextSceneId = 208; else if (_action.isAction(0x18C, 0x3F)) _scene->_nextSceneId = 111; |