[Scummvm-git-logs] scummvm master -> f517ff48daa5aa69bf86aa70e9b10d1b38bc3897
dreammaster
noreply at scummvm.org
Sun Sep 1 04:51:26 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:
f517ff48da M4: RIDDLE: Added room 408 daemon
Commit: f517ff48daa5aa69bf86aa70e9b10d1b38bc3897
https://github.com/scummvm/scummvm/commit/f517ff48daa5aa69bf86aa70e9b10d1b38bc3897
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-31T21:51:15-07:00
Commit Message:
M4: RIDDLE: Added room 408 daemon
Changed paths:
engines/m4/riddle/rooms/section4/room408.cpp
engines/m4/riddle/rooms/section4/room408.h
diff --git a/engines/m4/riddle/rooms/section4/room408.cpp b/engines/m4/riddle/rooms/section4/room408.cpp
index f204009b1e2..6adf921bdd0 100644
--- a/engines/m4/riddle/rooms/section4/room408.cpp
+++ b/engines/m4/riddle/rooms/section4/room408.cpp
@@ -183,6 +183,395 @@ void Room408::init() {
}
void Room408::daemon() {
+ int frame;
+
+ switch (_G(kernel).trigger) {
+ case 20:
+ case 30:
+ player_set_commands_allowed(true);
+ break;
+
+ case 40:
+ digi_play("408_s03", 2);
+ sendWSMessage_10000(1, _exit, _ripExits, 76, 85, 42, _ripExits, 85, 85, 0);
+ break;
+
+ case 42:
+ ws_unhide_walker();
+ DisposePath(_G(my_walker)->walkPath);
+ _G(my_walker)->walkPath = CreateCustomPath(250, 235, -1);
+ ws_custom_walk(_G(my_walker), 4, -1);
+ sendWSMessage_10000(1, _exit, _ripExits, 31, 1, 44, _ripExits, 1, 1, 0);
+ digi_play("408r31", 1);
+ break;
+
+ case 44:
+ terminateMachineAndNull(_exit);
+ series_unload(_ripExits);
+ _exit = series_show("RIP EXITS 407", 0xf00, 16);
+ player_set_commands_allowed(true);
+ break;
+
+ case 100:
+ kernel_timing_trigger(1, 102);
+ break;
+
+ case 101:
+ _val6 = 1000;
+ _val7 = 1105;
+ break;
+
+ case 102:
+ if (_val2 != -1) {
+ kernel_timing_trigger(1, _val2);
+ _val2 = -1;
+ } else {
+ kernel_timing_trigger(1, 103);
+ }
+ break;
+
+ case 103:
+ if (_val6 == 1000) {
+ switch (_val7) {
+ case 1100:
+ ws_hide_walker();
+ player_set_commands_allowed(false);
+ _ripHandsBehindBack = series_load("RIP TREK HANDS BEHIND BACK POS2");
+
+ player_update_info();
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, 0,
+ triggerMachineByHashCallbackNegative, "rip talks wolf");
+ _ripleyShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, 0,
+ triggerMachineByHashCallbackNegative, "rip talks wolf SHADOW");
+
+ sendWSMessage_10000(1, _ripley, _ripHandsBehindBack, 1, 15, 102,
+ _ripHandsBehindBack, 15, 15, 0);
+ sendWSMessage_10000(1, _ripleyShadow, _ripShadowSeries, 1, 1, -1,
+ _ripShadowSeries, 1, 1, 0);
+ _val7 = 1101;
+ _val8 = 2000;
+ _val9 = 2100;
+ kernel_timing_trigger(1, 110);
+ break;
+
+ case 1101:
+ _val7 = 1103;
+ kernel_timing_trigger(1, 102);
+ conv_load("conv408a", 0, 10, 101);
+ conv_export_value_curr(_G(flags)[V117], 0);
+ conv_export_value_curr(_G(flags)[V118], 1);
+ conv_play();
+ break;
+
+ case 1102:
+ sendWSMessage_10000(1, _ripley, _ripHandsBehindBack, 15, 15, 102,
+ _ripHandsBehindBack, 15, 15, 0);
+ break;
+
+ case 1103:
+ sendWSMessage_10000(1, _ripley, _ripHandsBehindBack, 15, 15, 102,
+ _ripHandsBehindBack, 15, 15, 0);
+ break;
+
+ case 1104:
+ sendWSMessage_10000(1, _ripley, _ripHandsBehindBack, 15, 15, -1,
+ _ripHandsBehindBack, 15, 15, 0);
+ break;
+
+ case 1105:
+ sendWSMessage_10000(1, _ripley, _ripHandsBehindBack, 15, 1, 103,
+ _ripHandsBehindBack, 1, 1, 0);
+ _val7 = 1106;
+ _val9 = 2103;
+ break;
+
+ case 1106:
+ terminateMachineAndNull(_ripley);
+ terminateMachineAndNull(_ripleyShadow);
+ ws_unhide_walker();
+ series_unload(_ripHandsBehindBack);
+
+ if (_currentNode != 8 && _currentNode != 9) {
+ _val8 = 2001;
+ _val9 = 2200;
+ kernel_timing_trigger(1, 110);
+ player_set_commands_allowed(true);
+ } else {
+ _val4 = 320;
+ kernel_timing_trigger(1, 110);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+
+ case 110:
+ switch (_val8) {
+ case 2000:
+ if (_val9 >= 2100 && _val9 <= 2104) {
+ if (_val4 != -1) {
+ kernel_timing_trigger(1, _val4);
+ _val4 = -1;
+ } else {
+ kernel_timing_trigger(1, 111);
+ }
+ }
+ break;
+
+ case 2001:
+ if (_val9 == 2200) {
+ if (_val4 != -1) {
+ kernel_timing_trigger(1, _val4);
+ _val4 = -1;
+ } else {
+ kernel_timing_trigger(1, 111);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 111:
+ switch (_val8) {
+ case 2000:
+ switch (_val9) {
+ case 2100:
+ sendWSMessage_10000(1, _wolfie, _wolf, 10, 13, 110, _wolf, 13, 13, 0);
+ _val9 = 2102;
+ break;
+ case 2101:
+ frame = imath_ranged_rand(14, 16);
+ sendWSMessage_10000(1, _wolfie, _wolf, frame, frame, 110,
+ _wolf, frame, frame, 0);
+ break;
+ case 2102:
+ sendWSMessage_10000(1, _wolfie, _wolf, 13, 13, 110, _wolf, 13, 13, 0);
+ _val9 = 2102;
+ break;
+ case 2103:
+ sendWSMessage_10000(1, _wolfie, _wolf, 13, 10, -1, _wolf, 10, 10, 0);
+ break;
+ case 2104:
+ sendWSMessage_10000(1, _wolfie, _wolf, 1, 9, 110, _wolf, 9, 9, 0);
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case 2001:
+ if (_val9 == 2200) {
+ sendWSMessage_10000(1, _wolfie, _wolf, 1, 9, 110, _wolf, 9, 9, 0);
+
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ digi_play("950_s19", 2);
+ break;
+ case 2:
+ digi_play("950_s20", 2);
+ break;
+ case 3:
+ digi_play("950_s21", 2);
+ break;
+ default:
+ break;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case 220:
+ _val8 = 2000;
+ _val9 = 2100;
+
+ kernel_timing_trigger(1, 110);
+ _ripTrekTwoHandTalk = series_load("RIP TREK TWO HAND TALK POS2");
+
+ player_update_info();
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale,
+ 0x100, 0, triggerMachineByHashCallbackNegative, "rip talks wolf");
+ _ripleyShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale,
+ 0x100, 0, triggerMachineByHashCallbackNegative, "rip talks wolf SHADOW");
+
+ sendWSMessage_10000(1, _ripleyShadow, _ripShadowSeries, 1, 1, -1,
+ _ripShadowSeries, 1, 1, 0);
+ sendWSMessage_10000(1, _ripley, _ripTrekTwoHandTalk, 1, 6, 222,
+ _ripTrekTwoHandTalk, 6, 6, 0);
+ break;
+
+ case 222:
+ _val9 = 2101;
+ kernel_timing_trigger(1, 110);
+ digi_play("402w008", 1, 255, 226);
+ kernel_timing_trigger(45, 224);
+ break;
+
+ case 225:
+ terminateMachineAndNull(_ripley);
+ terminateMachineAndNull(_ripleyShadow);
+ ws_unhide_walker();
+ series_unload(_ripTrekTwoHandTalk);
+ break;
+
+ case 226:
+ _val9 = 2103;
+ kernel_timing_trigger(30, 227);
+ break;
+
+ case 227:
+ _val8 = 2001;
+ _val9 = 2200;
+ kernel_timing_trigger(1, 110);
+ player_set_commands_allowed(true);
+ break;
+
+ case 300:
+ _wolfWalker = triggerMachineByHash_3000(8, 8, S4_NORMAL_DIRS, S4_SHADOW_DIRS,
+ -20, 345, 3, triggerMachineByHashCallback3000, "WOLF_WALKER");
+ sendWSMessage_10000(_wolfWalker, 660, 345, 9, -1, 0);
+ kernel_timing_trigger(400, 302);
+ kernel_timing_trigger(450, 303);
+ break;
+
+ case 302:
+ ws_unhide_walker();
+ player_first_walk(-20, 345, 3, 660, 345, 9, false);
+ break;
+
+ case 303:
+ disable_player_commands_and_fade_init(304);
+ break;
+
+ case 304:
+ _G(game).setRoom(403);
+ break;
+
+ case 320:
+ terminateMachineAndNull(_wolfie);
+ _wolfie = series_stream("WOLF STPS DOWN DRPS CLIPPERS", 6, 0xd00, 323);
+ series_stream_break_on_frame(_wolfie, 100, 322);
+ break;
+
+ case 322:
+ ws_walk(414, 336, nullptr, -1, 9);
+ break;
+
+ case 323:
+ hotspot_set_active("WOLF", false);
+ _G(flags)[V131] = 402;
+ player_set_commands_allowed(true);
+ break;
+
+ case 350:
+ _ripLowReacher = series_load("RIP TREK LOW REACHER POS1");
+ setGlobals1(_ripLowReacher, 1, 7, 7, 7, 0, 7, 1, 1, 1);
+ sendWSMessage_110000(352);
+ break;
+
+ case 352:
+ _plank = series_place_sprite("Plank gone", 0, 0, 0, 100, 0xf00);
+ inv_move_object("PLANK", 408);
+ hotspot_set_active("PLANK", true);
+ sendWSMessage_120000(353);
+ break;
+
+ case 353:
+ sendWSMessage_150000(354);
+ break;
+
+ case 354:
+ series_unload(_ripLowReacher);
+ ws_walk(234, 319, nullptr, 355, 1);
+ _ripLowReacher = series_load("RIP TREK MED REACH HAND POS1");
+ break;
+
+ case 355:
+ setGlobals1(_ripLowReacher, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(356);
+ break;
+
+ case 356:
+ _edger = series_place_sprite("Edger gone", 0, 0, -53, 100, 0xf00);
+ hotspot_set_active("EDGER", true);
+ inv_move_object("EDGER", 408);
+ sendWSMessage_120000(357);
+ break;
+
+ case 357:
+ sendWSMessage_150000(358);
+ break;
+
+ case 358:
+ series_unload(_ripLowReacher);
+ ws_walk(-20, 345, nullptr, -1, 9);
+ kernel_timing_trigger(60, 359);
+ break;
+
+ case 359:
+ disable_player_commands_and_fade_init(360);
+ break;
+
+ case 360:
+ digi_stop(3);
+ _G(game).setRoom(402);
+ break;
+
+ case 400:
+ _ripLowReacher = series_load("RIP TREK LOW REACHER POS1");
+ setGlobals1(_ripLowReacher, 1, 7, 7, 7, 0, 7, 1, 1, 1);
+ sendWSMessage_110000(402);
+ break;
+
+ case 402:
+ _plank = series_place_sprite("Plank gone", 0, 0, 0, 100, 0xf00);
+ inv_move_object("PLANK", 408);
+ hotspot_set_active("PLANK", true);
+ sendWSMessage_120000(403);
+ break;
+
+ case 403:
+ sendWSMessage_150000(404);
+ break;
+
+ case 404:
+ case 424:
+ series_unload(_ripLowReacher);
+ player_set_commands_allowed(true);
+ break;
+
+ case 420:
+ _ripLowReacher = series_load("RIP TREK MED REACH HAND POS1");
+ setGlobals1(_ripLowReacher, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(422);
+ break;
+
+ case 422:
+ _edger = series_place_sprite("Edger gone", 0, 0, -53, 100, 0xf00);
+ hotspot_set_active("EDGER", true);
+ inv_move_object("EDGER", 408);
+ sendWSMessage_120000(423);
+ break;
+
+ case 423:
+ sendWSMessage_150000(424);
+ break;
+
+ default:
+ break;
+ }
}
void Room408::pre_parser() {
diff --git a/engines/m4/riddle/rooms/section4/room408.h b/engines/m4/riddle/rooms/section4/room408.h
index c470e068f6c..149471a1e04 100644
--- a/engines/m4/riddle/rooms/section4/room408.h
+++ b/engines/m4/riddle/rooms/section4/room408.h
@@ -45,7 +45,13 @@ private:
machine *_plank = nullptr;
int _wolf = 0;
machine *_wolfie = nullptr;
+ machine *_wolfWalker = nullptr;
int _ripLowReacher = 0;
+ int _ripHandsBehindBack = 0;
+ machine *_ripley = nullptr;
+ machine *_ripleyShadow = nullptr;
+ int _ripShadowSeries = 0;
+ int _ripTrekTwoHandTalk = 0;
void conv408a();
bool takePlank();
More information about the Scummvm-git-logs
mailing list