[Scummvm-git-logs] scummvm master -> 9e08054d011323da0e1210276dad562655843715

Strangerke noreply at scummvm.org
Mon Dec 30 00:14:06 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:
9e08054d01 M4: RIDDLE: Room 807: Implement pre_parser, partial implementation of daemon


Commit: 9e08054d011323da0e1210276dad562655843715
    https://github.com/scummvm/scummvm/commit/9e08054d011323da0e1210276dad562655843715
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-30T01:13:57+01:00

Commit Message:
M4: RIDDLE: Room 807: Implement pre_parser, partial implementation of daemon

Changed paths:
    engines/m4/riddle/rooms/section8/room807.cpp


diff --git a/engines/m4/riddle/rooms/section8/room807.cpp b/engines/m4/riddle/rooms/section8/room807.cpp
index 3e02470a6c2..87163cb4d0e 100644
--- a/engines/m4/riddle/rooms/section8/room807.cpp
+++ b/engines/m4/riddle/rooms/section8/room807.cpp
@@ -20,6 +20,8 @@
  */
 
 #include "m4/riddle/rooms/section8/room807.h"
+
+#include "m4/adv_r/other.h"
 #include "m4/graphics/gr_series.h"
 #include "m4/riddle/riddle.h"
 #include "m4/riddle/vars.h"
@@ -181,7 +183,29 @@ void Room807::init() {
 }
 
 void Room807::pre_parser() {
-	// TODO Not yet implemented
+	if (_G(flags[V274]) || inv_object_in_scene("wooden post", 807) || inv_object_in_scene("wooden beam", 807)) {
+		if (player_said("gear", "stone block")) {
+			_G(player).need_to_walk = false;
+			_G(player).ready_to_walk = true;
+			_G(player).waiting_for_walk = false;
+		} else if (player_said("look at", "corridor")) {
+			_G(player).walk_x = 285;
+			_G(player).walk_y = 319;
+		} else if (player_said("go", "south") || player_said("go", "north")) {
+			_G(player).need_to_walk = false;
+			_G(player).ready_to_walk = true;
+			_G(player).waiting_for_walk = false;
+		}
+	} else if (player_said("talk to", "mei chen") || player_said("wooden post", "crank")) {
+		_G(player).need_to_walk = false;
+		_G(player).ready_to_walk = true;
+		_G(player).waiting_for_walk = false;
+	} else {
+		intr_cancel_sentence();
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_trigger_dispatchx(kernel_trigger_create(7));
+		_G(kernel).trigger_mode = KT_PREPARSE;
+	}
 }
 
 void Room807::parser() {
@@ -189,6 +213,122 @@ void Room807::parser() {
 }
 
 void Room807::daemon() {
+	switch (_G(kernel.trigger)) {
+	case 0:
+		ws_unhide_walker(_G(my_walker));
+		_807DoorMach = series_show("807door", 4095, 0, -1, -1, 0, 100, 0, 0);
+		_G(flags[V274]) = 1;
+		hotspot_set_active(_G(currentSceneDef).hotspots, "stone block", true);
+		hotspot_set_active(_G(currentSceneDef).hotspots, "corridor", false);
+		hotspot_set_active(_G(currentSceneDef).hotspots, "chariot ", false);
+		hotspot_set_active(_G(currentSceneDef).hotspots, "north", false);
+		ws_walk(_mcTrekMach, 560, 400, nullptr, 1, 11, true);
+
+		break;
+
+	case 1:
+		digi_play("807m01", 1, 255, 2, -1);
+		break;
+
+	case 2:
+		digi_play("807r01", 1, 255, 5, -1);
+		break;
+
+	case 3:
+		digi_stop(2);
+		digi_unload("950_s33");
+		digi_play("807_s01", 2, 255, 4, -1);
+
+		break;
+
+	case 4:
+		digi_unload("807_s01");
+		break;
+
+	case 5:
+		player_set_commands_allowed(true);
+		if (_G(flags[V276]) == 0) {
+			hotspot_set_active(_G(currentSceneDef).hotspots, "mei chen", true);
+			kernel_timing_trigger(imath_ranged_rand(1200, 1800), 13, nullptr);
+		}
+
+		break;
+
+	case 6:
+		kernel_timing_trigger(600, 7, "thunk!");
+		break;
+
+	case 7:
+		if ((_G(flags[V274]) == 0) && !inv_object_in_scene("wooden beam", 807) && !inv_object_in_scene("wooden post", 807)) {
+			if (_field34)
+				kernel_timing_trigger(60, 7, "thunk!");
+			else {
+				player_set_commands_allowed(false);
+				_G(flags[V274]) = 1;
+				hotspot_set_active(_G(currentSceneDef).hotspots, "stone block", true);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "corridor", false);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "chariot ", false);
+				hotspot_set_active(_G(currentSceneDef).hotspots, "north", false);
+
+				terminateMachine(_807Crnk2Mach);
+
+				series_play("807rp04", 256, 2, 8, 5, 0, 100, 0, 0, 0, -1);
+
+				terminateMachine(_807DoorMach);
+
+				series_play("807close", 4095, 0, 10, 0, 0, 100, 0, 0, 0, -1);
+				digi_play("807_s04", 2, 255, -1, -1);
+
+				_field38 = 0;
+			}
+		}
+
+		break;
+
+	case 8:
+		terminateMachine(_safariShadowMach);
+		ws_unhide_walker(_G(my_walker));
+		ws_demand_location(_G(my_walker), 476, 318);
+		ws_demand_facing(_G(my_walker), 11);
+
+		break;
+
+	case 10:
+		player_set_commands_allowed(true);
+		digi_play("807_s04a", 2, 255, -1, -1);
+		_807DoorMach = series_show("807door", 4095, 0, -1, -1, 0, 100, 0, 0);
+		_807Crnk2Mach = series_show("807crnk2", 4095, 0, -1, -1, 9, 100, 0, 0);
+
+		break;
+
+	case 11:
+		_G(flags[V274]) = 1;
+		disable_player_commands_and_fade_init(12);
+
+		break;
+
+	case 12:
+		_field38 = 1;
+		_G(flags[V274]) = 0;
+		other_save_game_for_resurrection();
+		_G(game).new_section = 4;
+		_G(game).new_room = 413;
+
+		break;
+
+	case 13:
+	case 14:
+	case 15:
+	case 16:
+	case 17:
+	case 18:
+	case 19:
+	case 20:
+	case 21:
+	default:
+		break;
+	}
+
 	// TODO Not yet implemented
 }
 




More information about the Scummvm-git-logs mailing list