Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
}
Пример #5
0
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;
}
Пример #6
0
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;
}
Пример #7
0
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;
}
Пример #8
0
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;
}
Пример #9
0
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;
}
Пример #10
0
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;
}
Пример #11
0
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;
}
Пример #12
0
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;
}
Пример #13
0
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;
}
Пример #14
0
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;
}
Пример #15
0
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;
}
Пример #16
0
bool CFanDecrease::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
	CStatusChangeMsg statusMsg;
	statusMsg._newStatus = 2;
	statusMsg.execute("FanController");
	return true;
}
Пример #17
0
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;
}
Пример #18
0
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;
}
Пример #19
0
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;
}