[Scummvm-cvs-logs] SF.net SVN: scummvm:[43972] scummvm/trunk/engines/teenagent/callbacks.cpp

megath at users.sourceforge.net megath at users.sourceforge.net
Sun Sep 6 11:40:15 CEST 2009


Revision: 43972
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43972&view=rev
Author:   megath
Date:     2009-09-06 09:40:14 +0000 (Sun, 06 Sep 2009)

Log Message:
-----------
implemented mansion drawers-book puzzle and fake chili.

Modified Paths:
--------------
    scummvm/trunk/engines/teenagent/callbacks.cpp

Modified: scummvm/trunk/engines/teenagent/callbacks.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/callbacks.cpp	2009-09-06 01:30:45 UTC (rev 43971)
+++ scummvm/trunk/engines/teenagent/callbacks.cpp	2009-09-06 09:40:14 UTC (rev 43972)
@@ -2506,8 +2506,197 @@
 		}
 		loadScene(30, 18, 159, 2);
 		return true;
+		
+	case 0x67a6:
+		loadScene(29, 149, 163, 1);
+		playAnimation(974);
+		moveTo(160, 188, 0);
+		return true;
+		
+	case 0x6805:
+		processCallback(0x6849);
+		playAnimation(694);
+		playSound(15, 8);
+		playAnimation(693, 1);
+		setOns(6, 0);
+		displayMessage(0x4cc7);
+		inventory->add(54);
+		disableObject(4);
+		return true;
+		
+	case 0x6849:
+		{
+			Common::Point p = scene->getPosition();
+			if (p.x == 208 && p.y == 151) {
+				moveRel(0, 0, 2);
+			} else 
+				moveTo(208, 151, 1);
+		}
+		return true;
+		
+	case 0x687a: //using the book
+		if (CHECK_FLAG(0xDBC2, 1)) {
+			displayMessage(0x4ca0);
+		} else {
+			playSound(49, 5);
+			playSound(49, 17);
+			playAnimation(691);
+			if (!processCallback(0x68e6)) {
+				if (!CHECK_FLAG(0xDBC0, 1)) {
+					displayMessage(0x4c61);
+					SET_FLAG(0xDBC0, 1);
+				}
+			} else {
+				playSound(15, 8); //secret compartment
+				playAnimation(692, 1);
+				setOns(6, 59);
+				enableObject(4);
+				displayMessage(0x4c84);
+				SET_FLAG(0xDBC2, 1);
+			}
+		}
+		return true;
+		
+	case 0x68e6: //checking drawers
+		{
+			uint16 v = GET_FLAG(0xDBC1) - 1;
+			uint bx = 0xDBB7;
+			if (GET_FLAG(bx + v) != 1)
+				return false;
 
+			uint16 sum = 0;
+			for(uint i = 0; i < 6; ++i) {
+				sum += GET_FLAG(bx + i);
+			}
+			return sum == 1;
+		}
+		
+	case 0x6918:
+		if (inventory->has(55)) {
+			displayMessage(0x4cd9);
+			return true;
+		}
+		if (!CHECK_FLAG(0xDBC3, 1)) {
+			playAnimation(695);
+			Dialog::show(scene, 0x386a);
+			SET_FLAG(0xDBC3, 1);
+		}
+		
+		playSound(5, 11);
+		playAnimation(696);
+		inventory->add(55);
+		return true;
+		
+	case 0x6962:
+		if (CHECK_FLAG(0xDBB7, 1)) {
+			setOns(0, 0);
+			playSound(67, 4);
+			playAnimation(678);
+			SET_FLAG(0xDBB7, 0);
+		} else if (CHECK_FLAG(0xDBB8, 1)) {
+			processCallback(0x6b86);
+		} else {
+			playSound(66, 4);
+			playAnimation(677);
+			setOns(0, 53);
+			SET_FLAG(0xDBB7, 1);
+		}
+		return true;
+		
+	case 0x69b8:
+		if (CHECK_FLAG(0xDBB8, 1)) {
+			setOns(1, 0);
+			playSound(67, 4);
+			playAnimation(680);
+			SET_FLAG(0xDBB8, 0);
+		} else if (CHECK_FLAG(0xDBB8, 1)) {
+			processCallback(0x6b86);
+		} else if (CHECK_FLAG(0xDBB9, 1)) {
+			processCallback(0x6b86);
+		} else {
+			playSound(66, 5);
+			playAnimation(679);
+			setOns(1, 54);
+			SET_FLAG(0xDBB8, 1);
+		}
+		return true;
+		
+	case 0x6a1b:
+		if (CHECK_FLAG(0xDBB9, 1)) {
+			setOns(2, 0);
+			playSound(67, 5);
+			playAnimation(682);
+			SET_FLAG(0xDBB9, 0);
+		} else if (CHECK_FLAG(0xDBB8, 1)) {
+			processCallback(0x6b86);
+		} else {
+			playSound(67, 5);
+			playAnimation(681);
+			setOns(2, 55);
+			SET_FLAG(0xDBB9, 1);
+		}
+		return true;
+		
+	case 0x6a73:
+		if (CHECK_FLAG(0xDBBA, 1)) {
+			setOns(3, 0);
+			playSound(67, 4);
+			playAnimation(684);
+			SET_FLAG(0xDBBA, 0);
+		} else if (!CHECK_FLAG(0xDBBB, 1)) {
+			playSound(66, 4);
+			playAnimation(683);
+			setOns(3, 56);
+			SET_FLAG(0xDBBA, 1);
+		} else
+			processCallback(0x6b86);
+		return true;
 
