MADS: Dragon: Implement scene 104

This commit is contained in:
Strangerke 2015-10-24 12:38:31 +02:00
parent d26bc1937d
commit 85c45c210e
7 changed files with 2072 additions and 16 deletions

View File

@ -44,6 +44,7 @@ struct ConvData {
GameConversation::GameConversation(MADSEngine *vm)
: _vm(vm) {
_running = _restoreRunning = 0;
_nextStartNode = nullptr;
}
GameConversation::~GameConversation() {
@ -142,4 +143,11 @@ void GameConversation::release() {
warning("TODO: GameConversation::release");
}
void GameConversation::reset(int id) {
warning("TODO: GameConversation::reset");
}
void GameConversation::abortConv() {
warning("TODO: GameConversation::abort");
}
} // End of namespace MADS

View File

@ -42,6 +42,7 @@ public:
*/
virtual ~GameConversation();
int* _nextStartNode;
int* getVariable(int idx);
void get(int id);
@ -53,6 +54,8 @@ public:
void setInterlocutorTrigger(int val);
void hold();
void release();
void reset(int id);
void abortConv();
int _running;
int _restoreRunning;

View File

@ -49,7 +49,7 @@ SceneLogic *SceneFactory::createScene(MADSEngine *vm) {
case 103: // outside king's bedroom
return new Scene103(vm);
case 104: // fireplace / bookshelf
return new DummyScene(vm); // TODO
return new Scene104(vm);
case 105: // dining room
return new DummyScene(vm); // TODO
case 106: // throne room

View File

@ -50,6 +50,17 @@ enum Verb {
VERB_LOOK_AT = 0x1E,
VERB_WALK_THROUGH = 0x25,
VERB_WALK_INTO = 0x27,
VERB_INVOKE = 0x2F,
VERB_ATTACK = 0x39,
VERB_CARVE_UP = 0x3A,
VERB_THRUST = 0x57,
VERB_POUR = 0x62,
VERB_POUR_CONTENTS_OF = 0x63,
VERB_DRINK = 0x64,
VERB_SHIFT_SELF = 0x73,
VERB_SHIFT_INTO_BEAR = 0x74,
VERB_SHIFT_INTO_SEAL = 0x75,
VERB_SHIFT_INTO_SNAKE = 0x76,
VERB_WALK_DOWN = 0xA9,
VERB_WALK = 0x1CB,
VERB_WALK_AROUND = 0x221
@ -86,7 +97,6 @@ enum Noun {
NOUN_BUST_ON_WALL = 0x2C,
NOUN_WALL_ARCH = 0x2D,
NOUN_SIGNET_RING = 0x2E,
NOUN_INVOKE = 0x2F,
NOUN_POLISH = 0x30,
NOUN_GANGBANG = 0x31,
NOUN_BIRD_FIGURINE = 0x32,
@ -96,8 +106,6 @@ enum Noun {
NOUN_MAKE_NOISE = 0x36,
NOUN_SHIELDSTONE = 0x37,
NOUN_SWORD = 0x38,
NOUN_ATTACK = 0x39,
NOUN_CARVE_UP = 0x3A,
NOUN_GOBLET = 0x3B,
NOUN_FILL = 0x3C,
NOUN_DRINK_FROM = 0x3D,
@ -126,7 +134,6 @@ enum Noun {
NOUN_MAGIC_BELT = 0x54,
NOUN_ADJUST = 0x55,
NOUN_AMULET = 0x56,
NOUN_THRUST = 0x57,
NOUN_MUD = 0x58,
NOUN_FEEL = 0x59,
NOUN_TASTE = 0x5A,
@ -137,9 +144,6 @@ enum Noun {
NOUN_FLASK = 0x5F,
NOUN_FLASK_FULL_OF_ACID = 0x60,
NOUN_POUR_CONTENTS = 0x61,
NOUN_POUR = 0x62,
NOUN_POUR_CONTENTS_OF = 0x63,
NOUN_DRINK = 0x64,
NOUN_ROPE = 0x65,
NOUN_TIE = 0x66,
NOUN_POWER_VACUUM_STONE = 0x67,
@ -154,10 +158,6 @@ enum Noun {
NOUN_BLACK_SPHERE = 0x70,
NOUN_SOPTUS_SOPORIFIC = 0x71,
NOUN_SHIFTER_RING = 0x72,
NOUN_SHIFT_SELF = 0x73,
NOUN_SHIFT_INTO_BEAR = 0x74,
NOUN_SHIFT_INTO_SEAL = 0x75,
NOUN_SHIFT_INTO_SNAKE = 0x76,
NOUN_REVERT = 0x77,
NOUN_MEDICINE_BUNDLE = 0x78,
NOUN_SHAKE = 0x79,

File diff suppressed because it is too large Load Diff

View File

@ -94,6 +94,63 @@ public:
virtual void preActions();
virtual void actions();
};
class Scene104 : public Scene1xx {
private:
bool _anim0ActvFl;
bool _anim1ActvFl;
bool _anim2ActvFl;
bool _anim3ActvFl;
bool _anim4ActvFl;
bool _anim5ActvFl;
bool _anim6ActvFl;
bool _activateTimerFl;
bool _wasBearFl;
bool _amuletWorksFl;
bool _pidDrawnSword;
int _animationRunning;
int _deathTimer;
int _deathFrame;
int _doorwayHotspotId;
int _kingStatus;
int _kingFrame;
int _kingCount;
int _queenStatus;
int _queenFrame;
int _queenCount;
int _pidStatus;
int _pidFrame;
int _pidCount;
int _macStatus;
int _macFrame;
int _macCount;
int _twinklesStatus;
int _twinklesFrame;
int _twinklesCount;
int _tapestryFrame;
int32 _clock;
void handleFinalConversation();
void handleKingAnimation();
void handleMacAnimation1();
void handleMacAnimation2();
void handleQueenAnimation();
void handleTwinklesAnimation();
void handleDeathAnimation();
void handlePidAnimation();
public:
Scene104(MADSEngine *vm);
virtual void synchronize(Common::Serializer &s);
virtual void setup();
virtual void enter();
virtual void step();
virtual void preActions();
virtual void actions();
};
} // End of namespace Dragonsphere
} // End of namespace MADS

View File

@ -80,7 +80,7 @@ enum InventoryObject {
OBJ_DIAMOND_DUST = 40,
OBJ_RUBY_RING = 41,
OBJ_GOLD_NUGGET = 42,
OBJ_MUSIC_BOX = 43,
OBJ_MAGIC_MUSIC_BOX = 43,
OBJ_EMERALD = 44,
OBJ_PARCHMENT = 45,
OBJ_GAME = 46,