aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent/callbacks.cpp
diff options
context:
space:
mode:
authorVladimir Menshakov2009-09-05 20:58:25 +0000
committerVladimir Menshakov2009-09-05 20:58:25 +0000
commita2c28b0a8fa85411c8018e089ab0d3db5f8420bf (patch)
treecb13a7aa2c0170ab8cdf00af27e30e0a24123df1 /engines/teenagent/callbacks.cpp
parent0b002beccd31fa2796a319427624af1b2ad580b6 (diff)
downloadscummvm-rg350-a2c28b0a8fa85411c8018e089ab0d3db5f8420bf.tar.gz
scummvm-rg350-a2c28b0a8fa85411c8018e089ab0d3db5f8420bf.tar.bz2
scummvm-rg350-a2c28b0a8fa85411c8018e089ab0d3db5f8420bf.zip
made second chapter completable.
svn-id: r43966
Diffstat (limited to 'engines/teenagent/callbacks.cpp')
-rw-r--r--engines/teenagent/callbacks.cpp552
1 files changed, 490 insertions, 62 deletions
diff --git a/engines/teenagent/callbacks.cpp b/engines/teenagent/callbacks.cpp
index 8fe9e6ebf5..960023140a 100644
--- a/engines/teenagent/callbacks.cpp
+++ b/engines/teenagent/callbacks.cpp
@@ -537,16 +537,43 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
Dialog::pop(scene, 0xdaa6);
}
return true;
+
+ case 0x4d94: //talking with fatso
+ Dialog::show(scene, 0x33bd);
+ displayMessage(0x49ae);
+ playSound(5, 3);
+ playAnimation(667, 1);
+ playAnimation(668, 1);
+ setOns(2, 50);
+ Dialog::show(scene, 0x36c7);
+ setOns(3, 0);
+ SET_FLAG(0xDBEC, 0);
+ reloadLan();
+ playSound(82, 19);
+ playAnimation(668, 1);
+ Dialog::show(scene, 0x3779);
+ enableObject(15);
+ disableObject(8);
+ return true;
case 0x4e61:
loadScene(14, 280, 198);
return true;
+
+ case 0x4ee5:
+ setOns(2, 0);
+ playSound(5, 12);
+ playAnimation(676);
+ displayMessage(0x4ab0);
+ disableObject(15);
+ inventory->add(51);
+ return true;
case 0x4d56:
inventory->add(16);
disableObject(2);
setOns(0, 0);
- playSound(5);
+ playSound(5, 12);
playAnimation(547);
return true;
@@ -565,18 +592,38 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x3542);
return true;
- case 0x4f32:
+ case 0x4f32: //use tree near the mansion
if (CHECK_FLAG(0xDBA1, 1)) {
- break;
+ if (CHECK_FLAG(0xDBA2, 1)) {
+ displayMessage(0x3766);
+ } else {
+ playSound(26, 13);
+ playSound(26, 15);
+ playSound(26, 23);
+ playSound(26, 25);
+ playSound(26, 32);
+ playSound(26, 34);
+ playSound(26, 36);
+ playAnimation(590);
+ moveTo(204, 178, 3, true);
+ playSound(59, 1);
+ playSound(60, 16);
+ displayMessage(0x372e);
+ playAnimation(591);
+ SET_FLAG(0xDBA2, 1);
+ processCallback(0x9d45);
+ }
} else {
playAnimation(49);
- playSound(56);
+ playSound(56, 8);
+ playSound(56, 12);
+ playSound(49, 10);
//there's some black magic here! investigate!
playAnimation(587);
displayMessage(0x4652);
displayMessage(0x3668);
- return true;
}
+ return true;
case 0x500d: //picking up wild plant
if (CHECK_FLAG(0xDB9E, 1)) {
@@ -599,10 +646,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playAnimation(544, 1);
displayMessage(0x3563);
playSound(17);
- playAnimation(545, 1);
setOns(0, 16);
enableObject(2);
+ playAnimation(545, 1);
Dialog::show(scene, 0x0917);
+ playAnimation(546);
+ SET_FLAG(0xDA96, 1);
+ SET_FLAG(0xDA97, 0);
return true;
case 0x51f0:
@@ -624,15 +674,22 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x3E31);
else {
moveTo(173, 138, 2);
+ playSound(28, 5);
playAnimation(583);
playAnimation(584);
- playSound(72, 8);
+
+ debug(0, "FIXME: darken whole screen");
+
+ playSound(72, 18);
+ playSound(73, 39);
playAnimation(585);
+
loadScene(11, 194, 160, 2);
playSound(28, 2);
moveTo(138, 163, 3);
displayMessage(0x3650);
SET_FLAG(0xDBA0, 1);
+ processCallback(0x9d45); //another mansion try
}
return true;
@@ -640,11 +697,18 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
uint16 d = Dialog::pop(scene, 0xdb08);
if (d == 0x2c5d) {
setOns(0, 0);
+ playSound(52, 9);
+ playSound(52, 11);
+ playSound(52, 13);
+ playSound(53, 32);
playAnimation(570, 1);
displayMessage(0x551f);
disableObject(5);
SET_FLAG(0xDBB0, 1);
} else if (d != 0x2c9b) {
+ playSound(52, 9);
+ playSound(52, 11);
+ playSound(52, 13);
playAnimation(569, 1);
}
}
@@ -655,11 +719,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
case 0x569c:
+ playSound(67, 5);
playAnimation(983);
displayMessage(0x5955);
return true;
case 0x56b7:
+ playSound(66, 5);
+ playSound(67, 11);
playAnimation(984);
displayMessage(0x5955);
return true;
@@ -668,6 +735,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->add(0x0d);
disableObject(14);
setOns(0, 0);
+ playSound(5, 10);
playAnimation(566);
return true;
@@ -716,7 +784,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
inventory->add(12);
disableObject(12);
setOns(0, 0);
- playSound(5);
+ playSound(5, 6);
playAnimation(541);
}
return true;
@@ -742,6 +810,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
processCallback(0x61fe);
return true;
+ case 0x63bc:
+ playMusic(6);
+ loadScene(25, 151, 156, 2);
+ return true;
+
case 0x646e:
case 0x6475:
Dialog::show(scene, 0x32C1);
@@ -758,10 +831,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDBA9, 1)) {
playAnimation(635);
setOns(5, 0);
- playSound(63);
+ playSound(63, 11);
+ playSound(15, 20);
+ playSound(32, 31);
playAnimation(636);
inventory->add(47);
inventory->add(48);
+ moveTo(scene->getPosition().x - 1, 139, 1, true);
displayMessage(0x3b83);
SET_FLAG(0xDBA9, 2);
SET_FLAG(0xDBA8, 0);
@@ -1059,7 +1135,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x5458: {
setOns(2, 0);
- playSound(34);
+ playSound(34, 7);
playAnimation(535);
inventory->add(11);
disableObject(1);
@@ -1079,7 +1155,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x54b3: {
setOns(1, 0);
setOns(3, 0);
- playSound(33);
+ playSound(33, 6);
playAnimation(534);
inventory->add(10);
disableObject(2);
@@ -1117,12 +1193,21 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
case 0x563b:
- playSound(5);
- playAnimation(561);
+ playSound(5, 10);
setOns(1, 0);
+ playAnimation(561);
inventory->add(26);
disableObject(6);
return true;
+
+ case 0x56f6:
+ playSound(32, 7);
+ setOns(1, 0);
+ playAnimation(626);
+ disableObject(12);
+ inventory->add(45);
+ displayMessage(0x3b04);
+ return true;
case 0x5756://Open car door
playSound(11, 4);
@@ -1223,6 +1308,23 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x5b3a://Click on dog
Dialog::pop(scene, 0xDB14);
return true;
+
+ case 0x5b59: //picking up the rope
+ Dialog::show(scene, 0x2cbd);
+ Dialog::show(scene, 0x2dc2);
+ moveRel(0, -12, 0);
+ playSound(34, 5);
+ playAnimation(607);
+ setOns(0, 0);
+ playAnimation(608);
+ playAnimation(609);
+ playAnimation(610);
+ playSound(5, 25);
+ playAnimation(611);
+ moveTo(16, scene->getPosition().y, 4);
+ inventory->add(38);
+ disableObject(12);
+ return true;
case 0x5be1://Talk to grandpa
Dialog::pop(scene, 0xDAC4);
@@ -1279,15 +1381,22 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
moveTo(245, 198, 1);
Dialog::show(scene, 0x21d7);
SET_FLAG(0xDB97, 1);
- playSound(13);
+ for(byte i = 10; i <= 20; i += 2)
+ playSound(13, i);
playAnimation(528, 1);
playMusic(7);
SET_FLAG(0xDBEE, 1);
- playSound(56);
+ for(byte i = 3; i <= 17; i += 2)
+ playSound(56, i);
playAnimation(525);
- playSound(56);
+ for(byte i = 1; i <= 13; i += 2)
+ playSound(56, i);
+ playSound(40, 15);
+ playSound(40, 18);
+ playSound(40, 22);
playAnimation(526);
- playSound(54);
+ playSound(54, 1);
+ playSound(55, 5);
playAnimation(527);
Dialog::show(scene, 0x2219);
strcpy(scene->getObject(2)->name, (const char *)res->dseg.ptr(0x9820));
@@ -1411,10 +1520,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
- case 0x6480: //flips
+ case 0x6480: //dive mask
if (CHECK_FLAG(0xDB96, 1)) {
setOns(3, 36);
- playSound(56);
+ playSound(56, 7);
+ playSound(5, 15);
playAnimation(613);
inventory->add(39);
disableObject(5);
@@ -1423,10 +1533,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
displayMessage(0x3eb2);
return true;
- case 0x64c4: //mask (maybe flips) :)
+ case 0x64c4: //flippers
if (CHECK_FLAG(0xDB96, 1)) {
setOns(2, 35);
- playSound(63);
+ playSound(63, 8);
+ playSound(24, 10);
playAnimation(612);
inventory->add(40);
disableObject(6);
@@ -1457,12 +1568,18 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x6351:
if (CHECK_FLAG(0xdaca, 1)) { //cave bush is cut down
playMusic(8);
- loadScene(26, 319, 169);
- return true;
- } else {
+ loadScene(26, 319, 169, 4);
+ } else
displayMessage(0x3bd2);
- return true;
- }
+ return true;
+
+ case 0x63ea:
+ playSound(5, 10);
+ setOns(0, 0);
+ playAnimation(640);
+ inventory->add(50);
+ disableObject(6);
+ return true;
case 0x6411://Kick hen
if (CHECK_FLAG(0xdb93, 1)) { //already kicked hen
@@ -1525,6 +1642,17 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(15);
return true;
+ case 0x667c:
+ playSound(70, 4);
+ playAnimation(972);
+ loadScene(29, 160, 199, 1);
+ return true;
+
+ case 0x66a9:
+ displayMessage(0x4a7e);
+ disableObject(4);
+ return true;
+
case 0x7f23://Use grenade on captains drawer
if (CHECK_FLAG(0xDBDF, 3)) {
playSound(5, 3);
@@ -1611,43 +1739,150 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return false;
return processCallback(0x61fe);
+ case 0x8117:
+ Dialog::show(scene, 0x0a41, 529);
+ playSound(5, 2);
+ playSound(5, 44);
+ playAnimation(642, 1, true);
+ playAnimation(641, 0, true);
+ waitAnimation();
+ Dialog::show(scene, 0x0aff, 529);
+ Dialog::show(scene, 0x0ba0, 529);
+ moveRel(0, 1, 0);
+ Dialog::show(scene, 0x0c10, 529);
+ inventory->remove(50);
+ processCallback(0x9d45);
+ return true;
+
case 0x8174:
setOns(0, 0);
- playSound(5);
+ playSound(5, 2);
+ playSound(5, 5);
+ playSound(5, 9);
+ playSound(14, 19);
+ playSound(5, 50);
playAnimation(542);
setOns(1, 15);
disableObject(3);
enableObject(9);
return true;
+ case 0x81c2:
+ playSound(56, 11);
+ playSound(36, 13);
+ playSound(48, 22);
+ playSound(56, 57);
+ playSound(36, 59);
+ playSound(48, 68);
+ playSound(54, 120);
+ playSound(56, 141);
+ playSound(56, 144);
+ playSound(56, 147);
+ playAnimation(589, 1, true);
+ playAnimation(588, 0, true);
+ waitAnimation();
+ displayMessage(0x367f);
+ inventory->remove(34);
+ SET_FLAG(0xDBA1, 1);
+ return true;
+
+ case 0x823d: //grappling hook on the wall
+ playSound(5, 3);
+ for(byte i = 16; i <= 28; i += 2)
+ playSound(65, i);
+ playSound(47, 33);
+ playAnimation(620);
+ for(byte i = 3; i <= 18; i += 3)
+ playSound(56, i);
+ playAnimation(621, 0, true);
+ playAnimation(623, 1, true);
+ waitAnimation();
+ playSound(35);
+ playAnimation(622, 0, true);
+ playAnimation(624, 1, true);
+ displayMessage(0x3afd);
+ inventory->remove(43);
+ processCallback(0x9d45);
+ return true;
+
+
case 0x8312: //hedgehog + plastic apple
- playSound(5);
Dialog::show(scene, 0x3000);
setLan(1, 0);
- playAnimation(562);
- playAnimation(563, 1);
+ playSound(5, 24);
+ playSound(26, 32);
+ playSound(5, 42);
+ playSound(15, 77);
+ playSound(15, 79);
+ playSound(15, 82);
+ playSound(22, 91);
+ playSound(22, 102);
+ playSound(26, 114);
+ playSound(24, 124);
+ playAnimation(562, 0, true);
+ playAnimation(563, 1, true);
+ waitAnimation();
+
disableObject(6);
displayMessage(0x363f);
inventory->remove(27);
inventory->add(28);
return true;
+ case 0x839f:
+ inventory->remove(32);
+ playSound(37, 14);
+ playSound(16, 17);
+ playAnimation(564, 0, true);
+ playAnimation(565, 2, true);
+ waitAnimation();
+ setOns(0, 24);
+ playSound(39, 5);
+ playAnimation(582);
+ moveTo(63, 195, 1);
+ playAnimation(571, 1);
+ playAnimation(572, 1);
+ playAnimation(573, 1);
+ for(byte i = 1; i <= 7; i += 2)
+ playSound(40, i);
+ playAnimation(574, 1);
+ setLan(1, 0);
+ playAnimation(575, 1);
+ playAnimation(576, 1);
+ playAnimation(577, 1);
+ playAnimation(578, 1);
+ playAnimation(579, 1);
+ playAnimation(580, 1);
+ playSound(55, 18);
+ playAnimation(581, 1);
+ disableObject(2);
+ SET_FLAG(0xDB9F, 1);
+ return true;
+
case 0x84c7:
- playSound(20);
+ playSound(20, 9);
playAnimation(530);
loadScene(16, 236, 95, 1);
setOns(0, 9);
playAnimation(531);
- playSound(36);
+ playSound(36, 4);
playAnimation(532);
playAnimation(533);
+ moveTo(236, 95, 1, true);
playMusic(9);
return true;
case 0x8538://Sharpen sickle on well
+ moveTo(236, 190, 0);
setOns(2, 0);
//TODO: Remove handle sprite
+ playSound(5, 4);
+ playSound(14, 14);
+ playSound(14, 33);
+ playSound(5, 43);
playAnimation(643);
+ setOns(2, 43);
+ moveTo(236, 179, 3);
inventory->remove(0x2c);
inventory->add(0x2e);
return true;
@@ -1655,7 +1890,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x85eb:
if (CHECK_FLAG(0xDBB0, 1)) {
enableObject(6);
- playSound(25);
+ playSound(25, 10);
+ playSound(25, 14);
+ playSound(25, 18);
playAnimation(559);
setOns(1, 23);
SET_FLAG(0xDBB0, 2);
@@ -1665,14 +1902,18 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
case 0x863d:
- playSound(12);
+ playSound(12, 4);
+ playSound(50, 20);
+ playSound(50, 29);
playAnimation(554);
inventory->remove(19);
inventory->add(22);
return true;
case 0x8665:
- playSound(5);
+ playSound(5, 3);
+ for (byte i = 12; i <= 24; i += 2)
+ playSound(56, i);
playAnimation(567);
inventory->remove(12);
inventory->add(33);
@@ -1740,11 +1981,18 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDB9A, 1))
return processCallback(0x890b);
- playAnimation(523, 1);
inventory->remove(10);
SET_FLAG(0xDB9A, 1);
processCallback(0x88DE);
return true;
+
+ case 0x88de:
+ playSound(5);
+ Dialog::show(scene, 0x1B5F, 523);
+ playAnimation(537);
+ playAnimation(538, 1);
+ Dialog::show(scene, 0x1BE0, 523);
+ return true;
case 0x890b:
Dialog::pop(scene, 0xDAF0);
@@ -1754,20 +2002,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
if (CHECK_FLAG(0xDB9A, 1))
return processCallback(0x890B);
- playAnimation(523, 1);
inventory->remove(11);
SET_FLAG(0xDB9A, 1);
processCallback(0x88DE);
return true;
- case 0x88de:
- playSound(5);
- Dialog::show(scene, 0x1B5F);
- playAnimation(537);
- playAnimation(538, 1);
- Dialog::show(scene, 0x1BE0);
- return true;
-
case 0x892d:
if (CHECK_FLAG(0xDB9B, 1))
return processCallback(0x89aa);
@@ -1778,10 +2017,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
return true;
case 0x8942:
- playSound(5);
Dialog::show(scene, 0x2293);
- playAnimation(540);
- playAnimation(539, 1);
+ playSound(5, 10);
+ playAnimation(540, 0, true);
+ playAnimation(539, 1, true);
+ waitAnimation();
Dialog::show(scene, 0x24b1);
Dialog::show(scene, 0x24d7);
Dialog::show(scene, 0x2514);
@@ -1804,19 +2044,21 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
case 0x89cc:
inventory->remove(23);
- playSound(5);
+ playSound(5, 6);
Dialog::show(scene, 0x2634);
- playAnimation(555);
- playAnimation(556, 1);
- playAnimation(557);
- playAnimation(558, 1);
+ playAnimation(555, 0, true);
+ playAnimation(556, 1, true);
+ waitAnimation();
+ playAnimation(557, 0, true);
+ playAnimation(558, 1, true);
+ waitAnimation();
Dialog::show(scene, 0x2971);
inventory->add(24);
return true;
case 0x8a22:
+ playSound(45, 16);
playAnimation(560);
- playSound(45);
inventory->remove(26);
inventory->add(27);
Dialog::show(scene, 0x1ecd);
@@ -1824,6 +2066,36 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
SET_FLAG(0xDBB1, 1);
return true;
+ case 0x8a6f: //banknote + ann
+ if (CHECK_FLAG(0xDBB5, 1)) {
+ Dialog::show(scene, 0x2992);
+ playSound(5, 3);
+ playSound(5, 20);
+ playAnimation(671, 0, true);
+ playAnimation(670, 1, true);
+ waitAnimation();
+ playAnimation(672, 1);
+ Dialog::show(scene, 0x2a00, 672);
+ //fixme: skipped some text
+ playSound(83, 12);
+ playAnimation(673);
+ loadScene(11, scene->getPosition());
+ playSound(24, 31);
+ playSound(24, 48);
+ playSound(79, 50);
+ playAnimation(674, 0, true);
+ playAnimation(675, 1, true);
+ waitAnimation();
+ loadScene(28, 0, 167, 2);
+ moveTo(66, 167, 2);
+ displayMessage(0x4a6f);
+ inventory->clear();
+ inventory->add(29);
+ setMusic(10);
+ } else
+ displayMessage(0x4a29);
+ return true;
+
case 0x8b82: //use fan on laundry
setOns(0, 0);
playSound(5);
@@ -1879,21 +2151,81 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
disableObject(2);
return true;
+ case 0x8d57:
+ playSound(5, 2);
+ playSound(15, 12);
+ playAnimation(638);
+ inventory->remove(48);
+ //fixme: add time challenge here!
+
+ /*
+ inventory->add(48);
+ playSound(24, 26);
+ playAnimation(650, 0, true);
+ playAnimation(651, 2, true);
+ waitAnimation();
+ */
+ playSound(5, 2);
+ playSound(52, 13);
+ setOns(1, 46);
+ inventory->remove(49);
+
+ //third part
+ playAnimation(649);
+ setOns(1, 47);
+ for (byte i = 1; i <= 37; i += 4)
+ playSound(68, i);
+ playAnimation(639, 2);
+ setOns(0, 42);
+ enableObject(6);
+ disableObject(5);
+ SET_FLAG(0xDBAB, 1);
+ return true;
+
case 0x8f1d:
Dialog::show(scene, 0x2dd6);
- displayMessage(0x34c7);
setLan(3, 0);
setLan(4, 0);
- playSound(56);
- playAnimation(516);
- playAnimation(517, 2);
- playAnimation(518, 3);
+ displayMessage(0x34c7);
+ for(uint i = 16; i <= 30; i += 2)
+ playSound(56, i);
+ playSound(2, 64);
+ playSound(3, 74);
+ playAnimation(516, 0, true);
+ playAnimation(517, 2, true);
+ playAnimation(518, 3, true);
+ waitAnimation();
disableObject(2);
disableObject(3);
inventory->remove(2);
SET_FLAG(0xDB96, 1);
return true;
+ case 0x8fc8:
+ displayMessage(0x3b2f);
+ playSound(5, 3);
+ playAnimation(627, 0, true);
+ playAnimation(629, 1, true);
+ waitAnimation();
+ playSound(41, 10);
+ playSound(41, 47);
+ playSound(55, 52);
+ if (CHECK_FLAG(0xDBA8, 1)) {
+ setLan(2, 0);
+ playAnimation(628, 0, true);
+ playAnimation(634, 1, true);
+ waitAnimation();
+ disableObject(4);
+ displayMessage(0x3b6c);
+ SET_FLAG(0xDBA9, 1);
+ } else {
+ playAnimation(628, 0, true);
+ playAnimation(630, 1, true);
+ waitAnimation();
+ displayMessage(0x3b59);
+ }
+ return true;
+
case 0x9054: //mouse hole
if (CHECK_FLAG(0xDBAB, 1)) {
displayMessage(0x3c0b);
@@ -1949,9 +2281,43 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playAnimation(971);
loadScene(32, 139, 199);
return true;
-
- case 0x9002:
-
+
+ case 0x9921:
+ {
+ int id = scene->getId();
+ Common::Point p = scene->getPosition();
+ if (id != 15) {
+ displayMessage(id == 16? 0x38ce: 0x38a7);
+ } else {
+ moveTo(156, 180, 3);
+ playSound(5, 3);
+ playSound(38, 16);
+ playSound(38, 22);
+ playAnimation(614);
+ playSound(5, 3);
+ playSound(44, 10);
+ playSound(20, 26);
+ playAnimation(615);
+ loadScene(17, p);
+ playSound(64, 7);
+ playSound(64, 21);
+ playSound(64, 42);
+ playSound(64, 63);
+ playAnimation(617);
+ //another time challenge!
+ if (true) {
+ playSound(64, 7);
+ playAnimation(618);
+ disableObject(5);
+ setOns(0, 0);
+ playSound(31);
+ playAnimation(619);
+ inventory->add(42);
+ displayMessage(0x3989);
+ }
+ loadScene(id, p);
+ }
+ }
return true;
case 0x9aca:
@@ -1993,6 +2359,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
} else
displayMessage(0x3c58);
return true;
+
+ case 0x9c6d:
+ displayMessage(0x49d1);
+ SET_FLAG(0xDBB5, 1);
+ return false;
case 0x9c79:
if (scene->getId() != 36) {
@@ -2055,6 +2426,63 @@ bool TeenAgentEngine::processCallback(uint16 addr) {
playAnimation(991, 1, true);
waitAnimation();
return true;
+
+ case 0x9de5:
+ loadScene(30, scene->getPosition());
+ playAnimation(887, 1, true);
+ playAnimation(888, 2, true);
+ waitAnimation();
+ Dialog::show(scene, 0x6fb8);
+ playSound(26, 3);
+ playAnimation(891, 1, true);
+ playAnimation(892, 2, true);
+ waitAnimation();
+ Dialog::show(scene, 0x6ff0);
+ return true;
+
+ case 0x9e54:
+ loadScene(32, scene->getPosition());
+ playAnimation(894, 1, true);
+ playAnimation(893, 2, true);
+ waitAnimation();
+ Dialog::show(scene, 0x706e);
+ playSound(75, 9);
+ playAnimation(898, 1, true);
+ playAnimation(897, 2, true);
+ Dialog::show(scene, 0x7096);
+ return true;
+
+ case 0x9ec3:
+ loadScene(29, scene->getPosition());
+ playAnimation(901, 0, true);
+ playAnimation(900, 1, true);
+ waitAnimation();
+ Dialog::show(scene, 0x7161, 902, 903);
+ for (byte i = 3; i <= 9; i += 2)
+ playSound(56, i);
+
+ playAnimation(905, 0, true);
+ playAnimation(904, 1, true);
+ Dialog::show(scene, 0x71c6, 902, 903);
+ return true;
+
+ case 0x9f3e:
+ loadScene(35, scene->getPosition());
+ playAnimation(907, 1, true);
+ playAnimation(906, 2, true);
+ waitAnimation();
+ //Dialog::show(scene, 0x7243, 908, 909);
+ Dialog::show(scene, 0x7243);
+ //Dialog::show(scene, 0x7318, 908, 910); //fixme: implement better synchronization
+ Dialog::show(scene, 0x7318);
+ loadScene(11, scene->getPosition());
+ setOns(3, 51);
+ playAnimation(911, 1);
+ playAnimation(899, 1);
+ enableObject(8);
+ setLan(2, 8);
+ SET_FLAG(0xDBEC, 1);
+ return true;
}
//unimplemented callback :(