diff options
| -rw-r--r-- | engines/titanic/npcs/parrot.cpp | 148 | ||||
| -rw-r--r-- | engines/titanic/npcs/true_talk_npc.h | 4 | 
2 files changed, 76 insertions, 76 deletions
| diff --git a/engines/titanic/npcs/parrot.cpp b/engines/titanic/npcs/parrot.cpp index f8cc440c03..bfb6690107 100644 --- a/engines/titanic/npcs/parrot.cpp +++ b/engines/titanic/npcs/parrot.cpp @@ -273,79 +273,77 @@ bool CParrot::MovieEndMsg(CMovieEndMsg *msg) {  			_npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_MOVE_FINISH | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT);  			CTrueTalkNPC::MovieEndMsg(msg); -		} else { -			if (_npcFlags & NPCFLAG_1000000) { -				Point pt = getMousePos(); -				if (pt.x > 70 || pt.y < 90 || pt.y > 280) { -					stopMovie(); -					loadFrame(0); -					_npcFlags &= ~NPCFLAG_1000000; -				} +		} +	} else if (_npcFlags & NPCFLAG_CHICKEN_OUTSIDE_CAGE) { +		Point pt = getMousePos(); +		if (pt.x > 70 || pt.y < 90 || pt.y > 280) { +			stopMovie(); +			loadFrame(0); +			_npcFlags &= ~NPCFLAG_CHICKEN_OUTSIDE_CAGE; +		} -				if (clipExistsByEnd("Walk Left Loop", msg->_endFrame)) { -					playClip("Lean Over To Chicken", MOVIE_NOTIFY_OBJECT); -					setPosition(Point(_bounds.left - 55, _bounds.top)); -					_field130 = (-100 - _bounds.left) / 5; -					movieEvent(261); -					movieEvent(262); -					movieEvent(265); -					movieEvent(268); -					movieEvent(271); -					return true; - -				} else if (clipExistsByEnd("Lean Over To Chicken", msg->_endFrame)) { -					// Leaning left out of cage to eat the chicken -					playClip("Eat Chicken"); -					playClip("Eat Chicken 2", MOVIE_NOTIFY_OBJECT); -					_eatingChicken = true; - -					CStatusChangeMsg statusMsg; -					statusMsg._newStatus = 0; -					statusMsg.execute("PerchCoreHolder"); - -					CTrueTalkTriggerActionMsg actionMsg; -					actionMsg._param1 = 280266; -					actionMsg._param2 = 1; -					actionMsg.execute(this); - -					CCarry *chicken = dynamic_cast<CCarry *>(findUnder(getRoot(), "Chicken")); -					if (chicken) { -						CActMsg actMsg("Eaten"); -						actMsg.execute(chicken); -					} - -					_npcFlags &= ~NPCFLAG_1000000; -					return true; -				} -			} +		if (clipExistsByEnd("Walk Left Loop", msg->_endFrame)) { +			playClip("Lean Over To Chicken", MOVIE_NOTIFY_OBJECT); +			setPosition(Point(_bounds.left - 55, _bounds.top)); +			_field130 = (-100 - _bounds.left) / 5; +			movieEvent(261); +			movieEvent(262); +			movieEvent(265); +			movieEvent(268); +			movieEvent(271); +			return true; -			if (clipExistsByEnd("Eat Chicken 2", msg->_endFrame)) { -				// Parrot has finished eating Chicken -				_eatingChicken = false; +		} else if (clipExistsByEnd("Lean Over To Chicken", msg->_endFrame)) { +			// Leaning left out of cage to eat the chicken +			playClip("Eat Chicken"); +			playClip("Eat Chicken 2", MOVIE_NOTIFY_OBJECT); +			_eatingChicken = true; -				CStatusChangeMsg statusMsg; -				statusMsg._newStatus = 1; -				statusMsg.execute("PerchCoreHolder"); +			CStatusChangeMsg statusMsg; +			statusMsg._newStatus = 0; +			statusMsg.execute("PerchCoreHolder"); -				if (_takeOff) { -					// Perch has been taken, so take off -					loadMovie("z168.avi", false); -					playClip("Take Off", MOVIE_NOTIFY_OBJECT); -					setPosition(Point(20, 10)); -					_npcFlags |= NPCFLAG_TAKE_OFF; -				} else { -					// Resetting back to standing -					_npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_MOVE_START | NPCFLAG_MOVE_LOOP -						| NPCFLAG_MOVE_FINISH | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT); -					_npcFlags |= NPCFLAG_MOVE_END; -					stopMovie(); -					loadFrame(0); -					setPosition(Point(-90, _bounds.top)); -				} -			} else { -				CTrueTalkNPC::MovieEndMsg(msg); +			CTrueTalkTriggerActionMsg actionMsg; +			actionMsg._param1 = 280266; +			actionMsg._param2 = 1; +			actionMsg.execute(this); + +			CCarry *chicken = dynamic_cast<CCarry *>(findUnder(getRoot(), "Chicken")); +			if (chicken) { +				CActMsg actMsg("Eaten"); +				actMsg.execute(chicken);  			} + +			_npcFlags &= ~NPCFLAG_CHICKEN_OUTSIDE_CAGE; +			return true; +		} +	} + +	if (clipExistsByEnd("Eat Chicken 2", msg->_endFrame)) { +		// Parrot has finished eating Chicken +		_eatingChicken = false; + +		CStatusChangeMsg statusMsg; +		statusMsg._newStatus = 1; +		statusMsg.execute("PerchCoreHolder"); + +		if (_takeOff) { +			// Perch has been taken, so take off +			loadMovie("z168.avi", false); +			playClip("Take Off", MOVIE_NOTIFY_OBJECT); +			setPosition(Point(20, 10)); +			_npcFlags |= NPCFLAG_TAKE_OFF; +		} else { +			// Resetting back to standing +			_npcFlags &= ~(NPCFLAG_MOVING | NPCFLAG_MOVE_START | NPCFLAG_MOVE_LOOP +				| NPCFLAG_MOVE_FINISH | NPCFLAG_MOVE_LEFT | NPCFLAG_MOVE_RIGHT); +			_npcFlags |= NPCFLAG_MOVE_END; +			stopMovie(); +			loadFrame(0); +			setPosition(Point(-90, _bounds.top));  		} +	} else { +		return CTrueTalkNPC::MovieEndMsg(msg);  	}  	return true; @@ -606,7 +604,7 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {  		if (dragObject)  			chickenFlag = dragObject && dragObject->isEquals("Chicken"); -		if (_npcFlags & NPCFLAG_1000000) { +		if (_npcFlags & NPCFLAG_CHICKEN_OUTSIDE_CAGE) {  			if (!chickenFlag || pt.x > 70 || pt.y < 90 || pt.y > 280) {  				stopMovie();  				loadFrame(0); @@ -657,21 +655,22 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {  		if (action != 280266) {  			if (pt.x < 75) { -				_npcFlags |= NPCFLAG_1000000; +				// Parrot needs to reach outside the cage +				_npcFlags |= NPCFLAG_CHICKEN_OUTSIDE_CAGE;  				playClip("Walk Left Intro", MOVIE_STOP_PREVIOUS);  				playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT);  				movieEvent(236);  				chickenFlag = false;  			} else if ((pt.x - xp) > 15) { -				_npcFlags |= NPCFLAG_800000; +				_npcFlags |= NPCFLAG_PECKING;  				playClip("Peck At Feet Right", MOVIE_NOTIFY_OBJECT);  				movieEvent(170);  			} else if ((xp - pt.x) > 15) { -				_npcFlags |= NPCFLAG_800000; +				_npcFlags |= NPCFLAG_PECKING;  				playClip("Peck At Feet Left", MOVIE_NOTIFY_OBJECT);  				movieEvent(142);  			} else { -				_npcFlags |= NPCFLAG_800000; +				_npcFlags |= NPCFLAG_PECKING;  				playClip("Peck At Feet", MOVIE_NOTIFY_OBJECT);  				movieEvent(157);  			} @@ -688,14 +687,15 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {  }  bool CParrot::MovieFrameMsg(CMovieFrameMsg *msg) { -	if (_npcFlags & NPCFLAG_800000) { +	if (_npcFlags & NPCFLAG_PECKING) { +		// Whoopsy, the Parrot got your chicken  		CCarry *chicken = dynamic_cast<CCarry *>(findUnder(getRoot(), "Chicken"));  		if (chicken) {  			CActMsg actMsg("Eaten");  			actMsg.execute(chicken);  		} -		_npcFlags &= ~NPCFLAG_800000; +		_npcFlags &= ~NPCFLAG_PECKING;  	}  	switch (msg->_frameNumber) { diff --git a/engines/titanic/npcs/true_talk_npc.h b/engines/titanic/npcs/true_talk_npc.h index 3727c49331..6cf677442b 100644 --- a/engines/titanic/npcs/true_talk_npc.h +++ b/engines/titanic/npcs/true_talk_npc.h @@ -34,8 +34,8 @@ enum NpcFlag {  	NPCFLAG_8 = 8, NPCFLAG_MOVING = 0x10000, NPCFLAG_MOVE_START = 0x20000,  	NPCFLAG_MOVE_LOOP = 0x40000, NPCFLAG_MOVE_FINISH = 0x80000,  	NPCFLAG_MOVE_LEFT = 0x100000, NPCFLAG_MOVE_RIGHT = 0x200000, -	NPCFLAG_MOVE_END = 0x400000, NPCFLAG_800000 = 0x800000, -	NPCFLAG_1000000 = 0x1000000, NPCFLAG_TAKE_OFF = 0x2000000, +	NPCFLAG_MOVE_END = 0x400000, NPCFLAG_PECKING = 0x800000, +	NPCFLAG_CHICKEN_OUTSIDE_CAGE = 0x1000000, NPCFLAG_TAKE_OFF = 0x2000000,  	NPCFLAG_4000000 = 0x4000000, NPCFLAG_DOORBOT_INTRO = 0x8000000  }; | 
