/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 */

#include "tsage/blue_force/blueforce_scenes9.h"
#include "tsage/globals.h"
#include "tsage/scenes.h"
#include "tsage/tsage.h"
#include "tsage/staticres.h"

namespace TsAGE {

namespace BlueForce {

/*--------------------------------------------------------------------------
 * Scene 900 - Outside Warehouse
 *
 *--------------------------------------------------------------------------*/

bool Scene900::Item1::startAction(CursorType action, Event &event) {
	if (action == CURSOR_LOOK) {
		SceneItem::display2(900, 6);
		return true;
	} else {
		return SceneHotspot::startAction(action, event);
	}
}

bool Scene900::Item4::startAction(CursorType action, Event &event) {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	BF_GLOBALS._player.disableControl();
	scene->_sceneMode = 9001;
	Common::Point pt(0, 117);
	PlayerMover *mover = new PlayerMover();
	BF_GLOBALS._player.addMover(mover, &pt, scene);

	return true;
}

/*--------------------------------------------------------------------------*/
bool Scene900::Gate::startAction(CursorType action, Event &event) {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_USE:
		if (BF_GLOBALS._v4CEC0 == 0) {
			return NamedObject::startAction(action, event);
		} else {
			BF_GLOBALS._player.disableControl();
			if (BF_GLOBALS._v4CEC0 == 2) {
				scene->_sceneMode = 9006;
				BF_GLOBALS._v4CEC0 = 1;
				scene->setAction(&scene->_sequenceManager1, scene, 9006, &BF_GLOBALS._player, this, NULL);
			} else {
				BF_GLOBALS._v4CEC0 = 2;
				if (scene->_dog._flag == false) {
					BF_GLOBALS._player.setAction(&scene->_action4);
				} else {
					scene->_sceneMode = 9005;
					scene->setAction(&scene->_sequenceManager1, scene, 9005, &BF_GLOBALS._player, this, NULL);
					BF_GLOBALS._walkRegions.proc2(24);
				}
			}
			return true;
		}
		break;
	case INV_WAREHOUSE_KEYS:
		if (BF_GLOBALS._v4CEC0 == 2) {
			SceneItem::display2(900, 14);
		} else {
			if (BF_GLOBALS._v4CEC0 == 0) {
				if (!BF_GLOBALS.getFlag(fGotPointsForUnlockGate)) {
					BF_GLOBALS.setFlag(fGotPointsForUnlockGate);
					BF_GLOBALS._uiElements.addScore(30);
				}
				BF_GLOBALS._v4CEC0 = 1;
			} else {
				if (!BF_GLOBALS.getFlag(fGotPointsForLockGate)) {
					if (BF_GLOBALS._bookmark == bEndDayThree) {
						BF_GLOBALS.setFlag(fGotPointsForLockGate);
						BF_GLOBALS._uiElements.addScore(30);
					}
				}
				BF_GLOBALS._v4CEC0 = 0;
			}
			scene->_sceneMode = 9004;
			BF_GLOBALS._player.disableControl();
			scene->setAction(&scene->_sequenceManager1, scene, 9004, &BF_GLOBALS._player, NULL);
		}
		return true;
	default:
		return NamedObject::startAction(action, event);
	}
}

bool Scene900::Door::startAction(CursorType action, Event &event) {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_USE:
		if (BF_GLOBALS._v4CEC0 == 2) {
			if (_flag) {
				SceneItem::display2(900, 1);
			} else {
				BF_GLOBALS._player.disableControl();
				BF_GLOBALS._walkRegions.proc2(26);
				scene->_sceneMode = 9007;
				scene->setAction(&scene->_sequenceManager1, scene, 9007, &BF_GLOBALS._player, &scene->_door, this, NULL);
			}
			return true;
		} else
			return NamedObject::startAction(action, event);
		break;
	case INV_WAREHOUSE_KEYS:
		if (BF_GLOBALS._v4CEC0 == 2) {
			BF_GLOBALS._player.disableControl();
			scene->_sceneMode = 9012;
			scene->setAction(&scene->_sequenceManager1, scene, 9012, &BF_GLOBALS._player, &scene->_door, NULL);
		} else
			SceneItem::display2(900, 5);
		return true;
	default:
		return NamedObject::startAction(action, event);
	}
}

bool Scene900::Dog::startAction(CursorType action, Event &event) {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_LOOK:
		SceneItem::display2(900, 8);
		return true;
	case CURSOR_USE:
		SceneItem::display2(900, 9);
		return true;
	case INV_HOOK:
		if (_flag) {
			BF_GLOBALS._player.disableControl();
			scene->_sceneMode = 9010;
			scene->setAction(&scene->_sequenceManager1, scene, 9010, &BF_GLOBALS._player, &scene->_object5, this, NULL);
		} else
			SceneItem::display2(900, 23);
		return true;
	case INV_FISHING_NET:
		BF_GLOBALS._player.disableControl();
		BF_GLOBALS._player.setAction(&scene->_action2);
		return true;
	case INV_DOG_WHISTLE:
		BF_GLOBALS._player.disableControl();
		BF_GLOBALS._player.setAction(&scene->_action3);
		return true;
	default:
		return NamedObject::startAction(action, event);
	}
}

bool Scene900::Object6::startAction(CursorType action, Event &event) {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	if (action == CURSOR_TALK) {
		if (BF_GLOBALS._sceneManager._sceneLoadCount == 0) {
			if (!_action) {
				if (scene->_dog._flag) {
					if (BF_GLOBALS._v4CEC0 == 0)
						scene->_stripManager.start(9004, &BF_GLOBALS._stripProxy);
					else {
						if (scene->_door._flag == 1) {
							if (BF_GLOBALS._v4CEC0 == 2)
								scene->_stripManager.start(9005, &BF_GLOBALS._stripProxy);
							else
								scene->_stripManager.start(9001, &BF_GLOBALS._stripProxy);
						} else
							scene->_stripManager.start(9001, &BF_GLOBALS._stripProxy);
					}
				} else {
					if (scene->_field1974)
						scene->_stripManager.start(9003, &BF_GLOBALS._stripProxy);
					else {
						++scene->_field1974;
						scene->_stripManager.start(9002, &BF_GLOBALS._stripProxy);
					}
				}
			}
		}
		return true;
	} else
		return NamedObject::startAction(action, event);
}

bool Scene900::Object7::startAction(CursorType action, Event &event) {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	if (action == CURSOR_USE) {
		BF_GLOBALS._player.disableControl();
		scene->_sceneMode = 9016;
		scene->setAction(&scene->_sequenceManager1, scene, 9016, &BF_GLOBALS._player, NULL);
		return true;
	} else
		return NamedObject::startAction(action, event);
}

/*--------------------------------------------------------------------------*/
void Scene900::Action1::signal() {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		if (scene->_dog._flag == 0) {
			scene->_dog.setStrip(3);
			if ((BF_GLOBALS._randomSource.getRandomNumber(3) == 1) || (BF_GLOBALS._player._position.x > 790) || (scene->_field1976 != 0)) {
				Common::Point pt(864, 130);
				NpcMover *mover = new NpcMover();
				scene->_dog.addMover(mover, &pt, this);
			} else {
				_actionIndex = 4;
				Common::Point pt(775, 107);
				NpcMover *mover = new NpcMover();
				scene->_dog.addMover(mover, &pt, this);
			}
		}
		break;
	case 1:
		scene->_dog.setPosition(Common::Point(864, 117));
		scene->_dog.setStrip(7);
		scene->_dog.setFrame(1);
		scene->_dog.animate(ANIM_MODE_5, this);
		if (BF_GLOBALS._randomSource.getRandomNumber(3) == 1)
			scene->_sound1.play(92);
		else
			scene->_sound1.play(44);
		if ((BF_GLOBALS._player._position.x > 750) || (scene->_field1976 != 0))
			_actionIndex = 7;
		break;
	case 2:
		scene->_dog.animate(ANIM_MODE_6, this);
		break;
	case 3: {
		scene->_dog.setStrip(3);
		scene->_dog.setPosition(Common::Point(864, 130));
		scene->_dog.fixPriority(122);
		scene->_dog.animate(ANIM_MODE_1, NULL);
		Common::Point pt(775, 107);
		NpcMover *mover = new NpcMover();
		scene->_dog.addMover(mover, &pt, this);
		break;
		}
	case 6:
		_actionIndex = 0;
		// No break on purpose
	case 4:
		setDelay(30);
		break;
	case 5: {
		scene->_dog.setStrip(4);
		Common::Point pt(940, 145);
		NpcMover *mover = new NpcMover();
		scene->_dog.addMover(mover, &pt, this);
		break;
		}
	case 7:
		_actionIndex = 7;
		setDelay(5);
		if (BF_GLOBALS._player._position.x < 790)
			_actionIndex = 2;
		if (scene->_field1976 != 0)
			_actionIndex = 8;
		break;
	case 8:
		scene->_dog.setStrip(1);
		scene->_dog.setFrame(7);
		scene->_dog.animate(ANIM_MODE_6, NULL);
		break;
	case 9:
		scene->_field1976 = 0;
		scene->_dog._flag = 0;
		_actionIndex = 7;
		scene->_dog.setStrip(1);
		scene->_dog.setFrame(1);
		scene->_dog.animate(ANIM_MODE_5, this);
		break;
	default:
		break;
	}
}

void Scene900::Action2::signal() {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		scene->_field1976 = 1;
		if (scene->_dog._action->getActionIndex() != 8)
			_actionIndex = 0;
		setDelay(5);
		break;
	case 1:
		scene->_object5.postInit();
		scene->_object5.setVisage(902);
		scene->_object5.setStrip(2);
		scene->_object5.setPosition(Common::Point(-20, -20));
		scene->_object5._moveDiff.y = 10;
		setAction(&scene->_sequenceManager1, this, 9009, &BF_GLOBALS._player, &scene->_object5, &scene->_dog, NULL);
		BF_INVENTORY.setObjectScene(INV_FISHING_NET, 900);
		break;
	case 2:
		BF_GLOBALS._player._strip = 7;
		if (!BF_GLOBALS.getFlag(fGotPointsForTrapDog)) {
			BF_GLOBALS.setFlag(fGotPointsForTrapDog);
			BF_GLOBALS._uiElements.addScore(50);
		}
		SceneItem::display2(900, 10);
		scene->_dog._flag = 1;
		scene->_dog.fixPriority(130);
		BF_GLOBALS._player.enableControl();
		remove();
		break;
	default:
		break;
	}
}

void Scene900::Action3::signal() {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		if ((BF_GLOBALS._player._position.x < 790) && (!BF_GLOBALS._player._mover)) {
			Common::Point pt(821, 136);
			PlayerMover *mover = new PlayerMover();
			BF_GLOBALS._player.addMover(mover, &pt, 0);
		}
		if (scene->_dog._action->getActionIndex() != 7) {
			_actionIndex = 0;
		}
		setDelay(5);
		break;
	case 1:
		if (scene->_dog._strip == 3) {
			_actionIndex = 3;
			Common::Point pt(775, 107);
			NpcMover *mover = new NpcMover();
			scene->_dog.addMover(mover, &pt, this);
		} else
			scene->_dog.animate(ANIM_MODE_6, this);
		break;
	case 2: {
		scene->_dog.setStrip(3);
		scene->_dog.setPosition(Common::Point(864, 130));
		scene->_dog.fixPriority(122);
		scene->_dog.animate(ANIM_MODE_1, NULL);
		Common::Point pt(775, 107);
		NpcMover *mover = new NpcMover();
		scene->_dog.addMover(mover, &pt, this);
		break;
		}
	case 3:
		scene->_dog.remove();
		scene->_dog._flag = 1;
		SceneItem::display2(900, 24);
		if (!BF_GLOBALS.getFlag(fGotPointsForLockWarehouse)) {
			BF_GLOBALS.setFlag(fGotPointsForLockWarehouse);
			BF_GLOBALS._uiElements.addScore(10);
		}
		BF_GLOBALS._player.enableControl();
		remove();
		break;
	default:
		break;
	} 
}

void Scene900::Action4::signal() {
	Scene900 *scene = (Scene900 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		scene->_field1976 = 1;
		if (scene->_dog._action->getActionIndex() != 8)
			_actionIndex = 0;
		setDelay(5);
		break;
	case 1:
		scene->setAction(&scene->_sequenceManager1, this, 9005, &BF_GLOBALS._player, &scene->_gate, NULL);
		break;
	case 2:
		scene->setAction(&scene->_sequenceManager1, this, 9008, &BF_GLOBALS._player, &scene->_dog, NULL);
		break;
	case 3:
		BF_GLOBALS._deathReason = 5;
		BF_GLOBALS._sceneManager.changeScene(666);
		remove();
		break;
	default:
		break;
	}
}

/*--------------------------------------------------------------------------*/

Scene900::Scene900(): PalettedScene() {
	_field1974 = _field1976 = 0;
}

void Scene900::postInit(SceneObjectList *OwnerList) {
	PalettedScene::postInit(OwnerList);
	loadScene(900);

	if (BF_GLOBALS._sceneManager._previousScene == 910)
		BF_GLOBALS._sound1.changeSound(91);
	_field1974 = 0;
	_field1976 = 0;
	BF_GLOBALS._uiElements._active = true;
	BF_GLOBALS.clearFlag(fCanDrawGun);
	if (BF_GLOBALS._dayNumber == 0) {
		BF_GLOBALS._dayNumber = 4;
		BF_INVENTORY.setObjectScene(INV_FISHING_NET, 1);
		BF_INVENTORY.setObjectScene(INV_HOOK, 1);
	}
	_dog._flag = 0;
	if (BF_GLOBALS._bookmark >= bFinishedWGreen) {
		_object7.postInit();
		_object7.fixPriority(120);
		_object7.setVisage(901);
		_object7.setPosition(Common::Point(159,128));
		_object7.setDetails(900, 15, 16, 17, ANIM_MODE_1, NULL);
	}
	if (BF_GLOBALS._sceneManager._previousScene == 910) {
		_sceneBounds.moveTo(640, 0);
		BF_GLOBALS._v4CEC0 = 2;
		BF_INVENTORY.setObjectScene(INV_FISHING_NET, 900);
		_dog._flag = 1;
	}
	if (BF_INVENTORY.getObjectScene(INV_FISHING_NET) == 900)
		_dog._flag = 1;

	_stripManager.addSpeaker(&_gameTextSpeaker);
	_stripManager.addSpeaker(&_jakeJacketSpeaker);
	_stripManager.addSpeaker(&_lyleHatSpeaker);

	_item4.setDetails(Rect(0, 85, 20, 130), 900, -1, -1, -1, 1, 0);
	BF_GLOBALS._player.postInit();

	_dog.postInit();
	_dog.setVisage(902);
	_dog.setPosition(Common::Point(845, 135));
	_dog.fixPriority(122);
	_dog.setDetails(900, 8, -1, 9, 1, NULL);

	if (_dog._flag == 0) {
		_dog.animate(ANIM_MODE_1, NULL);
		_dog.setAction(&_action1);
	} else {
		_dog.setAction(&_action1);
		_dog.fixPriority(130);
		if (BF_GLOBALS._dayNumber == 4) {
			_dog.setPosition(Common::Point(879, 120));
			_dog.setStrip(2);
		} else {
			_dog.setPosition(Common::Point(864, 117));
			_dog.setStrip(6);
			_dog.setFrame(6);
		}
	}

	_gate.postInit();
	_gate.setVisage(900);
	_gate.setStrip(2);

	if (BF_GLOBALS._v4CEC0 == 2)
		_gate.setPosition(Common::Point(758, 127));
	else {
		BF_GLOBALS._walkRegions.proc1(24);
		_gate.setPosition(Common::Point(804, 132));
	}

	if (BF_GLOBALS._dayNumber == 5)
		BF_GLOBALS._v4CEC8 = 0;

	if ((BF_GLOBALS._v4CEC8 == 0) && (BF_GLOBALS.getFlag(fWithLyle))) {
		_object4.postInit();
		_object4.setVisage(900);
		_object4.setStrip(3);
		_object4.fixPriority(1);
		_object4.setPosition(Common::Point(866, 117));
	}

	_door.postInit();
	_door.setVisage(900);

	if (BF_GLOBALS._v4CEC8 == 0)
		_door.setStrip(4);
	else
		_door.setStrip(1);

	_door.setPosition(Common::Point(847, 45));
	_door._flag = 1;

	if ((BF_GLOBALS._sceneManager._previousScene == 880) || (BF_GLOBALS._sceneManager._previousScene != 910)) {
		BF_GLOBALS._walkRegions.proc1(26);
		BF_GLOBALS._player.disableControl();
		if (BF_GLOBALS._bookmark == bFinishedWGreen) {
			_sceneMode = 9013;
			_lyle.postInit();
			_lyle._moveDiff.y = 7;
			_lyle._flags |= 0x1000;
			_lyle.setDetails(900, 19, 20, 21, ANIM_MODE_1, NULL);
			_lyleHatSpeaker._xp = 210;
			_jakeJacketSpeaker._xp = 75;
			setAction(&_sequenceManager1, this, 9013, &BF_GLOBALS._player, &_lyle, NULL);
			BF_GLOBALS._bookmark = bAmbushed;
			BF_GLOBALS.setFlag(fWithLyle);
		} else if (BF_GLOBALS._bookmark > bFinishedWGreen) {
			_lyle.postInit();
			_lyle.setVisage(811);
			_lyle.setPosition(Common::Point(780, 153));
			_lyle._moveDiff.y = 7;
			_lyle._flags |= 0x1000;
			_lyle.setDetails(900, 19, 20, 21, ANIM_MODE_1, NULL);
			_lyle.animate(ANIM_MODE_1, NULL);
			_lyle.setObjectWrapper(new SceneObjectWrapper());
		} // no else on purpose
		_sceneMode = 9000;
		setAction(&_sequenceManager1, this, 9000, &BF_GLOBALS._player, NULL);
	} else {
		_door._flag = 0;
		_door.setFrame(_door.getFrameCount());
		BF_GLOBALS._player.disableControl();
		_sceneMode = 9002;
		if (BF_GLOBALS.getFlag(fWithLyle)) {
			_lyle.postInit();
			_lyle._flags |= 0x1000;
			_lyle.setDetails(900, 19, 20, 21, ANIM_MODE_1, NULL);
			setAction(&_sequenceManager1, this, 9014, &BF_GLOBALS._player, &_door, &_lyle, NULL);
		} else
			setAction(&_sequenceManager1, this, 9002, &BF_GLOBALS._player, &_door, NULL);
	}

	_gate.setDetails(900, 0, -1, 1, 1, 0);
	_door.setDetails(900, 2, -1, 5, 1, 0);
	_item2.setDetails(Rect(0, 0, 225, 21), 666, 25, -1, -1, 1, NULL);
	_item3.setDetails(Rect(37, 21, 324, 50), 666, 26, -1, -1, 1, NULL);
	_item1.setDetails(Rect(0, 0, 960, 200), 900, 7, -1, -1, 1, NULL);
}

