bool CBarbot::MovieFrameMsg(CMovieFrameMsg *msg) { if (msg->_frameNumber == _frames[29]._startFrame) { playSound("c#2.wav", _volume); } else if (msg->_frameNumber == _frames[55]._startFrame || msg->_frameNumber == _frames[32]._startFrame) { // Finished giving the Barbot a glass CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PickUpGlass"); if (_glassContent == GG_EMPTY) { // I'd rather see that full of Starling Puret startTalking(this, 250574); } else if (_glassContent > GG_EMPTY) { // What's this? startTalking(this, 250580); petSetArea(PET_CONVERSATION); } _glassContent = GG_DEFAULT; } else if (msg->_frameNumber == _frames[36]._startFrame) { CVisibleMsg visibleMsg(false); visibleMsg.execute("LemonOnBar"); } else if (msg->_frameNumber == _frames[35]._startFrame) { CVisibleMsg visibleMsg(false); visibleMsg.execute("TVOnBar"); } 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 CBrokenPellerator::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == 14) { // Pellerator has been opened, so let the hose be picked up (if it's still there) CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("PickUpHose"); } if (msg->_endFrame == 28) { // Pellerator has been closed, so disable the hose (if it's still there) CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PickUpHose"); } switch (_exitAction) { case 1: changeView(_exitLeftView); break; case 2: changeView(_exitRightView); break; default: break; } return true; }
bool CFanControl::TimerMsg(CTimerMsg *msg) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("StarlingPuret"); changeView("PromenadeDeck.Node 3.S"); changeView("PromenadeDeck.Node 3.E"); return true; }
bool CCage::MovieEndMsg(CMovieEndMsg *msg) { enableMouse(); _open = clipExistsByEnd("Shut", msg->_endFrame); CStatusChangeMsg statusMsg; statusMsg._newStatus = _open ? 1 : (CParrot::_v4 == 0 ? 1 : 0); statusMsg.execute("PerchCoreHolder"); return true; }
bool CSeasonBackground::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == _defaultFrame) { CTurnOn onMsg; onMsg.execute("SeasonalAdjust"); } if (msg->_endFrame == 91 && !_flag) { CStatusChangeMsg changeMsg; changeMsg.execute("PickUpSpeechCentre"); } return true; }
bool CSeasonalAdjustment::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == 6) { stateChangeSeason(); CStatusChangeMsg changeMsg; changeMsg.execute(this); CTurnOff offMsg; offMsg.execute(this); offMsg.execute("LeftPanExit"); offMsg.execute("RightPanExit"); } return true; }
bool CHammerDispensor::MovieEndMsg(CMovieEndMsg *msg) { if (_state == 1) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("HammerClip"); } else if (_state == 2) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 2; statusMsg.execute("HammerClip"); } return true; }
bool CTelevision::ActMsg(CActMsg *msg) { if (msg->_action == "TurnTVOnOff") { _isOn = !_isOn; if (_isOn) { setVisible(true); CStatusChangeMsg changeMsg; changeMsg.execute(this); } else { setVisible(_isOn); stopMovie(); } } return true; }
bool CSeasonBackground::ChangeSeasonMsg(CChangeSeasonMsg *msg) { _seasonNum = (Season)(((int)_seasonNum + 1) % 4); switch (_seasonNum) { case SEASON_SUMMER: playMovie(0, 45, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); _defaultFrame = 45; break; case SEASON_AUTUMN: if (_flag) { playMovie(232, 278, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); _defaultFrame = 278; } else { playMovie(45, 91, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); _defaultFrame = 91; } break; case SEASON_WINTER: if (_flag) { playMovie(278, 326, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); _defaultFrame = 326; } else { CStatusChangeMsg changeMsg; changeMsg._newStatus = 0; changeMsg.execute("PickUpSpeechCentre"); playMovie(91, 139, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); _defaultFrame = 139; } break; case SEASON_SPRING: if (_flag) { playMovie(326, 417, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); _defaultFrame = 417; } else { playMovie(139, 228, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); _defaultFrame = 228; } break; default: break; } return true; }
bool CBrokenPellerator::ActMsg(CActMsg *msg) { if (msg->_action == "PlayerGetsHose") { _v2 = 1; loadFrame(43); CStatusChangeMsg statusMsg; statusMsg.execute("PickupHose"); } else { _exitAction = 0; bool closeFlag = msg->_action == "Close"; if (msg->_action == "CloseLeft") { closeFlag = true; _exitAction = 1; } if (msg->_action == "CloseRight") { closeFlag = true; _exitAction = 2; } if (closeFlag) { if (_v1) { _v1 = false; if (_v2) playMovie(43, 57, MOVIE_NOTIFY_OBJECT); else playMovie(14, 28, MOVIE_NOTIFY_OBJECT); } else { switch (_exitAction) { case 1: changeView(_exitLeftView); break; case 2: changeView(_exitRightView); break; default: break; } _exitAction = 0; } } } return true; }
bool CBrokenPelleratorFroz::ActMsg(CActMsg *msg) { if (msg->_action == "PlayerGetsHose") { _v2 = 1; CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("FPickUpHose"); } else { _fieldE0 = 0; bool closeFlag = msg->_action == "Close"; if (msg->_action == "CloseLeft") { closeFlag = true; _fieldE0 = 1; } if (msg->_action == "CloseRight") { closeFlag = true; _fieldE0 = 2; } if (closeFlag) { if (_v1) { _v1 = false; if (_v2) playMovie(29, 42, MOVIE_NOTIFY_OBJECT); else playMovie(72, 84, MOVIE_NOTIFY_OBJECT); } else { switch (_fieldE0) { case 1: changeView(_string2); break; case 2: changeView(_string3); break; default: break; } _fieldE0 = 0; } } } return true; }
bool CParrot::ActMsg(CActMsg *msg) { if (msg->_action == "PistaccioEaten") { CActMsg actMsg("NutsEaten"); actMsg.execute("Ear2"); } else if (msg->_action == "Chicken") { // Nothing to do } else if (msg->_action == "CarryParrotLeftView") { if (!_v2) { _v1 = 0; CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("PerchCoreHolder"); } } else if (msg->_action == "StartChickenDrag") { if (!_v4) { stopMovie(); startTalking(this, 280275, findView()); _field12C = 0; } } else if (msg->_action == "EnteringFromTOW" && (_v4 == 0 || _v4 == 2)) { if (_v2) { _v2 = 2; } else { setVisible(true); CTreeItem *cageBar = getRoot()->findByName("CageBar"); detach(); attach(cageBar); _v4 = 0; CActMsg actMsg1("OpenNow"); actMsg1.execute("ParrotCage"); CActMsg actMsg2("GainParrot"); actMsg2.execute("ParrotLobbyController"); } } return true; }
bool CBrokenPelleratorFroz::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == 55) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("FPickUpHose"); } if (msg->_endFrame == 84) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("FPickUpHose"); } if (_fieldE0 == 1) { changeView(_string2); _fieldE0 = 0; } else if (_fieldE0 == 2) { changeView(_string3); _fieldE0 = 0; } return true; }
bool CFanControl::StatusChangeMsg(CStatusChangeMsg *msg) { if (!_fieldCC) { playSound("z#42.wav"); if (_enabled) { switch (msg->_newStatus) { case 1: _fieldC8 = !_fieldC8; if (_fieldC8) { playMovie(6, 8, 0); _state = 0; } else { switch (_state) { case 0: playMovie(4, 6, 0); _state = -1; break; case 1: playMovie(0, 6, 0); break; case 2: playMovie(18, 24, 0); playMovie(0, 6, 0); break; default: break; } _state = -1; } break; case 2: if (_fieldC8) { _state = (_state + 1) % 4; switch (_state) { case 0: playMovie(18, 24, 0); playMovie(0, 4, 0); break; case 1: playMovie(8, 12, 0); break; case 2: if (_fieldC4) { inc54(); _fieldCC = 1; playMovie(12, 18, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); } else { playMovie(12, 18, 0); } break; default: break; } } break; default: break; } CStatusChangeMsg statusMsg; statusMsg._newStatus = _state; statusMsg.execute("RightFan"); } else { petDisplayMessage(1, FAN_HAS_BLOWN_A_FUSE); } } return true; }
bool CFanDecrease::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 2; statusMsg.execute("FanController"); 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; }
bool CBarbot::MovieEndMsg(CMovieEndMsg *msg) { if (msg->_endFrame == _frameNum) { _frameNum = -1; _field14C = getTicksCount(); } if (msg->_endFrame == _field148) { _field148 = -1; _field150 = getTicksCount(); } if (msg->_endFrame == _field13C) { if (_field124) playMovie(_frames[53]._startFrame, _frames[53]._startFrame, 0); else if (_visCenterOnCounter) playMovie(_frames[27]._endFrame, _frames[27]._endFrame, 0); _field13C = -1; return true; } if (msg->_endFrame == _frames[58]._endFrame || msg->_endFrame == _frames[21]._endFrame) { CVisibleMsg visibleMsg(true); visibleMsg.execute("BarShelfVisCentre"); } if (msg->_endFrame == _frames[57]._endFrame) { startTalking(this, 250575); playSound("c#10.wav", _volume); return true; } if (msg->_endFrame == _frames[55]._endFrame) { playSound("c#10.wav", _volume); return true; } if (msg->_endFrame == _frames[56]._endFrame || msg->_endFrame == _frames[54]._endFrame) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("PickUpGlass"); CMoveToStartPosMsg moveMsg; moveMsg.execute("BeerGlass"); return true; } if (msg->_endFrame == _frames[30]._endFrame) { _field124 = 0; CStatusChangeMsg statusMsg; statusMsg._newStatus = 0; statusMsg.execute("PickUpGlass"); } if (msg->_endFrame == _frames[45]._endFrame) { if (!_gottenDrunk) { CVisibleMsg visibleMsg(false); visibleMsg.execute("BarShelfVisCentre"); } return true; } if (msg->_endFrame == _frames[44]._endFrame) { _visCenterOnCounter = true; _gottenDrunk = true; startTalking(this, 250586); CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("PickUpVisCentre"); CPuzzleSolvedMsg solvedMsg; solvedMsg.execute("VisionCentre"); } if (msg->_endFrame == _frames[46]._endFrame) { if (!_gottenDrunk && !areIngredientsMissing()) startTalking(this, 250571); return true; } if (msg->_endFrame == _frames[43]._endFrame || msg->_endFrame == _frames[42]._endFrame || msg->_endFrame == _frames[41]._endFrame) { if (_field124) playMovie(_frames[53]._startFrame, _frames[53]._startFrame, 0); return true; } if (msg->_endFrame == _frames[38]._endFrame || msg->_endFrame == _frames[23]._endFrame) { playSound("c#3.wav", _volume); } else if (msg->_endFrame == _frames[36]._endFrame) { playSound("c#6.wav", _volume); } else if (msg->_endFrame == _frames[35]._endFrame) { playSound("c#8.wav", _volume); } else if (msg->_endFrame == _frames[33]._endFrame) { playSound("c#4.wav", _volume); } else if (msg->_endFrame == _frames[32]._endFrame) { startTalking(this, 145); playSound("c#9.wav", _volume); } else if (msg->_endFrame == _frames[47]._endFrame) { playSound("c#9.wav", _volume); _addedVodka = true; _drunkFlag = true; } else if (msg->_endFrame == _frames[30]._endFrame) { playSound("c#4.wav", 60); } else if (msg->_endFrame == _frames[29]._endFrame) { if (!_fieldC4) { performAction(true, nullptr); setVisible(false); CActMsg actMsg("ResetCount"); actMsg.execute("BarBell"); } } else if (msg->_endFrame == _frames[27]._endFrame) { CStatusChangeMsg statusMsg; statusMsg._newStatus = 1; statusMsg.execute("PickUpVisCentre"); _visCenterOnCounter = true; _field134 = 0; startTalking(this, 250586); } return true; }