+	case 0x6acb:
+		if (CHECK_FLAG(0xDBBB, 1)) {
+			setOns(4, 0);
+			playSound(67, 4);
+			playAnimation(686);
+			SET_FLAG(0xDBBB, 0);
+		} else if (CHECK_FLAG(0xDBBA, 1)) {
+			processCallback(0x6b86);
+		} else if (CHECK_FLAG(0xDBBC, 1)) {
+			processCallback(0x6b86);
+		} else {
+			playSound(66, 5);
+			playAnimation(685);
+			setOns(4, 57);
+			SET_FLAG(0xDBBB, 1);
+		}
+		return true;
+	
+	case 0x6b2e:
+		if (CHECK_FLAG(0xdbbc, 1)) {
+			setOns(5, 0);
+			playSound(67, 5);
+			playAnimation(688);
+			SET_FLAG(0xdbbc, 0);
+		} else if (CHECK_FLAG(0xdbbc, 1)) {
+			processCallback(0x6b86);
+		} else {
+			playSound(66, 6);
+			playAnimation(687);
+			setOns(5, 58);
+			SET_FLAG(0xDBBC, 1);
+		}
+		return true;
+		
+		
+	case 0x6b86:
+		if (CHECK_FLAG(0xDBBD, 1)) {
+			displayMessage(0x4b39);
+		} else {
+			displayMessage(0x4acd);
+			displayMessage(0x4b0d);
+			SET_FLAG(0xDBBD, 1);
+		}
+		return true;
+
 	case 0x6be1: //handle to the bathroom
 		if (!CHECK_FLAG(0xDBD9, 1)) {
 			displayMessage(0x5326); //i'd better catch johnny
@@ -2567,6 +2756,21 @@
 		loadScene(31, 298, 177, 4);
 		return true;
 		
+	case 0x72c2:
+		if (CHECK_FLAG(0xDBD6, 2)) {
+			displayMessage(0x522c);
+		} else {
+			playSound(79, 6);
+			playSound(84, 9);
+			playAnimation(801);
+			if (CHECK_FLAG(0xDBD6, 1)) {
+				displayMessage(0x538d);
+				SET_FLAG(0xDBD6, 2);
+			} else 
+				displayMessage(0x5372);
+		}
+		return true;
+		
 	case 0x7309:
 		playSound(66, 5);
 		playSound(67, 11);
@@ -2574,6 +2778,70 @@
 		displayMessage(0x5955);
 		return true;
 		
+	case 0x79e4:
+		processCallback(0x6849);
+		return false;
+		
+	case 0x79eb: //color of the book
+		displayMessage(res->dseg.get_word(0x5f3c + GET_FLAG(0xDBC1) * 2 - 2));
+		return true;
+		
+	case 0x79fd:
+		if (CHECK_FLAG(0xDBB7, 1)) {
+			displayMessage(0x4b6c);
+			return true;
+		} else
+			return false;
+
+	case 0x7a0f:
+		if (CHECK_FLAG(0xDBB8, 1)) {
+			if (!CHECK_FLAG(0xDBBF, 1)) {
+				displayMessage(0x4c32);
+				playSound(5, 11);
+				playAnimation(690);
+				inventory->add(53);
+				SET_FLAG(0xDBBF, 1);
+			}
+			displayMessage(0x4b87);
+			return true;
+		} else
+			return false;
+
+	case 0x7a49:
+		if (CHECK_FLAG(0xDBB9, 1)) {
+			displayMessage(0x4ba1);
+			return true;
+		} else
+			return false;
+
+	case 0x7a5b:
+		if (CHECK_FLAG(0xDBBA, 1)) {
+			displayMessage(0x4bbc);
+			return true;
+		} else
+			return false;
+
+	case 0x7a6d:
+		if (CHECK_FLAG(0xDBBB, 1)) {
+			displayMessage(0x4bd8);
+			return true;
+		} else
+			return false;
+
+	case 0x7a7f:
+		if (CHECK_FLAG(0xDBBC, 1)) {
+			if (!CHECK_FLAG(0xDBBE, 1)) {
+				displayMessage(0x4c0f); //there's dictaphone inside!
+				playSound(5, 12);
+				playAnimation(689);
+				inventory->add(52);
+				SET_FLAG(0xDBBE, 1);
+			}
+			displayMessage(0x4bf4);
+			return true;
+		} else
+			return false;
+			
 	case 0x7b09:
 		{
 			byte v = GET_FLAG(0xDBD6);
@@ -2589,6 +2857,28 @@
 			}
 		}
 		
+	case 0x9472:
+		playSound(5, 4);
+		playSound(19, 14);
+		playAnimation(793);
+		displayMessage(0x5218);
+		inventory->remove(60);
+		SET_FLAG(0xDBD6, 1);
+		return true;
+		
+	case 0x949b: 
+		if (CHECK_FLAG(0xDBD6, 2)) {
+			playSound(5, 4);
+			playSound(5, 25);
+			playAnimation(802);
+			displayMessage(0x5272);
+			inventory->remove(62);
+			inventory->add(74);
+			inventory->add(65);
+		} else 
+			displayMessage(0x524f);
+		return true;
+		
 	case 0x94d4:
 		if (inventory->has(70)) {
 			setOns(0, 0);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list