void Scene900::signal() {
	static uint32 v50E8B = 0;

	switch (_sceneMode++) {
	case 1:
		BF_GLOBALS._sceneManager.changeScene(910);
		break;
	case 3:
		BF_GLOBALS._walkRegions.proc1(24);
		_sceneMode = 9004;
		setAction(&_sequenceManager1, this, 9006, &BF_GLOBALS._player, &_gate, NULL);
		break;
	case 9000:
		BF_GLOBALS._player.enableControl();
		break;
	case 9001:
		if ((BF_INVENTORY.getObjectScene(INV_FISHING_NET) == 900) || (BF_GLOBALS._v4CEC0 != 0) ||
				(_door._flag == 0))
			BF_GLOBALS.setFlag(fLeftTraceIn900);
		else
			BF_GLOBALS.clearFlag(fLeftTraceIn900);

		BF_GLOBALS._sceneManager.changeScene(880);
		break;
	case 9002:
		BF_GLOBALS._walkRegions.proc1(26);
		BF_GLOBALS._player.enableControl();
		break;
	case 9004:
		if (BF_GLOBALS._v4CEC0 == 0)
			SceneItem::display2(900, 3);
		else
			SceneItem::display2(900, 4);
		BF_GLOBALS._player.enableControl();
		break;
	case 9005:
		if (_dog._flag == 0)
			BF_GLOBALS._player.setAction(&_action4);
		else
			BF_GLOBALS._player.enableControl();
		break;
	case 9006:
		BF_GLOBALS._walkRegions.proc1(24);
		BF_GLOBALS._player.enableControl();
		break;
	case 9007:
		if (BF_GLOBALS.getFlag(fWithLyle)) {
			Common::Point pt(862, 119);
			PlayerMover *mover = new PlayerMover();
			_lyle.addMover(mover, &pt, NULL);
			_sceneMode = 1;
			addFader((const byte *)&v50E8B, 5, this);
		} else
			BF_GLOBALS._sceneManager.changeScene(910);
		break;
	case 9008:
		BF_GLOBALS._deathReason = 5;
		BF_GLOBALS._sceneManager.changeScene(666);
		break;
	case 9010:
		_sound1.play(92);
		if (BF_GLOBALS._v4CEC0 == 2) {
			_sceneMode = 9008;
			setAction(&_sequenceManager1, this, 9008, &BF_GLOBALS._player, &_dog, NULL);
		} else {
			BF_GLOBALS._player._strip = 7;
			_action1.setActionIndex(9);
			_dog.signal();
			if ((!BF_GLOBALS.getFlag(fGotPointsForFreeDog)) && (BF_GLOBALS._bookmark == bEndDayThree)) {
				BF_GLOBALS.setFlag(fGotPointsForFreeDog);
				BF_GLOBALS._uiElements.addScore(50);
			}
			BF_INVENTORY.setObjectScene(INV_FISHING_NET, 1);
			SceneItem::display2(900, 11);
			BF_GLOBALS._player.enableControl();
		}
		break;
	case 9012:
		if (_door._flag == 0) {
			SceneItem::display2(900, 12);
			_door._flag = 1;
			if ((!BF_GLOBALS.getFlag(fGotPointsForLockWarehouse)) && (BF_GLOBALS._bookmark == bEndDayThree)) {
				BF_GLOBALS.setFlag(fGotPointsForLockWarehouse);
				BF_GLOBALS._uiElements.addScore(30);
			}
		} else {
			SceneItem::display2(900, 13);
			_door._flag = 0;
			if (!BF_GLOBALS.getFlag(fGotPointsForUnlockWarehouse)) {
				BF_GLOBALS.setFlag(fGotPointsForUnlockWarehouse);
				BF_GLOBALS._uiElements.addScore(30);
			}
		}
		BF_GLOBALS._player.enableControl();
		break;
	case 9013:
		_lyleHatSpeaker._xp = 75;
		_jakeJacketSpeaker._xp = 210;
		_lyle.setAction(&_sequenceManager2, &_lyle, 9015, &_lyle, NULL);
		BF_GLOBALS._player.enableControl();
		break;
	case 9016:
		if ((BF_GLOBALS._clip1Bullets == 0) && (BF_GLOBALS._clip2Bullets == 0)){
			BF_GLOBALS._clip1Bullets = 8;
			BF_GLOBALS._clip1Bullets = 8;
			SceneItem::display2(900, 25);
		} else if (BF_GLOBALS._clip1Bullets == 0) {
			BF_GLOBALS._clip1Bullets = 8;
			SceneItem::display2(900, 26);
		} else if (BF_GLOBALS._clip2Bullets == 0) {
			BF_GLOBALS._clip2Bullets = 8;
			SceneItem::display2(900, 26);
		} else
			SceneItem::display2(900, 27);

		BF_GLOBALS._player.enableControl();
		break;
	default:
		break;
	}
}

void Scene900::process(Event &event) {
	SceneExt::process(event);

	if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) {
		if (_item4.contains(event.mousePos)) {
			GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_W);
			BF_GLOBALS._events.setCursor(surface);
		} else {
			CursorType cursorId = BF_GLOBALS._events.getCursor();
			BF_GLOBALS._events.setCursor(cursorId);
		}
	}
}

void Scene900::dispatch() {
	SceneExt::dispatch();

	if (BF_GLOBALS.getFlag(fWithLyle) && _lyle.isNoMover()) {
		_lyle.updateAngle(BF_GLOBALS._player._position);
	}

	if (!_action) {
		if ((BF_GLOBALS._player._position.x <= 20) && (BF_GLOBALS._player._position.y < 130)) {
			BF_GLOBALS._player.disableControl();
			_sceneMode = 9001;
			setAction(&_sequenceManager1, this, 9001, &BF_GLOBALS._player, NULL);
		}
	}
}

void Scene900::synchronize(Serializer &s) {
	SceneExt::synchronize(s);
	s.syncAsSint16LE(_field1974);
	s.syncAsSint16LE(_field1976);
}

/*--------------------------------------------------------------------------
 * Scene 910 - ??
 *
 *--------------------------------------------------------------------------*/
/* Actions */
void Scene910::Action1::signal() {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex - 1) {
	case 0:
		scene->_object6.setStrip(1);
		scene->_object6.animate(ANIM_MODE_5, this);
		break;
	case 1:
		if (scene->_object6._strip == 2)
			scene->_object6.setFrame(4);
		scene->_object6.setStrip(1);
		scene->_object6.animate(ANIM_MODE_6, NULL);
		break;
	case 2:
		scene->_object6.setStrip(2);
		scene->_object6.animate(ANIM_MODE_2, NULL);
		break;
	default:
		break;
	}
}

void Scene910::Action2::signal() {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		scene->_object7.postInit();
		scene->_object7.setVisage(919);
		scene->_object7.setPosition(Common::Point(267, 51));
		scene->_object7.fixPriority(40);
		signal();
		break;
	case 1:
		scene->_object7.hide();
		setDelay(600);
		break;
	case 2:
		scene->_object7.setStrip(BF_GLOBALS._randomSource.getRandomNumber(3) + 2);
		scene->_object7.setFrame(1);
		scene->_object7.show();
		setDelay(6);
		break;
	case 3:
		_actionIndex = 1;
		scene->_object7.setStrip(BF_GLOBALS._randomSource.getRandomNumber(3) + 2);
		scene->_object7.animate(ANIM_MODE_5, this);
		break;
	default:
		break;
	}
}

/* Objects */
bool Scene910::Object1::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if (action == CURSOR_USE) {
		if (BF_GLOBALS._v4CEE2 == 0)
			return NamedObject::startAction(action, event);
		else
			return false;
	} else if (action == CURSOR_TALK) {
		if ((BF_GLOBALS._v4CEE0 != 0) || (BF_GLOBALS._v4CEE2 != 0)) {
			scene->_stripManager.start(9100 + _field90, &BF_GLOBALS._stripProxy);
			if (_field90 < 1)
				_field90++;
			return true;
		} else {
			BF_GLOBALS._player.disableControl();
			scene->_sceneMode = 9130;
			if (BF_GLOBALS.getFlag(8))
				setAction(&scene->_sequenceManager1, scene, 9138, &BF_GLOBALS._player, &scene->_object1, NULL);
			else
				setAction(&scene->_sequenceManager1, scene, 9130, &BF_GLOBALS._player, &scene->_object1, NULL);
			return true;
		}
	} else {
			return NamedObject::startAction(action, event);
	}
}

bool Scene910::Object2::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_USE:
		BF_GLOBALS._player.disableControl();
		scene->_field2DDA = 6;
		scene->_sceneMode = 9123;
		if (BF_GLOBALS._player._visage == 1911)
			scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
		else
			scene->signal();
		return true;
		break;
	case CURSOR_TALK:
		if (BF_GLOBALS._v4CEE2 >= 4)
			return NamedObject::startAction(action, event);

		if (BF_GLOBALS._v4CEE6 < 4)
			BF_GLOBALS._v4CEE6++;

		if (BF_GLOBALS._v4CEE6 == 2) {
			scene->_sceneMode = 13;
			scene->_stripManager.start(9105, scene);
		} else
			scene->_stripManager.start(9103 + BF_GLOBALS._v4CEE6, &BF_GLOBALS._stripProxy);
		return true;
		break;
	case 1:
		if (BF_GLOBALS._v4CEE2 > 1) {
			if (BF_GLOBALS._v4CEE2 != 4) {
				if ((BF_GLOBALS.getFlag(8)) && (BF_GLOBALS.getFlag(25)) && (BF_GLOBALS.getHasBullets())) {
					if (scene->_field2DE0 == 0) {
						BF_GLOBALS._player.disableControl();
						scene->_sceneMode = 9126;
						scene->setAction(&scene->_sequenceManager1, scene, 9126, &scene->_object2, NULL);
						return NamedObject::startAction(action, event);
					} else {
						scene->_stripManager.start(9117, &BF_GLOBALS._stripProxy);
						return NamedObject::startAction(action, event);
					}
				} else
					return NamedObject::startAction(action, event);
			} else {
				SceneItem::display(910, 90, SET_WIDTH, 312,
						SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
						SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
						SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
						SET_EXT_FGCOLOR, 13, LIST_END);
				return true;
			}
		} else {
			if ((BF_GLOBALS.getFlag(8)) && (BF_GLOBALS.getFlag(25)) && (BF_GLOBALS.getHasBullets())) {
				BF_GLOBALS._player.disableControl();
				scene->_sceneMode = 9125;
				scene->setAction(&scene->_sequenceManager1, scene, 9125, &scene->_object2, NULL);
			}
			return NamedObject::startAction(action, event);
		}
		break;
	case 39:
	case 53:
		if (BF_GLOBALS._v4CEE2 >= 4)
			return NamedObject::startAction(action, event);

		if (BF_GLOBALS._v4CEE6 < 4)
			BF_GLOBALS._v4CEE6++;

		if (BF_GLOBALS._v4CEE6 == 2) {
			scene->_sceneMode = 13;
			scene->_stripManager.start(9105, scene);
		} else
			scene->_stripManager.start(9103 + BF_GLOBALS._v4CEE6, &BF_GLOBALS._stripProxy);

		return true;
		break;
	case 57:
		if (BF_GLOBALS._v4CEE2 < 4) {
			BF_GLOBALS._player.disableControl();
			scene->_object9.fixPriority(121);
			scene->_field2DDA = 10;
			scene->_sceneMode = 9123;
			if (BF_GLOBALS._player._visage == 1911)
				scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
			else
				scene->signal();

			return true;
		} else {
			SceneItem::display(910, 95, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);

			return true;
		}
		break;
	case 58:
		if (BF_GLOBALS._v4CECC == 1)
			SceneItem::display(910, 84, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
		else
			SceneItem::display(910, 82, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
		return true;
		break;
	case 59:
	case 61:
		SceneItem::display(910, 83, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		return true;
		break;
	default:
		return NamedObject::startAction(action, event);
		break;
	}
}

bool Scene910::Object3::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_USE:
		BF_GLOBALS._player.disableControl();
		scene->_field2DDA = 7;
		scene->_sceneMode = 9123;
		if (BF_GLOBALS._player._visage == 1911)
			scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
		else
			scene->signal();
		return true;
		break;
	case CURSOR_TALK:
		if (BF_GLOBALS._v4CEE8 < 3)
			BF_GLOBALS._v4CEE8++;

		scene->_stripManager.start(9107 + BF_GLOBALS._v4CEE8, &BF_GLOBALS._stripProxy);
		return true;
		break;
	case 1:
		if ((BF_GLOBALS.getFlag(8)) && (BF_GLOBALS.getFlag(25)) && (BF_GLOBALS.getHasBullets())){
			BF_GLOBALS._player.disableControl();
			if (BF_GLOBALS._v4CEE4 == 2) {
				scene->_sceneMode = 9132;
				scene->setAction(&scene->_sequenceManager1, scene, 9132, &scene->_object3, NULL);
				return NamedObject::startAction(action, event);
			} else {
				if (scene->_field2DE0 == 0) {
					scene->_sceneMode = 9132;
					scene->setAction(&scene->_sequenceManager1, scene, 9132, &scene->_object3, NULL);
				} else
					scene->_stripManager.start(9117, &BF_GLOBALS._stripProxy);
				return NamedObject::startAction(action, event);
			}
		} else
			return NamedObject::startAction(action, event);
		break;
	case 57:
		if (BF_GLOBALS._v4CECC == 1) {
			SceneItem::display(910, 84, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		} else {
			BF_GLOBALS._player.disableControl();
			if (BF_GLOBALS._v4CEE2 == 4) {
				scene->_field2DDA = 11;
				scene->_sceneMode = 9123;
				if (BF_GLOBALS._player._visage == 1911)
					scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
				else
					scene->signal();
				return true;
			} else {
				scene->_field2DDA = 12;
				scene->_sceneMode = 9123;
				if (BF_GLOBALS._player._visage == 1911)
					scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
				else
					scene->signal();
				return true;
			}
		}
		break;
	case 58:
		if (BF_GLOBALS._v4CECC == 1) {
			SceneItem::display(910, 84, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		} else {
			BF_GLOBALS._player.disableControl();
			scene->_field2DDA = 11;
			scene->_sceneMode = 9123;
			if (BF_GLOBALS._player._visage == 1911)
				scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
			else
				scene->signal();
			return true;
		}
		break;
	case 59:
	case 61:
		SceneItem::display(910, 83, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		return true;
		break;
	default:
		return NamedObject::startAction(action, event);
		break;
	}
}

bool Scene910::Object4::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if (action == CURSOR_TALK) {
		BF_GLOBALS._player.disableControl();
		BF_GLOBALS._walkRegions.proc2(1);
		BF_GLOBALS._walkRegions.proc2(16);
		scene->_sceneMode = 9140;
		scene->setAction(&scene->_sequenceManager1, scene, 9140, &scene->_object4, &BF_GLOBALS._player, &scene->_object1, NULL);
		return true;
	} else
		return NamedObject::startAction(action, event);
}

bool Scene910::Object8::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	// the last check is used in order to replace a check on CURSOR_1000, which is replaced
	// directly by its sub-check. All items have an id inferior to 100h.
	if ((action == CURSOR_LOOK) || (action == CURSOR_TALK) || (action < CURSOR_WALK)) {
		if (_field90 == 1)
			return false;
		if ((_field92 != 1) || (BF_GLOBALS._v4CEE0 == 0 ))
			return NamedObject::startAction(action, event);
		return false;
	} else if (action == CURSOR_USE) {
		if (_field90 == 0) {
			if ((BF_GLOBALS._v4CEE0 == 0) || (_field92 != 1)) {
				BF_GLOBALS._player.disableControl();
				if (_field92 == 1) {
					scene->_field2DDA = 8;
					scene->_sceneMode = 9123;
					if (BF_GLOBALS._player._visage == 1911)
						scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
					else
						scene->signal();
					_field90 = 1;
					return true;
				} else {
					scene->_field2DDC = 151;
					scene->_field2DDE = 186;
					scene->_field2DDA = 4;
					scene->_sceneMode = 9123;
					if (BF_GLOBALS._player._visage == 1911)
						scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
					else
						scene->signal();
					_field90 = 1;
					return true;
				}
			} else
				return false;
		} else if (_field90 == 1)
			return false;
		else
			return true;
	} else
		return NamedObject::startAction(action, event);
}

