aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/mads/action.cpp8
-rw-r--r--engines/mads/action.h4
-rw-r--r--engines/mads/nebular/nebular_scenes1.cpp16
-rw-r--r--engines/mads/nebular/nebular_scenes2.cpp2
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;