diff options
author | Strangerke | 2014-04-11 07:47:38 +0200 |
---|---|---|
committer | Strangerke | 2014-04-11 07:47:38 +0200 |
commit | 4225304a34a5fc04280e72206c4d3dea13e29ad8 (patch) | |
tree | 976e2b5413625f375828e92678092c07cb16def1 /engines/mads/nebular | |
parent | a30e78137e326c49d7de09f4fb2293bedfdd4a30 (diff) | |
download | scummvm-rg350-4225304a34a5fc04280e72206c4d3dea13e29ad8.tar.gz scummvm-rg350-4225304a34a5fc04280e72206c4d3dea13e29ad8.tar.bz2 scummvm-rg350-4225304a34a5fc04280e72206c4d3dea13e29ad8.zip |
MADS: Implement scene 102
Diffstat (limited to 'engines/mads/nebular')
-rw-r--r-- | engines/mads/nebular/nebular_scenes1.cpp | 597 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes1.h | 12 |
2 files changed, 594 insertions, 15 deletions
diff --git a/engines/mads/nebular/nebular_scenes1.cpp b/engines/mads/nebular/nebular_scenes1.cpp index 5064795d33..c9a6165488 100644 --- a/engines/mads/nebular/nebular_scenes1.cpp +++ b/engines/mads/nebular/nebular_scenes1.cpp @@ -134,20 +134,20 @@ void Scene101::sayDang() { } void Scene101::enter() { - _globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('x', 1), false); - _globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('x', 2), false); - _globals._spriteIndexes[3] = _scene->_sprites.addSprites(formAnimName('x', 3), false); - _globals._spriteIndexes[4] = _scene->_sprites.addSprites(formAnimName('x', 4), false); - _globals._spriteIndexes[5] = _scene->_sprites.addSprites(formAnimName('x', 5), false); - _globals._spriteIndexes[6] = _scene->_sprites.addSprites(formAnimName('x', 6), false); - _globals._spriteIndexes[7] = _scene->_sprites.addSprites(formAnimName('x', 7), false); - _globals._spriteIndexes[8] = _scene->_sprites.addSprites(formAnimName('m', -1), false); - _globals._spriteIndexes[9] = _scene->_sprites.addSprites(formAnimName('b', 1), false); - _globals._spriteIndexes[10] = _scene->_sprites.addSprites(formAnimName('b', 2), false); - _globals._spriteIndexes[11] = _scene->_sprites.addSprites(formAnimName('a', 0), false); - _globals._spriteIndexes[12] = _scene->_sprites.addSprites(formAnimName('a', 1), false); - _globals._spriteIndexes[13] = _scene->_sprites.addSprites(formAnimName('x', 8), false); - _globals._spriteIndexes[14] = _scene->_sprites.addSprites(formAnimName('x', 0), false); + _globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('x', 1)); + _globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('x', 2)); + _globals._spriteIndexes[3] = _scene->_sprites.addSprites(formAnimName('x', 3)); + _globals._spriteIndexes[4] = _scene->_sprites.addSprites(formAnimName('x', 4)); + _globals._spriteIndexes[5] = _scene->_sprites.addSprites(formAnimName('x', 5)); + _globals._spriteIndexes[6] = _scene->_sprites.addSprites(formAnimName('x', 6)); + _globals._spriteIndexes[7] = _scene->_sprites.addSprites(formAnimName('x', 7)); + _globals._spriteIndexes[8] = _scene->_sprites.addSprites(formAnimName('m', -1)); + _globals._spriteIndexes[9] = _scene->_sprites.addSprites(formAnimName('b', 1)); + _globals._spriteIndexes[10] = _scene->_sprites.addSprites(formAnimName('b', 2)); + _globals._spriteIndexes[11] = _scene->_sprites.addSprites(formAnimName('a', 0)); + _globals._spriteIndexes[12] = _scene->_sprites.addSprites(formAnimName('a', 1)); + _globals._spriteIndexes[13] = _scene->_sprites.addSprites(formAnimName('x', 8)); + _globals._spriteIndexes[14] = _scene->_sprites.addSprites(formAnimName('x', 0)); _globals._spriteIndexes[16] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[1], false, 5, 0, 0, 25); _globals._spriteIndexes[17] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[2], false, 4, 0, 1, 0); @@ -601,27 +601,594 @@ void Scene101::actions() { /*------------------------------------------------------------------------*/ void Scene102::setup() { + _scene->_animationData->preLoad(formAnimName('A', -1), 3); + setPlayerSpritesPrefix(); + setAAName(); +} +void Scene102::addRandomMessage() { + _scene->_kernelMessages.reset(); + _game._triggerSetupMode = KERNEL_TRIGGER_DAEMON; + int quoteId = _vm->getRandomNumber(65, 69); + _scene->_kernelMessages.add(Common::Point(0, 0), 0x1110, 34, 73, 120, _game.getQuote(quoteId)); + _activeMsgFl = true; } void Scene102::enter() { + sceneEntrySound(); + + _globals._spriteIndexes[1] = _scene->_sprites.addSprites(formAnimName('x', 1)); + _globals._spriteIndexes[2] = _scene->_sprites.addSprites(formAnimName('x', 2)); + _globals._spriteIndexes[3] = _scene->_sprites.addSprites(formAnimName('x', 3)); + _globals._spriteIndexes[4] = _scene->_sprites.addSprites(formAnimName('x', 4)); + _globals._spriteIndexes[5] = _scene->_sprites.addSprites(formAnimName('x', 5)); + + _globals._spriteIndexes[6] = _scene->_sprites.addSprites(formAnimName('b', -1)); + _globals._spriteIndexes[7] = _scene->_sprites.addSprites(formAnimName('c', -1)); + _globals._spriteIndexes[8] = _scene->_sprites.addSprites(formAnimName('e', -1)); + _globals._spriteIndexes[9] = _scene->_sprites.addSprites(formAnimName('n', -1)); + _globals._spriteIndexes[10] = _scene->_sprites.addSprites(formAnimName('g', -1)); + _globals._spriteIndexes[11] = _scene->_sprites.addSprites("*RXMRC_8"); + _globals._spriteIndexes[13] = _scene->_sprites.addSprites(formAnimName('x', 0)); + + _globals._spriteIndexes[15+1] = _scene->_sequences.startReverseCycle(_globals._spriteIndexes[1], false, 8, 0, 0, 0); + _globals._spriteIndexes[15+2] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[2], false, 170, 0, 1, 6); + _globals._spriteIndexes[15+3] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[3], false, 11, 0, 2, 3); + _globals._spriteIndexes[15+4] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[4], false, 4, 0, 1, 0); + _globals._spriteIndexes[20] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[5], false, 3, 0, 0, 5); + + if (!_game._objects.isInRoom(OBJ_BINOCULARS)) + _globals._spriteIndexes[24] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[9], false, 24, 0, 0, 24); + else + _scene->_hotspots.activate(0x27, false); + _scene->_hotspots.activate(0x35, false); + + if (_globals[kMedicineCabinetOpen]) { + _globals._spriteIndexes[23] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[8], false, 6, 0, 0); + _scene->_sequences.setAnimRange(_globals._spriteIndexes[23], -2, -2); + } + + if (_scene->_priorSceneId == 101) { + _game._player._playerPos = Common::Point(229, 109); + _game._player._stepEnabled = false; + _globals._spriteIndexes[21] = _scene->_sequences.addReverseSpriteCycle(_globals._spriteIndexes[6], false, 6, 1, 2, 0); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[21], SM_0, 0, 70); + } else if (_scene->_priorSceneId == 103) { + _game._player._playerPos = Common::Point(47, 152); + } else if (_scene->_priorSceneId != -2) { + _game._player._facing = FACING_NORTHWEST; + _game._player._playerPos = Common::Point(32, 129); + } + + if (_scene->_priorSceneId != 106) { + if (_globals[kWaterInAPuddle]) { + _globals._spriteIndexes[28] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[13], false, 6, 0, 0, 0); + _scene->_sequences.setAnimRange(_globals._spriteIndexes[28], -2, -2); + _scene->_sequences.setDepth(_globals._spriteIndexes[28], 5); + } + } else { + _game._player._stepEnabled = false; + _game._player._visible = false; + _globals._spriteIndexes[28] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[13], false, 6, 1, 0, 0); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[28], SM_0, 0, 72); + _scene->_sequences.setDepth(_globals._spriteIndexes[28], 5); + _vm->_sound->command(24); + _vm->_sound->command(28); + } + + _fridgeOpenedFl = false; + _fridgeOpenedDescr = false; + _fridgeCommentCount = 0; + _fridgeFirstOpenFl = true; + _chairDescrFl = false; + _activeMsgFl = false; + + _game.loadQuoteSet(0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x45, 0x43, 0); + + if (_scene->_priorSceneId == 101) + _vm->_sound->command(20); } void Scene102::step() { + if (_game._trigger == 70) + _game._player._stepEnabled = true; + if (_game._trigger == 72) { + _globals._spriteIndexes[28] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[13], false, 6, 0, 0, 0); + _scene->_sequences.setAnimRange(_globals._spriteIndexes[28], -2, -2); + _scene->_sequences.setDepth(_globals._spriteIndexes[28], 5); + _scene->_sequences.addTimer(48, 90); + } + + if (_game._trigger >= 90) { + if (_game._trigger >= 94) { + _scene->loadAnimation(formAnimName('B', -1), 71); + _game._player._stepEnabled = false; + _game._player._visible = false; + + _globals[kWaterInAPuddle] = true; + _vm->_sound->command(24); + } else { + _vm->_sound->command(23); + _scene->_sequences.addTimer(48, _game._trigger + 1); + } + } + + if (_game._trigger == 71) { + _game._player._stepEnabled = true; + _game._player._visible = true; + _game._player._priorTimer = _scene->_frameStartTime - _game._player._ticksAmount; + } + + if (_fridgeOpenedFl && !_fridgeOpenedDescr) { + _fridgeCommentCount++; + if (_fridgeCommentCount > 16384) { + _fridgeOpenedDescr = true; + _vm->_dialogs->show(0x27E5); + } + } + + if (!_activeMsgFl && (_game._player._playerPos == Common::Point(177, 114)) && (_game._player._facing == FACING_NORTH) + && (_vm->getRandomNumber(1, 5000) == 1)) { + _scene->_kernelMessages.reset(); + _activeMsgFl = false; + addRandomMessage(); + } + + if (_game._trigger == 73) + _activeMsgFl = false; } void Scene102::preActions() { + if (_action.isAction(0x122) || _action.isAction(0x117)) + _game._player._needToWalk = _game._player._readyToWalk; + + if (_fridgeOpenedFl && !_action.isAction(0x122)) { + switch (_game._trigger) { + case 0: + if (_game._player._needToWalk) { + _scene->_sequences.remove(_globals._spriteIndexes[22]); + _globals._spriteIndexes[22] = _scene->_sequences.addReverseSpriteCycle(_globals._spriteIndexes[7], false, 6, 1, 0, 0); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[22], SM_0, 0, 1); + _scene->_sequences.setDepth(_globals._spriteIndexes[22], 15); + _game._player._stepEnabled = false; + _vm->_sound->command(20); + } + break; + + case 1: + if (_game._objects.isInRoom(OBJ_BURGER)) { + _scene->_sequences.remove(_globals._spriteIndexes[25]); + _scene->_hotspots.activate(0x35, false); + } + _fridgeOpenedFl = false; + _game._player._stepEnabled = true; + break; + } + } + if (_game._player._needToWalk) + _scene->_kernelMessages.reset(); } void Scene102::actions() { + bool justOpenedFl = false; + + if (_action._lookFlag) { + _vm->_dialogs->show(0x27FA); + _action._inProgress = false; + return; + } + + if (_action.isAction(0x122) && !_fridgeOpenedFl) { + switch (_game._trigger) { + case 0: + _globals._spriteIndexes[22] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[7], false, 6, 1, 0, 0); + _scene->_sequences.setDepth(_globals._spriteIndexes[22], 15); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[22], SM_0, 0, 1); + if (_game._objects.isInRoom(OBJ_BURGER)) { + _globals._spriteIndexes[25] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[10], false, 7, 0, 0, 0); + _scene->_sequences.setDepth(_globals._spriteIndexes[25], 14); + } + _game._player._stepEnabled = false; + _vm->_sound->command(20); + _action._inProgress = false; + return; + + case 1: + _globals._spriteIndexes[22] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[7], false, 6, 0, 0, 0); + _scene->_sequences.setAnimRange(_globals._spriteIndexes[22], -2, -2); + _scene->_sequences.setDepth(_globals._spriteIndexes[22], 15); + int delay; + if (_action.isAction(VERB_WALKTO) && !_fridgeFirstOpenFl) + delay = 0; + else + delay = 48; + _scene->_sequences.addTimer(delay, 2); + _action._inProgress = false; + return; + + case 2: + _fridgeOpenedFl = true; + _fridgeOpenedDescr = false; + _fridgeCommentCount = 0; + _game._player._stepEnabled = true; + justOpenedFl = true; + if (_game._objects.isInRoom(OBJ_BURGER)) + _scene->_hotspots.activate(0x35, true); + break; + } + } + + if (_action.isAction(VERB_LOOK, 0x122) || _action.isAction(VERB_OPEN, 0x122)) { + if (_game._objects.isInRoom(OBJ_BURGER)) + _vm->_dialogs->show(0x27F6); + else + _vm->_dialogs->show(0x27F5); + + _fridgeFirstOpenFl = false; + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_WALKTO, 0x122) && justOpenedFl) { + _fridgeFirstOpenFl = false; + int quoteId = _vm->getRandomNumber(59, 63); + Common::String curQuote = _game.getQuote(quoteId); + int width = _vm->_font->getWidth(curQuote, -1); + _scene->_kernelMessages.reset(); + _game._triggerSetupMode = KERNEL_TRIGGER_DAEMON; + _scene->_kernelMessages.add(Common::Point(210, 60), 0x1110, 0, 73, 120, curQuote); + _scene->_kernelMessages.add(Common::Point(214 + width, 60), 0x1110, 0, 73, 120, _game.getQuote(64)); + _activeMsgFl = true; + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_CLOSE, 0x122)) { + _vm->_dialogs->show(0x27E5); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_TAKE, 0x122)) { + _vm->_dialogs->show(0x8); + _action._inProgress = false; + return; + } + + if (_action.isAction(0x18B, 0x6E)) { + switch (_game._trigger) { + case 0: + _globals._spriteIndexes[21] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[6], false, 6, 1, 0, 0); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[21], SM_0, 0, 1); + _game._player._stepEnabled = false; + _vm->_sound->command(20); + break; + + case 1: + _scene->_nextSceneId = 101; + break; + } + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_WALKTO, 0x79)) { + _scene->_nextSceneId = 103; + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_WALKTO, 0x117) || _action.isAction(VERB_LOOK, 0x117) || _action.isAction(VERB_WALKTO, 0x27)) { + addRandomMessage(); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x194)) { + _vm->_dialogs->show(0x27E4); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x79)) { + _vm->_dialogs->show(0x27DD); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x6E)) { + _vm->_dialogs->show(0x27DC); + _action._inProgress = false; + return; + } + + if (_action.isAction(0x155, 0x46) || _action.isAction(VERB_LOOK, 0x46)) { + _vm->_dialogs->show(0x27DB); + _action._inProgress = false; + return; + } + + if (_action.isAction(0x155, 0xFD) || _action.isAction(VERB_LOOK, 0xFD)) { + _vm->_dialogs->show(0x27DA); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x127)) { + _vm->_dialogs->show(0x27E7); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_PUT, 0x35, 0x127) && _game._objects.isInInventory(OBJ_BURGER)) { + _vm->_dialogs->show(0x27E8); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_PUT, 0x122) && _game._objects.isInInventory(_game._objects.getIdFromDesc(_action._activeAction._objectNameId))) { + _vm->_dialogs->show(0x27E9); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_PUT, 0x127) && (_action.isAction(0x65) || _action.isAction(0x157))) { + _vm->_dialogs->show(0x27F6); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_OPEN, 0x127)) { + _vm->_dialogs->show(0x27EA); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x52)) { + _vm->_dialogs->show(0x27EB); + _action._inProgress = false; + return; + } + + if ((_action.isAction(0xC7) || _action.isAction(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); + _action._inProgress = false; + return; + } + } else if (_action.isAction(VERB_LOOK) || (_game._difficulty == DIFFICULTY_IMPOSSIBLE)) { + _vm->_dialogs->show(0x27EE); + _action._inProgress = false; + return; + } + } + + if ( (_action.isAction(0xC7) || _action.isAction(0xA3)) && (_action.isAction(0x50) || _action.isAction(0x4F)) ) { + switch (_game._trigger) { + case 0: + _scene->loadAnimation(formAnimName('A', -1), 1); + _game._player._stepEnabled = false; + _game._player._visible = false; + break; + + case 1: + _vm->_sound->command(24); + _scene->_sequences.addTimer(48, 2); + break; + + case 2: + case 3: + case 4: + _vm->_sound->command(23); + _scene->_sequences.addTimer(48, _game._trigger + 1); + break; + + case 5: + _vm->_sound->command(24); + _scene->_sequences.addTimer(48, _game._trigger + 1); + break; + + case 6: + if (_game._objects.isInInventory(OBJ_REBREATHER) && !_game._visitedScenes.exists(106)) + _vm->_dialogs->show(0x27FD); + _scene->_nextSceneId = 106; + break; + } + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x118)) { + _vm->_dialogs->show(0x27F2); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x197) || _action.isAction(0xD3, 0x197)) { + _vm->_dialogs->show(0x27F3); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x70) || _action.isAction(VERB_WALKTO, 0x70)) { + _vm->_dialogs->show(0x27F4); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x71) || ((_action.isAction(VERB_CLOSE, 0x71) || _action.isAction(VERB_PUSH, 0x71)) && !_drawerDescrFl)) { + _vm->_dialogs->show(0x27EC); + _drawerDescrFl = true; + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_CLOSE, 0x71) || _action.isAction(VERB_PUSH, 0x71)) { + _vm->_dialogs->show(0x27ED); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_OPEN, 0x71)) { + _vm->_dialogs->show(0x27FC); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x47) || (_action.isAction(0x13F, 0x47) && !_chairDescrFl)) { + _chairDescrFl = true; + _vm->_dialogs->show(0x27E2); + _action._inProgress = false; + return; + } + + if (_action.isAction(0x13F, 0x47)) { + _vm->_dialogs->show(0x27E3); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0xDE)) { + if (_globals[kMedicineCabinetOpen]) + _vm->_dialogs->show(0x27DF); + else + _vm->_dialogs->show(0x27DE); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_CLOSE, 0xDE) && _globals[kMedicineCabinetOpen]) { + switch (_game._trigger) { + case 0: + _scene->_sequences.remove(_globals._spriteIndexes[23]); + _globals._spriteIndexes[23] = _scene->_sequences.addReverseSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1); + _game._player._stepEnabled = false; + _vm->_sound->command(21); + break; + + case 1: + _scene->_sequences.addTimer(48, 2); + break; + + case 2: + _game._player._stepEnabled = true; + _globals[kMedicineCabinetOpen] = false; + _vm->_dialogs->show(0x27E1); + break; + } + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_OPEN, 0xDE) && !_globals[kMedicineCabinetOpen]) { + switch (_game._trigger) { + case 0: + _globals._spriteIndexes[23] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1); + _game._player._stepEnabled = false; + _vm->_sound->command(21); + break; + + case 1: + _globals._spriteIndexes[23] = _scene->_sequences.addSpriteCycle(_globals._spriteIndexes[8], false, 6, 0, 0, 0); + _scene->_sequences.setAnimRange(_globals._spriteIndexes[23], -2, -2); + _scene->_sequences.addTimer(48, 2); + break; + + case 2: + _game._player._stepEnabled = true; + _globals[kMedicineCabinetOpen] = true; + if (_globals[kMedicineCabinetVirgin]) { + _vm->_dialogs->show(0x27E0); + } else { + _vm->_dialogs->show(0x27DF); + } + _globals[kMedicineCabinetVirgin] = false; + break; + } + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_TAKE, 0x27) && _game._objects.isInRoom(OBJ_BINOCULARS)) { + switch (_game._trigger) { + case 0: + _globals._spriteIndexes[26] = _scene->_sequences.startReverseCycle(_globals._spriteIndexes[11], false, 3, 1, 0, 0); + _scene->_sequences.setMsgLayout(_globals._spriteIndexes[26]); + _scene->_sequences.addSubEntry(_globals._spriteIndexes[26], SM_0, 0, 1); + _game._player._visible = false; + _game._player._stepEnabled = false; + break; + + case 1: + _game._objects.addToInventory(OBJ_BINOCULARS); + _scene->_sequences.remove(_globals._spriteIndexes[15+9]); + _scene->_hotspots.activate(0x27, false); + _game._player._visible = true; + _game._player._stepEnabled = true; + _vm->_sound->command(22); + _vm->_dialogs->showPicture(OBJ_BINOCULARS, 0x27D9); + break; + } + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_TAKE, 0x35) && _game._objects.isInRoom(OBJ_BURGER)) { + if (_game._trigger == 0) { + _vm->_dialogs->showPicture(OBJ_BURGER, 0x27FB); + _scene->_sequences.remove(_globals._spriteIndexes[25]); + _game._objects.addToInventory(OBJ_BURGER); + _scene->_hotspots.activate(0x35, false); + _vm->_sound->command(22); + _game._player._visible = true; + _game._player._stepEnabled = true; + } + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_TAKE, 0x117)) { + _vm->_dialogs->show(0x27F0); + _action._inProgress = false; + return; + } + + if ((_action.isAction(VERB_PUSH) || _action.isAction(VERB_PULL)) && _action.isAction(0x194)) { + _vm->_dialogs->show(0x27F1); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x89)) { + _vm->_dialogs->show(0x27F8); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x27) && !_game._objects.isInInventory(OBJ_BINOCULARS)) { + _vm->_dialogs->show(0x27F9); + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x35) && (_action._mainObjectSource == 4)) { + _vm->_dialogs->show(0x321); + _action._inProgress = false; + } } void Scene102::postActions() { - + if (_action.isAction(VERB_PUT, 0x127) && _game._objects.isInInventory(_game._objects.getIdFromDesc(_action._activeAction._objectNameId))) { + _vm->_dialogs->show(0x27E9); + _action._inProgress = false; + } } /*------------------------------------------------------------------------*/ diff --git a/engines/mads/nebular/nebular_scenes1.h b/engines/mads/nebular/nebular_scenes1.h index 3f69223b81..782dbb573b 100644 --- a/engines/mads/nebular/nebular_scenes1.h +++ b/engines/mads/nebular/nebular_scenes1.h @@ -77,6 +77,18 @@ public: }; class Scene102 : public Scene1xx { +private: + bool _fridgeOpenedFl; + bool _fridgeOpenedDescr; + bool _fridgeFirstOpenFl; + bool _chairDescrFl; + bool _drawerDescrFl; + bool _activeMsgFl; + + int _fridgeCommentCount; + + void addRandomMessage(); + public: Scene102(MADSEngine *vm) : Scene1xx(vm) {} |