void Scene910::Object8::init(int val) {
	NamedObject::postInit();

	_field92 = val;
	_field90 = 0;
}

bool Scene910::Object10::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_LOOK:
		if (BF_GLOBALS._v4CEC8 == 0)
			SceneItem::display(910, 7, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
		else
			SceneItem::display(910, 6, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
		return true;
		break;
	case CURSOR_USE:
		if (scene->_object1._position.x == 115) {
			SceneItem::display(910, 62, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		} else if (scene->_sceneMode != 9120) {
			if (BF_GLOBALS._v4CEE2 == 1) {
				BF_GLOBALS._player.disableControl();
				scene->_sceneMode = 9118;
				scene->setAction(&scene->_sequenceManager1, scene, 9118, &BF_GLOBALS._player, &scene->_object2, NULL);
				return true;
			} else {
				BF_GLOBALS._player.disableControl();
				scene->_sceneMode = 9102;
				if (BF_GLOBALS.getFlag(8)) {
					scene->_field2DDA = 1;
					scene->_sceneMode = 9123;
					scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
					return true;
				} else {
					scene->setAction(&scene->_sequenceManager1, scene, 9102, &BF_GLOBALS._player, NULL);
					return true;
				}
			}
		} else {
			SceneItem::display(910, 62, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		}
		break;
	default:
		return NamedObject::startAction(action, event);
		break;
	}
}

bool Scene910::Object11::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if (action == 57) {
		BF_GLOBALS._player.disableControl();
		scene->_field2DDC = 285;
		scene->_field2DDE = 114;
		scene->_field2DDA = 9;
		scene->_sceneMode = 9123;
		if (BF_GLOBALS._player._visage == 1911)
			scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
		else
			scene->signal();
		return true;
	} else
		return NamedObject::startAction(action, event);
}

void Scene910::Object12::postInit(SceneObjectList *OwnerList) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	FocusObject::postInit();
	_resNum = 910;
	_lookLineNum = 7;
	_useLineNum = 8;
	BF_GLOBALS._sceneItems.addItems(this);
	scene->_field2DD8 = 0;
	_object13.subEBB05(115,  44, 1, BF_GLOBALS._v4CECE[0]);
	_object14.subEBB05(116,  63, 2, BF_GLOBALS._v4CECE[1]);
	_object15.subEBB05(116,  69, 2, BF_GLOBALS._v4CECE[2]);
	_object16.subEBB05(115,  76, 1, BF_GLOBALS._v4CECE[3]);
	_object17.subEBB05(115,  95, 1, BF_GLOBALS._v4CECE[4]);
	_object18.subEBB05(116, 114, 2, BF_GLOBALS._v4CECE[5]);
	_object19.subEBB05(116, 120, 2, BF_GLOBALS._v4CECE[6]);
	_object20.subEBB05(188,  45, 2, BF_GLOBALS._v4CECE[7]);
	_object21.subEBB05(188,  51, 2, BF_GLOBALS._v4CECE[8]);
	_object22.subEBB05(179,  59, 1, BF_GLOBALS._v4CECE[9]);
	_object23.subEBB05(187,  78, 2, BF_GLOBALS._v4CECE[10]);
	_object24.subEBB05(187,  84, 2, BF_GLOBALS._v4CECE[11]);
	_object25.subEBBDC(178,  90, 1, BF_GLOBALS._v4CECE[12]);
	_object26.subEBBDC(178, 108, 2, BF_GLOBALS._v4CECE[13]);
}

void Scene910::Object12::remove() {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	_object13.remove();
	_object14.remove();
	_object15.remove();
	_object16.remove();
	_object17.remove();
	_object18.remove();
	_object19.remove();
	_object20.remove();
	_object21.remove();
	_object22.remove();
	_object23.remove();
	_object24.remove();
	_object25.remove();
	_object26.remove();
	_object27.remove();
	_object28.remove();

	if ((BF_GLOBALS._v4CECE[13] < 4) && (scene->_object10._frame > 1))
		scene->_object10.animate(ANIM_MODE_6, NULL);

	FocusObject::remove();
}

bool Scene910::Object13::startAction(CursorType action, Event &event) {
	static uint32 v50EC0 = 0, v50EBC = 0;
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	int8 var2;

	if (_field92 == 1)
		var2 = 12;
	else
		var2 = 7;

	switch (action) {
	case CURSOR_LOOK:
		SceneItem::display(910, 9, SET_WIDTH, 312,
			SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
			SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
			SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
			SET_EXT_FGCOLOR, 13, LIST_END);
		return true;
	case CURSOR_USE:
		scene->_sound2.play(101);
		if (event.mousePos.x <= _position.x + var2) {
			if (_field92 != 1) {
				if (_frame > 6)
					setFrame(_frame - 1);
			} else {
				if (_frame > 1)
					setFrame(_frame - 1);
			}
		} else {
			if (_field92 == 1) {
				if (_frame < 3)
					setFrame(_frame + 1);
			} else {
				if (_frame < 8)
					setFrame(_frame + 1);
			}
		}

		if (_field92 != 1)
			BF_GLOBALS._v4CECE[_field90 - 1] = (_field90 + 251) % 256;
		else
			BF_GLOBALS._v4CECE[_field90 - 1] = _field90;

		switch (_field90) {
		case 1:
			if (BF_GLOBALS._v4CEE2 < 1) {
				if (_frame == 2) {
					if (!BF_GLOBALS.getFlag(81)) {
						BF_GLOBALS._uiElements.addScore(30);
						BF_GLOBALS.setFlag(81);
					}
					scene->_sceneMode = 0;
					if (BF_GLOBALS._dayNumber == 5) {
						if (BF_GLOBALS._v4CEE2 == 0) {
							scene->_object12.remove();
							// _objectList.draw();
							BF_GLOBALS._player.disableControl();
							scene->_object1.setVisage(912);
							scene->_object7.remove();
							scene->_action2.remove();
							scene->_object2.postInit();
							scene->_sceneMode = 9129;
							scene->setAction(&scene->_sequenceManager1, scene, 9129, &BF_GLOBALS._player, &scene->_object2, NULL);
						} else if (BF_GLOBALS._v4CEE2 == 2) {
							scene->_object12.remove();
							// _objectList.draw();
							BF_GLOBALS._player.disableControl();
							scene->_object1.setVisage(911);
							scene->_object1.setStrip(4);
							scene->_object2.setVisage(923);
							scene->_object2.setStrip(2);
							scene->_object3.setVisage(923);
							scene->_object3.setStrip(3);
							scene->_sceneMode = 9134;
							scene->setAction(&scene->_sequenceManager1, scene, 9134, &BF_GLOBALS._player, &scene->_object2, &scene->_object1, NULL);
						}
					}
					BF_GLOBALS._v4CEC8 = 1;
					scene->_object5.show();
					if (scene->_sceneMode == 0) {
						BF_GLOBALS._player.setVisage(911);
						scene->_object1.setVisage(912);
					}
					scene->sub15E4F((const byte *)&v50EBC, 25, 910, NULL, 0, 111, 112, 255, 0);
					BF_GLOBALS._scenePalette.signalListeners();
					// _objectList.draw();
				} else {
					if (BF_GLOBALS._v4CEC8 == 1) {
						if (!BF_GLOBALS.getFlag(78)) {
							BF_GLOBALS._uiElements.addScore(30);
							BF_GLOBALS.setFlag(78);
						}
						BF_GLOBALS._player.disableControl();
						BF_GLOBALS._v4CEC8 = 0;
						scene->_sceneMode = 2;
						scene->sub15E4F((const byte *)&v50EC0, 30, 910, scene, 0, 111, 112, 255, 0);
					}
				}
			} else
				SceneItem::display(910, 97, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		case 4:
			if (_frame == 2) {
				if (BF_GLOBALS._v4CECE[4] == 2) {
					scene->_action1.setActionIndex(2);
					scene->_action1.signal();
				}
			} else if (scene->_action1.getActionIndex() == 2) {
				scene->_action1.setActionIndex(1);
				scene->_action1.signal();
			}
			return true;
		case 5:
			if (_frame == 2) {
				if (BF_GLOBALS._v4CECE[3] == 2) {
					scene->_action1.setActionIndex(2);
					scene->_action1.signal();
				}
			} else if (scene->_action1.getActionIndex() == 2) {
				scene->_action1.setActionIndex(1);
				scene->_action1.signal();
			}
			return true;
		case 15:
			if ((BF_GLOBALS._v4CECA == 2) && (BF_GLOBALS._v4CECE[17] == 1)) {
				if (_frame == 7)
					scene->subE83E1();
				else
					scene->subE82BD();
			}
			return true;
		default:
			return true;
		}
	default:
		return NamedObject::startAction(action, event);
		break;
	}
}

void Scene910::Object13::remove() {
	BF_GLOBALS._sceneItems.remove(this);
	SceneObject::remove();
}

void Scene910::Object13::subEBB05(int x, int y, int arg8, int8 argA) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	NamedObject::postInit();
	_field92 = arg8;
	scene->_field2DD8++;
	_field90 = scene->_field2DD8;
	setVisage(910);

	if (arg8 == 1) {
		setStrip(8);
		setFrame(argA);
	} else if (arg8 == 2) {
		setStrip(7);
		setFrame(5);
	}

	fixPriority(252);
	setPosition(Common::Point(x, y));
	BF_GLOBALS._sceneItems.push_front(this);
}

bool Scene910::Object25::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_LOOK:
		if (_field92 == 1)
			SceneItem::display(910, 10, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		else
			SceneItem::display(910, 11, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		return true;
	case CURSOR_USE:
		_field92 = BF_GLOBALS._v4CECE[_field90 + 11];
		switch (_field92 - 1) {
		case 0:
			_field92 = 2;
			setStrip(7);
			setFrame(1);
			if (_field90 == 1) {
				scene->_field2DD8 = 14;
				scene->_object12._object27.subEBB05(182, 92, 2, BF_GLOBALS._v4CECE[14]);
			} else {
				scene->_field2DD8 = 15;
				scene->_object12._object28.subEBD26(178, 108, 0, BF_GLOBALS._v4CECE[15]);
			}
			SceneItem::display(910, 12, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			BF_GLOBALS._v4CECE[_field90] = _field92;
			return true;
		case 1:
			_field92 = 3;
			setStrip(6);
			setFrame(3);
			if (_field90 == 1)
				scene->_object12._object27.remove();
			else
				scene->_object12._object28.remove();
			BF_GLOBALS._v4CECE[_field90] = _field92;
			return true;
		case 2:
			_field92 = 2;
			setStrip(7);
			setFrame(1);
			if (_field90 == 1) {
				scene->_field2DD8 = 14;
				scene->_object12._object27.subEBB05(182, 96, 2, BF_GLOBALS._v4CECE[14]);
			} else {
				scene->_field2DD8 = 15;
				scene->_object12._object28.subEBD26(178, 108, 0, BF_GLOBALS._v4CECE[15]);
			}
			BF_GLOBALS._v4CECE[_field90] = _field92;
			return true;
		case 3:
			SceneItem::display(910, 13, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			BF_GLOBALS._v4CECE[_field90] = _field92;
			return true;
		default:
			BF_GLOBALS._v4CECE[_field90] = _field92;
			return true;
		}
		break;
	default:
		return NamedObject::startAction(action, event);
		break;
	}
}

void Scene910::Object25::remove() {
	BF_GLOBALS._sceneItems.remove(this);
	SceneObject::remove();
}

void Scene910::Object25::subEBBDC(int x, int y, int arg8, int argA) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	NamedObject::postInit();
	scene->_field2DD8++;
	_field90 = arg8;
	_field92 = argA;
	setVisage(910);

	if ((_field92 != 2) && (_field92 != 4)) {
		setStrip(6);
		setFrame(3);
	} else {
		setStrip(7);
		setFrame(1);
		if (_field90 == 1) {
			scene->_field2DD8 = 14;
			scene->_object12._object27.subEBB05(182, 96, 2, BF_GLOBALS._v4CECE[14]);
		} else {
			scene->_field2DD8 = 15;
			scene->_object12._object28.subEBD26(178, 108, 0, BF_GLOBALS._v4CECE[15]);
		}
	}

	fixPriority(251);
	setPosition(Common::Point(x, y));
	BF_GLOBALS._sceneItems.push_front(this);
}

bool Scene910::Object28::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_LOOK:
		SceneItem::display(910, 14, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		return true;
	case CURSOR_USE:
		switch (_frame - _field90 - 2) {
		case 0:
			SceneItem::display(910, 15, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
			break;
		case 1:
			if (BF_GLOBALS._v4CECA == 1) {
				BF_GLOBALS._v4CECA = 0;
				BF_INVENTORY.setObjectScene(INV_BLACK_CORD, 1);
				BF_INVENTORY.setObjectScene(INV_HALF_BLACK_CORD, 910);
			} else if (BF_GLOBALS._v4CECA == 2) {
				BF_GLOBALS._v4CECA = 1;
				BF_INVENTORY.setObjectScene(INV_BLACK_CORD, 3 - _field90);
				BF_INVENTORY.setObjectScene(INV_HALF_BLACK_CORD, 1);
				scene->_object8.setPosition(Common::Point(540, 100));
			}
			setFrame(_field90 + 2);
			break;
		case 2:
			if (BF_GLOBALS._v4CECC == 1) {
				BF_GLOBALS._v4CECC = 0;
				BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 1);
				BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, 910);
			} else if (BF_GLOBALS._v4CECC == 2) {
				BF_GLOBALS._v4CECC = 1;
				BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 3 - _field90);
				BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, 1);
				scene->_object9.setPosition(Common::Point(540, 100));
			}
			setFrame(_field90 + 2);
			break;
		case 3:
			if ((_position.x - 12) - (5 * _field90) < event.mousePos.x) {
				if (BF_GLOBALS._v4CECA == 1) {
					BF_GLOBALS._v4CECA = 0;
					BF_INVENTORY.setObjectScene(INV_BLACK_CORD, 1);
					BF_INVENTORY.setObjectScene(INV_HALF_BLACK_CORD, 910);
					scene->_object8.setPosition(Common::Point(540, 100));
				} else if (BF_GLOBALS._v4CECA == 2) {
					BF_GLOBALS._v4CECA = 1;
					BF_INVENTORY.setObjectScene(INV_BLACK_CORD, 3 - _field90);
					BF_INVENTORY.setObjectScene(INV_HALF_BLACK_CORD, 1);
					scene->_object8.setPosition(Common::Point(540, 100));
				}
				setFrame(_field90 + 4);
			} else {
				if (BF_GLOBALS._v4CECC == 1) {
					BF_GLOBALS._v4CECC = 0;
					BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 1);
					BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, 910);
				} else if (BF_GLOBALS._v4CECC == 2) {
					BF_GLOBALS._v4CECC = 1;
					BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 3 - _field90);
					BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, 1);
					scene->_object9.setPosition(Common::Point(540, 100));
				}
				setFrame(_field90 + 3);
			}
		default:
			break;
		}
		BF_GLOBALS._v4CECE[_field90 + 15] = _frame;
		if (_field90 == 0) {
			if (_frame == 2)
				BF_GLOBALS._v4CECE[13] = 2;
			else
				BF_GLOBALS._v4CECE[13] = 4;
		}
		return true;
	case INV_HALF_YELLOW_CORD:
		if (BF_INVENTORY.getObjectScene(INV_YELLOW_CORD) == _field90 + 2) {
			SceneItem::display(910, 85, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		}
		if (BF_GLOBALS._v4CEE2 == 3) {
			SceneItem::display(910, 84, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		}
	// no break on purpose
	case INV_YELLOW_CORD:
		if (BF_GLOBALS._v4CECC == 0) {
			BF_GLOBALS._v4CECC = 1;
			BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, _field90 + 2);
			BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, 1);
		} else if (BF_GLOBALS._v4CECC == 1) {
			BF_GLOBALS._v4CECC = 2;
			BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, _field90 + 2);
			scene->_object9.setStrip(4);
			scene->_object9.setFrame(2);
			scene->_object9.setPosition(Common::Point(135, 93));
			scene->_object9.fixPriority(50);
		}
		if (_frame - _field90 == 2)
			setFrame(_field90 + 4);
		else if (_frame - _field90 == 3)
			setFrame(_field90 + 5);
		BF_GLOBALS._v4CECE[15 + _field90] = _frame;
		BF_GLOBALS._v4CECE[_field90 + 15] = _frame;
		if (_field90 == 0) {
			if (_frame == 2)
				BF_GLOBALS._v4CECE[13] = 2;
			else
				BF_GLOBALS._v4CECE[13] = 4;
		}
		return true;
	case INV_HALF_BLACK_CORD:
		if (BF_INVENTORY.getObjectScene(INV_BLACK_CORD) == _field90 + 2) {
			SceneItem::display(910, 85, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			return true;
		}
	//No break on purpose
	case INV_BLACK_CORD:
		if (BF_GLOBALS._v4CECA == 0) {
			if (_field90 == 1) {
				if (!BF_GLOBALS.getFlag(fGotPointsForBlackCord)) {
					BF_GLOBALS._uiElements.addScore(30);
					BF_GLOBALS.setFlag(fGotPointsForBlackCord);
				}
			} else {
				if (!BF_GLOBALS.getFlag(fGotPointsForGeneratorPlug)) {
					BF_GLOBALS._uiElements.addScore(30);
					BF_GLOBALS.setFlag(fGotPointsForGeneratorPlug);
				}
			}
			BF_GLOBALS._v4CECA = 1;
			BF_INVENTORY.setObjectScene(INV_BLACK_CORD, _field90 + 2);
			BF_INVENTORY.setObjectScene(INV_HALF_BLACK_CORD, 1);
		} else if (BF_GLOBALS._v4CECA == 1) {
			if (_field90 == 1) {
				if (!BF_GLOBALS.getFlag(fGotPointsForBlackCord)) {
					BF_GLOBALS._uiElements.addScore(30);
					BF_GLOBALS.setFlag(fGotPointsForBlackCord);
				}
			} else {
				if (!BF_GLOBALS.getFlag(fGotPointsForGeneratorPlug)) {
					BF_GLOBALS._uiElements.addScore(30);
					BF_GLOBALS.setFlag(fGotPointsForGeneratorPlug);
				}
			}
			BF_GLOBALS._v4CECA = 2;
			BF_INVENTORY.setObjectScene(INV_HALF_BLACK_CORD, _field90 + 2);
			scene->_object8.setStrip(4);
			scene->_object8.setFrame(1);
			scene->_object8.setPosition(Common::Point(135, 93));
			scene->_object8.fixPriority(50);
			scene->_object8.show();
			scene->_object8._field90 = 1;
			if (BF_GLOBALS._v4CECE[17] == 1) {
				if (BF_GLOBALS._v4CECE[14] == 2)
					scene->subE83E1();
				else
					scene->subE82BD();
			}
		}
		if (_frame - _field90 == 2)
			setFrame(_field90 + 3);
		else if (_frame - _field90 == 4)
			setFrame(_field90 + 5);
		BF_GLOBALS._v4CECE[15 + _field90] = _frame;
		BF_GLOBALS._v4CECE[_field90 + 15] = _frame;
		if (_field90 == 0) {
			if (_frame == 2)
				BF_GLOBALS._v4CECE[13] = 2;
			else
				BF_GLOBALS._v4CECE[13] = 4;
		}
		return true;
	default:
		return NamedObject::startAction(action, event);
	}
}

