diff options
Diffstat (limited to 'engines/mads')
-rw-r--r-- | engines/mads/nebular/nebular_scenes.cpp | 3 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes2.cpp | 60 | ||||
-rw-r--r-- | engines/mads/nebular/nebular_scenes2.h | 11 |
3 files changed, 73 insertions, 1 deletions
diff --git a/engines/mads/nebular/nebular_scenes.cpp b/engines/mads/nebular/nebular_scenes.cpp index da568ce1f7..795477d5e5 100644 --- a/engines/mads/nebular/nebular_scenes.cpp +++ b/engines/mads/nebular/nebular_scenes.cpp @@ -95,7 +95,8 @@ SceneLogic *SceneFactory::createScene(MADSEngine *vm) { return new Scene211(vm); case 212: return new Scene212(vm); - + case 213: + return new Scene213(vm); case 214: return new Scene214(vm); case 215: diff --git a/engines/mads/nebular/nebular_scenes2.cpp b/engines/mads/nebular/nebular_scenes2.cpp index 44fac5a4df..9b36dbb156 100644 --- a/engines/mads/nebular/nebular_scenes2.cpp +++ b/engines/mads/nebular/nebular_scenes2.cpp @@ -4588,6 +4588,66 @@ void Scene212::actions() { /*------------------------------------------------------------------------*/ +void Scene213::setup() { + _game._player._spritesPrefix = ""; + + // The original is calling Scene2xx::setAAName() + _game._aaName = Resources::formatAAName(2); +} + +void Scene213::enter() { + if (_globals[kMeteorologistWatch] != 0) + _handSpriteId = _scene->_sprites.addSprites("*METHAND", false); + else if (_globals[kSexOfRex] == REX_MALE) + _handSpriteId = _scene->_sprites.addSprites("*REXHAND", false); + else + _handSpriteId = _scene->_sprites.addSprites("*ROXHAND", false); + + teleporterEnter(); + + // The original is calling Scene2xx::sceneEntrySound() + if (_vm->_musicFlag) { + if (_globals[kMeteorologistWatch] == 0) + _vm->_sound->command(1); + else + _vm->_sound->command(9); + } else + _vm->_sound->command(2); +} + +void Scene213::step() { + teleporterStep(); +} + +void Scene213::actions() { + if (teleporterActions()) { + _action._inProgress = false; + return; + } + + if (_action.isAction(VERB_LOOK, 0x59)) + _vm->_dialogs->show(21301); + else if (_action.isAction(VERB_LOOK, 0xC4) || _action.isAction (0xB7, 0xC4)) + _vm->_dialogs->show(21302); + else if (_action.isAction(VERB_LOOK, 0x1CC)) + _vm->_dialogs->show(21303); + else if (_action.isAction(VERB_LOOK, 0x181) || _action.isAction(0x103, 0x181)) + _vm->_dialogs->show(21304); + else if (_action.isAction(VERB_LOOK, 0x1CF)) + _vm->_dialogs->show(21305); + else if (_action.isAction(VERB_LOOK, 0x1D0) || _action.isAction(VERB_LOOK, 0x1D1) + || _action.isAction(VERB_LOOK, 0x1D2) || _action.isAction(VERB_LOOK, 0x1D3) + || _action.isAction(VERB_LOOK, 0x1D4) || _action.isAction(VERB_LOOK, 0x1D5) + || _action.isAction(VERB_LOOK, 0x1D6) || _action.isAction(VERB_LOOK, 0x1D7) + || _action.isAction(VERB_LOOK, 0x1D8) || _action.isAction(VERB_LOOK, 0x1D9) + || _action.isAction(VERB_LOOK, 0x1DB) || _action.isAction(VERB_LOOK, 0x7A) + || _action.isAction(VERB_LOOK, 0x1DA)) + _vm->_dialogs->show(21306); + else + return; + + _action._inProgress = false; +} /*------------------------------------------------------------------------*/ diff --git a/engines/mads/nebular/nebular_scenes2.h b/engines/mads/nebular/nebular_scenes2.h index 886f7cf4ed..2f3512a61e 100644 --- a/engines/mads/nebular/nebular_scenes2.h +++ b/engines/mads/nebular/nebular_scenes2.h @@ -257,6 +257,17 @@ public: virtual void actions(); }; +class Scene213: public SceneTeleporter { +public: + Scene213(MADSEngine *vm) : SceneTeleporter(vm) {} + + virtual void setup(); + virtual void enter(); + virtual void step(); + virtual void preActions() {}; + virtual void actions(); +}; + class Scene214: public Scene2xx { private: uint32 _devilTime; |