aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorStrangerke2014-03-19 08:45:42 +0100
committerStrangerke2014-03-19 08:45:42 +0100
commitc43f8347922b808458f5114ae0bdfd2f1752f696 (patch)
tree89c34cce69e9bbc1cc8d5b76c20454eba09041dd /engines
parentcfe2257d00af3d608b907f940729138503366760 (diff)
downloadscummvm-rg350-c43f8347922b808458f5114ae0bdfd2f1752f696.tar.gz
scummvm-rg350-c43f8347922b808458f5114ae0bdfd2f1752f696.tar.bz2
scummvm-rg350-c43f8347922b808458f5114ae0bdfd2f1752f696.zip
MADS: More work on scene 202
Diffstat (limited to 'engines')
-rw-r--r--engines/mads/nebular/nebular_scenes.h5
-rw-r--r--engines/mads/nebular/nebular_scenes2.cpp45
2 files changed, 50 insertions, 0 deletions
diff --git a/engines/mads/nebular/nebular_scenes.h b/engines/mads/nebular/nebular_scenes.h
index 6021e6715a..13e3597335 100644
--- a/engines/mads/nebular/nebular_scenes.h
+++ b/engines/mads/nebular/nebular_scenes.h
@@ -41,8 +41,10 @@ enum {
enum Noun {
NOUN_D = 0xD,
NOUN_BLOWGUN = 0x29,
+ NOUN_2C = 0x2C,
NOUN_BURGER = 0x35,
NOUN_CHAIR = 0x47,
+ NOUN_4E = 0x4E,
NOUN_DEAD_FISH = 0x65,
NOUN_DOOR = 0x6E,
NOUN_EAT = 0x75,
@@ -58,6 +60,7 @@ enum Noun {
NOUN_INSERT = 0x0B6,
NOUN_INSPECT = 0x0B7,
NOUN_JUNGLE = 0x0B8,
+ NOUN_C7 = 0x0C7,
NOUN_LIFE_SUPPORT_SECTION = 0x0CC,
NOUN_LOG = 0x0D0,
NOUN_LOOK_AT = 0x0D1,
@@ -75,6 +78,8 @@ enum Noun {
NOUN_SHIELD_MODULATOR = 0x137,
NOUN_SHOOT = 0x13A,
NOUN_SIT_IN = 0x13F,
+ NOUN_140 = 0x140,
+ NOUN_1C9 = 0x1C9,
NOUN_SMELL = 0x147,
NOUN_STUFFED_FISH = 0x157,
NOUN_15F = 0x15F,
diff --git a/engines/mads/nebular/nebular_scenes2.cpp b/engines/mads/nebular/nebular_scenes2.cpp
index 9294378c60..f03bf00e01 100644
--- a/engines/mads/nebular/nebular_scenes2.cpp
+++ b/engines/mads/nebular/nebular_scenes2.cpp
@@ -335,6 +335,16 @@ void Scene201::actions() {
/*------------------------------------------------------------------------*/
void Scene202::setup() {
+ setPlayerSpritesPrefix();
+ setAAName();
+
+ Scene &scene = _vm->_game->_scene;
+ scene.addActiveVocab(NOUN_C7);
+ scene.addActiveVocab(NOUN_4E);
+ scene.addActiveVocab(NOUN_D);
+ scene.addActiveVocab(NOUN_2C);
+ scene.addActiveVocab(NOUN_140);
+ scene.addActiveVocab(NOUN_1C9);
}
void Scene202::enter() {
@@ -344,6 +354,41 @@ void Scene202::step() {
}
void Scene202::preActions() {
+ MADSAction *action = _game._player._action;
+ if (action->_walkFlag)
+ _scene->_kernelMessages.reset();
+
+ if ((_globals._v4 == 0) && (action->isAction(0x4E, 0xC7, 0) || !action->_walkFlag)) {
+ if (_game._abortTimers == 0) {
+ _vm->_sound->command(29);
+ action->_walkFlag = false;
+ _game._player._stepEnabled = false;
+ _scene->_sequences.remove(_globals._spriteIndexes[24]);
+ _globals._spriteIndexes[23] = _scene->_sequences.addReverseSpriteCycle(_globals._spriteIndexes[8], false, 6, 1, 0, 0);
+ _scene->_sequences.setDepth(_globals._spriteIndexes[23], 1);
+ _scene->_sequences.addSubEntry(_globals._spriteIndexes[23], SM_0, 0, 1);
+ } else if (_game._abortTimers == 1) {
+ warning("TODO: TimerList_getTimeout(-1, _globals._spriteIndexes[23]);");
+ warning("CHECKME: _scene->_dynamicHotspots.remove(_globals._frameTime);");
+ _scene->_dynamicHotspots.remove(_globals._frameTime);
+ _game._player._visible = true;
+ action->_walkFlag = true;
+ _game._player._stepEnabled = true;
+ _globals._v4 = 0;
+ } else {
+ // nothing
+ }
+ }
+
+ if (action->isAction(0x3, 0x27, 0) && action->_activeAction._indirectObjectId > 0) {
+ if (!action->_walkFlag || (_globals._v4 != 0))
+ action->_startWalkFlag = false;
+ else
+ action->_startWalkFlag = true;
+
+ if (_globals._v4 == 0)
+ _game._player.startWalking(Common::Point(171, 122), 8);
+ }
}
void Scene202::actions() {