void Scene910::Object28::subEBD26(int x, int y, int arg8, int8 argA) {
	NamedObject::postInit();
	_field90 = arg8;
	_field92 = argA;
	setVisage(910);
	if (_field90 == 0)
		setStrip(7);
	else
		setStrip(3);
	setFrame(argA);
	fixPriority(251);
	setPosition(Common::Point(x, y));
	BF_GLOBALS._sceneItems.push_front(this);
}

void Scene910::Object28::remove() {
	BF_GLOBALS._sceneItems.remove(this);
	SceneObject::remove();
}

void Scene910::Object29::postInit(SceneObjectList *OwnerList) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	FocusObject::postInit();
	_resNum = 910;
	_lookLineNum = 99;
	_useLineNum = 87;
	BF_GLOBALS._sceneItems.push_front(this);

	scene->_field2DD8 = 16;
	_object30.subEBD26(142, 86, 1, BF_GLOBALS._v4CECE[16]);

	scene->_field2DD8 = 17;
	_object31.subED6EA(BF_GLOBALS._v4CECE[17]);
}

void Scene910::Object29::remove() {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	BF_GLOBALS._player.disableControl();
	scene->_sceneMode = 12;
	BF_GLOBALS._player.animate(ANIM_MODE_6, scene);
	_object30.remove();
	_object31.remove();
	FocusObject::remove();
}

bool Scene910::Object31::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if (action == CURSOR_USE) {
		if (_frame == 4) {
			scene->_sound1.play(100);
			scene->_sound1.holdAt(1);
			if (!BF_GLOBALS.getFlag(77)) {
				BF_GLOBALS._uiElements.addScore(30);
				BF_GLOBALS.setFlag(77);
			}
			setFrame(5);
			_object32.setFrame(7);
			if (BF_GLOBALS._v4CECA == 2) {
				if (BF_GLOBALS._v4CECE[14] == 2)
					scene->subE83E1();
				else
					scene->subE82BD();
			}
		} else {
			scene->_sound1.release();
			if (BF_GLOBALS._bookmark == 21) {
				if (!BF_GLOBALS.getFlag(82)) {
					BF_GLOBALS._uiElements.addScore(30);
					BF_GLOBALS.setFlag(82);
				}
			}
			setFrame(4);
			_object32.setFrame(6);
		}
		BF_GLOBALS._v4CECE[17] = (_frame + 252) % 256;
		return true;
	} else
		return NamedObject::startAction(action, event);
}

void Scene910::Object31::remove() {
	_object32.remove();
	SceneObject::remove();
}

void Scene910::Object31::subED6EA(int frame) {
	NamedObject::postInit();
	setVisage(910);
	setStrip(6 + frame);
	setFrame(4);
	setPosition(Common::Point(159, 83));
	fixPriority(251);
	_object32.postInit();
	_object32.setVisage(910);
	_object32.setStrip(6);
	_object32.setFrame(6 + frame);
	_object32.setPosition(Common::Point(166, 84));
	_object32.fixPriority(251);
	BF_GLOBALS._sceneItems.push_front(this);
}

bool Scene910::Item1::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if (action == CURSOR_USE) {
		if (scene->_object1._position.x == 115)
			SceneItem::display(910, 62, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		else if (BF_GLOBALS._v4CEE2 == 1) {
			BF_GLOBALS._player.disableControl();
			scene->_sceneMode = 9118;
			scene->setAction(&scene->_sequenceManager1, scene, 9118, &BF_GLOBALS._player, &scene->_object2, NULL);
		} else {
			BF_GLOBALS._player.disableControl();
			scene->_sceneMode = 9103;
			if (BF_GLOBALS.getFlag(8))
				scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
			else
				scene->setAction(&scene->_sequenceManager1, scene, 9103, &BF_GLOBALS._player, NULL);
		}
		return true;
	} else {
		return NamedHotspot::startAction(action, event);
	}
}

bool Scene910::Item2::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if (action == 59) {
		BF_GLOBALS._player.disableControl();
		scene->_field2DDC = 151;
		scene->_field2DDE = 186;
		scene->_field2DDA = 5;
		scene->_sceneMode = 9123;
		if (BF_GLOBALS._player._visage == 1911)
			scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
		else
			scene->signal();
		return true;
	} else
		return NamedHotspot::startAction(action, event);
}

bool Scene910::Item3::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if ((action == CURSOR_TALK) && (BF_GLOBALS._v4CEE2 == 4) && (BF_GLOBALS._v4CEE4 == 0)) {
		BF_GLOBALS._player.disableControl();
		scene->_sceneMode = 15;
		scene->_stripManager.start(9102, scene);
		return true;
	} else {
		return NamedHotspot::startAction(action, event);
	}
}

bool Scene910::Item9::startAction(CursorType action, Event &event) {
	if (BF_GLOBALS._v4CEE0 == 0)
		return NamedHotspot::startAction(action, event);
	else
		return false;
}

bool Scene910::Item15::startAction(CursorType action, Event &event) {
	if (BF_GLOBALS._v4CEC8 == 0)
		return false;

	if ((action == CURSOR_LOOK) || (action == CURSOR_USE) || (action == CURSOR_TALK))
		return NamedHotspot::startAction(action, event);

	if (action >= CURSOR_WALK)
		return false;

	SceneItem::display(910, 2, SET_WIDTH, 312,
		SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
		SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
		SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
		SET_EXT_FGCOLOR, 13, LIST_END);
	return true;
}

bool Scene910::Item16::startAction(CursorType action, Event &event) {
	Scene910 *scene = (Scene910 *)BF_GLOBALS._sceneManager._scene;

	if ((BF_GLOBALS._v4CEE0 == 0) || (BF_GLOBALS._v4CEE2 != 0))
		return false;

	if (BF_GLOBALS._player._visage == 1911) {
		BF_GLOBALS._player.disableControl();
		scene->_field2DDC = 292;
		scene->_field2DDE = 100;
		scene->_field2DDA = 0;
		scene->_sceneMode = 9123;
		scene->setAction(&scene->_sequenceManager1, scene, 9123, &BF_GLOBALS._player, NULL);
	} else {
		Common::Point pt(292, 100);
		PlayerMover *mover = new PlayerMover();
		BF_GLOBALS._player.addMover(mover, &pt, NULL);
	}

	return true;
}

bool Scene910::Item17::startAction(CursorType action, Event &event) {
	Common::Point pt(15, 159);
	PlayerMover *mover = new PlayerMover();
	BF_GLOBALS._player.addMover(mover, &pt, NULL);

	return true;
}

void Scene910::remove() {
	PalettedScene::remove();
}

