diff options
-rw-r--r-- | dists/msvc9/create_msvc9.bat | 6 | ||||
-rw-r--r-- | engines/mads/nebular/game_nebular.cpp | 110 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes.h | 10 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes2.cpp | 2 |
4 files changed, 120 insertions, 8 deletions
diff --git a/dists/msvc9/create_msvc9.bat b/dists/msvc9/create_msvc9.bat index 34bcccdd7b..561772b615 100644 --- a/dists/msvc9/create_msvc9.bat +++ b/dists/msvc9/create_msvc9.bat @@ -55,21 +55,21 @@ goto done echo. echo Creating project files with all engines enabled (stable and unstable) echo. -create_project ..\.. --enable-all-engines --msvc --msvc-version 9 +create_project ..\.. --enable-all-engines --msvc --msvc-version 9 --disable-taskbar --disable-freetype --disable-jpeg --disable-engine=zvision goto done :stable echo. echo Creating normal project files, with only the stable engines enabled echo. -create_project ..\.. --msvc --msvc-version 9 +create_project ..\.. --msvc --msvc-version 9 --disable-taskbar --disable-freetype --disable-jpeg --disable-engine=zvision goto done :tools echo. echo Creating tools project files echo. -create_project ..\.. --tools --msvc --msvc-version 9 +create_project ..\.. --tools --msvc --msvc-version 9 --disable-taskbar --disable-freetype --disable-jpeg --disable-engine=zvision goto done :tests diff --git a/engines/mads/nebular/game_nebular.cpp b/engines/mads/nebular/game_nebular.cpp index ed7d976635..b5c6e33d4f 100644 --- a/engines/mads/nebular/game_nebular.cpp +++ b/engines/mads/nebular/game_nebular.cpp @@ -566,7 +566,115 @@ void GameNebular::doObjectAction() { } void GameNebular::unhandledAction() { - warning("TODO: unhandledAction"); + int random = _vm->getRandomNumber(1, 1000); + MADSAction &action = _scene._action; + + if (action.isAction(VERB_THROW, NOUN_BOMB) || action.isAction(VERB_THROW, NOUN_BOMBS) + || action.isAction(VERB_THROW, NOUN_TIMEBOMB) || action.isAction(VERB_THROW, NOUN_CHICKEN_BOMB)) + _vm->_dialogs->show(0x2A); + else if (action.isAction(0x6C)) + _vm->_dialogs->show(0x1B3); + else if ((action.isAction(NOUN_EAT, NOUN_DEAD_FISH) || action.isAction(NOUN_EAT, NOUN_STUFFED_FISH)) && _vm->_game->_objects.isInInventory(_vm->_game->_objects.getIdFromDesc(action._activeAction._objectNameId))) + _vm->_dialogs->show(0xC); + else if ((action.isAction(NOUN_SMELL, NOUN_DEAD_FISH) || action.isAction(NOUN_SMELL, NOUN_STUFFED_FISH)) && _vm->_game->_objects.isInInventory(_vm->_game->_objects.getIdFromDesc(action._activeAction._objectNameId))) + _vm->_dialogs->show(0xD); + else if (action.isAction(NOUN_EAT, NOUN_CHICKEN) && _vm->_game->_objects.isInInventory(OBJ_CHICKEN)) + _vm->_dialogs->show(0x390); + else if ((action.isAction(NOUN_SHOOT) || action.isAction(NOUN_HOSE_DOWN)) && action.isAction(NOUN_BLOWGUN)) { + if ((_scene._currentSceneId >= 104) && (_scene._currentSceneId <= 111)) + _vm->_dialogs->show(0x26); + else if (action.isAction(0x10D)) + _vm->_dialogs->show(0x29); + else if (action.isAction(NOUN_CHICKEN) || action.isAction(0x185) || action.isAction(0x14D) + || action.isAction(0x1DD) || action.isAction(0x15F) || action.isAction(NOUN_CAPTIVE_CREATURE)) { + _vm->_dialogs->show(0x28); + } else + _vm->_dialogs->show(0x27); + } else if (action.isAction(VERB_TALKTO)) { + _globals[kTalkInanimateCount] = (_globals[kTalkInanimateCount] + 1) % 16; + if (!_globals[kTalkInanimateCount]) { + _vm->_dialogs->show(0x2); + } else { + Common::String tmpMsg = "\"Greetings, "; + tmpMsg += _vm->_game->_scene.getVocab(action._activeAction._objectNameId); + tmpMsg += "!\""; + _scene._kernelMessages.reset(); + _scene._kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 0, 120, tmpMsg); + } + } else if (action.isAction(VERB_GIVE, NOUN_DOOR, 0x46) || action.isAction(VERB_CLOSE, NOUN_CHAIR)) + _vm->_dialogs->show(0x3); + else if (action.isAction(VERB_THROW)) { + int objId = _vm->_game->_objects.getIdFromDesc(action._activeAction._objectNameId); + if (objId < 0) + _vm->_dialogs->show(0x4); + else if (_vm->_game->_objects[objId]._roomNumber != 2) + _vm->_dialogs->show(0x5); + else + _vm->_dialogs->show(0x6); + } else if (action.isAction(VERB_LOOK)) { + if (action.isAction(0x27) && (action._activeAction._indirectObjectId > 0)) + _vm->_dialogs->show(0xA); + else if (random < 600) + _vm->_dialogs->show(0x7); + else + _vm->_dialogs->show(0x15); + } else if (action.isAction(VERB_TAKE)) { + int objId = _vm->_game->_objects.getIdFromDesc(action._activeAction._objectNameId); + if (_vm->_game->_objects.isInInventory(objId)) + _vm->_dialogs->show(0x10); + else if (random <= 333) + _vm->_dialogs->show(0x8); + else if (random <= 666) + _vm->_dialogs->show(0x16); + else + _vm->_dialogs->show(0x17); + } else if (action.isAction(VERB_CLOSE)) { + if (random <= 333) + _vm->_dialogs->show(0x9); + else + _vm->_dialogs->show(0x21); + } else if (action.isAction(VERB_OPEN)) { + if (random <= 500) + _vm->_dialogs->show(0x1E); + else if (random <= 750) + _vm->_dialogs->show(0x1F); + else + _vm->_dialogs->show(0x20); + } else if (action.isAction(VERB_PULL)) + _vm->_dialogs->show(0x12); + else if (action.isAction(VERB_PUSH)) { + if (random < 750) + _vm->_dialogs->show(0x13); + else + _vm->_dialogs->show(0x14); + } else if (action.isAction(VERB_PUT)) { + int objId = _vm->_game->_objects.getIdFromDesc(action._activeAction._objectNameId); + if (_vm->_game->_objects.isInInventory(objId)) + _vm->_dialogs->show(0x19); + else + _vm->_dialogs->show(0x18); + } else if (action.isAction(VERB_GIVE)) { + int objId = _vm->_game->_objects.getIdFromDesc(action._activeAction._objectNameId); + if (!_vm->_game->_objects.isInInventory(objId)) + _vm->_dialogs->show(0x1A); + else if (random <= 500) + _vm->_dialogs->show(0x1C); + else + _vm->_dialogs->show(0x1D); + } else if (!action.isAction(VERB_WALKTO) && !action.isAction(0x187) && !action.isAction(0x18C) && !action.isAction(0x1AD) + && !action.isAction(0x15C) && !action.isAction(0x159) && !action.isAction(0x15A) && !action.isAction(0x15B) + && !action.isAction(0x15E)) { + if (random <= 100) + _vm->_dialogs->show(0x24); + else if (random <= 200) + _vm->_dialogs->show(0x1); + else if (random <= 475) + _vm->_dialogs->show(0x22); + else if (random <= 750) + _vm->_dialogs->show(0x23); + else + _vm->_dialogs->show(0x25); + } } void GameNebular::step() { diff --git a/engines/mads/nebular/nebular_scenes.h b/engines/mads/nebular/nebular_scenes.h index 8e5bc05348..357180e870 100644 --- a/engines/mads/nebular/nebular_scenes.h +++ b/engines/mads/nebular/nebular_scenes.h @@ -41,10 +41,13 @@ enum { enum Noun { NOUN_D = 0xD, NOUN_BLOWGUN = 0x29, + NOUN_BOMB = 0x2A, + NOUN_BOMBS = 0x2B, NOUN_2C = 0x2C, NOUN_BURGER = 0x35, NOUN_CHAIR = 0x47, - NOUN_49 = 0x49, + NOUN_CHICKEN = 0x49, + NOUN_CHICKEN_BOMB = 0x4A, NOUN_4E = 0x4E, NOUN_DEAD_FISH = 0x65, NOUN_DOOR = 0x6E, @@ -85,8 +88,9 @@ enum Noun { NOUN_SMELL = 0x147, NOUN_STUFFED_FISH = 0x157, NOUN_15F = 0x15F, - NOUN_VIEW_SCREEN = 0x180, - NOUN_CAPTIVE_CREATURE = 0x1C3, + NOUN_TIMEBOMB = 0x171, + NOUN_VIEW_SCREEN = 0x180, + NOUN_CAPTIVE_CREATURE = 0x1C3, NOUN_NATIVE_WOMAN = 0x1DC, NOUN_ALCOHOL = 0x310, NOUN_DOLLOP = 0x3AC, diff --git a/engines/mads/nebular/nebular_scenes2.cpp b/engines/mads/nebular/nebular_scenes2.cpp index d78b85effc..4ef6f245ba 100644 --- a/engines/mads/nebular/nebular_scenes2.cpp +++ b/engines/mads/nebular/nebular_scenes2.cpp @@ -1095,7 +1095,7 @@ void Scene205::setup() { setPlayerSpritesPrefix(); setAAName(); _scene->addActiveVocab(NOUN_D); - _scene->addActiveVocab(NOUN_49); + _scene->addActiveVocab(NOUN_CHICKEN); _scene->addActiveVocab(NOUN_10D); } |