bool CParrotNutEater::NutPuzzleMsg(CNutPuzzleMsg *msg) { if (msg->_value == "Jiggle") { playMovie(MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(68); movieEvent(132); playSound("z#215.wav"); CTrueTalkTriggerActionMsg triggerMsg; triggerMsg._param1 = triggerMsg._param2 = 0; triggerMsg.execute("PerchedParrot"); } return true; }
bool CBellBot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) { switch (msg->_action) { case 1: case 28: { _npcFlags &= ~NPCFLAG_IDLING; CDismissBotMsg dismissMsg; dismissMsg.execute(this); break; } case 5: _npcFlags &= ~NPCFLAG_20000; playClip("Walk Off", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(); break; case 17: { CActMsg actMsg("ThrowTVDownWell"); actMsg.execute("ThrowTVDownWellControl"); break; } case 29: { CActMsg actMsg("BellbotGetLight"); actMsg.execute("BellbotGetLightCutScene"); startTalking(this, 158); break; } default: break; } return true; }
bool CBellBot::OnSummonBotMsg(COnSummonBotMsg *msg) { if (msg->_value == 1) { _npcFlags |= NPCFLAG_40000; } else { static const char *const ROOM_WAVES[8][2] = { { "EmbLobby", "z#193.wav" }, { "PromenadeDeck", "z#191.wav" }, { "Arboretum", "z#195.wav" }, { "Frozen Arboretum", "z#195.wav" }, { "Bar", "z#194.wav" }, { "MusicRoom", "z#192.wav" }, { "MusicRoomLobby", "z#192.wav" }, { "1stClassRestaurant", "z#190.wav" } }; int idx; for (idx = 0; idx < 8; ++idx) { if (compareRoomNameTo(ROOM_WAVES[idx][0])) { playSound(ROOM_WAVES[idx][1]); break; } } if (idx == 8) playSound("z#147.wav"); sleep(2000); _npcFlags &= ~NPCFLAG_40000; } playClip("Walk On", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(); _npcFlags |= NPCFLAG_10000; return true; }
bool CDoorbot::OnSummonBotMsg(COnSummonBotMsg *msg) { const char *const ROOM_WAVES[8][2] = { { "EmbLobby", "z#186.wav" }, { "PromenadeDeck", "z#184.wav" }, { "Arboretum", "z#188.wav" }, { "Frozen Arboretum", "z#188.wav" }, { "Bar", "z#187.wav" }, { "MusicRoom", "z#185.wav" }, { "MusicRoomLobby", "z#185.wav" }, { "1stClassRestaurant", "z#183.wav" }, }; if (msg->_value != -1) { int idx; for (idx = 0; idx < 8; ++idx) { if (compareRoomNameTo(ROOM_WAVES[idx][0])) { playSound(ROOM_WAVES[idx][1]); } } if (idx == 8) playSound("z#146.wav"); sleep(2000); } playClip(getRandomNumber(1) ? "Whizz On Left" : "Whizz On Right", MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(); _npcFlags |= NPCFLAG_400000; return true; }
bool CBarbot::TurnOff(CTurnOff *msg) { if (_fieldC4) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PickUpGlass"); statusMsg.execute("PickUpVisCentre"); if (_field124) { playRange(_frames[17], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[17]._endFrame; _field124 = 0; } if (_visCenterOnCounter) { // Barbot will put away the vision center playRange(_frames[28], MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); _frameNum = _frames[28]._endFrame; _visCenterOnCounter = false; _field134 = 1; } playRange(_frames[29], MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); movieEvent(_frames[29]._startFrame); _frameNum = _frames[29]._endFrame; _fieldC4 = 0; } return true; }
bool CTitaniaSpeech::ActMsg(CActMsg *msg) { CSetFrameMsg frameMsg; CVisibleMsg visibleMsg; CActMsg actMsg; if (msg->_action == "TitaniaSpeech") { switch (_paraNum) { case 0: movieSetAudioTiming(true); loadSound("a#12.wav"); sleep(1000); playMovie(0, 187, MOVIE_GAMESTATE || MOVIE_NOTIFY_OBJECT); movieEvent(0); break; case 1: loadSound("a#11.wav"); addTimer(0); startAnimTimer("Para2", 300); addTimer(6000); addTimer(12000); addTimer(18000); addTimer(24000); startAnimTimer("NextPara", 30000); break; case 2: visibleMsg._visible = false; visibleMsg.execute("TitaniaStillControl"); loadSound("a#10.wav"); playMovie(585, 706, MOVIE_GAMESTATE || MOVIE_NOTIFY_OBJECT); playSound("a#10.wav"); break; case 3: visibleMsg._visible = false; visibleMsg.execute("TitaniaStillControl"); loadSound("a#9.wav"); playMovie(707, 905, MOVIE_GAMESTATE || MOVIE_NOTIFY_OBJECT); playSound("a#9.wav"); break; case 4: visibleMsg._visible = false; visibleMsg.execute("TitaniaStillControl"); loadSound("a#8.wav"); playMovie(906, 938, MOVIE_GAMESTATE || MOVIE_NOTIFY_OBJECT); playSound("a#8.wav"); break; default: sleep(3000); actMsg._action = "SleepTitania"; actMsg.execute(this); } } return true; }
bool CDoorbot::DismissBotMsg(CDismissBotMsg *msg) { if (_npcFlags & NPCFLAG_400000) { playClip(getRandomNumber(1) ? "Whizz Off Left" : "Whizz Off Right", MOVIE_STOP_PREVIOUS | MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); movieEvent(); if (_npcFlags & NPCFLAG_START_IDLING) { _npcFlags &= ~NPCFLAG_START_IDLING; performAction(true); } else { performAction(false); } CActMsg actMsg("DoorbotDismissed"); actMsg.execute("BotIdleSummons"); } return true; }
bool CParrot::FrameMsg(CFrameMsg *msg) { if (compareViewNameTo("ParrotLobby.Node 1.N")) return false; if (_v4) return true; Point pt = getMousePos(); CGameObject *dragObject = getDraggingObject(); int xp = _bounds.left + _bounds.width() / 2; if ((_npcFlags & NPCFLAG_400000) && !hasActiveMovie()) { _field128 = xp - (_field124 + _bounds.width() / 2); if (xp < 64) { if (_field134) { CActMsg actMsg("PanAwayFromParrot"); actMsg.execute(_field134); } _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000 | NPCFLAG_400000); return true; } } bool chickenFlag = dragObject && dragObject->isEquals("Chicken"); if (_npcFlags & NPCFLAG_1000000) { if (!chickenFlag || pt.x > 70 || pt.y < 90 || pt.y > 280) { stopMovie(); loadFrame(0); setPosition(Point(-90, _bounds.top)); } } else { if (!chickenFlag) return false; } _field128 = CLIP((int)pt.x, 230, 480); if ((_npcFlags & NPCFLAG_10000) || hasActiveMovie()) return true; if (_field128 > 64) { _npcFlags |= NPCFLAG_10000 | NPCFLAG_20000; if (_field128 >= xp) { setPosition(Point(_bounds.left + 30, _bounds.top)); _npcFlags |= NPCFLAG_200000; playClip("Walk Right Intro", MOVIE_NOTIFY_OBJECT); } else { _npcFlags |= NPCFLAG_100000; playClip("Walk Left Intro", MOVIE_NOTIFY_OBJECT); } } else if (chickenFlag && pt.y >= 90 && pt.y <= 280 && !_field12C) { CParrotTriesChickenMsg triesMsg; triesMsg.execute(dragObject); CTrueTalkTriggerActionMsg triggerMsg; int id; switch (triesMsg._value2) { case 1: id = 280056 + (triesMsg._value1 ? 234 : 0); break; case 2: id = 280055 + (triesMsg._value1 ? 234 : 0); break; case 3: id = 280054 + (triesMsg._value1 ? 234 : 0); break; default: id = 280053 + (triesMsg._value1 ? 234 : 0); break; } if (id < 280266) { if (pt.x < 75) { _npcFlags |= NPCFLAG_1000000; playClip("Walk Left Intro", MOVIE_STOP_PREVIOUS); playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT); movieEvent(236); chickenFlag = false; } else if ((pt.x - xp) > 15) { _npcFlags |= NPCFLAG_800000; playClip("Peck At Feet Right", MOVIE_NOTIFY_OBJECT); movieEvent(170); } else if ((xp - pt.x) > 15) { _npcFlags |= NPCFLAG_800000; playClip("Peck At Feet Left", MOVIE_NOTIFY_OBJECT); movieEvent(142); } else { _npcFlags |= NPCFLAG_800000; playClip("Peck At Feet", MOVIE_NOTIFY_OBJECT); movieEvent(157); } } if (chickenFlag) { triggerMsg._param2 = 1; triggerMsg.execute(this); _field12C = 1; } } return true; }
bool CParrot::MovieEndMsg(CMovieEndMsg *msg) { if ((_npcFlags & NPCFLAG_2000000) && clipExistsByEnd("Take Off", msg->_endFrame)) { setVisible(false); moveUnder(findRoom()); stopMovie(); CActMsg actMsg1("LoseParrot"); actMsg1.execute("ParrotLobbyController"); if (_field134) { CActMsg actMsg2("PanAwayFromParrot"); actMsg2.execute(_field134); _field134 = nullptr; } else { CActMsg actMsg2("Shut"); actMsg2.execute("ParrotCage"); } _npcFlags &= ~NPCFLAG_2000000; _v4 = 2; } else if (_npcFlags & NPCFLAG_10000) { if (_npcFlags & NPCFLAG_20000) { _npcFlags = (_npcFlags & ~NPCFLAG_20000) | NPCFLAG_40000; if (_npcFlags & NPCFLAG_100000) { playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT); movieEvent(236); } else { playClip("Walk Right Loop", MOVIE_NOTIFY_OBJECT); } } else if (_npcFlags & NPCFLAG_40000) { int xp = _bounds.left + _bounds.width() / 2; if (_npcFlags & NPCFLAG_100000) { if ((xp - _field128) > 32) { setPosition(Point(_bounds.left - 40, _bounds.top)); playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT); movieEvent(236); } else { setPosition(Point(_bounds.left - 10, _bounds.top)); playClip("Walk Left Outro", MOVIE_NOTIFY_OBJECT); _npcFlags = (_npcFlags & ~NPCFLAG_40000) | NPCFLAG_80000; } } else { if ((_field128 - xp) > 32) { playClip("Walk Right Loop", MOVIE_NOTIFY_OBJECT); movieEvent(244); } else { playClip("Walk Right Outro", MOVIE_NOTIFY_OBJECT); _npcFlags = (_npcFlags & NPCFLAG_40000) | NPCFLAG_80000; } } } else if (_npcFlags & NPCFLAG_80000) { loadFrame(0); if (_npcFlags & NPCFLAG_100000) setPosition(Point(_bounds.left - 30, _bounds.top)); else setPosition(Point(_bounds.left + 14, _bounds.top)); _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000); CTrueTalkNPC::MovieEndMsg(msg); } else { if (_npcFlags & NPCFLAG_1000000) { Point pt = getMousePos(); if (pt.x > 70 || pt.y < 90 || pt.y > 280) { stopMovie(); loadFrame(0); _npcFlags &= ~NPCFLAG_1000000; } if (clipExistsByEnd("Walk Left Loop", msg->_endFrame)) { playClip("Lean Over To Chicken", MOVIE_NOTIFY_OBJECT); setPosition(Point(_bounds.left - 55, _bounds.top)); _field130 = (-100 - _bounds.left) / 5; movieEvent(261); movieEvent(262); movieEvent(265); movieEvent(268); movieEvent(271); return true; } else if (clipExistsByEnd("Lean Over To Chicken", msg->_endFrame)) { playClip("Eat Chicken", 0); playClip("Eat Chicken 2", MOVIE_NOTIFY_OBJECT); _v1 = 1; CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PerchCoreHolder"); CTrueTalkTriggerActionMsg actionMsg; actionMsg._param1 = 280266; actionMsg._param2 = 1; actionMsg.execute(this); CCarry *chicken = dynamic_cast<CCarry *>(findUnder(getRoot(), "Chicken")); if (chicken) { CActMsg actMsg("Eaten"); actMsg.execute(chicken); } _npcFlags &= ~NPCFLAG_1000000; return true; } } if (clipExistsByEnd("Eat Chicken 2", msg->_endFrame)) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("PerchCoreHolder"); if (_v2) { loadMovie("z168.avi", false); playClip("Take Off", MOVIE_NOTIFY_OBJECT); setPosition(Point(20, 10)); _npcFlags |= NPCFLAG_2000000; } else { _npcFlags &= ~(NPCFLAG_10000 | NPCFLAG_20000 | NPCFLAG_40000 | NPCFLAG_80000 | NPCFLAG_100000 | NPCFLAG_200000); _npcFlags |= NPCFLAG_400000; stopMovie(); loadFrame(0); setPosition(Point(-90, _bounds.top)); } } else { CTrueTalkNPC::MovieEndMsg(msg); } } } return true; }
bool CBarbot::ActMsg(CActMsg *msg) { if (msg->_action == "Vodka") { if (!_addedVodka) { playRange(_frames[47], MOVIE_NOTIFY_OBJECT); playRange(_frames[46], MOVIE_NOTIFY_OBJECT); playRange(_frames[40]); playRange(_frames[7]); playRange(_frames[13]); playRange(_frames[8]); playRange(_frames[40]); playRange(_frames[7]); playRange(_frames[13]); playRange(_frames[8]); playRange(_frames[7]); playRange(_frames[40]); playRange(_frames[13]); playRange(_frames[40]); playRange(_frames[7]); playRange(_frames[8]); playRange(_frames[13]); playRange(_frames[40], MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); _frameNum = _frames[40]._endFrame; } } else if (msg->_action == "GiveBackVisCentre") { if (_field134) { playRange(_frames[27]); _frameNum = _frames[27]._endFrame; } } else if (msg->_action == "Bird") { CStatusChangeMsg statusMsg; statusMsg._newStatus = 2; statusMsg.execute("PickUpGlass"); _glassContent = GG_BIRD; playRange(_frames[32], MOVIE_NOTIFY_OBJECT); movieEvent(); playRange(_frames[30], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[30]._endFrame; if (areIngredientsMissing()) { playRange(_frames[42], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[42]._endFrame; } CActMsg actMsg("InTitilator"); actMsg.execute("BeerGlass"); } else if (msg->_action == "None") { CStatusChangeMsg statusMsg; statusMsg._newStatus = 2; statusMsg.execute("PickUpGlass"); _glassContent = GG_EMPTY; playRange(_frames[55], MOVIE_NOTIFY_OBJECT); movieEvent(); playRange(_frames[54], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[54]._endFrame; } else if (msg->_action == "Mustard" || msg->_action == "Tomato") { CStatusChangeMsg statusMsg; statusMsg._newStatus = 2; statusMsg.execute("PickUpGlass"); _glassContent = GG_CONDIMENT; playRange(_frames[55], MOVIE_NOTIFY_OBJECT); movieEvent(); playRange(_frames[54], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[54]._endFrame; CActMsg actMsg("InTitilator"); actMsg.execute("BeerGlass"); } else if (msg->_action == "Fruit") { if (!_addedLemon) { CActMsg visibleMsg; visibleMsg.execute("LemonOnBar"); startTalking(this, 250576); _addedLemon = true; playRange(_frames[36], MOVIE_NOTIFY_OBJECT); movieEvent(); _frameNum = _frames[36]._endFrame; if (areIngredientsMissing()) { playRange(_frames[43], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[43]._endFrame; } CRemoveFromGameMsg removeMsg; removeMsg.execute("Lemon"); } } else if (msg->_action == "CrushedTV") { if (!_addedTV) { CVisibleMsg visibleMsg; visibleMsg.execute("TVOnBar"); startTalking(this, 250584); _field160 = 1; _addedTV = true; playSound("c#5.wav", _volume); playRange(_frames[35], MOVIE_NOTIFY_OBJECT); movieEvent(); playRange(_frames[34]); playRange(_frames[33], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[33]._endFrame; if (areIngredientsMissing()) { playRange(_frames[41], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[41]._endFrame; } CRemoveFromGameMsg removeMsg; removeMsg.execute("CrushedTV"); } } else if (msg->_action == "PlayerTakesGlass") { playRange(_frames[53]); _field124 = 0; CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PickUpGlass"); } else if (msg->_action == "PlayerTakesVisCentre") { _visCenterOnCounter = false; loadFrame(0); CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PickUpVisCentre"); } else if (msg->_action == "BellRing1") { startTalking(this, 251105); } else if (msg->_action == "BellRing2") { startTalking(this, 251107); } else if (msg->_action == "BellRing3") { startTalking(this, 250285); } else if (msg->_action == "GoRingBell") { startTalking(this, 250285); } else if (msg->_action == "ClickOnVision") { startTalking(this, 251858); } return true; }