void Scene910::postInit(SceneObjectList *OwnerList) {
	uint32 unk_50E94 = 0, unk_50E90 = 0;
	uint32 unk_50E98 = 0, unk_50E9C = 0;

	PalettedScene::postInit(OwnerList);
	loadScene(910);

	BF_GLOBALS._sound1.changeSound(99);
	BF_GLOBALS._v51C44 = 0;

	_stripManager.addSpeaker(&_gameTextSpeaker);
	_stripManager.addSpeaker(&_jakeJacketSpeaker);
	_stripManager.addSpeaker(&_lyleHatSpeaker);
	_stripManager.addSpeaker(&_fbiSpeaker);
	_stripManager.addSpeaker(&_nicoSpeaker);
	_stripManager.addSpeaker(&_daSpeaker);
	BF_GLOBALS._player.postInit();

	if (BF_GLOBALS._v4CEC8 == 0)
		BF_GLOBALS._player.setVisage(129);
	else
		BF_GLOBALS._player.setVisage(911);

	BF_GLOBALS._player.setPosition(Common::Point(330, 190));
	BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
	BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
	BF_GLOBALS._player.disableControl();

	_object6.postInit();
	_object6.setVisage(910);
	if ((BF_GLOBALS._v4CECE[3] == 2) && (BF_GLOBALS._v4CECE[4] == 2)) {
		_action1.setActionIndex(4);
	} else {
		_object6.animate(ANIM_MODE_2, NULL);
		_object6.setStrip(2);
	}
	_object6.setPosition(Common::Point(98, 34));
	_object6.setAction(&_action1);

	_object10.postInit();
	_object10.setVisage(910);
	_object10.setStrip(5);
	_object10.setFrame(1);
	_object10.setPosition(Common::Point(91, 66));

	_object11.postInit();
	_object11.setVisage(910);
	_object11.setStrip(8);
	_object11.setFrame(4);
	_object11.setPriority(48);

	_object9.init(1);
	_object9.setVisage(910);
	_object9.setStrip(6);
	_object9.setFrame(2);
	_object9.setPriority(50);

	_object8.init(2);
	_object8.setVisage(910);
	_object8.setStrip(6);
	_object8.setFrame(1);
	_object8.setPosition(Common::Point(114, 149));
	_object8.setPriority(246);

	if (BF_GLOBALS._dayNumber < 5)
		_item17.setDetails(Rect(0, 149, 29, 167), 910, -1, -1, -1, 1, NULL);

	if (BF_GLOBALS._v4CEE2 == 0)
		_item16.setDetails(Rect(265, 18, 319, 102), 910, -1, -1, -1, 1, NULL);

	_object10.setDetails(910, 6, -1, -1, 1, NULL);
	_item15.setDetails(Rect(0, 0, 320, 170), 910, 0, 1, 2, 1, NULL);
	_object9.setDetails(910, 52, 53, -1, 1, NULL);
	_object8.setDetails(910, 54, 55, -1, 1, NULL);
	_item2.setDetails(3, 910, 22, -1, 24, 1);
	_item4.setDetails(1, 910, 16, 17, 18, 1);
	_item8.setDetails(4, 910, 25, 26, 27, 1);
	_item6.setDetails(Rect(37, 58, 42, 67), 910, 34, 35, 36, 1, NULL);
	_item7.setDetails(Rect(114, 53, 135, 87), 910, 37, 38, 39, 1, NULL);
	_item1.setDetails(Rect(146, 67, 184, 93), 910, 40, 41, 42, 1, NULL);
	_item9.setDetails(Rect(266, 39, 274, 70), 910, 43, 44, 45, 1, NULL);
	_item10.setDetails(Rect(276, 27, 288, 83), 910, 46, 47, 48, 1, NULL);
	_item11.setDetails(Rect(295, 42, 312, 87), 910, 49, 50, 51, 1, NULL);
	_object11.setDetails(910, 28, -1, 30, 1, NULL);
	_item3.setDetails(7, 910, 59, 60, 61, 1);
	_item5.setDetails(2, 910, 19, 20, 21, 1);
	_item12.setDetails(6, 910, 28, 29, 30, 1);
	_item13.setDetails(5, 910, 31, 32, 33, 1);
	_item14.setDetails(Rect(0, 0, 320, 170), 910, 3, 4, 5, 1, NULL);
	if (BF_GLOBALS._dayNumber == 0) {
		BF_GLOBALS._dayNumber = 5;
		BF_GLOBALS._sceneManager._previousScene = 900;
		BF_GLOBALS.setFlag(7);
	}

	if (   (BF_GLOBALS._sceneManager._previousScene == 910)
		|| (BF_GLOBALS._sceneManager._previousScene == 190)
		|| (BF_GLOBALS._sceneManager._previousScene == 300)) {
		BF_GLOBALS._sceneManager._previousScene = 900;
		BF_GLOBALS._v4CEE2 = 0;
		BF_GLOBALS._v4CEE4 = 0;
	}

	_field2DE0 = 0;
	_field2DE2 = 0;
	_field2DE4 = 0;
	BF_GLOBALS.clearFlag(34);
	_object1._position.x = 0;

	if ((BF_GLOBALS._dayNumber == 5) && (BF_GLOBALS._sceneManager._previousScene == 900)){
		BF_GLOBALS.setFlag(34);
		BF_GLOBALS._v4CEC8 = 0;
		BF_GLOBALS._player.setVisage(129);

		_object1.postInit();
		_object1.setVisage(811);
		_object1.setPosition(Common::Point(-52, 217));
		_object1.animate(ANIM_MODE_1, NULL);
		_object1.setObjectWrapper(new SceneObjectWrapper());
		_object1._field90 = 0;
		_object1.setDetails(910, 69, 70, 71, 5, &_item4);
		BF_GLOBALS._v4CECE[0] = 3;
		BF_GLOBALS._v4CECE[12] = 2;
		BF_GLOBALS._v4CECE[13] = 4;
		BF_GLOBALS._v4CECE[14] = 3;
		BF_GLOBALS._v4CECE[15] = 3;
		BF_GLOBALS._v4CECE[16] = 4;
		BF_GLOBALS._v4CECE[17] = 1;
		BF_GLOBALS._v4CECA = 2;
		BF_GLOBALS._v4CEE0 = 1;
		_object9.setPosition(Common::Point(291, -30));
		BF_GLOBALS._v4CECC = 0;
	}

	if (BF_GLOBALS._sceneManager._previousScene == 920) {
		BF_GLOBALS.setFlag(34);
		BF_GLOBALS._player.setPosition(Common::Point(276, 119));
		BF_GLOBALS._player.setStrip(6);
		if (BF_GLOBALS._v4CECC == 0)
			_object9.setPosition(Common::Point(291, -30));
		if (BF_GLOBALS._dayNumber == 5) {
			_object2.postInit();
			_object2.setVisage(914);
			_object2.setStrip(5);
			_object2.setFrame(8);
			_object2.setPosition(Common::Point(263, 120));
			_object2.setDetails(910, 63, 64, 65, 5, &_item4);
			_object3.postInit();
			_object3.setVisage(918);
			_object3.setStrip(4);
			_object3.setFrame(1);
			_object3.setPosition(Common::Point(291, 127));
			_object3.setDetails(910, 66, 67, 68, 5, &_object2);
			_object1.postInit();
			_object1.setVisage(916);
			_object1.setPosition(Common::Point(155, 113));
			_object1.setStrip(3);
			_object1.setFrame(3);
			_object1._field90 = 1;
			_object1.setDetails(910, 69, 70, 71, 5, &_item4);
		}
		BF_GLOBALS._player.enableControl();
	} else if (BF_GLOBALS._sceneManager._previousScene == 935) {
		BF_GLOBALS.setFlag(34);
		BF_GLOBALS._v4CEC8 = 0;
		_object1.postInit();
		_object1.setVisage(916);
		_object1.setPosition(Common::Point(155, 113));
		_object1.setStrip(3);
		_object1.setFrame(3);
		_object1._field90 = 1;
		_object1.setDetails(910, 69, 70 ,71 , 5, &_item4);
		BF_GLOBALS._walkRegions.proc1(15);
		BF_GLOBALS._walkRegions.proc1(16);
		BF_GLOBALS._walkRegions.proc1(14);
		BF_GLOBALS._walkRegions.proc1(10);
		if (BF_GLOBALS.getFlag(8)) {
			BF_GLOBALS._player.setVisage(1911);
			BF_GLOBALS._player.animate(ANIM_MODE_NONE, 0, NULL);
			BF_GLOBALS._player.setFrame(7);
		}
		BF_GLOBALS._player.setPosition(Common::Point(174, 157));
		BF_GLOBALS._player._strip = 7;
		_object2.postInit();
		_object2.setVisage(913);
		_object2.setPosition(Common::Point(262, 124));
		_object2.setStrip(6);
		BF_GLOBALS._v4CEE6 = 0;
		BF_GLOBALS._v4CEE2 = 1;
		_object2.setDetails(910, 63, 64, 67, 5, &_item4);
		BF_GLOBALS._v4CECA = 2;
		if (BF_GLOBALS._v4CECC == 0)
			_object9.setPosition(Common::Point(291, -30));
		_sceneMode = 11;
		if (BF_GLOBALS._v4CEC8 == 0)
			add2Faders((const byte *)&unk_50E94, 2, 913, this);
		else
			add2Faders((const byte *)&unk_50E90, 2, 911, this);
	} else {
		BF_GLOBALS.clearFlag(8);
		BF_GLOBALS._player.disableControl();
	}

	if ((BF_GLOBALS._dayNumber == 5) && (BF_GLOBALS._v4CEE2 == 0)){
		_object7.postInit();
		_object7.setAction(&_action2);
	}

	if (BF_INVENTORY.getObjectScene(57) == 1)
		_object9.setPosition(Common::Point(540, 100));

	if (BF_INVENTORY.getObjectScene(59) == 1)
		_object8.setPosition(Common::Point(540, 100));

	if (BF_GLOBALS._v4CECC == 2) {
		_object9.setStrip(4);
		_object9.setFrame(2);
		_object9.setPosition(Common::Point(135, 93));
		_object9.setPriority(50);
		_object9._field90 = 1;
		_object10.setFrame(3);
	}

	if (BF_GLOBALS._v4CECA == 2) {
		_object8.setStrip(4);
		_object8.setFrame(1);
		_object8.setPosition(Common::Point(135, 93));
		_object8.fixPriority(50);
		_object8._field90 = 1;
		_object10.setFrame(3);
	}

	_object5.postInit();
	_object5.setVisage(919);
	_object5.setStrip(5);
	_object5.setPosition(Common::Point(286, 129));
	_object5.fixPriority(1);

	if (BF_GLOBALS._v4CEC8 == 0)
		_object5.hide();

	if (BF_GLOBALS._v4CEE0 == 0) {
		_object5.setFrame(1);
		_object11.setPosition(Common::Point(292, 107));
		if (BF_GLOBALS._v4CECC != 2)
			_object9.setPosition(Common::Point(288, 57));
		BF_GLOBALS._walkRegions.proc1(10);
	} else {
		_object5.setFrame(6);
		_object11.setPosition(Common::Point(295, 20));
		_object11.hide();
		if (BF_GLOBALS._v4CECC != 2)
			_object9.setPosition(Common::Point(291, -30));
		BF_GLOBALS._walkRegions.proc1(10);
	}

	if (BF_GLOBALS._v4CECE[17] != 0) {
		_sound1.play(100);
		_sound1.holdAt(1);
	}

	if (BF_GLOBALS._sceneManager._previousScene != 935) {
		_sceneMode = 11;
		if (BF_GLOBALS._v4CEC8 == 0)
			add2Faders((const byte *)&unk_50E9C, 10, 910, this);
		else
			add2Faders((const byte *)&unk_50E98, 10, 911, this);
	}
}

