bool CSuccUBus::TurnOn(CTurnOn *msg) { if (getRandomNumber(9) == 0) { CParrotSpeakMsg speakMsg("SuccUBus", "TurnOn"); speakMsg.execute("PerchedParrot"); } CPetControl *pet = getPetControl(); if (pet) { if (!_field15C && _startFrame8 >= 0) { playMovie(_startFrame8, _endFrame8, 0); playSound("z#30.wav", 100); } if (_startFrame9 >= 0) { playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT); playSound("z#26.wav", 100); } uint petRoomFlags = pet->getRoomFlags(); if (mailExists(petRoomFlags) && _endFrame1 >= 0) playMovie(_endFrame1, _endFrame1, 0); _enabled = true; CSUBTransition transMsg; transMsg.execute(this); setTalking(this, true, findView()); petSetArea(PET_REMOTE); petHighlightGlyph(16); } return true; }
bool CBellBot::MovieEndMsg(CMovieEndMsg *msg) { if (!(_npcFlags & NPCFLAG_10000)) { CTrueTalkNPC::MovieEndMsg(msg); } else if (clipExistsByEnd("Walk On", msg->_endFrame)) { setPosition(Point(80, 10)); loadFrame(543); _npcFlags |= NPCFLAG_START_IDLING; if (_npcFlags & NPCFLAG_40000) { startTalking(this, 157); _npcFlags &= ~NPCFLAG_40000; } setTalking(this, true); petSetArea(PET_CONVERSATION); } else if (clipExistsByEnd("Walk Off", msg->_endFrame)) { CPutBotBackInHisBoxMsg boxMsg; boxMsg.execute(this); if (_npcFlags & NPCFLAG_20000) startAnimTimer("SummonDoorbot", 1500); } else { CTrueTalkNPC::MovieEndMsg(msg); } return true; }
bool CSuccUBus::TurnOn(CTurnOn *msg) { if (getRandomNumber(9) == 0) { CParrotSpeakMsg speakMsg("SuccUBus", "TurnOn"); speakMsg.execute("PerchedParrot"); } CPetControl *pet = getPetControl(); if (pet) { if (!_signalFlag && _initialStartFrame >= 0) { playMovie(_initialStartFrame, _initialEndFrame, 0); playSound("z#30.wav", 100); } if (_onStartFrame >= 0) { playMovie(_onStartFrame, _onEndFrame, MOVIE_NOTIFY_OBJECT); playSound("z#26.wav", 100); } uint petRoomFlags = pet->getRoomFlags(); if (mailExists(petRoomFlags) && _endFrame1 >= 0) // Mail canister present playMovie(_endFrame1, _endFrame1, 0); _isOn = true; CSUBTransition transMsg; transMsg.execute(this); setTalking(this, true, findView()); petSetArea(PET_REMOTE); petHighlightGlyph(16); } return true; }
bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) { bool flag = false; if (_npcFlags & NPCFLAG_10000) { if (_classNum) { petSetArea(PET_ROOMS); dec54(); unlockMouse(); playSound("z#47.wav"); _classNum = NO_CLASS; } _npcFlags &= ~NPCFLAG_10000; flag = true; } if (_npcFlags & NPCFLAG_40000) { _deskbotActive = false; _npcFlags &= ~(NPCFLAG_40000 | NPCFLAG_20000); if (_npcFlags & NPCFLAG_80000) { CTurnOn turnOn; turnOn.execute("EmbBellbotTrigger"); unlockMouse(); changeView("EmbLobby.Node 4.N", ""); } else if (_npcFlags & NPCFLAG_100000) { CTurnOn turnOn; turnOn.execute("EmbDoorBotTrigger"); unlockMouse(); changeView("EmbLobby.Node 4.N", ""); } _npcFlags &= ~(NPCFLAG_80000 | NPCFLAG_100000); flag = true; } if (_npcFlags & NPCFLAG_20000) { _npcFlags &= ~(NPCFLAG_40000 | NPCFLAG_20000); setTalking(this, true, findView()); _npcFlags |= NPCFLAG_START_IDLING; flag = true; } if (!flag) CTrueTalkNPC::MovieEndMsg(msg); return true; }
bool CDoorbot::DoorbotNeededInElevatorMsg(CDoorbotNeededInElevatorMsg *msg) { moveToView("ServiceElevator.Node 1.N"); setPosition(Point(100, 42)); if (_npcFlags & NPCFLAG_DOORBOT_INTRO) { _introMovieNum = 7; _npcFlags |= NPCFLAG_200000; loadFrame(797); } else { _npcFlags = 0; if (msg->_value) setTalking(this, true); } 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 CBilgeSuccUBus::TurnOn(CTurnOn *msg) { CPetControl *pet = getPetControl(); if (pet) { if (_startFrame9 >= 0) { playMovie(_startFrame9, _endFrame9, MOVIE_NOTIFY_OBJECT); playSound("z#26.wav"); } if (mailExists(pet->getRoomFlags()) && _startFrame2 >= 0) playMovie(_startFrame2, _endFrame2, 0); _enabled = true; CSUBTransition transMsg; transMsg.execute(this); setTalking(this, true); petSetArea(PET_REMOTE); petHighlightGlyph(16); } return true; }
bool CDoorbot::MovieEndMsg(CMovieEndMsg *msg) { debugC(ERROR_DETAILED, kDebugScripts, "CDoorbot MovieEndMsg flags=%x v=%d, start=%d, end=%d", _npcFlags, _introMovieNum, msg->_startFrame, msg->_endFrame); if (_npcFlags & NPCFLAG_DOORBOT_INTRO) { switch (_introMovieNum) { case 3: startTalking(this, 221482); _introMovieNum = 4; break; case 6: if (clipExistsByEnd("Cloak On", msg->_endFrame)) { petShow(); setState1C(true); changeView("ServiceElevator.Node 1.S"); changeView("ServiceElevator.Node 1.N"); } break; case 7: startTalking(this, 221467); _introMovieNum = 8; break; case 9: startTalking(this, 221468); break; case 11: changeView("ServiceElevator.Node 1.S"); changeView("MoonEmbLobby.Node 1.NE"); break; default: break; } CTrueTalkNPC::MovieEndMsg(msg); } else if (_npcFlags & NPCFLAG_100000) { if (clipExistsByEnd("Cloak Off", msg->_endFrame)) { _npcFlags = (_npcFlags & ~NPCFLAG_8) | NPCFLAG_START_IDLING; setTalking(this, false); startTalking(this, 221474); _npcFlags |= NPCFLAG_DOORBOT_INTRO; _introMovieNum = 0; } else if (clipExistsByEnd("Cloak On", msg->_endFrame)) { petShow(); setState1C(true); changeView("ServiceElevator.Node 1.S"); } else { CTrueTalkNPC::MovieEndMsg(msg); } } else if (_npcFlags & NPCFLAG_400000) { if (clipExistsByEnd("Whizz On Left", msg->_endFrame) || clipExistsByEnd("Whizz On Right", msg->_endFrame)) { setPosition(Point((600 - _bounds.width()) / 2 + 18, 42)); loadFrame(0); setTalking(this, true); _npcFlags |= NPCFLAG_START_IDLING; petSetArea(PET_CONVERSATION); } else if (clipExistsByEnd("Whizz Off Left", msg->_endFrame) || clipExistsByEnd("Whizz Off Right", msg->_endFrame)) { CPutBotBackInHisBoxMsg boxMsg; boxMsg.execute(this); if (_npcFlags & NPCFLAG_4000000) startAnimTimer("SummonBellbot", 1500); } else { CTrueTalkNPC::MovieEndMsg(msg); } } else { CTrueTalkNPC::MovieEndMsg(msg); } return true; }