[Scummvm-git-logs] scummvm master -> f979a1da555d3f6d1f832f842e4aaef96d375dff
dreammaster
noreply at scummvm.org
Sat Aug 31 18:03:02 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f979a1da55 M4: RIDDLE: Finished room 407 daemon
Commit: f979a1da555d3f6d1f832f842e4aaef96d375dff
https://github.com/scummvm/scummvm/commit/f979a1da555d3f6d1f832f842e4aaef96d375dff
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-31T11:02:55-07:00
Commit Message:
M4: RIDDLE: Finished room 407 daemon
Changed paths:
engines/m4/riddle/rooms/section4/room407.cpp
engines/m4/riddle/rooms/section4/room407.h
diff --git a/engines/m4/riddle/rooms/section4/room407.cpp b/engines/m4/riddle/rooms/section4/room407.cpp
index ef66273cd5c..b57b8208938 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -1160,7 +1160,421 @@ void Room407::daemon() {
setGlobals1(_ripHiHand1, 1, 12, 12, 12, 0, 12, 1, 1, 1);
sendWSMessage_110000(313);
break;
-// TODO
+
+ case 313:
+ terminateMachineAndNull(_tubeInDrawer);
+ terminateMachineAndNull(_drawerPopupHose);
+ terminateMachineAndNull(_faucet1);
+
+ hotspot_set_active("GARDEN HOSE ", false);
+ hotspot_set_active("GARDEN HOSE ", false);
+ hotspot_set_active("FAUCET PIPE ", false);
+ hotspot_set_active("FAUCET PIPE ", true);
+ hotspot_set_active("SURGICAL TUBE ", true);
+ hotspot_set_active("SURGICAL TUBE ", false);
+ hotspot_set_active("GARDEN HOSE ", true);
+
+ _val8 = 1140;
+ _xyzzy2 = 1140;
+ _xyzzy3 = 1140;
+ _xyzzy7 = 1140;
+
+ sendWSMessage_120000(314);
+ break;
+
+ case 314:
+ sendWSMessage_150000(315);
+ break;
+
+ case 315:
+ series_unload(_ripHiHand1);
+ ws_walk(155, 335, nullptr, 316, 11);
+ break;
+
+ case 316:
+ _ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
+ setGlobals1(_ripMedHand1, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(317);
+ break;
+
+ case 317:
+ _drawerPopupHose = series_place_sprite("407 TUBE AND HOSE TO JAR",
+ 0, 0, 0, 100, 0xb00);
+ _faucet1 = series_place_sprite("407BITSR", 1, 0, -53, 100, 0xb00);
+ sendWSMessage_120000(318);
+ break;
+
+ case 318:
+ sendWSMessage_150000(319);
+ break;
+
+ case 319:
+ series_unload(_ripMedHand1);
+ _frotz1 = 1;
+ player_set_commands_allowed(true);
+ break;
+
+ case 320:
+ _ripHeadTurn = series_load("RIP TREK HEAD TURN POS1");
+ setGlobals1(_ripHeadTurn, 1, 3, 3, 3, 0, 3, 1, 1, 1);
+ sendWSMessage_110000(322);
+ break;
+
+ case 322:
+ if (_xyzzy5 == 1116 && _xyzzy9 == 1116 && _xyzzy4 == 1116) {
+ terminateMachineAndNull(_faucet1);
+ terminateMachineAndNull(_tubeInDrawer);
+ terminateMachineAndNull(_drawerPopupHose);
+ terminateMachineAndNull(_bottle);
+ terminateMachineAndNull(_stopperInDrawer);
+ terminateMachineAndNull(_bits);
+ terminateMachineAndNull(_handleInDrawer);
+ terminateMachineAndNull(_niche);
+ terminateMachineAndNull(_lever);
+
+ _letter = series_place_sprite("407 letter", 0, 0, 0, 100, 0xc00);
+ _407h = series_load("407H");
+ _niche = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xb00, 0,
+ triggerMachineByHashCallbackNegative, "Jar opens cabinet door");
+ sendWSMessage_10000(1, _niche, _407h, 1, 29, 330, _407h, 29, 29, 0);
+ digi_play("407_s21", 2);
+ } else {
+ if (_xyzzy5 == 1116) {
+ _jarWaterFallingLeft = series_load("407 JAR WATER FALLING LEFT");
+ _jarLeft = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "407 JAR WATER FALLING LEFT");
+ sendWSMessage_10000(1, _jarLeft, _jarWaterFallingLeft, 1, 13, 323,
+ _jarWaterFallingLeft, 14, 19, 0);
+ }
+
+ if (_xyzzy9 != 1116) {
+ _jarWaterFallingCentre = series_load("407 JAR WATER FALLING CENTRE");
+ _jarCentre = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Center jar hole leaks");
+ sendWSMessage_10000(1, _jarCentre, _jarWaterFallingCentre, 1, 11, 323,
+ _jarWaterFallingCentre, 12, 15, 0);
+ }
+
+ if (_xyzzy4 != 1116) {
+ _jarWaterFallingRight = series_load("407 JAR WATER FALLING RIGHT");
+ _jarRight = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Right jar hole leaks");
+ sendWSMessage_10000(1, _jarRight, _jarWaterFallingRight, 1, 13, 323,
+ _jarWaterFallingRight, 14, 20, 0);
+ }
+
+ kernel_timing_trigger(200, 340);
+ }
+ break;
+
+ case 323:
+ digi_play_loop("407_s10", 2);
+ break;
+
+ case 330:
+ digi_preload("407r37");
+ digi_play("407r37", 1, 255, 666);
+ _frotz2 = 1;
+ _xyzzy5 = 1130;
+ _xyzzy9 = 1130;
+ _xyzzy4 = 1130;
+
+ hotspot_set_active("MICROSCOPE", true);
+ hotspot_set_active("LETTER", true);
+ hotspot_set_active("ARMORED CABINET", false);
+ kernel_timing_trigger(1, 340);
+ break;
+
+ case 340:
+ sendWSMessage_120000(342);
+ break;
+
+ case 342:
+ sendWSMessage_150000(343);
+ break;
+
+ case 343:
+ series_unload(_ripHeadTurn);
+ _ripMedHand1 = series_load("RIP TREK MED REACH HAND POS1");
+ setGlobals1(_ripMedHand1, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(344);
+ break;
+
+ case 344:
+ if (!_frotz2) {
+ if (_xyzzy5 != 1115)
+ sendWSMessage_10000(1, _jarLeft, _jarWaterFallingLeft, 20, 35, 350,
+ _jarWaterFallingLeft, 35, 35, 0);
+ if (_xyzzy9 != 1116)
+ sendWSMessage_10000(1, _jarCentre, _jarWaterFallingCentre, 16, 28, 351,
+ _jarWaterFallingCentre, 28, 28, 0);
+ if (_xyzzy4 != 1116)
+ sendWSMessage_10000(1, _jarRight, _jarWaterFallingRight, 21, 35, 352,
+ _jarWaterFallingRight, 35, 35, 0);
+ }
+
+ terminateMachineAndNull(_faucet2);
+ _val4 = 1011;
+ _faucet2 = series_place_sprite("407FAUC", 1, 0, 0, 100, 0xe00);
+ sendWSMessage_120000(345);
+ break;
+
+ case 345:
+ sendWSMessage_150000(346);
+ break;
+
+ case 346:
+ series_unload(_ripMedHand1);
+ player_set_commands_allowed(true);
+ break;
+
+ case 350:
+ digi_stop(2);
+ terminateMachineAndNull(_jarLeft);
+ series_unload(_jarWaterFallingLeft);
+ break;
+
+ case 351:
+ digi_stop(2);
+ terminateMachineAndNull(_jarCentre);
+ series_unload(_jarWaterFallingCentre);
+ break;
+
+ case 352:
+ digi_stop(2);
+ terminateMachineAndNull(_jarRight);
+ series_unload(_jarWaterFallingRight);
+ break;
+
+ case 360:
+ _int7 = 1031;
+ digi_preload("407_s24");
+ digi_preload("407_s27");
+ digi_preload("407_s27a");
+ digi_preload("407_s27b");
+ digi_preload("407_s27c");
+
+ terminateMachineAndNull(_comboLockPopup);
+ terminateMachineAndNull(_lockButton1);
+ terminateMachineAndNull(_lockButton2);
+ terminateMachineAndNull(_lockButton3);
+ terminateMachineAndNull(_lockButton4);
+ series_unload(_407pu08d);
+ series_unload(_407pu08c);
+ series_unload(_407pu08b);
+ series_unload(_407pu08a);
+
+ setHotspots();
+ _407e = series_load("407E");
+ terminateMachineAndNull(_escape);
+ _escape = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xd00, 0,
+ triggerMachineByHashCallbackNegative, "METAL DOOR");
+ sendWSMessage_10000(1, _escape, _407e, 1, 30, 364, _407e, 30, 30, 0);
+ digi_play("407_s24", 2);
+ kernel_timing_trigger(30, 362);
+ break;
+
+ case 362:
+ player_update_info();
+ ws_walk(_G(player_info).x, _G(player_info).y, nullptr, 363, 1);
+ break;
+
+ case 363:
+ _exit = series_load("407 EXIT");
+
+ if (_frotz5)
+ digi_play("407r43", 1);
+ break;
+
+ case 364:
+ ws_walk(409, 320, nullptr, 365, 1);
+ break;
+
+ case 365:
+ ws_hide_walker();
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "RIP exits");
+ sendWSMessage_10000(1, _ripley, _exit, 1, 22, 366, _exit, 22, 22, 0);
+ break;
+
+ case 366:
+ digi_play("407_s03", 3);
+ digi_play("407r44", 1);
+ sendWSMessage_10000(1, _ripley, _exit, 22, 65, 367, _exit, 65, 65, 0);
+ break;
+
+ case 367:
+ sendWSMessage_10000(1, _ripley, _exit, 66, 81, -1, _exit, 81, 81, 0);
+ sendWSMessage_10000(1, _escape, _407e, 30, 1, 368, _407e, 1, 1, 0);
+ digi_play("407_s24", 2);
+ break;
+
+ case 368:
+ digi_play("407_s25", 2, 255, 369);
+ break;
+
+ case 369:
+ kernel_timing_trigger(60, 370);
+ break;
+
+ case 370:
+ digi_play("407r45", 1);
+ kernel_timing_trigger(60, 371);
+ break;
+
+ case 371:
+ disable_player_commands_and_fade_init(380);
+ break;
+
+ case 380:
+ kernel_timing_trigger(60, 381);
+ break;
+
+ case 381:
+ digi_play("407_s27a", 3, 255, 382);
+ break;
+
+ case 382:
+ digi_play("407_s27", 3, 255, 383);
+ break;
+
+ case 383:
+ kernel_timing_trigger(60, 384);
+ break;
+
+ case 384:
+ digi_play("407r46", 1, 255, 385);
+ break;
+
+ case 385:
+ digi_play("407_s27b", 3, 255, 386);
+ break;
+
+ case 386:
+ digi_play("407_s27", 3, 255, 390);
+ break;
+
+ case 390:
+ digi_play("407_s27a", 3);
+ digi_play("407r44", 1, 255, 391);
+ break;
+
+ case 391:
+ digi_play("407r47", 1, 255, 392);
+ break;
+
+ case 392:
+ digi_play("407_s7b", 3, 255, 393);
+ break;
+
+ case 393:
+ digi_play("407_s30", 3, 255, 395);
+ break;
+
+ case 395:
+ _G(flags)[V030] = 1;
+ midi_stop();
+ digi_stop(3);
+ _G(game).setRoom(408);
+ break;
+
+ case 400:
+ ws_unhide_walker();
+ sendWSMessage_10000(1, _ripley, _stair, 1, 30, 402, _stair, 30, 30, 0);
+ kernel_timing_trigger(60, 401);
+ ws_walk(347, 331, nullptr, -1, 9);
+ break;
+
+ case 401:
+ digi_play("407_s12", 2);
+ break;
+
+ case 402:
+ terminateMachineAndNull(_ripley);
+ _star2 = series_place_sprite("407STAR2", 0, 0, -53, 100, 0xf00);
+ series_unload(_stair);
+ series_unload(_ripEnters);
+ player_set_commands_allowed(true);
+ break;
+
+ case 410:
+ if (_xyzzy2 == 1100) {
+ digi_play("407_s32", 3);
+ } else if (_xyzzy3 == 1100) {
+ digi_play_loop("407_s31", 3);
+ _sink = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "water into sink");
+ sendWSMessage_10000(1, _sink, _waterFlowTube, 1, 4, -1,
+ _waterFlowTube, 1, 4, 0);
+ hotspot_set_active("WATER ", true);
+ } else {
+ _sink = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "water into sink");
+ sendWSMessage_10000(1, _sink, _waterFlowFaucet, 1, 4, -1,
+ _waterFlowFaucet, 1, 4, 0);
+ hotspot_set_active("WATER", true);
+ digi_play("407_s31", 3);
+ }
+
+ player_set_commands_allowed(true);
+ break;
+
+ case 420:
+ if (_xyzzy2 == 1130) {
+ digi_play_loop("407_s32", 3);
+ } else {
+ digi_play_loop("407_s31", 3);
+ _sink = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "water into sink");
+ sendWSMessage_10000(1, _sink, _waterFlowStem, 1, 4, -1,
+ _waterFlowStem, 1, 4, 0);
+ hotspot_set_active("WATER ", true);
+ }
+
+ player_set_commands_allowed(true);
+ break;
+
+ case 430:
+ digi_stop(3);
+
+ if (_xyzzy2 != 1100) {
+ hotspot_set_active("WATER ", false);
+ hotspot_set_active("WATER", false);
+ terminateMachineAndNull(_sink);
+ }
+ break;
+
+ case 440:
+ digi_stop(3);
+
+ if (_xyzzy2 != 1130) {
+ hotspot_set_active("WATER ", false);
+ terminateMachineAndNull(_sink);
+ }
+ break;
+
+ case 450:
+ digi_play("407_s16a", 1);
+ break;
+
+ case 666:
+ digi_unload("407r37");
+ break;
+
+ case 1200:
+ if (_val4 == 1010) {
+ digi_play("407_s31", 3);
+ kernel_timing_trigger(_val1, 1200);
+ }
+ break;
+
+ case 1202:
+ if (_val4 == 1010) {
+ digi_play("407_s32", 3);
+ kernel_timing_trigger(_val2, 1202);
+ }
+ break;
+
default:
break;
}
diff --git a/engines/m4/riddle/rooms/section4/room407.h b/engines/m4/riddle/rooms/section4/room407.h
index b0ad770d7ff..00efed06c32 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -138,10 +138,19 @@ private:
int _hangRip = 0;
int _rptmhr11 = 0;
int _407tpis2 = 0;
+ int _ripHeadTurn = 0;
+ int _jarWaterFallingLeft = 0;
+ int _jarWaterFallingCentre = 0;
+ int _jarWaterFallingRight = 0;
+ machine *_jarLeft = nullptr;
+ machine *_jarCentre = nullptr;
+ machine *_jarRight = nullptr;
+ machine *_sink = nullptr;
int _407a = 0;
int _407b = 0;
int _407c = 0;
int _407d = 0;
+ int _407e = 0;
int _407h = 0;
int _407j = 0;
int _407k = 0;
More information about the Scummvm-git-logs
mailing list