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 CShipSetting::MouseDragStartMsg(CMouseDragStartMsg *msg) { if (!checkStartDragging(msg)) return false; if (_itemName == "NULL") return true; CTurnOff offMsg; offMsg.execute(_target); if (isEquals("ChickenSetting") || _itemName == "ChickenBridge") { CActMsg actMsg("IncreaseQuantity"); actMsg.execute("ChickenDispenser"); } if (_itemName != "NULL") { CPassOnDragStartMsg passMsg(msg->_mousePos, 1); passMsg.execute(_itemName); msg->_dragItem = getRoot()->findByName(_itemName); CVisibleMsg visibleMsg(true); visibleMsg.execute(_itemName); } CSetFrameMsg frameMsg(0); frameMsg.execute(_frameTarget); _itemName = "NULL"; _cursorId = CURSOR_ARROW; return true; }
bool CDesk::MovieEndMsg(CMovieEndMsg *msg) { if (_statics->_desk == "Open") { CVisibleMsg visibleMsg(true); visibleMsg.execute("ChestOfDrawers"); } return true; }
bool CBedfoot::TurnOff(CTurnOff *msg) { if (_statics->_bedhead == "Closed" || _statics->_bedhead == "ClosedWrong") { setVisible(true); CVisibleMsg visibleMsg(false); visibleMsg.execute("Bedhead"); } if (_statics->_bedfoot == "Open" && _statics->_bedhead == "Closed") { _isClosed = true; _startFrame = 20; if (_statics->_tv == "Closed") { _statics->_bedfoot = "Closed"; _endFrame = 30; } else { _statics->_bedfoot = "RestingUnderTV"; _endFrame = 25; } playMovie(_startFrame, _endFrame, MOVIE_GAMESTATE); playSound("b#7.wav"); } else if (_statics->_bedfoot == "NotOnWashstand" && _statics->_bedhead == "ClosedWrong") { _isClosed = true; _startFrame = 17; if (_statics->_tv == "Closed") { _statics->_bedfoot = "Closed"; _endFrame = 30; } else { _statics->_bedfoot = "RestingUnderTV"; _endFrame = 25; } playMovie(_startFrame, _endFrame, MOVIE_GAMESTATE); playSound("b#7.wav"); } else if (_statics->_bedfoot == "RestingUTV" && _statics->_tv == "Closed") { _statics->_bedfoot = "Closed"; _startFrame = 25; _endFrame = 30; playMovie(25, 30, MOVIE_GAMESTATE); playSound("b#7.wav"); } if (_statics->_bedfoot == "Closed") _statics->_bedhead = "Closed"; return true; }
bool CUpLighter::MovieEndMsg(CMovieEndMsg *msg) { if (_hosePumping) { playSound(TRANSLATE("z#47.wav", "z#578.wav")); _noseDispensed = true; CVisibleMsg visibleMsg(true); visibleMsg.execute("NoseHolder"); CDropZoneLostObjectMsg lostMsg(nullptr); lostMsg.execute(this); _clipName.clear(); _itemMatchName = "Nothing"; _hosePumping = false; } return true; }
bool CDesk::TurnOff(CTurnOff *msg) { if (_statics->_desk == "Open" && _statics->_chestOfDrawers == "Closed" && _statics->_bedhead != "Open") { CVisibleMsg visibleMsg(false); visibleMsg.execute("ChestOfDrawers"); _statics->_desk = "Closed"; _isClosed = true; _startFrame = 26; _endFrame = 51; playMovie(26, 51, MOVIE_WAIT_FOR_FINISH); playSound("b#9.wav"); } return true; }
bool CBarbot::TurnOn(CTurnOn *msg) { if (!_fieldC4) { _field13C = -1; setVisible(true); CGameObject *glass = findInRoom("BeerGlass"); if (!_gottenDrunk) { CVisibleMsg visibleMsg(false); visibleMsg.execute("BarShelfVisCentre"); } if (glass && !_addedPuret) { playRange(_frames[38], MOVIE_NOTIFY_OBJECT); playRange(_frames[58], MOVIE_NOTIFY_OBJECT); playRange(_frames[57], MOVIE_NOTIFY_OBJECT); playRange(_frames[56], MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); _frameNum = _frames[56]._endFrame; } else { playRange(_frames[38]); playRange(_frames[23], MOVIE_NOTIFY_OBJECT); playRange(_frames[21], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[21]._endFrame; switch (g_vm->getRandomNumber(2)) { case 0: playRange(_frames[10], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[10]._endFrame; break; case 1: playRange(_frames[12], MOVIE_NOTIFY_OBJECT); _frameNum = _frames[12]._endFrame; break; default: break; } _field124 = 0; } _fieldC4 = 1; ++_timesCalled; petSetArea(PET_CONVERSATION); setTalking(this, true); } return true; }
bool CTelevision::LeaveViewMsg(CLeaveViewMsg *msg) { petClear(); if (_isOn) { if (isSoundActive(_soundHandle)) stopSound(_soundHandle, 0); loadFrame(622); stopMovie(); setVisible(0); _isOn = false; if (compareRoomNameTo("CSGState")) { CVisibleMsg visibleMsg(true); visibleMsg.execute("Tellypic"); } } return true; }
bool CArboretumGate::ActMsg(CActMsg *msg) { if (msg->_action == "PlayerGetsSpeechCentre") { _v1 = 1; CVisibleMsg visibleMsg(true); visibleMsg.execute("SpCtrOverlay"); } else if (msg->_action == "ExitLFrozen") { if (_v3) { _viewName2 = "FrozenArboretum.Node 2.W"; CTurnOn onMsg; onMsg.execute(this); } else { changeView("FrozenArboretum.Node 2.W"); } } else if (msg->_action == "ExitRFrozen") { if (_v3) { _viewName2 = "FrozenArboretum.Node 2.E"; CTurnOn onMsg; onMsg.execute(this); } else { changeView("FrozenArboretum.Node 2.E"); } } else if (msg->_action == "ExitLNormal") { if (_v3) { _viewName2 = "Arboretum.Node 2.W"; CTurnOn onMsg; onMsg.execute(this); } else { changeView("Arboretum.Node 2.W"); } } else if (msg->_action == "ExitRNormal") { if (_v3) { _viewName2 = "Arboretum.Node 2.E"; CTurnOn onMsg; onMsg.execute(this); } else { changeView("Arboretum.Node 2.E"); } } return true; }
bool CBedhead::TurnOff(CTurnOff *msg) { if (_statics->_bedhead == "Open") { playMovie(78, 85, 0); playSound("191_436_bed inflate deflate.wav"); } BedheadEntries *data = nullptr; if (_statics->_bedhead == "Open") data = &_off._open; else if (_statics->_bedhead == "RestingUTV") data = &_off._restingUTV; else if (_statics->_bedhead == "RestingV") data = &_off._restingV; else if (_statics->_bedhead == "RestingG") data = &_off._restingG; else if (_statics->_bedhead == "OpenWrong") data = &_off._openWrong; else if (_statics->_bedhead == "RestingDWrong") data = &_off._restingDWrong; else return true; for (uint idx = 0; idx < data->size(); ++idx) { const BedheadEntry &entry = (*data)[idx]; if ((entry._name1 == _statics->_tv || entry._name1 == "Any") && (entry._name2 == _statics->_vase || entry._name2 == "Any") && (entry._name3 == _statics->_desk || entry._name3 == "Any")) { CVisibleMsg visibleMsg(false); visibleMsg.execute("Bedfoot"); setVisible(true); _statics->_bedhead = entry._name4; playMovie(entry._startFrame, entry._endFrame, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); playSound("193_436_bed fold up 1.wav"); _isClosed = true; } } return true; }
bool CSuccUBus::MouseDragStartMsg(CMouseDragStartMsg *msg) { CPetControl *pet = getPetControl(); Rect tempRect = _rect1; tempRect.translate(_bounds.left, _bounds.top); if (_field1D8 || !_enabled || !_field188 || !tempRect.contains(msg->_mousePos) || !pet) return true; uint petRoomFlags = pet->getRoomFlags(); CGameObject *mailObject = findMail(petRoomFlags); if (!mailObject) return true; petAddToCarryParcel(mailObject); CViewItem *view = getView(); if (!view) return true; mailObject->moveUnder(view); mailObject->setPosition(Point(msg->_mousePos.x + mailObject->_bounds.width() / 2, msg->_mousePos.y + mailObject->_bounds.height() / 2)); CVisibleMsg visibleMsg(true); visibleMsg.execute(mailObject); CPassOnDragStartMsg dragMsg; dragMsg._mousePos = msg->_mousePos; dragMsg._value3 = 1; dragMsg.execute(mailObject); if (!dragMsg._value4) msg->_dragItem = mailObject; loadFrame(_field184); _field188 = 0; CSUBTransition transMsg; transMsg.execute(this); return true; }
bool CBedhead::TurnOn(CTurnOn *msg) { if (_statics->_v2 == "Closed" || _statics->_v2 == "RestingUnderTV") return true; const BedheadEntries *data = nullptr; if (_statics->_v1 == "Closed") data = &_on._closed; else if (_statics->_v1 == "RestingTV") data = &_on._restingTV; else if (_statics->_v1 == "RestingUV") data = &_on._restingUV; else if (_statics->_v1 == "ClosedWrong") data = &_on._closedWrong; else return true; for (uint idx = 0; idx < data->size(); ++idx) { const BedheadEntry &entry = (*data)[idx]; if ((entry._name1 == _statics->_v4 || entry._name1 == "Any") && (entry._name2 == _statics->_v3 || entry._name2 == "Any") && (entry._name3 == _statics->_v5 || entry._name3 == "Any")) { CVisibleMsg visibleMsg(false); visibleMsg.execute("Bedfoot"); setVisible(true); _statics->_v1 = entry._name4; playMovie(entry._startFrame, entry._endFrame, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE); playSound("b#6.wav"); _fieldE0 = false; } } if (_statics->_v1 == "Open") { playMovie(71, 78, 0); playSound("196_436 bed inflate 2.wav"); } return true; }
bool CBrainSlot::MouseDragStartMsg(CMouseDragStartMsg *msg) { if (!_value1 || _woken || !checkPoint(msg->_mousePos, false, true)) return false; _cursorId = CURSOR_ARROW; CVisibleMsg visibleMsg(true); visibleMsg.execute(_target); CTakeHeadPieceMsg takeMsg(_target); takeMsg.execute("TitaniaControl"); loadFrame(isEquals("CentralCoreSlot") ? 21 : 0); _value1 = 0; CPassOnDragStartMsg passMsg; passMsg._mousePos = msg->_mousePos; passMsg.execute(_target); msg->_dragItem = getRoot()->findByName(_target); _added = false; return true; }
bool CBedhead::TurnOn(CTurnOn *msg) { if (_statics->_bedfoot != "Closed" && _statics->_bedfoot != "RestingUnderTV") { const BedheadEntries *data = nullptr; if (_statics->_bedhead == "Closed") data = &_on._closed; else if (_statics->_bedhead == "RestingTV") data = &_on._restingTV; else if (_statics->_bedhead == "RestingUV") data = &_on._restingUV; else if (_statics->_bedhead == "ClosedWrong") data = &_on._closedWrong; else return true; for (uint idx = 0; idx < data->size(); ++idx) { const BedheadEntry &entry = (*data)[idx]; if ((entry._name1 == _statics->_tv || entry._name1 == "Any") && (entry._name2 == _statics->_vase || entry._name2 == "Any") && (entry._name3 == _statics->_desk || entry._name3 == "Any")) { CVisibleMsg visibleMsg(false); visibleMsg.execute("Bedfoot"); setVisible(true); _statics->_bedhead = entry._name4; playMovie(entry._startFrame, entry._endFrame, MOVIE_NOTIFY_OBJECT | MOVIE_WAIT_FOR_FINISH); playSound(TRANSLATE("b#6.wav", "b#91.wav")); _isClosed = false; } } } if (_statics->_bedhead == "Open") { playMovie(71, 78, 0); playSound("196_436 bed inflate 2.wav"); } return true; }
bool CTelevision::PETActivateMsg(CPETActivateMsg *msg) { if (msg->_name == "Television") { CVisibleMsg visibleMsg(_isOn); _isOn = !_isOn; if (_isOn) { setVisible(true); playMovie(0, 55, 0); _channelNum = 1; } else { stopMovie(); if (isSoundActive(_soundHandle)) stopSound(_soundHandle, 0); setVisible(false); } if (compareRoomNameTo("SGTState")) visibleMsg.execute("Tellypic"); } return true; }
bool CArmchair::TurnOn(CTurnOn *msg) { if (_statics->_armchair == "Closed" && _statics->_toilet == "Closed") { CVisibleMsg visibleMsg(false); visibleMsg.execute("Deskchair"); if (_statics->_deskchair == "Open") { CActMsg actMsg("Squash"); actMsg.execute("Deskchair"); _startFrame = 22; _endFrame = 31; } else { _startFrame = 0; _endFrame = 10; } playMovie(_startFrame, _endFrame, MOVIE_GAMESTATE); playSound("b#0.wav"); _statics->_armchair = "Open"; _isClosed = false; } return true; }
bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { CPetControl *pet = getPetControl(); if (msg->_endFrame == _trayOutEndFrame) { if (_offStartFrame >= 0) playSound("z#27.wav"); } else if (msg->_endFrame == _offEndFrame) { if (_endingStartFrame >= 0) playSound("z#30.wav"); } else { if (msg->_endFrame == _onEndFrame && pet) { if (_style) { startTalking(this, getRandomNumber(1) ? 230062 : 230063); } else if (!findMail(pet->getRoomFlags())) { switch (getRandomNumber(4)) { case 0: startTalking(this, 230001); break; case 1: startTalking(this, 230002); break; case 2: startTalking(this, 230003); break; default: break; } } } else if (msg->_endFrame == _sendEndFrame) { switch (_sendAction) { case SA_EATEN: stopSound(_soundHandle, 1); _soundHandle = playSound("z#3.wav", 1); break; case SA_BILGE_FEATHERS: stopSound(_soundHandle); _soundHandle = playSound("z#12.wav"); break; case SA_BILGE_SENT: if (_isChicken) { startTalking(this, 230018); _isChicken = false; } else { startTalking(this, 230013); } break; case SA_BILGE_EATEN: startTalking(this, 230017); break; default: break; } CSUBTransition transMsg; transMsg.execute(this); } else if (msg->_endFrame == _receiveEndFrame) { if (_mailP) { _mailP->petAddToInventory(); CVisibleMsg visibleMsg(true); visibleMsg.execute(_mailP); _mailP = nullptr; petSetArea(PET_INVENTORY); CSUBTransition transMsg; transMsg.execute(this); } } else if (msg->_endFrame == _sneezing1EndFrame) { playSound("z#25.wav", 70); playSound("z#24.wav", 70); } else if (msg->_endFrame == _sneezing2EndFrame) { changeView("BilgeRoomWith.Node 1.N", ""); _style = false; resetMail(); if (_mailP) { _mailP->petAddToInventory(); CVisibleMsg visibleMsg(true); visibleMsg.execute(_mailP); _mailP = nullptr; petSetArea(PET_INVENTORY); } startTalking(this, 150); CBodyInBilgeRoomMsg bodyMsg; bodyMsg.execute("Service Elevator Entity"); decTransitions(); _sendAction = SA_SENT; } else { _sendAction = SA_SENT; } } 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; }
bool CBilgeSuccUBus::MovieEndMsg(CMovieEndMsg *msg) { CPetControl *pet = getPetControl(); if (msg->_endFrame == _endFrame12) { if (_startFrame10 >= 0) playSound("z#27.wav"); } else if (msg->_endFrame == _endFrame10) { if (_startFrame11 >= 0) playSound("z#30.wav"); } else { if (_endFrame9 == _endFrame10 && pet) { if (_v2) { startTalking(this, getRandomNumber(1) ? 230062 : 230063); } else if (!findMail(pet->getRoomFlags())) { switch (getRandomNumber(4)) { case 0: startTalking(this, 230001); break; case 1: startTalking(this, 230002); break; case 2: startTalking(this, 230003); break; default: break; } } } if (msg->_endFrame == _endFrame3) { switch (_field158) { case 1: stopSound(_soundHandle); _soundHandle = playSound("z#3.wav"); break; case 2: stopSound(_soundHandle); _soundHandle = playSound("z#12.wav"); break; case 3: if (_isChicken) { startTalking(this, 230018); _isChicken = false; } else { startTalking(this, 230013); } break; case 4: startTalking(this, 230017); break; default: break; } CSUBTransition transMsg; transMsg.execute(this); } else if (msg->_endFrame == _bilgeEndFrame2) { playSound("z#25.wav", 70); playSound("z#24.wav", 70); } else if (msg->_endFrame == _endFrame4) { if (_mailP) { _mailP->petAddToInventory(); CVisibleMsg visibleMsg(true); visibleMsg.execute(_mailP); _mailP = nullptr; petSetArea(PET_INVENTORY); CSUBTransition transMsg; transMsg.execute(this); } } else if (msg->_endFrame == _bilgeEndFrame1) { changeView("BilgeRoomWith.Node 1.N", ""); _v2 = 0; resetMail(); if (_mailP) { _mailP->petAddToInventory(); CVisibleMsg visibleMsg(true); visibleMsg.execute(_mailP); _mailP = nullptr; petSetArea(PET_INVENTORY); } startTalking(this, 150); CBodyInBilgeRoomMsg bodyMsg; bodyMsg.execute("Service Elevator Entity"); decTransitions(); _field158 = 0; } else { _field158 = 0; } } return true; }