[Scummvm-git-logs] scummvm master -> 4c3db038488e717268298eab88dd1811c91515b8

Strangerke noreply at scummvm.org
Fri Jan 10 06:36:51 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:
4c3db03848 M4: RIDDLE: Room 808: Finish the implementation of daemon


Commit: 4c3db038488e717268298eab88dd1811c91515b8
    https://github.com/scummvm/scummvm/commit/4c3db038488e717268298eab88dd1811c91515b8
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-01-10T07:36:38+01:00

Commit Message:
M4: RIDDLE: Room 808: Finish the implementation of daemon

Changed paths:
    engines/m4/riddle/rooms/section8/room808.cpp
    engines/m4/riddle/rooms/section8/room808.h


diff --git a/engines/m4/riddle/rooms/section8/room808.cpp b/engines/m4/riddle/rooms/section8/room808.cpp
index 8185a2d15fe..1e78930c5fa 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -482,21 +482,185 @@ void Room808::daemon() {
 		break;
 
 	case 18:
+		if (_G(flags[V097] != 0))
+			break;
+
+		if (!player_commands_allowed() || !checkStrings()) {
+			kernel_timing_trigger(60, 18, nullptr);
+		} else {
+			player_set_commands_allowed(false);
+			intr_cancel_sentence();
+			switch (imath_ranged_rand(1, 4)) {
+			case 1:
+				digi_play("950_s15", 2, 255, 19, -1);
+				break;
+
+			case 2:
+				digi_play("950_s16", 2, 255, 19, -1);
+				break;
+
+			case 3:
+				digi_play("950_s17", 2, 255, 19, -1);
+				break;
+
+			case 4:
+			default:
+				digi_play("950_s18", 2, 255, 19, -1);
+				break;
+			}
+		}
+
+		break;
+
 	case 19:
+		player_update_info(_G(my_walker), &_G(player_info));
+		switch (_G(player_info).facing) {
+		case 1:
+		case 2:
+		case 3:
+		case 4:
+			ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 20, 3, true);
+			_dword1A195C_facing = 3;
+
+			break;
+
+		case 5:
+			kernel_timing_trigger(30, 20, "phantom reaction");
+			_dword1A195C_facing = 5;
+
+			break;
+
+		case 7:
+			kernel_timing_trigger(30, 20, "phantom reaction");
+			_dword1A195C_facing = 7;
+
+			break;
+
+		case 8:
+		case 9:
+		case 10:
+		case 11:
+			ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 20, 9, true);
+			_dword1A195C_facing = 9;
+
+			break;
+
+		default:
+			break;
+		}
+
+		break;
+
 	case 20:
+		_dword1A1958 = 0;
+		_dword1A1960_rand4 = imath_ranged_rand(1, 4);
+
+		switch(_dword1A1960_rand4) {
+		case 1:
+			digi_play("COM052", 1, 255, 21, 997);
+			break;
+
+		case 2:
+			digi_play("COM054", 1, 255, 21, 997);
+			break;
+
+		case 3:
+			digi_play("COM056", 1, 255, 21, 997);
+			break;
+
+		case 4:
+			digi_play("COM057", 1, 255, 21, 997);
+			break;
+
+		default:
+			break;
+		}
+
+		setGlobals3(_mctd82aSeries, 1, 22);
+		sendWSMessage_3840000(_mcTrekMach, 23);
+
+		if (_dword1A195C_facing == 3 || _dword1A195C_facing == 9) {
+			setGlobals3(_ripPos3LookAroundSeries, 1, 20);
+		} else {
+			setGlobals3(_ripLooksAroundInAweSeries, 1, 14);
+		}
+
+		sendWSMessage_3840000(_G(my_walker), 22);
+
+		break;
+
 	case 21:
+		switch (_dword1A1960_rand4) {
+		case 1:
+			digi_play("COM053", 1, 255, -1, 997);
+			break;
+
+		case 2:
+			digi_play("COM055", 1, 255, -1, 997);
+			break;
+
+		case 4:
+			digi_play("COM058", 1, 255, -1, 997);
+			break;
+
+		default:
+			break;
+		}
+		break;
+
 	case 22:
+		kernel_timing_trigger(imath_ranged_rand(90, 120), 24, nullptr);
+		break;
+
 	case 23:
+		kernel_timing_trigger(imath_ranged_rand(90, 120), 25, nullptr);
+		break;
+
 	case 24:
+
+
+		if (_dword1A195C_facing == 3 || _dword1A195C_facing == 9) {
+			setGlobals3(_ripPos3LookAroundSeries, 19, 1);
+		} else {
+			setGlobals3(_ripLooksAroundInAweSeries, 13, 1);
+		}
+
+		sendWSMessage_3840000(_G(my_walker), 26);
+
+		break;
+
 	case 25:
+		setGlobals3(_mctd82aSeries, 22, 1);
+		sendWSMessage_3840000(_mcTrekMach, 26);
+		break;
+
 	case 26:
+		++_dword1A1958;
+		if (_dword1A1958 == 2) {
+			player_set_commands_allowed(true);
+			ws_demand_facing(_G(my_walker), _dword1A195C_facing);
+			kernel_timing_trigger(imath_ranged_rand(7200, 14400), 19, nullptr);
+		}
+
+		break;
+
 	case 966:
+		digi_play("950_s53", 2, 255, 967, -1);
+		break;
+
 	case 967:
+		ws_unhide_walker(_G(my_walker));
+		ws_demand_location(_G(my_walker), 202, 179);
+		ws_demand_facing(_G(my_walker), 2);
+		other_save_game_for_resurrection();
+		_G(game).section_id = 4;
+		_G(game).new_room = 413;
+
+		break;
 
 	default:
 		break;
 	}
-	// TODO Not implemented yet
 }
 
 bool Room808::getWalkPath(machine *machine, int32 walk_x, int32 walk_y) {
diff --git a/engines/m4/riddle/rooms/section8/room808.h b/engines/m4/riddle/rooms/section8/room808.h
index 0509aebdf54..386f82e883f 100644
--- a/engines/m4/riddle/rooms/section8/room808.h
+++ b/engines/m4/riddle/rooms/section8/room808.h
@@ -45,6 +45,10 @@ private:
 	bool getWalkPath(machine *machine, int32 walk_x, int32 walk_y);
 	void setBridgeHotspots(int val1, bool activeFl);
 
+	int32 _dword1A195C_facing = 0;
+	int32 _dword1A1958 = 0;
+	int32 _dword1A1960_rand4 = 0;
+
 	int32 _807Rp04Series = 0;
 	int32 _808McupSeries = 0;
 	int32 _808Rp01Series = 0;




More information about the Scummvm-git-logs mailing list