void Scene910::signal() {
	static uint32 v50EA0 = 0, v50EA4 = 0, v50EA8 = 0,v50EAC = 0, v50EB0 = 0, v50EB4 = 0, v50EB8 = 0;
	switch (_sceneMode) {
	case 2:
		_sceneMode = 3;
		_timer1.set(60, this);
		break;
	case 3:
		_sceneMode = 4;
		sub15E4F((const byte *)&v50EAC, 35, 910, this, 0, 111, 112, 255, false);
		break;
	case 4:
		_sceneMode = 5;
		_timer1.set(30, this);
		break;
	case 5:
		_sceneMode = 6;
		sub15E4F((const byte *)&v50EB0, 40, 910, this, 0, 111, 112, 255, false);
		break;
	case 6:
		_sceneMode = 7;
		_timer1.set(60, this);
		break;
	case 7:
		BF_GLOBALS._player.setVisage(129);
		_object1.setVisage(811);
		_object5.hide();
		_sceneMode = 8;
		sub15E4F((const byte *)&v50EB4, 95, 910, this, 0, 111, 112, 255, false);
		break;
	case 8:
		_sceneMode = 9;
		_timer1.set(30, this);
		break;
	case 9:
		_sceneMode = 0;
		sub15E4F((const byte *)&v50EB8, 100, 910, this, 0, 111, 112, 255, false);
		BF_GLOBALS._player.enableControl();
		break;
	case 10:
		BF_GLOBALS._player.disableControl();
		BF_GLOBALS._v51C44 = 0;
		BF_GLOBALS._sceneManager.changeScene(935);
		break;
	case 11:
		if (BF_GLOBALS._sceneManager._previousScene == 900) {
			if (BF_GLOBALS._v4CEC8 != 0)
				sub15E4F((const byte *)&v50EA4, 25, 910, NULL, 0, 111, 112, 255, false);
			if (BF_GLOBALS.getFlag(fWithLyle)) {
				NpcMover *mover = new NpcMover();
				Common::Point destPos(22, 157);
				_object1.addMover(mover, &destPos, NULL);
			}

			_sceneMode = 9100;
			setAction(&_sequenceManager1, this, 9100, &BF_GLOBALS._player, NULL);
		} else if (BF_GLOBALS._sceneManager._previousScene == 935) {
			_sceneMode = 9146;
			_stripManager.start(9103, this);
		}
		break;
	case 12:
		BF_GLOBALS._player.setVisage(129);
		BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
		BF_GLOBALS._player.setStrip(7);
		BF_GLOBALS._player.enableControl();
		break;
	case 13:
		BF_GLOBALS._player.disableControl();
		BF_GLOBALS._player.setAction(&_sequenceManager2, NULL, 9117, &_object2, NULL);
		BF_GLOBALS._v4CEE2 = 2;
	// No break on purpose
	case 15:
		_object3.postInit();
		_object3.setDetails(910, 66, 67, 68, 5, &_object2);
		BF_GLOBALS._v4CEE8 = 0;
		_sceneMode = 9121;
		setAction(&_sequenceManager1, this, 9121, &_object3, NULL);
		break;
	case 14:
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(940);
		break;
	case 16:
		_object1._field90 = 1;
		_sceneMode = 10;
		addFader((const byte *)&v50EA8, 2, this);
		BF_GLOBALS._v4CEE2 = 1;
		BF_GLOBALS._walkRegions.proc1(16);
		BF_GLOBALS._walkRegions.proc1(14);
		BF_GLOBALS._sceneItems.remove(&_item16);
		break;
	case 17:
		BF_GLOBALS._player._strip = 7;
		BF_GLOBALS._player._frame = 1;
		if (_field2DE2 == 0) {
			_field2DE2 = 1;
			if (BF_GLOBALS._v4CEE2 == 4) {
				_sceneMode = 9149;
				setAction(&_sequenceManager1, this, 9149, &BF_GLOBALS._player, NULL);
			} else {
				_sceneMode = 9141;
				setAction(&_sequenceManager1, this, 9141, &BF_GLOBALS._player, &_object2, NULL);
			}
		} else {
			SceneItem::display(910, 91, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			BF_GLOBALS._player.enableControl();
		}
		break;
	case 18:
		BF_GLOBALS._player._strip = 7;
		BF_GLOBALS._player._frame = 1;
		if (BF_GLOBALS._v4CEE4 == 3) {
			if (_field2DE4 == 0) {
				_field2DE4 = 1;
				_sceneMode = 9142;
				setAction(&_sequenceManager1, this, 9142, &BF_GLOBALS._player, &_object3, NULL);
			} else {
				SceneItem::display(910, 92, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
				BF_GLOBALS._player.enableControl();
			}
		} else {
			SceneItem::display(910, 94, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			BF_GLOBALS._player.enableControl();
		}
		break;
	case 19:
		BF_GLOBALS._deathReason = 14;
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(666);
		break;
	case 20:
		BF_GLOBALS._player.enableControl();
		break;
	case 9100:
		if (BF_GLOBALS._dayNumber == 5)
			BF_GLOBALS._walkRegions.proc1(1);
		BF_GLOBALS._player.enableControl();
		break;
	case 9101:
		if ((BF_GLOBALS._v4CEE0 == 0) && (BF_GLOBALS._v4CEC8 != 0) && (BF_GLOBALS._v4CECE[17] == 0) && (BF_INVENTORY.getObjectScene(INV_YELLOW_CORD) == 910) && (BF_INVENTORY.getObjectScene(INV_BLACK_CORD) == 910))
			BF_GLOBALS.clearFlag(fGotPointsForSearchingDA);
		else
			BF_GLOBALS.setFlag(fGotPointsForSearchingDA);
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(900);
		break;
	case 9102:
		if ((BF_GLOBALS._v4CECE[13] < 4) && (_object10._frame == 1))
			_object10.animate(ANIM_MODE_5, NULL);

		BF_GLOBALS._player.enableControl();
		_object12.postInit();
		_object12.setVisage(910);
		_object12.setStrip(3);
		_object12.setFrame(2);
		_object12.setPosition(Common::Point(160, 130));
		_object12.fixPriority(250);
		break;
	case 9103:
		BF_GLOBALS._player.enableControl();
		_object29.postInit();
		_object29.setVisage(910);
		_object29.setStrip(3);
		_object29.setFrame(2);
		_object29.setPosition(Common::Point(160, 130));
		_object29.fixPriority(250);
		break;
	case 9110:
		if (!BF_GLOBALS.getFlag(fGotPointsForCrate)) {
			BF_GLOBALS._uiElements.addScore(30);
			BF_GLOBALS.setFlag(fGotPointsForCrate);
		}
		BF_INVENTORY.setObjectScene(INV_BLACK_CORD, 1);
		_object8.setPosition(Common::Point(540, 100));
		BF_GLOBALS._player.enableControl();
		break;
	case 9111:
		if ((BF_GLOBALS._bookmark == bEndDayThree) && (!BF_GLOBALS.getFlag(fGotPointsForGeneratorOff))) {
				BF_GLOBALS._uiElements.addScore(30);
				BF_GLOBALS.setFlag(fGotPointsForGeneratorOff);
		}
		BF_INVENTORY.setObjectScene(INV_BLACK_CORD, 910);
		_object8.setStrip(6);
		_object8.setFrame(1);
		_object8.setPosition(Common::Point(114, 149));
		_object8.fixPriority(249);
		BF_GLOBALS._v4CECA = 0;
		_object8._field90 = 0;
		BF_GLOBALS._player.enableControl();
		break;
	case 9112:
		BF_GLOBALS._player._strip = 4;
		BF_GLOBALS._player._frame = 1;
		BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 1);
		_object9.setPosition(Common::Point(540, 100));
		BF_GLOBALS._player.enableControl();
		break;
	case 9113:
		BF_GLOBALS._player._strip = 4;
		BF_GLOBALS._player._frame = 1;
		BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 910);
		_object9.setStrip(6);
		_object9.setFrame(2);
		_object9.setPosition(Common::Point(_object11._position.x - 50, _object11._position.y - 4));
		_object9.fixPriority(50);
		BF_GLOBALS._v4CECC = 0;
		_object9._field90 = 0;
		_object9.show();
		BF_GLOBALS._player.enableControl();
		break;
	case 9114:
		_object11.hide();
		if ((BF_GLOBALS._dayNumber == 5) && (BF_GLOBALS._v4CEE2 == 0)) {
			BF_GLOBALS._player.disableControl();
			_object2.postInit();
			_object2.setDetails(910, 63, 64, 65, 5, &_item4);
			BF_GLOBALS._v4CEE6 = 0;
			_object7.postInit();
			_action2.remove();
			_sceneMode = 9116;
			setAction(&_sequenceManager1, this, 9116, &_object2, NULL);
		} else {
			BF_GLOBALS._player.enableControl();
		}
		break;
	case 9115:
		BF_GLOBALS._player.enableControl();
		break;
	case 9116:
		BF_GLOBALS._player.disableControl();
		_sceneMode = 16;
		_stripManager.start(9119, this);
		break;
	case 9118:
	// No break on purpose
	case 9137:
		BF_GLOBALS._deathReason = 16;
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(666);
		break;
	case 9119:
		if (!BF_GLOBALS.getFlag(fGotPointsForCordOnForklift)) {
			BF_GLOBALS._uiElements.addScore(30);
			BF_GLOBALS.setFlag(fGotPointsForCordOnForklift);
		}
		BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 0);
		BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, 1);
		BF_GLOBALS._player.enableControl();
		break;
	case 9120:
		BF_GLOBALS._walkRegions.proc1(7);
		BF_GLOBALS._player.enableControl();
		break;
	case 9121:
		_item3.setDetails(7, 910, 96, 60, 61, 3);
		BF_GLOBALS._v4CEE4 = 2;
		if (BF_GLOBALS._v4CEE2 == 4) {
			_sceneMode = 20;
			_stripManager.start(9115, this);
		} else {
			BF_GLOBALS._player.enableControl();
		}
		break;
	case 9123:
		BF_GLOBALS.clearFlag(gunDrawn);
		switch (_field2DDA - 1) {
		case 0:
			_sceneMode = 9102;
			setAction(&_sequenceManager1, this, 9102, &BF_GLOBALS._player, NULL);
			break;
		case 1:
			_sceneMode = 9103;
			setAction(&_sequenceManager1, this, 9103, &BF_GLOBALS._player, NULL);
			break;
		case 2:
			_sceneMode = 9143;
			setAction(&_sequenceManager1, this, 9143, &BF_GLOBALS._player, NULL);
			break;
		case 3:
			_sceneMode = 9110;
			setAction(&_sequenceManager1, this, 9110, &BF_GLOBALS._player, &_object8, NULL);
			break;
		case 4:
			_sceneMode = 9111;
			setAction(&_sequenceManager1, this, 9111, &BF_GLOBALS._player, &_object8, NULL);
			break;
		case 5:
			switch (BF_GLOBALS._v4CEE2 - 1) {
			case 0:
				_sceneMode = 9118;
				setAction(&_sequenceManager1, this, 9118, &BF_GLOBALS._player, &_object2, NULL);
				break;
			case 1:
				_sceneMode = 9148;
				setAction(&_sequenceManager1, this, 9148, &BF_GLOBALS._player, &_object2, NULL);
				break;
			case 2:
			// No break on purpose
			case 3: {
				_sceneMode = 17;
				PlayerMover *mover = new PlayerMover();
				Common::Point destPos(232, 138);
				BF_GLOBALS._player.addMover(mover, &destPos, this);
				}
			default:
				break;
			}
			break;
		case 6: {
			_sceneMode = 18;
			PlayerMover *mover = new PlayerMover();
			Common::Point destPos(248, 137);
			BF_GLOBALS._player.addMover(mover, &destPos, this);
			break;
			}
		case 7: {
			_sceneMode = 9112;
			PlayerMover *mover = new PlayerMover();
			Common::Point destPos(285, 114);
			BF_GLOBALS._player.addMover(mover, &destPos, this);
			break;
			}
		case 8: {
			_sceneMode = 9113;
			PlayerMover *mover = new PlayerMover();
			Common::Point destPos(285, 114);
			BF_GLOBALS._player.addMover(mover, &destPos, this);
			break;
			}
		case 9:
			_sceneMode = 9119;
			setAction(&_sequenceManager1, this, 9119, &BF_GLOBALS._player, &_object2, &_object9, NULL);
			break;
		case 10:
			_object9.fixPriority(127);
			if (_object9._position.x != 267)
				_object9.hide();
			_sceneMode = 9136;
			setAction(&_sequenceManager1, this, 9136, &BF_GLOBALS._player, &_object3, &_object9, NULL);
			BF_GLOBALS._v4CEE4 = 3;
			break;
		case 11:
			_sceneMode = 9137;
			setAction(&_sequenceManager1, this, 9137, &BF_GLOBALS._player, &_object2, NULL);
			break;
		default:
			BF_GLOBALS._player.enableControl();
			PlayerMover *mover = new PlayerMover();
			Common::Point destPos(_field2DDC, _field2DDE);
			BF_GLOBALS._player.addMover(mover, &destPos, NULL);
			break;
		}
	case 9124:
		BF_GLOBALS._player.enableControl();
		BF_GLOBALS.setFlag(gunDrawn);
		break;
	case 9125:
		BF_GLOBALS.setFlag(fBackupAt340);
		BF_GLOBALS._v4CEE2 = 4;
		_object3.postInit();
		_object2.setDetails(910, 72, 73, 74, 3, NULL);
		_object3.setDetails(910, 66, 67, 68, 5, &_object2);
		BF_GLOBALS._v4CEE8 = 0;
		_sceneMode = 9121;
		setAction(&_sequenceManager1, this, 9121, &_object3, NULL);
		break;
	case 9126:
		_sceneMode = 19;
		if (BF_GLOBALS._v4CEE4 == 0)
			signal();
		else
			_stripManager.start(9115, this);
		break;
	case 9129:
	// No break on purpose
	case 9134:
		BF_GLOBALS._deathReason = 17;
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(666);
		break;
	case 9130:
		_object1.setAction(&_sequenceManager2, NULL, 9133, &_object1, NULL);
		BF_GLOBALS._v4CECE[14] = 3;
		subE82BD();
		BF_GLOBALS._walkRegions.proc1(15);
		break;
	case 9132:
		BF_GLOBALS._player.enableControl();
		BF_GLOBALS._v4CEE4 = 4;
		BF_GLOBALS._deathReason = 13;
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(666);
		break;
	case 9135:
		BF_GLOBALS._deathReason = 15;
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(666);
		break;
	case 9136:
		if (!BF_GLOBALS.getFlag(fGotPointsForCuffingNico)) {
			BF_GLOBALS._uiElements.addScore(30);
			BF_GLOBALS.setFlag(fGotPointsForCuffingNico);
		}
		_object1.setAction(&_sequenceManager2, NULL, 9131, &_object1, NULL);
		BF_GLOBALS._walkRegions.proc2(16);
		if (BF_GLOBALS._v4CEE2 == 4)
			BF_INVENTORY.setObjectScene(INV_YELLOW_CORD, 0);
		else
			BF_INVENTORY.setObjectScene(INV_HALF_YELLOW_CORD, 910);
		_object4.postInit();
		_object4.setDetails(910, 86, 87, 88, 4, &_item8);
		_sceneMode = 9139;
		setAction(&_sequenceManager1, this, 9139, &_object4, &BF_GLOBALS._player, NULL);
		break;
	case 9139:
		BF_GLOBALS._walkRegions.proc1(4);
		_field2DE0 = 1;
		BF_GLOBALS._player.enableControl();
		break;
	case 9140:
		_sceneMode = 14;
		addFader((const byte *)&v50EA0, 2, this);
		break;
	case 9141:
		BF_INVENTORY.setObjectScene(INV_22_SNUB, 1);
		if (!BF_GLOBALS.getFlag(fGotPointsForCuffingDA)) {
			BF_GLOBALS._uiElements.addScore(30);
			BF_GLOBALS.setFlag(fGotPointsForCuffingDA);
		}
		BF_GLOBALS._player.enableControl();
		break;
	case 9142:
		BF_GLOBALS._player.enableControl();
		if (!BF_GLOBALS.getFlag(fGotPointsForSearchingNico)) {
			BF_GLOBALS._uiElements.addScore(30);
			BF_GLOBALS.setFlag(fGotPointsForSearchingNico);
		}
		break;
	case 9143:
		if (BF_GLOBALS._v4CEE2 == 0) {
			BF_GLOBALS._v51C44 = 1;
			BF_GLOBALS._sceneManager.changeScene(920);
		} else {
			SceneItem::display(910, 89, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
			_sceneMode = 9144;
			setAction(&_sequenceManager1, this, 9144, &BF_GLOBALS._player, NULL);
		}
		break;
	case 9144:
	// No break on purpose
	case 9146:
		BF_GLOBALS._player.enableControl();
		break;
	case 9148:
		BF_GLOBALS._deathReason = 23;
		BF_GLOBALS._v51C44 = 1;
		BF_GLOBALS._sceneManager.changeScene(666);
		break;
	case 9149:
		SceneItem::display(910, 74, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		BF_INVENTORY.setObjectScene(INV_22_SNUB, 1);
		BF_GLOBALS._player.enableControl();
		BF_GLOBALS._player.setVisage(129);
		BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
		BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
		BF_GLOBALS._player._strip = 7;
		BF_GLOBALS._player._frame = 1;
		break;
	default:
		break;
	}
}

void Scene910::process(Event &event) {
	SceneExt::process(event);
	if ((!BF_GLOBALS._player._enabled) || (event.mousePos.y >= 167))
		return;

	if (_item7._bounds.contains(event.mousePos)) {
		GfxSurface surface = _cursorVisage.getFrame(6);
		BF_GLOBALS._events.setCursor(surface);
	}

	if ((BF_GLOBALS._v4CEE0 == 0) || (BF_GLOBALS._v4CEE2 != 0)) {
		if (!_item16._bounds.contains(event.mousePos)) {
			CursorType cursorId = BF_GLOBALS._events.getCursor();
			BF_GLOBALS._events.setCursor(cursorId);
		} else {
			GfxSurface surface = _cursorVisage.getFrame(8);
			BF_GLOBALS._events.setCursor(surface);
		}
	}

	if (event.eventType != 1)
		return;

	switch (BF_GLOBALS._events.getCursor()) {
	case INV_COLT45:
		if (!BF_GLOBALS._player._bounds.contains(event.mousePos))
			break;
		if (BF_GLOBALS.getFlag(gunDrawn)) {
			BF_GLOBALS._player.disableControl();
			_field2DDC = BF_GLOBALS._player._position.x;
			_field2DDE = BF_GLOBALS._player._position.y;
			_sceneMode = 9123;
			setAction(&_sequenceManager1, this, 9123, &BF_GLOBALS._player, NULL);
			event.handled = true;
		} else if (BF_GLOBALS._v4CEE2 <= 1) {
			if (BF_GLOBALS.getFlag(fCanDrawGun)) {
				BF_GLOBALS._player.addMover(NULL);
				BF_GLOBALS._player.disableControl();
				_sceneMode = 9124;
				setAction(&_sequenceManager1, this, 9124, &BF_GLOBALS._player, NULL);
			} else
				SceneItem::display(1, 4, SET_WIDTH, 312,
					SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
					SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
					SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
					SET_EXT_FGCOLOR, 13, LIST_END);
		} else
			SceneItem::display(910, 81, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		break;
	case CURSOR_WALK:
		if (BF_GLOBALS._v4CEE2 == 1) {
			BF_GLOBALS._player.disableControl();
			if (BF_GLOBALS._player._visage == 1911) {
				BF_GLOBALS._player.disableControl();
				_field2DDC = event.mousePos.x;
				_field2DDE = event.mousePos.y;
				_field2DDA = 6;
				_sceneMode = 9123;
				setAction(&_sequenceManager1, this, 9123, &BF_GLOBALS._player, NULL);
			} else {
				_sceneMode = 9118;
				setAction(&_sequenceManager1, this, 9118, &BF_GLOBALS._player, &_object2, NULL);
				event.handled = true;
			}
		} else if (BF_GLOBALS._player._visage == 1911) {
			BF_GLOBALS._player.disableControl();
			_field2DDC = event.mousePos.x;
			_field2DDE = event.mousePos.y;
			_field2DDA = 0;
			_sceneMode = 9123;
			setAction(&_sequenceManager1, this, 9123, &BF_GLOBALS._player, NULL);
		}
	default:
		break;
	}
}

void Scene910::dispatch() {
	SceneExt::dispatch();
	if (_action)
		return;

	if ((_sceneMode != 14) && (BF_GLOBALS._player._position.x < 30) && (BF_GLOBALS._player._position.y > 148)) {
		BF_GLOBALS._player.disableControl();
		if (BF_GLOBALS._dayNumber != 5) {
			_sceneMode = 9101;
			setAction(&_sequenceManager1, this, 9101, &BF_GLOBALS._player, NULL);
		} else {
			_sceneMode = 9146;
			if (BF_GLOBALS._v4CEE0 == 0)
				setAction(&_sequenceManager1, this, 9146, &BF_GLOBALS._player, NULL);
			else
				setAction(&_sequenceManager1, this, 9145, &BF_GLOBALS._player, NULL);
		}
	}

	if ((BF_GLOBALS._player._position.x > 265) && (BF_GLOBALS._player._position.y < 102) && (BF_GLOBALS._v4CEE0 != 0) && (_sceneMode != 9143)) {
		BF_GLOBALS._player.disableControl();
		if (BF_GLOBALS.getFlag(gunDrawn)) {
			_field2DDA = 3;
			_sceneMode = 9123;
			setAction(&_sequenceManager1, this, 9123, &BF_GLOBALS._player, NULL);
		} else if (BF_GLOBALS._v4CEE2 == 0) {
			_sceneMode = 9143;
			setAction(&_sequenceManager1, this, 9143, &BF_GLOBALS._player, NULL);
		} else {
			SceneItem::display(910, 98, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
			_sceneMode = 9144;
			setAction(&_sequenceManager1, this, 9144, &BF_GLOBALS._player, NULL);
		}
	}

	if ((BF_GLOBALS._dayNumber == 5) && (BF_GLOBALS._player._position.x > 250) && (_sceneMode != 9135) && (_sceneMode != 11) && (BF_GLOBALS._v4CEE0 != 0) && (BF_GLOBALS._v4CEE2 == 0)) {
		BF_GLOBALS._player.disableControl();
		_object7.remove();
		_action2.remove();
		_object2.postInit();
		_object2.setDetails(910, 63, 64, 65, 5, &_item4);
		_sceneMode = 9135;
		setAction(&_sequenceManager1, this, 9135, &BF_GLOBALS._player, &_object2, NULL);
	}

}

void Scene910::checkGun() {
	if ((BF_GLOBALS._dayNumber == 5) && (BF_GLOBALS._v4CEE2 == 0) && (BF_GLOBALS._v4CEE0 != 0))
		SceneItem::display(910, 70, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
	else
		SceneExt::checkGun();
}

void Scene910::subE82BD() {
	if (BF_GLOBALS._v4CEE0 != 0)
		return;

	if (! BF_GLOBALS.getFlag(fGotPointsForLightsOn)) {
		BF_GLOBALS._uiElements.addScore(50);
		BF_GLOBALS.setFlag(fGotPointsForLightsOn);
	}
	BF_GLOBALS._v4CEE0 = 1;
	BF_GLOBALS._player.disableControl();
	BF_GLOBALS._walkRegions.proc2(10);
	_sceneMode = 9114;
	_sound2.play(42);
	if ((BF_GLOBALS._v4CECC == 0) && (BF_INVENTORY.getObjectScene(INV_YELLOW_CORD) == 910))
		setAction(&_sequenceManager1, this, 9127, &_object11, &_object9, &_object5, NULL);
	else
		setAction(&_sequenceManager1, this, 9114, &_object11, &_object5, NULL);
}

void Scene910::subE83E1() {
	if (BF_GLOBALS._v4CEE0 != 0) {
		_object11.show();
		if ((BF_GLOBALS._bookmark == 21) && (!BF_GLOBALS.getFlag(80))) {
			BF_GLOBALS._uiElements.addScore(30);
			BF_GLOBALS.setFlag(80);
		}
		BF_GLOBALS._v4CEE0 = 0;
		BF_GLOBALS._walkRegions.proc1(10);
		BF_GLOBALS._player.disableControl();
		_sceneMode = 9115;
		_sound2.play(42);
		if ((BF_GLOBALS._v4CECC == 0) && (BF_INVENTORY.getObjectScene(57) == 910))
			setAction(&_sequenceManager1, this, 9128, &_object11, &_object9, &_object5, NULL);
		else
			setAction(&_sequenceManager1, this, 9115, &_object11, &_object5, NULL);
	}

	if ((BF_GLOBALS._dayNumber == 5) && (BF_GLOBALS._v4CEE2 == 0)) {
		// _objectList.draw();
		if (BF_GLOBALS._sceneObjects->contains(&_object12))
			_object12.remove();
		if (BF_GLOBALS._sceneObjects->contains(&_object29))
			_object29.remove();

		BF_GLOBALS._player.disableControl();
		_sceneMode = 9120;
		BF_GLOBALS._player.setAction(&_sequenceManager2, NULL, 9120, &BF_GLOBALS._player, &_object1, NULL);
		BF_GLOBALS._walkRegions.proc2(1);
	}
}

/*--------------------------------------------------------------------------
 * Scene 920 - Inside Warehouse: Secret Room
 *
 *--------------------------------------------------------------------------*/
// Crate
bool Scene920::Item1::startAction(CursorType action, Event &event) {
	Scene920 *scene = (Scene920 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_LOOK:
		if ((BF_GLOBALS.getFlag(fCrateOpen)) && (BF_GLOBALS._player._visage == 921)) {
			BF_GLOBALS._player.disableControl();
			scene->_crateWindow.postInit();
			scene->_sceneMode = 9204;
			if (!BF_GLOBALS.getFlag(fGotPointsForBoots)) {
				BF_GLOBALS._uiElements.addScore(30);
				BF_GLOBALS.setFlag(fGotPointsForBoots);
			}
			scene->setAction(&scene->_sequenceManager1, scene, 9204, &BF_GLOBALS._player, &scene->_crateWindow, NULL);
			return true;
		} else
			return NamedHotspot::startAction(action, event);
		break;
	case CURSOR_USE:
		BF_GLOBALS._player.disableControl();
		if (BF_GLOBALS.getFlag(fCrateOpen)) {
			if (BF_GLOBALS._player._visage == 921) {
				if ((BF_INVENTORY.getObjectScene(15) != 1) && (BF_GLOBALS.getFlag(fSawGuns))) {
					scene->_sceneMode = 9207;
					scene->setAction(&scene->_sequenceManager1, scene, 9207, &BF_GLOBALS._player, NULL);
				} else {
					scene->_sceneMode = 9203;
					scene->setAction(&scene->_sequenceManager1, scene, 9203, &BF_GLOBALS._player, &scene->_crateTop, NULL);
					BF_GLOBALS.clearFlag(fCrateOpen);
				}
			} else {
				scene->_sceneMode = 9205;
				scene->setAction(&scene->_sequenceManager1, scene, 9205, &BF_GLOBALS._player, NULL);
			}
		} else {
			scene->_sceneMode = 9202;
			scene->setAction(&scene->_sequenceManager1, scene, 9202, &BF_GLOBALS._player, &scene->_crateTop, NULL);
			BF_GLOBALS.setFlag(fCrateOpen);
		}
		return true;
		break;
	default:
		return NamedHotspot::startAction(action, event);
		break;
	}
}

// North Exit
bool Scene920::Item8::startAction(CursorType action, Event &event) {
	Scene920 *scene = (Scene920 *)BF_GLOBALS._sceneManager._scene;

	BF_GLOBALS._player.disableControl();
	if (BF_GLOBALS._player._visage == 921) {
		scene->_sceneMode = 10;
		scene->setAction(&scene->_sequenceManager1, scene, 9206, &BF_GLOBALS._player, NULL);
		// TO BE CHECKED: Original code uses a variable to store the address of scene instance.
		// As it's used later a coordinates to create a playermover, I don't understand.
		// On the other hand, it's not really important as just after the hero leaves the scene
		// so the variable is no longer used.
		// scene->_oldCoord = &scene;
		_field10 = 1;
	} else {
		scene->_sceneMode = 9201;
		scene->setAction(&scene->_sequenceManager1, scene, 9201, &BF_GLOBALS._player, NULL);
	}
	return true;
}

void Scene920::postInit(SceneObjectList *OwnerList) {
	SceneExt::postInit();
	loadScene(920);

	_stripManager.addSpeaker(&_gameTextSpeaker);
	_stripManager.addSpeaker(&_jakeJacketSpeaker);
	if (BF_GLOBALS._dayNumber == 0)
		BF_GLOBALS._dayNumber = 4;
	BF_GLOBALS._player.postInit();
	if (BF_GLOBALS._v4CEC8 != 0) {
		_doorway.postInit();
		_doorway.setVisage(922);
		_doorway.setStrip(2);
		_doorway.fixPriority(1);
		_doorway.setPosition(Common::Point(145, 82));
	}

	_crateTop.postInit();
	_crateTop.setVisage(922);
	if (BF_GLOBALS.getFlag(fCrateOpen)) {
		_crateTop.setStrip(3);
		_crateTop.setFrame(5);
	}

	_crateTop.setPosition(Common::Point(158, 107));
	_crateTop.fixPriority(130);

	_exitN.setDetails(Rect(116, 12, 165, 81), 920, -1, -1, -1, 1, NULL);
	_item6.setDetails(6, 920, 15, 16, 17, 1);
	_item4.setDetails(5, 920, 12, 13, 14, 1);
	_item7.setDetails(4, 920, 9, 10, 11, 1);
	_item5.setDetails(3, 920, 6, 7, 8, 1);
	_crate.setDetails(2, 920, 3, 4, 5, 1);
	_item3.setDetails(1, 920, 3, 4, 5, 1);
	_item2.setDetails(Rect(0, 0, 320, 200), 920, 0, 1, 2, 1, NULL);

	BF_GLOBALS._player.disableControl();
	_sceneMode = 9200;
	setAction(&_sequenceManager1, this, 9200, &BF_GLOBALS._player, NULL);
}

void Scene920::signal() {
	switch (_sceneMode) {
	case 10:
		_sceneMode = 9201;
		setAction(&_sequenceManager1, this, 9201, &BF_GLOBALS._player, NULL);
		break;
	case 9201:
		if (BF_GLOBALS.getFlag(fCrateOpen))
			BF_GLOBALS.setFlag(fLeftTraceIn920);
		else
			BF_GLOBALS.clearFlag(fLeftTraceIn920);
		BF_GLOBALS._sceneManager.changeScene(910);
		break;
	case 9204:
		_crateWindow.remove();
		BF_GLOBALS.setFlag(fSawGuns);
		BF_GLOBALS._player.enableControl();
		break;
	case 9206: {
		BF_GLOBALS._player.enableControl();
		PlayerMover *mover = new PlayerMover();
		BF_GLOBALS._player.addMover(mover, &_oldCoord, NULL);
		break;
		}
	case 9207:
		BF_GLOBALS._player.enableControl();
		BF_GLOBALS._uiElements.addScore(30);
		BF_INVENTORY.setObjectScene(15, 1);
		BF_GLOBALS._bookmark = bEndDayThree;
		break;
	default:
		BF_GLOBALS._player.enableControl();
		break;
	}
}
void Scene920::process(Event &event) {
	SceneExt::process(event);
	if (BF_GLOBALS._player._enabled && !_focusObject && (event.mousePos.y < (BF_INTERFACE_Y - 1))) {
		if (_exitN.contains(event.mousePos)) {
			GfxSurface surface = _cursorVisage.getFrame(EXITFRAME_N);
			BF_GLOBALS._events.setCursor(surface);
		} else {
			CursorType cursorId = BF_GLOBALS._events.getCursor();
			BF_GLOBALS._events.setCursor(cursorId);
		}
	}
	if ((event.eventType == EVENT_BUTTON_DOWN) && (BF_GLOBALS._events.getCursor() == CURSOR_WALK) && (BF_GLOBALS._player._visage == 921)) {
		BF_GLOBALS._player.disableControl();
		_sceneMode = 9206;
		setAction(&_sequenceManager1, this, 9206, &BF_GLOBALS._player, NULL);
		_oldCoord = event.mousePos;
		event.handled = true;
	}
}

void Scene920::dispatch() {
	SceneExt::dispatch();
	if ((_action == 0) && (BF_GLOBALS._player._position.y < 75)) {
		BF_GLOBALS._player.disableControl();
		BF_GLOBALS._sceneManager.changeScene(910);
	}
}

void Scene920::synchronize(Serializer &s) {
	SceneExt::synchronize(s);
	s.syncAsSint16LE(_oldCoord.x);
	s.syncAsSint16LE(_oldCoord.y);
}

/*--------------------------------------------------------------------------
 * Scene 930 - Inside the caravan
 *
 *--------------------------------------------------------------------------*/
/* Objects */
bool Scene930::Object1::startAction(CursorType action, Event &event) {
// Small box
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;
	bool result;

	if ((action == CURSOR_USE) && (!BF_GLOBALS.getFlag(93))) {
		scene->setAction(&scene->_action2);
		result = true;
	} else
		result = NamedObject::startAction(action, event);

	return result;
}

bool Scene930::Object2::startAction(CursorType action, Event &event) {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	if (action != CURSOR_USE)
		return NamedObject::startAction(action, event);

	NamedObject::startAction(action, event);
	BF_GLOBALS._uiElements.addScore(30);
	BF_INVENTORY.setObjectScene(54, 1);
	BF_GLOBALS.setFlag(93);
	remove();
	scene->_box.remove();
	return true;
}

bool Scene930::Object3::startAction(CursorType action, Event &event) {
// Boots
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	if (action != CURSOR_USE)
		return NamedObject::startAction(action, event);

	if (scene->_v141C == 0)
		scene->setAction(&scene->_action1);
	return true;
}

bool Scene930::Object4::startAction(CursorType action, Event &event) {
// Boot window
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_WALK:
		return true;
	case CURSOR_LOOK:
		if (BF_GLOBALS._bookmark >= bFlashBackTwo) {
			_lookLineNum = 94;
			return NamedObject::startAction(action, event);
		} else {
			BF_GLOBALS._player.disableControl();
			NamedObject::startAction(action, event);
			BF_GLOBALS._bookmark = bFlashBackTwo;
			scene->_sceneMode = 2;
			scene->signal();
			return true;
		}
		break;
	case CURSOR_USE:
		if (BF_GLOBALS._bookmark >= bFlashBackTwo) {
			_lookLineNum = 71;
			NamedObject::startAction(action, event);
			scene->subF3D6F();
			remove();
		} else
			NamedObject::startAction(action, event);
		return true;
	default:
		return NamedObject::startAction(action, event);
		break;
	}
}

void Scene930::Object4::remove() {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	if (scene->_v141C && !BF_GLOBALS._sceneObjects->contains(&scene->_object5)) {
		scene->_boots.setAction(&scene->_action3);
	}

	FocusObject::remove();
}

bool Scene930::Object5::startAction(CursorType action, Event &event) {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	switch (action) {
	case CURSOR_WALK:
		return true;
	case CURSOR_USE:
		if (BF_INVENTORY.getObjectScene(55) == 1)
			return NamedObject::startAction(action, event);
		if (scene->_v141A == 0) {
			animate(ANIM_MODE_4, getFrameCount() - 1, 1, NULL);
			scene->_v141A = 1;
			_lookLineNum = 76;
			_useLineNum = 78;
		} else {
			BF_GLOBALS._uiElements.addScore(50);
			BF_INVENTORY.setObjectScene(55, 1);
			setFrame2(getFrameCount());
			_lookLineNum = 92;
			_useLineNum = -1;
		}
		return true;
	default:
		return NamedObject::startAction(action, event);
		break;
	}
}

void Scene930::Object5::remove() {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;
	scene->_boots.setAction(&scene->_action3);

	FocusObject::remove();
}

/* Items */
bool Scene930::Item1::startAction(CursorType action, Event &event) {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	if ((action == CURSOR_WALK) || (action == CURSOR_USE)) {
		BF_GLOBALS._player.disableControl();
		scene->_sceneMode = 1;
		scene->setAction(&scene->_sequenceManager1, scene, 9301, &BF_GLOBALS._player, NULL);
		return true;
	} else
		return NamedHotspot::startAction(action, event);
}

/* Actions */
void Scene930::Action1::signal() {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		setDelay(10);
		BF_GLOBALS._player.disableControl();
		scene->_v141C = 1;
		break;
	case 1: {
		Common::Point pt(50, 142);
		PlayerMover *mover = new PlayerMover();
		BF_GLOBALS._player.addMover(mover, &pt, this);
		break;
		}
	case 2:
		BF_GLOBALS._player.changeAngle(270);
		setDelay(10);
		break;
	case 3:
		BF_GLOBALS._player.changeZoom(110);
		BF_GLOBALS._player.setVisage(931);
		BF_GLOBALS._player.setStrip(1);
		BF_GLOBALS._player.setFrame(1);
		BF_GLOBALS._player.animate(ANIM_MODE_4, 4, 1, this);
		break;
	case 4:
		scene->_boots.setFrame(2);
		BF_GLOBALS._player.animate(ANIM_MODE_5, this);
		break;
	case 5:
		scene->showBootWindow();
		if (!BF_GLOBALS.getFlag(72)) {
			BF_GLOBALS._uiElements.addScore(30);
			BF_GLOBALS.setFlag(72);
		}
		SceneItem::display(0, 312);
		BF_GLOBALS._player.enableControl();
		remove();
		break;
	default:
		break;
	}
}
void Scene930::Action2::signal() {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		setDelay(10);
		BF_GLOBALS._player.disableControl();
		break;
	case 1: {
		Common::Point pt(176, 137);
		PlayerMover *mover = new PlayerMover();
		BF_GLOBALS._player.addMover(mover, &pt, this);
		break;
		}
	case 2:
		setDelay(10);
		break;
	case 3:
		SceneItem::display(930, scene->_box._useLineNum, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		scene->subF3C07();
		BF_GLOBALS._player.enableControl();
		remove();
		break;
	default:
		break;
	}
}

void Scene930::Action3::signal() {
	Scene930 *scene = (Scene930 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex++) {
	case 0:
		BF_GLOBALS._player.disableControl();
		BF_GLOBALS._player.animate(ANIM_MODE_4, 4, -1, this);
		break;
	case 1:
		scene->_boots.setFrame(1);
		BF_GLOBALS._player.animate(ANIM_MODE_6, this);
		break;
	case 2:
		BF_GLOBALS._player.changeZoom(-1);
		BF_GLOBALS._player.setVisage(368);
		BF_GLOBALS._player.setStrip(6);
		BF_GLOBALS._player.setFrame(1);
		scene->_v141C = 0;
		remove();
		BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
		BF_GLOBALS._player.enableControl();
		break;
	default:
		break;
	}
}

void Scene930::postInit(SceneObjectList *OwnerList) {
	PalettedScene::postInit();
	loadScene(930);

	BF_GLOBALS._sound1.changeSound(85);
	if (BF_GLOBALS._dayNumber == 0)
		BF_GLOBALS._dayNumber = 1;
	setZoomPercents(83, 75, 140, 100);
	_v141A = 0;
	_v141C = 0;
	if (BF_INVENTORY.getObjectScene(54) != 1) {
		_box.postInit();
		_box.setVisage(930);
		_box.setStrip(1);
		_box.setPosition(Common::Point(223, 21));
		_box.setDetails(930, 66, 67, 68, 1, NULL);
	}
	_boots.postInit();
	_boots.setVisage(930);
	_boots.setStrip(2);
	_boots.setPosition(Common::Point(9, 161));
	_boots.fixPriority(120);
	_boots.setDetails(930, 62, 63, 64, 1, NULL);

	BF_GLOBALS._player.postInit();
	BF_GLOBALS._player.setVisage(368);
	BF_GLOBALS._player.setObjectWrapper(new SceneObjectWrapper());
	BF_GLOBALS._player.animate(ANIM_MODE_1, NULL);
	BF_GLOBALS._player.setPosition(Common::Point(170, 92));
	BF_GLOBALS._player.fixPriority(80);
	BF_GLOBALS._player.changeZoom(-1);
	BF_GLOBALS._player.enableControl();

	_item1.setDetails(  1, 930,  0,  1,  2, 1);
	_item2.setDetails(  2, 930,  4,  5,  6, 1);
	_item3.setDetails(  3, 930,  8,  9, 10, 1);
	_item4.setDetails(  4, 930, 12, 13, 14, 1);
	_item5.setDetails(  5, 930, 16, 17, 18, 1);
	_item6.setDetails( 20, 930, 20, 21, 22, 1);
	_item7.setDetails(  6, 930, 23, 24, 25, 1);
	_item8.setDetails(  7, 930, 26, 27, 28, 1);
	_item21.setDetails( 8, 930, 89, 90, 91, 1);
	_item9.setDetails(  9, 930, 29, 30, 31, 1);
	_item20.setDetails(10, 930, 86, 87, 88, 1);
	_item10.setDetails(11, 930, 33, 34, 35, 1);
	_item11.setDetails(12, 930, 37, 38, 39, 1);
	_item13.setDetails(13, 930, 40, 41, 42, 1);
	_item14.setDetails(14, 930, 44, 45, 46, 1);
	_item15.setDetails(15, 930, 48, 49, 50, 1);
	_item16.setDetails(16, 930, 52, 53, 54, 1);
	_item17.setDetails(17, 930, 56, 57, 58, 1);
	_item12.setDetails(18, 930, 59, 60, 61, 1);
	_item18.setDetails(19, 930, 80, 81, 82, 1);
	_item19.setDetails(21, 930, 83, 84, 85, 1);

	if (BF_GLOBALS._sceneManager._previousScene != 935) {
		BF_GLOBALS._player.disableControl();
		_sceneMode = 0;
		setAction(&_sequenceManager1, this, 9300, &BF_GLOBALS._player, NULL);
	} else {
		_v141C = 1;
		BF_GLOBALS._player.animate(ANIM_MODE_NONE);
		BF_GLOBALS._player.setPosition(Common::Point(50, 142));
		BF_GLOBALS._player.setVisage(931);
		BF_GLOBALS._player.setStrip(1);
		BF_GLOBALS._player.setFrame(9);
		BF_GLOBALS._player.fixPriority(-1);
		BF_GLOBALS._player.enableControl();
		BF_GLOBALS._player.changeZoom(110);
		_boots.setFrame(2);
		showBootWindow();
	}

}

void Scene930::signal() {
	static uint32 v50EC4 = 0;

	switch (_sceneMode++) {
	case 1:
		BF_GLOBALS._sceneManager.changeScene(550);
		break;
	case 2:
		_sceneMode = 3;
		SceneItem::display(930, 95, SET_WIDTH, 312,
				SET_X, GLOBALS._sceneManager._scene->_sceneBounds.left + 4,
				SET_Y, GLOBALS._sceneManager._scene->_sceneBounds.top + BF_INTERFACE_Y + 2,
				SET_FONT, 4, SET_BG_COLOR, 1, SET_FG_COLOR, 19, SET_EXT_BGCOLOR, 9,
				SET_EXT_FGCOLOR, 13, LIST_END);
		signal();
		break;
	case 3:
		_sceneMode = 4;
		addFader((const byte *)&v50EC4, 5, this);
		break;
	case 4:
		BF_GLOBALS._sceneManager.changeScene(935);
		break;
	default:
		BF_GLOBALS._player.enableControl();
		break;
	}
}

void Scene930::dispatch() {
	SceneExt::dispatch();
}

void Scene930::showBootWindow() {
	_bootsWindow.postInit();
	_bootsWindow.setVisage(930);
	_bootsWindow.setStrip(3);
	_bootsWindow.setFrame2(1);
	_bootsWindow.fixPriority(260);
	_bootsWindow.setPosition(Common::Point(147, 128));
	_bootsWindow.setDetails(930, 69, 70, 93);
}

void Scene930::subF3C07() {
	_object2.postInit();
	_object2.setVisage(930);
	_object2.setStrip(1);
	_object2.setFrame2(2);
	_object2.fixPriority(260);
	_object2.setPosition(Common::Point(147, 128));
	_object2.setDetails(930, 73, 74, 75);
}

void Scene930::subF3D6F() {
	_object5.postInit();
	_object5.setVisage(930);
	_object5.setStrip(3);
	if (BF_INVENTORY.getObjectScene(INV_SCHEDULE) == 1) {
		_object5.setFrame(_object5.getFrameCount());
		_object5.setDetails(930, 92, 77, -1);
	} else if (_v141A == 0) {
		_object5.setFrame(2);
		_object5.setDetails(930, 93, 77, -1);
	} else {
		_object5.setFrame(_object5.getFrameCount());
		_object5.setDetails(930, 76, 77, 78);
	}

	_object5.fixPriority(260);
	_object5.setPosition(Common::Point(147, 128));
}

void Scene930::synchronize(Serializer &s) {
	SceneExt::synchronize(s);
	s.syncAsSint16LE(_v141A);
	s.syncAsSint16LE(_v141C);
}

/*--------------------------------------------------------------------------
 * Scene 935 - Hidden in the wardrobe
 *
 *--------------------------------------------------------------------------*/

void Scene935::Action1::signal() {
	Scene935 *scene = (Scene935 *)BF_GLOBALS._sceneManager._scene;
	static uint32 v50ECC = 0, v50EEA = 0, v50EEE = 0, v50F26 = 0, v50F2A = 0, v50F62 = 0, v50F66 = 0, v50F6A = 0;

	switch (_actionIndex++) {
	case 0:
		scene->addFader((const byte *)&v50ECC, 100, this);
		break;
	case 1:
		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
		for (int i = 1; i < 21; i++)
			scene->sub15E4F((const byte *)&v50EEA, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
		setDelay(3);
		break;
	case 2:
		scene->addFader((const byte *)&v50EEE, 5, this);
		break;
	case 3:
		scene->_visualSpeaker.removeText();
		scene->_visualSpeaker._textPos.y = scene->_sceneBounds.top + 80;
		scene->_visualSpeaker._color1 = 252;
		scene->_visualSpeaker._color1 = 251;
		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
		setDelay(3);
		break;
	case 4:
		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
		for (int i = 1; i < 21; i++)
			scene->sub15E4F((const byte *)&v50F26, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
		setDelay(3);
		break;
	case 5:
		scene->addFader((const byte *)&v50F2A, 5, this);
		break;
	case 6:
		scene->_visualSpeaker.removeText();
		scene->_visualSpeaker._textPos.y = scene->_sceneBounds.top + 150;
		scene->_visualSpeaker._color1 = 250;
		scene->_visualSpeaker._color1 = 249;
		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
		setDelay(3);
		break;
	case 7:
		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
		for (int i = 1; i < 21; i++)
			scene->sub15E4F((const byte *)&v50F62, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
		setDelay(3);
		break;
	case 8:
		scene->addFader((const byte *)&v50F66, 5, this);
		break;
	case 9:
		scene->_visualSpeaker.removeText();
		setDelay(3);
		break;
	case 10:
		scene->_sceneMode = 1;
		scene->add2Faders((const byte *)&v50F6A, 5, 935, scene);
		remove();
		break;
	default:
		break;
	}
}

void Scene935::postInit(SceneObjectList *OwnerList) {
	PalettedScene::postInit();
	loadScene(935);

	BF_GLOBALS._interfaceY = 200;
	BF_GLOBALS._player.disableControl();
	_visualSpeaker._textMode = ALIGN_CENTER;
	_visualSpeaker._hideObjects = false;
	_visualSpeaker._color1 = 254;
	_visualSpeaker._color2 = 253;
	_visualSpeaker._textPos.y = _sceneBounds.top + 18;
	_visualSpeaker._textWidth = 300;
	_visualSpeaker._textPos.x = _sceneBounds.left + 10;
	setAction(&_action1);
	BF_GLOBALS._sound1.fadeSound(67);
}

void Scene935::remove() {
	BF_GLOBALS._sound1.fadeOut2(NULL);
	BF_GLOBALS._scrollFollower = &BF_GLOBALS._player;
	PalettedScene::remove();
}

void Scene935::signal() {
	static uint32 v50EC8 = 0;

	switch (_sceneMode) {
	case 1:
		_object1.postInit();
		if (BF_GLOBALS._sceneManager._previousScene == 810) {
			BF_GLOBALS._player.disableControl();
			_sceneMode = 9352;
			setAction(&_sequenceManager, this, 9350, &_object1, NULL);
		} else if (BF_GLOBALS._sceneManager._previousScene == 930) {
			_object3.postInit();
			_object3.setVisage(938);
			_object3.fixPriority(255);
			_object3.setPosition(Common::Point(260, -4));
			BF_GLOBALS._player.disableControl();
			_sceneMode = 0;
			setAction(&_sequenceManager, this, 9354, &_object1, &_object3, NULL);
		} else {
			_sceneMode = 9351;
			setAction(&_sequenceManager, this, 9350, &_object1, NULL);
		}
		break;
	case 2:
		BF_GLOBALS._sound1.play(68);
		_sceneMode = 0;
		addFader((const byte *)&v50EC8, 5, this);
		break;
	case 3:
		_sceneMode = 2;
		_object1.animate(ANIM_MODE_6, NULL);
		signal();
		break;
	case 9351:
		BF_GLOBALS._player.disableControl();
		_sceneMode = 2;
		setAction(&_sequenceManager, this, 9351, &_object1, NULL);
		if (BF_GLOBALS._sceneManager._previousScene == 910)
			_sceneMode = 9353;
		break;
	case 9352:
		BF_GLOBALS._player.disableControl();
		_sceneMode = 2;
		setAction(&_sequenceManager, this, 9352, &_object1, NULL);
		break;
	case 9353:
		_object2.postInit();
		BF_GLOBALS._player.disableControl();
		_sceneMode = 3;
		setAction(&_sequenceManager, this, 9353, &_object1, &_object2, NULL);
		break;
	default:
		BF_GLOBALS._sceneManager.changeScene(BF_GLOBALS._sceneManager._previousScene);
		break;
	}
}

void Scene935::dispatch() {
	SceneExt::dispatch();
}

/*--------------------------------------------------------------------------
 * Scene 940 - ?
 *
 *--------------------------------------------------------------------------*/

bool Scene940::Item1::startAction(CursorType action, Event &event) {
	return true;
}

void Scene940::Action1::signal() {
	Scene940 *scene = (Scene940 *)BF_GLOBALS._sceneManager._scene;

	switch (_actionIndex) {
	case 0:
		_actionIndex = 2;
		setDelay(60);
		break;
	case 2:
		_actionIndex = 941;
		if (BF_GLOBALS.getFlag(fBackupAt340))
			scene->_stripManager.start(9408, this);
		else
			scene->_stripManager.start(9400, this);
		break;
	case 5:
		setActionIndex(948);
		setDelay(90);
		scene->_object2.remove();
		scene->_object3.remove();
		scene->_object4.remove();
		scene->_object5.remove();
		scene->_object6.remove();
		scene->_object7.remove();
		scene->_object8.remove();
		scene->_object9.remove();
		scene->_object10.remove();
		break;
	case 99:
		BF_GLOBALS._sound1.play(117);
		BF_GLOBALS._sceneManager.changeScene(100);
		remove();
		break;
	case 941:
		scene->_gameTextSpeaker1._textWidth = 312;
		_actionIndex = 944;
		setAction(&scene->_sequenceManager1, this, 941, &BF_GLOBALS._player, NULL);
		break;
	case 942:
		_actionIndex = 955;
		setAction(&scene->_sequenceManager1, this, 942, &scene->_object2, NULL);
		break;
	case 943:
		_actionIndex = 946;
		setAction(&scene->_sequenceManager1, this, 943, &scene->_object3, NULL);
		break;
	case 944:
		scene->_object4.setAction(&scene->_sequenceManager2, NULL, 944, &scene->_object4, &scene->_object5);
		_actionIndex = 945;
		setDelay(3);
		break;
	case 945:
		scene->_object6.setAction(&scene->_sequenceManager3, NULL, 945, &scene->_object6, &scene->_object10, NULL);
		_actionIndex = 943;
		setDelay(3);
		break;
	case 946:
		_actionIndex = 942;
		setAction(&scene->_sequenceManager1, this, 946, &scene->_object7, &scene->_object8, NULL);
		break;
	case 947:
		_actionIndex = 5;
		setAction(&scene->_sequenceManager1, this, 947, &scene->_object1, &scene->_object11, &scene->_object12, &scene->_object13, NULL);
		break;
	case 948:
		scene->_gameTextSpeaker1._textPos.x = scene->_sceneBounds.left + 10;
		scene->_object17.postInit();
		scene->_object17.hide();
		scene->_object18.postInit();
		scene->_object18.hide();
		_actionIndex = 960;
		setAction(&scene->_sequenceManager1, this, 948, &scene->_object11, &scene->_object12, &scene->_object13, &scene->_object1, &scene->_object14, NULL);
		break;
	case 949:
		_actionIndex = 950;
		setAction(&scene->_sequenceManager1, this, 949, &scene->_object17, &scene->_object18, &scene->_object1, &scene->_object12, &scene->_object13, &scene->_object15, NULL);
		scene->_object11.setAction(&scene->_sequenceManager2, NULL, 952, &scene->_object11, NULL);
		break;
	case 950:
		_actionIndex = 951;
		setAction(&scene->_sequenceManager1, this, 950, &scene->_object17, &scene->_object18, &scene->_object1, &scene->_object13, &scene->_object16, NULL);
		scene->_object12.setAction(&scene->_sequenceManager3, NULL, 953, &scene->_object12, NULL);
		break;
	case 951:
		scene->_object13.setAction(&scene->_sequenceManager4, NULL, 954, &scene->_object13, NULL);
		scene->_object11.setAction(&scene->_sequenceManager2, NULL, 952, &scene->_object11, NULL);
		scene->_stripManager.start(9407, this);
		setActionIndex(99);
		break;
	case 955:
		scene->_object2.remove();
		_actionIndex = 956;
		setAction(&scene->_sequenceManager1, this, 955, &BF_GLOBALS._player, NULL);
		break;
	case 956:
		_actionIndex = 947;
		setAction(&scene->_sequenceManager1, this, 956, &scene->_object3, NULL);
		scene->_object11.postInit();
		scene->_object11.setVisage(943);
		scene->_object11.setStrip(1);
		scene->_object11.setPosition(Common::Point(-8, 178));
		scene->_object12.postInit();
		scene->_object12.setVisage(942);
		scene->_object12.setStrip(1);
		scene->_object12.setPosition(Common::Point(-41, 181));
		scene->_object13.postInit();
		scene->_object13.setVisage(944);
		scene->_object13.setStrip(2);
		scene->_object13.setPosition(Common::Point(-74, 179));
		scene->_object1.postInit();
		scene->_object1.setVisage(948);
		scene->_object1.setStrip(2);
		scene->_object1.setPosition(Common::Point(-107, 180));
		scene->_object14.postInit();
		scene->_object14.setVisage(949);
		scene->_object14.setStrip(1);
		scene->_object14.setFrame(3);
		scene->_object14.setPosition(Common::Point(234, 75));
		scene->_object15.postInit();
		scene->_object15.setVisage(949);
		scene->_object15.setStrip(1);
		scene->_object15.setFrame(2);
		scene->_object15.setPosition(Common::Point(144, 76));
		scene->_object16.postInit();
		scene->_object16.setVisage(949);
		scene->_object16.setStrip(1);
		scene->_object16.setFrame(1);
		scene->_object16.setPosition(Common::Point(45, 77));
		break;
	case 960:
		_actionIndex = 949;
		setAction(&scene->_sequenceManager1, this, 960, &scene->_object11, &scene->_object17, &scene->_object18, &scene->_object1, &scene->_object14, NULL);
		break;
	default:
		break;
	}
}

void Scene940::postInit(SceneObjectList *OwnerList) {
	SceneExt::postInit();
	loadScene(940);

	BF_GLOBALS._sound1.play(115);
	BF_GLOBALS._dayNumber = 6;
	BF_GLOBALS._interfaceY = 200;
	BF_GLOBALS._uiElements._active = false;

	_gameTextSpeaker2._speakerName = "SENTTEXT";
	_gameTextSpeaker2._color1 = 104;
	_gameTextSpeaker2._textMode = ALIGN_CENTER;
	_stripManager.addSpeaker(&_gameTextSpeaker1);
	_stripManager.addSpeaker(&_gameTextSpeaker2);
	BF_GLOBALS._player.postInit();
	BF_GLOBALS._player.setVisage(941);
	BF_GLOBALS._player.setStrip(1);
	BF_GLOBALS._player.setFrame(7);
	BF_GLOBALS._player.setPosition(Common::Point(563, 80));
	BF_GLOBALS._player.disableControl();
	_object3.postInit();
	_object3.setVisage(944);
	_object3.setStrip(3);
	_object3.setFrame(3);
	_object3.setPosition(Common::Point(626, 78));
	_object3.fixPriority(0);
	_object2.postInit();
	_object2.setVisage(944);
	_object2.setStrip(3);
	_object2.setFrame(6);
	_object2.setPosition(Common::Point(378, 136));
	_object2.setZoom(80);
	_object2.fixPriority(0);
	_object4.postInit();
	_object4.setVisage(945);
	_object4.setStrip(6);
	_object4.setPosition(Common::Point(361, 70));
	_object4.setZoom(80);
	_object4.fixPriority(0);
	_object5.postInit();
	_object5.setVisage(945);
	_object5.setStrip(7);
	_object5.setPosition(Common::Point(366, 39));
	_object5.setZoom(80);
	_object5.fixPriority(3);
	_object6.postInit();
	_object6.setVisage(945);
	_object6.setStrip(4);
	_object6.setPosition(Common::Point(432, 70));
	_object6.setZoom(65);
	_object6.fixPriority(0);
	_object7.postInit();
	_object7.setVisage(945);
	_object7.setStrip(1);
	_object7.setPosition(Common::Point(423, 131));
	_object7.setZoom(65);
	_object7.fixPriority(0);
	_object8.postInit();
	_object8.setVisage(945);
	_object8.setStrip(2);
	_object8.setPosition(Common::Point(420, 99));
	_object8.setZoom(65);
	_object8.fixPriority(3);
	_object9.postInit();
	_object9.setVisage(945);
	_object9.setStrip(3);
	_object9.setPosition(Common::Point(458, 65));
	_object9.setZoom(55);
	_object9.fixPriority(0);
	_object10.postInit();
	_object10.setVisage(945);
	_object10.setStrip(3);
	_object10.setFrame(2);
	_object10.setPosition(Common::Point(465, 118));
	_object10.setZoom(55);
	_object10.fixPriority(0);
	_item1.setBounds(Rect(0, 0, 320, 200));
	BF_GLOBALS._sceneItems.push_back(&_item1);
	_sceneBounds.moveTo(320, 0);
	_gameTextSpeaker1._textPos.x = _sceneBounds.left + 10;
	_gameTextSpeaker1._color1 = 16;
	_gameTextSpeaker1._textWidth = 265;
	setAction(&_action1);
}

void Scene940::remove() {
	// clearScren();
	BF_GLOBALS._scrollFollower = &BF_GLOBALS._player;
	SceneExt::remove();
	BF_GLOBALS._uiElements._active = true;
}

} // End of namespace BlueForce
} // End of namespace TsAGE
