[Scummvm-git-logs] scummvm master -> f0a87229b43498eb4a5779913891e2bd0336d720
Strangerke
noreply at scummvm.org
Sat Jan 4 19:26:58 UTC 2025
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:
f0a87229b4 M4: RIDDLE: Room 807: Finish the implementation of parser (room complete)
Commit: f0a87229b43498eb4a5779913891e2bd0336d720
https://github.com/scummvm/scummvm/commit/f0a87229b43498eb4a5779913891e2bd0336d720
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-01-04T20:26:45+01:00
Commit Message:
M4: RIDDLE: Room 807: Finish the implementation of parser (room complete)
Changed paths:
engines/m4/riddle/rooms/section8/room807.cpp
engines/m4/riddle/rooms/section8/room807.h
diff --git a/engines/m4/riddle/rooms/section8/room807.cpp b/engines/m4/riddle/rooms/section8/room807.cpp
index a19e622c247..acedeaf8c97 100644
--- a/engines/m4/riddle/rooms/section8/room807.cpp
+++ b/engines/m4/riddle/rooms/section8/room807.cpp
@@ -701,10 +701,218 @@ void Room807::parser() {
break;
case 6:
+ if (player_said("stone block")) {
+ digi_play("807r22", 1, 255, -1, -1);
+ } else if (player_said("corridor")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ inv_move_object("wooden beam", 807);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "wooden beam", true);
+ ws_hide_walker(_G(my_walker));
+ series_play("807rp02", 4095, 0, 5, 5, 0, 100, 0, 0, 0, 24);
+
+ break;
+
+ case 5:
+ series_play("807rp02", 4095, 0, 10, 5, 0, 100, 0, 0, 25, -1);
+ digi_play("807_s06", 2, 255, -1, -1);
+
+ break;
+
+ case 10:
+ player_set_commands_allowed(true);
+ ws_unhide_walker(_G(my_walker));
+ ws_demand_facing(_G(my_walker), 11);
+ _807PostMach = series_show("807post", 4095, 0, -1, -1, 0, 100, 0, 0);
+
+ break;
+
+ default:
+ break;
+
+ }
+ } else if (player_said("mei chen")) {
+ digi_play("com017", 1, 255, -1, 997);
+ } else
+ _G(player).command_ready = true;
+
+ break;
+
case 7:
+ if ((player_said("crank") && inv_object_in_scene("crank", 807)) || player_said("slot")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ inv_move_object("wooden post", 807);
+ _field38 = 0;
+ hotspot_set_active(_G(currentSceneDef).hotspots, "wooden post", true);
+ if (_G(flags[V274]) == 0 && !inv_object_in_scene("wooden beam", 807)) {
+ terminateMachine(_807Crnk2Mach);
+ _807Crnk2Mach = series_show("807crnk2", 4095, 0, -1, -1, 9, 100, 0, 0);
+ series_load("807rp06", -1, nullptr);
+ series_play("807rp04", 256, 2, 10, 5, 0, 100, 0, 0, 0, -1);
+ } else {
+ ws_hide_walker(_G(my_walker));
+ series_play("807rp06", 256, 0, 15, 5, 0, 100, 0, 0, 0, 20);
+ player_update_info(_G(my_walker), &_G(player_info));
+ _safariShadowMach = series_place_sprite(*SAFARI_SHADOWS, 0, 476, 318, _G(player_info).scale, 257);
+ }
+
+ break;
+
+ case 10:
+ series_play("807rp06", 256, 0, 15, 5, 0, 100, 0, 0, 0, 20);
+ break;
+
+ case 15:
+ series_play("807rp06", 256, 0, 20, 5, 0, 100, 0, 0, 21, 30);
+ digi_play("807_s05", 2, 255, -1, -1);
+ _807BeamMach = series_show("807beam", 4095, 0, -1, -1, 0, 100, 0, 0);
+
+ break;
+
+ case 20:
+ player_set_commands_allowed(true);
+ ws_unhide_walker(_G(my_walker));
+ ws_demand_facing(_G(my_walker), 11);
+ terminateMachine(_safariShadowMach);
+
+ break;
+
+ default:
+ break;
+ }
+ } else if (player_said("mei chen")) {
+ digi_play("com017", 1, 255, -1, 997);
+ } else
+ _G(player).command_ready = true;
+
+ break;
+
case 8:
+ if (player_said("slot")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ ws_walk(_G(my_walker), 476, 318, 0, 10, 11, true);
+ break;
+
+ case 10:
+ player_set_commands_allowed(false);
+ ws_hide_walker(_G(my_walker));
+ _807Crnk2Mach = series_play("807rp04", 256, 16, 20, 5, 0, 100, 0, 0, 0, -1);
+ player_update_info(_G(my_walker), &_G(player_info));
+ _safariShadowMach = series_place_sprite(*SAFARI_SHADOWS, 0, 476, 318, _G(player_info).scale, 257);
+ inv_move_object("CRANK", 807);
+
+ hotspot_set_active(_G(currentSceneDef).hotspots, "slot", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "crank", true);
+
+ break;
+
+ case 20:
+ kernel_timing_trigger(20, 30, "rip places crank");
+ digi_play("807_s02", 2, 255, -1, -1);
+
+ break;
+
+ case 30:
+ terminateMachine(_807Crnk2Mach);
+ _807Crnk2Mach = series_play("807rp04", 256, 2, 40, 5, 0, 100, 0, 0, 0, -1);
+
+ break;
+
+ case 40:
+ player_set_commands_allowed(true);
+ terminateMachine(_safariShadowMach);
+ _807Crnk2Mach = series_show("807crnk2", 4095, 0, -1, -1, 9, 100, 0, 0);
+ ws_unhide_walker(_G(my_walker));
+ ws_demand_facing(_G(my_walker), 11);
+
+ break;
+
+ default:
+ break;
+ }
+ } else if (player_said("mei chen")) {
+ digi_play("807r24", 1, 255, -1, -1);
+ } else
+ _G(player).command_ready = true;
+
+ break;
+
case 9:
+ digi_play("com042", 1, 255, -1, 997);
+ break;
+
case 10:
+ switch (_G(kernel).trigger) {
+ case -1: {
+ const char *conv = conv_sound_to_play();
+ if (conv)
+ digi_play(conv, 1, 255, 10, -1);
+ else
+ conv_resume(conv_get_handle());
+
+ }
+
+ break;
+
+ case 10:
+ if (conv_current_node() != 0) {
+ conv_resume(conv_get_handle());
+ } else {
+ if (conv_current_entry() != 0) {
+ conv_resume(conv_get_handle());
+ } else if (conv_whos_talking() == 1) {
+ ws_walk(_mcTrekMach, 476, 318, nullptr, 20, 11, true);
+ }
+ }
+
+ break;
+
+ case 20:
+ ws_hide_walker(_mcTrekMach);
+ _807Mc01Mach = series_play("807mc01", 0, 16, -1, 5, 0, 100, 0, 0, 0, 5);
+ terminateMachine(_807Crnk2Mach);
+ series_play("807rp04", 256, 2, 25, 5, 0, 100, 0, 0, 0, -1);
+
+ break;
+
+ case 25:
+ terminateMachine(_safariShadowMach);
+ ws_unhide_walker(_G(my_walker));
+ ws_walk(_G(my_walker), 320, 294, nullptr, 30, 1, true);
+ terminateMachine(_807Mc01Mach);
+ _807Mc01Mach = series_play("807mc01", 0, 16, 27, 5, 0, 100, 0, 0, 6, 10);
+
+ break;
+
+ case 27:
+ terminateMachine(_807Mc01Mach);
+ _807Mc01Mach = series_play("807mc01", 0, 16, -1, 5, 0, 100, 0, 0, 11, 21);
+ conv_resume(conv_get_handle());
+
+ break;
+
+ case 30:
+ terminateMachine(_807Mc01Mach);
+ _807Mc01Mach = series_play("807mc01", 0, 16, -1, 5, 0, 100, 0, 0, 22, 41);
+ ws_hide_walker(_807Mc01Mach);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ series_play("807rp03", 4095, 16, 11, 5, 0, 100, 0, 0, 0, -1);
+ _G(kernel).trigger_mode = KT_PARSE;
+ digi_play("807_s04", 2, 255, -1, -1);
+ conv_resume(conv_get_handle());
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
default:
if (player_said("mei chen"))
digi_play("com017", 1, 255, -1, 997);
@@ -713,8 +921,6 @@ void Room807::parser() {
break;
}
-
- // TODO Not yet implemented
}
void Room807::daemon() {
diff --git a/engines/m4/riddle/rooms/section8/room807.h b/engines/m4/riddle/rooms/section8/room807.h
index b39a670bb67..120799db418 100644
--- a/engines/m4/riddle/rooms/section8/room807.h
+++ b/engines/m4/riddle/rooms/section8/room807.h
@@ -57,6 +57,7 @@ private:
machine *_807BeamMach = nullptr;
machine *_807Crnk2Mach = nullptr;
machine *_807DoorMach = nullptr;
+ machine *_807Mc01Mach = nullptr;
machine *_807PostMach = nullptr;
machine *_mcTrekMach = nullptr;
machine *_safariShadowMach = nullptr;
More information about the Scummvm-git-logs
mailing list