[Scummvm-git-logs] scummvm master -> 0491c31ac62b546d22ae82e8d4f393c96bd719f7

Strangerke noreply at scummvm.org
Mon Oct 28 05:46:58 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:
0491c31ac6 M4: RIDDLE: partial implementation of room 207 (daemon)


Commit: 0491c31ac62b546d22ae82e8d4f393c96bd719f7
    https://github.com/scummvm/scummvm/commit/0491c31ac62b546d22ae82e8d4f393c96bd719f7
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-10-28T07:45:38+01:00

Commit Message:
M4: RIDDLE: partial implementation of room 207 (daemon)

Changed paths:
    engines/m4/riddle/rooms/section2/room207.cpp
    engines/m4/riddle/rooms/section2/room207.h


diff --git a/engines/m4/riddle/rooms/section2/room207.cpp b/engines/m4/riddle/rooms/section2/room207.cpp
index a0bec85130c..7f9cd07b00b 100644
--- a/engines/m4/riddle/rooms/section2/room207.cpp
+++ b/engines/m4/riddle/rooms/section2/room207.cpp
@@ -44,10 +44,10 @@ void Room207::init() {
 	if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
 		_fieldCA = 0;
 		_fieldBE = 0;
-		_field96 = 0;
-		_field9E = -1;
+		_field96_digiName = nullptr;
+		_field9E_triggerNum = -1;
 		_field88 = 2;
-		_field89 = 2;
+		_field89_triggerMode = KT_DAEMON;
 		_fieldA2 = 0;
 		_fieldA4 = 0;
 		_fieldA6 = 0;
@@ -172,7 +172,7 @@ void Room207::pre_parser() {
 		_G(player).ready_to_walk = true;
 		_G(player).waiting_for_walk = false;
 
-		if (!_fieldAC) {
+		if (!_fieldAC_ripForegroundFl) {
 			if (player_said(" ") && player_said_any("exit", "walk to")) {
 				other_save_game_for_resurrection();
 				player_set_commands_allowed(false);
@@ -198,7 +198,7 @@ void Room207::pre_parser() {
 			}
 		}
 
-		if (_fieldAC == 1) {
+		if (_fieldAC_ripForegroundFl == 1) {
 			if (player_said(" ") && player_said_any("exit", "walk to")) {
 				other_save_game_for_resurrection();
 				player_set_commands_allowed(false);
@@ -267,6 +267,612 @@ void Room207::parser() {
 }
 
 void Room207::daemon() {
+	switch (_G(kernel).trigger) {
+	case 1:
+		switch (imath_ranged_rand(1, 3)) {
+		case 1:
+			digi_play("950_s02", 3, 30, -1, -1);
+			kernel_timing_trigger(1500, 1, nullptr);
+			break;
+
+		case 2:
+			digi_play("950_s03", 3, 30, -1, -1);
+			kernel_timing_trigger(1020, 1, nullptr);
+			break;
+
+		case 3:
+			digi_play("950_s04", 3, 30, -1, -1);
+			kernel_timing_trigger(540, 1, nullptr);
+			break;
+
+		default:
+			break;
+		}
+
+		break;
+
+	case 10:
+		sendWSMessage_60000(_ppWalkerMach);
+		series_play_xy("shadow pesky from 9 to squat", 1, 0, 514, 367, 97, 0, 5, -1);
+		series_play_xy("peasant 3 to squat", 1, 0, 514, 367, 97, 0, 5, 11);
+
+		break;
+
+	case 11:
+		series_play_xy("shadow pesky rock loop", -1, 0, 514, 367, 97, 3849, 300, -1);
+		_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 514, 367, 97, 3840, false, triggerMachineByHashCallback, "pp squat");
+		sendWSMessage_10000(1, _ppSquatMach, 1, _peskyRockLoopSeries, 20, 101, _peskyRockLoopSeries, 20, 20, 0);
+		_field8E = 0;
+		_field92 = 0;
+
+		break;
+
+	case 20:
+		if (_fieldC6 == 0 && _fieldC2 == 0 && _field9E_triggerNum != -1) {
+			kernel_trigger_dispatchx(_field9E_triggerNum);
+			_field9E_triggerNum = -1;
+			if (_fieldA2) {
+				ws_unhide_walker(_G(my_walker));
+				_fieldA2 = 0;
+			}
+
+			if (_fieldA4) {
+				sendWSMessage_80000(_field84);
+				_fieldA4 = 0;
+			}
+		}
+
+		kernel_timing_trigger(1, 21, nullptr);
+		break;
+
+	case 21:
+		if (_fieldC6)
+			break;
+
+		switch (_fieldC2) {
+		case 0:
+			sendWSMessage_10000(1, _field84, _field4C, 3, 3, 20, _field4C, 3, 3, 0);
+			break;
+
+		case 1:
+			_G(kernel).trigger_mode = KT_PARSE;
+			conv_load("conv203d", 10, 10, 747);
+			conv_set_shading(65);
+			conv_export_value(conv_get_handle(), _G(flags[V054]), 0);
+
+			if (inv_player_has("REBUS AMULET"))
+				conv_export_value(conv_get_handle(), 0, 1);
+			else
+				conv_export_value(conv_get_handle(), 1, 1);
+
+			conv_export_value(conv_get_handle(), 1, 2);
+			conv_export_value(conv_get_handle(), _G(flags[V073]), 3);
+			conv_export_value(conv_get_handle(), _G(flags[V043]), 5);
+
+			conv_play(conv_get_handle());
+			_fieldC2 = 0;
+			_G(kernel).trigger_mode = KT_DAEMON;
+			kernel_timing_trigger(1, 20, nullptr);
+
+			break;
+
+		case 2: {
+			int32 rnd = imath_ranged_rand(3, 5);
+			sendWSMessage_10000(1, _field84, _field4C, rnd, rnd, 20, _field4C, rnd, rnd, 0);
+			}
+			break;
+
+		case 3:
+			sendWSMessage_10000(1, _field84, _field4C, 3, 3, 24, _field4C, 3, 3, 0);
+			break;
+
+		default:
+			break;
+
+		}
+
+		break;
+
+	case 22:
+		terminateMachine(_field84);
+		terminateMachine(_field68);
+		series_unload(_field4C);
+		series_unload(_field50);
+		ws_unhide_walker(_G(my_walker));
+		player_set_commands_allowed(true);
+
+		break;
+
+	case 23:
+		sendWSMessage_10000(1, _field84, _field4C, 1, 3, 20, _field4C, 3, 3, 0);
+		break;
+
+	case 24:
+		sendWSMessage_10000(1, _field84, _field50, 15, 1, 22, _field50, 1, 1, 0);
+		break;
+
+	case 40:
+		if (_fieldB2 != 0) {
+			++_fieldB6;
+			if (_fieldB6 < 20) {
+				kernel_timing_trigger(60, 40, nullptr);
+			} else {
+				other_save_game_for_resurrection();
+				disable_player_commands_and_fade_init(749);
+				_G(flags[V067]) = 1;
+			}
+		}
+
+		break;
+
+	case 50:
+		player_set_commands_allowed(true);
+		break;
+
+	case 100:
+		if (_field8E != 0 || _field92 != 0 || _field9E_triggerNum == -1) {
+			kernel_trigger_dispatchx(kernel_trigger_create(101));
+			break;
+		}
+
+		kernel_trigger_dispatchx(_field9E_triggerNum);
+		_field9E_triggerNum = -1;
+
+		if (_fieldA2 != 0) {
+			ws_unhide_walker(_G(my_walker));
+			_fieldA2 = 0;
+		}
+		kernel_trigger_dispatchx(kernel_trigger_create(101));
+
+		break;
+
+	case 101:
+		switch (_field8E) {
+		case 2:
+			if (_field92 == 2) {
+				if (_fieldA6) {
+					_fieldA6 = 0;
+					player_set_commands_allowed(true);
+				}
+
+				++_field8A;
+				if (imath_ranged_rand(15, 40) < _field8A) {
+					_fieldAE = imath_ranged_rand(1, 3);
+					_field8A = 0;
+				}
+
+				if (_fieldAC_ripForegroundFl == 1) {
+					switch (_fieldAE) {
+					case 1:
+						sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipForegroundSeries, 19, 19, 100, _peskyPointsRipForegroundSeries, 19, 19, 0);
+						break;
+
+					case 2:
+						sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipForegroundSeries, 20, 20, 100, _peskyPointsRipForegroundSeries, 20, 20, 0);
+						break;
+
+					case 3:
+						sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipForegroundSeries, 21, 21, 100, _peskyPointsRipForegroundSeries, 21, 21, 0);
+						break;
+
+					default:
+						break;
+
+					}
+				} else {
+					switch (_fieldAE) {
+					case 1:
+						sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipBackgroundSeries, 19, 19, 100, _peskyPointsRipBackgroundSeries, 19, 19, 0);
+						break;
+
+					case 2:
+						sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipBackgroundSeries, 20, 20, 100, _peskyPointsRipBackgroundSeries, 20, 20, 0);
+						break;
+
+					case 3:
+						sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipBackgroundSeries, 21, 21, 100, _peskyPointsRipBackgroundSeries, 21, 21, 0);
+						break;
+
+					default:
+						break;
+					}
+				}
+
+			} else if (_field92 == 3) {
+				if (_fieldAC_ripForegroundFl == 1)
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipForegroundSeries, 17, 17, 100, _peskyPointsRipForegroundSeries, 17, 17, 1);
+				else
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipBackgroundSeries, 17, 17, 100, _peskyPointsRipBackgroundSeries, 17, 17, 1);
+				_field8E = 3;
+			} else { // _field92 != 2 && _field92 != 3
+				if (_fieldAC_ripForegroundFl == 1)
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipForegroundSeries, 18, 1, 115, _peskyRockLoopSeries, 1, 1, 0);
+				else
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipBackgroundSeries, 18, 1, 118, _peskyRockLoopSeries, 1, 1, 0);
+
+				_field8E = 0;
+				hotspot_set_active(_G(currentSceneDef).hotspots, "PEASANT", true);
+			}
+			break;
+		case 3:
+			if (_field92 == 3) {
+				if (_field96_digiName) {
+					_G(kernel).trigger_mode = _field89_triggerMode;
+					digi_play(_field96_digiName, 1, 255, _field9A_triggerNum, 203);
+					_field96_digiName = nullptr;
+					_field89_triggerMode = KT_DAEMON;
+					_G(kernel).trigger_mode = KT_DAEMON;
+					_fieldAA = 1;
+				}
+
+				int32 rnd = imath_ranged_rand(17, 21);
+				if (_fieldAC_ripForegroundFl == 1) {
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipForegroundSeries, rnd, rnd, 100, _peskyPointsRipForegroundSeries, rnd, rnd, 0);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipBackgroundSeries, rnd, rnd, 100, _peskyPointsRipBackgroundSeries, rnd, rnd, 0);
+				}
+
+				sendWSMessage_190000(_ppSquatMach, 13);
+				sendWSMessage_1a0000(_ppSquatMach, 13);
+			} else {
+				if (_fieldAC_ripForegroundFl == 1) {
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipForegroundSeries, 17, 17, 100, _peskyPointsRipForegroundSeries, 17, 17, 1);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _peskyPointsRipBackgroundSeries, 17, 17, 100, _peskyPointsRipBackgroundSeries, 17, 17, 1);
+				}
+				_field8E = 2;
+			}
+
+			break;
+
+		case 6:
+			if (_field92 == 6) {
+				if (_fieldBA) {
+					if (inv_player_has("REBUS AMULET")) {
+						sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 52, 1, 104, _withoutAmuletSeries, 1, 1, 0);
+					} else {
+						sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 52, 1, 104, _ppShowsAmuletTakesMoneySeries, 1, 1, 0);
+					}
+				} else {
+					digi_play("207r04", 1, 255, 100, -1);
+					_fieldBA = 1;
+				}
+			} else {
+				if (inv_player_has("REBUS AMULET")) {
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 52, 1, 100, _withoutAmuletSeries, 1, 1, 1);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 52, 1, 100, _ppShowsAmuletTakesMoneySeries, 1, 1, 1);
+				}
+
+				_field8E = 0;
+			}
+
+			break;
+
+		case 7:
+			if (_field92 == 7) {
+				if (inv_player_has("REBUS AMULET")) {
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 52, 52, -1, _withoutAmuletSeries, 52, 52, 0);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 52, 52, -1, _ppShowsAmuletTakesMoneySeries, 52, 52, 0);
+				}
+
+				_field8E = 8;
+				inv_give_to_player("REBUS AMULET");
+				hotspot_set_active(_G(currentSceneDef).hotspots, "REBUS AMULET", false);
+				kernel_examine_inventory_object("ping rebus amulet", _G(master_palette), 5, 1, 329, 250, 103, nullptr, -1);
+			}
+
+			break;
+
+		case 8:
+			if (_field92 == 8) {
+				if (inv_player_has("REBUS AMULET")) {
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 52, 52, 100, _withoutAmuletSeries, 52, 52, 0);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 52, 52, 100, _ppShowsAmuletTakesMoneySeries, 52, 52, 0);
+				}
+			}
+
+			break;
+		case 9:
+			if (_field92 == 9) {
+				if (inv_player_has("REBUS AMULET")) {
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 16, 16, -1, _withoutAmuletSeries, 16, 16, 0);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 16, 16, -1, _ppShowsAmuletTakesMoneySeries, 16, 16, 0);
+				}
+
+				kernel_timing_trigger(60, 100, nullptr);
+				_field8E = 10;
+			}
+
+			break;
+
+		case 10:
+			if (inv_player_has("REBUS AMULET")) {
+				sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 16, 1, 100, _withoutAmuletSeries, 1, 1, 0);
+				_field8E = 11;
+			} else {
+				sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 16, 1, 100, _ppShowsAmuletTakesMoneySeries, 1, 1, 0);
+				_field8E = 11;
+			}
+
+			break;
+
+		case 11:
+			terminateMachine(_ppSquatMach);
+			_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 514, 367, 97, 3840, 0, triggerMachineByHashCallback, "pp squat");
+			sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 1, 100, _peskyRockLoopSeries, 1, 1, 0);
+			_G(kernel).trigger_mode = KT_PARSE;
+			kernel_timing_trigger(1, 4, nullptr);
+			_field8E = 0;
+			_field92 = 0;
+
+			break;
+
+		case 12:
+			terminateMachine(_ppSquatMach);
+			_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 514, 367, 97, 3840, 0, triggerMachineByHashCallback, "pp squat");
+			if (inv_object_is_here("REBUS AMULET"))
+				_rebusAmuletMach = series_show_sprite("rebus amulet", 0, 3840);
+
+			sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 1, 100, _peskyRockLoopSeries, 1, 1, 0);
+
+			_field8E = 0;
+			_field92 = 0;
+			break;
+
+		case 14:
+			switch (_field92) {
+				case 6:
+				terminateMachine(_rebusAmuletMach);
+				if (inv_player_has("REBUS AMULET")) {
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 16, 52, 106, _withoutAmuletSeries, 52, 52, 0);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 16, 52, 106, _ppShowsAmuletTakesMoneySeries, 52, 52, 0);
+				}
+
+				break;
+
+			case 14:
+				if (inv_player_has("REBUS AMULET")) {
+					int32 rnd = imath_ranged_rand(75, 77);
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, rnd, rnd, 100, _withoutAmuletSeries, rnd, rnd, 0);
+				} else {
+					int32 rnd = imath_ranged_rand(75, 77);
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, rnd, rnd, 100, _ppShowsAmuletTakesMoneySeries, rnd, rnd, 0);
+				}
+
+				break;
+
+			case 15:
+				if (inv_player_has("REBUS AMULET")) {
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 75, 75, 100, _withoutAmuletSeries, 75, 75, 0);
+				} else {
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 75, 75, 100, _ppShowsAmuletTakesMoneySeries, 75, 75, 0);
+				}
+
+				break;
+
+			default:
+				if (inv_player_has("REBUS AMULET"))
+					sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 14, 1, 105, _withoutAmuletSeries, 1, 1, 0);
+				else
+					sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 14, 1, 105, _ppShowsAmuletTakesMoneySeries, 1, 1, 0);
+				break;
+			}
+
+			break; // case 14
+
+		case 16:
+			if (_field92 == 16) {
+				kernel_timing_trigger(30, 100, nullptr);
+			} else {
+				digi_play("203p01", 1, 255, -1, -1);
+				sendWSMessage_10000(1, _ppSquatMach, _peskyBegLoopSeries, 15, 1, 111, _peskyBegLoopSeries, 1, 1, 0);
+			}
+
+			break;
+
+		default:
+			if (_field8E <= 0) {
+				if (_field92 == 6) {
+					terminateMachine(_ppSquatMach);
+					_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, false, triggerMachineByHashCallback, "pp squat");
+					terminateMachine(_rebusAmuletMach);
+					if (inv_player_has("REBUS AMULET")) {
+						sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 1, 52, 100, _withoutAmuletSeries, 52, 52, 0);
+					} else {
+						sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 1, 52, 100, _ppShowsAmuletTakesMoneySeries, 52, 52, 0);
+					}
+					_field8E = 6;
+				} else if (_field92 == 7) {
+					terminateMachine(_ppSquatMach);
+					_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, false, triggerMachineByHashCallback, "pp squat");
+					terminateMachine(_rebusAmuletMach);
+					if (inv_player_has("REBUS AMULET")) {
+						sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 1, 52, 100, _withoutAmuletSeries, 52, 52, 0);
+					} else {
+						sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 1, 52, 100, _ppShowsAmuletTakesMoneySeries, 52, 52, 0);
+					}
+					_field8E = 7;
+				} else if (_field92 == 9) {
+					terminateMachine(_ppSquatMach);
+					_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, false, triggerMachineByHashCallback, "pp squat");
+					if (inv_player_has("REBUS AMULET")) {
+						sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 1, 16, 100, _withoutAmuletSeries, 16, 16, 0);
+					} else {
+						sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 1, 16, 100, _ppShowsAmuletTakesMoneySeries, 16, 16, 0);
+					}
+					_field8E = 9;
+				} else if (_field92 == 13) {
+					terminateMachine(_ppSquatMach);
+					_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, false, triggerMachineByHashCallback, "pp squat");
+					if (inv_player_has("REBUS AMULET")) {
+						sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 1, 14, 100, _withoutAmuletSeries, 14, 14, 0);
+					} else {
+						sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 1, 14, 100, _ppShowsAmuletTakesMoneySeries, 14, 14, 0);
+					}
+					_field92 = 15;
+					_field8E = 14;
+				} else if (_field92 == 16) {
+					terminateMachine(_ppSquatMach);
+					_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 514, 367, 97, 3840, 0, triggerMachineByHashCallback, "pp squat");
+					sendWSMessage_10000(1, _ppSquatMach, _peskyBegLoopSeries, 1, 15, 110, _peskyBegLoopSeries, 15, 15, 0);
+					_field8E = 16;
+				} else if (_field92 <= 0) {
+					if (_fieldA6) {
+						_fieldA6 = 0;
+						player_set_commands_allowed(true);
+					}
+
+					if (_field96_digiName) {
+						_G(kernel).trigger_mode = _field89_triggerMode;
+						digi_play(_field96_digiName, 1, 255, _field9A_triggerNum, 203);
+						_field96_digiName = nullptr;
+						_field89_triggerMode = KT_DAEMON;
+						_G(kernel).trigger_mode = KT_DAEMON;
+					}
+
+					if (imath_ranged_rand(1, 2) == 1) {
+						sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 10, 100, _peskyRockLoopSeries, 10, 10, 0);
+					} else {
+						sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 11, 20, 100, _peskyRockLoopSeries, 20, 20, 0);
+					}
+				} else {
+					int32 series;
+					if (_fieldAC_ripForegroundFl == 1) {
+						series = _peskyPointsRipForegroundSeries = series_load("pesky points at rip foreground", -1, nullptr);
+					} else {
+						series = _peskyPointsRipBackgroundSeries = series_load("pesky points at rip background", -1, nullptr);
+					}
+					sendWSMessage_10000(1, _ppSquatMach, series, 1, 21, 100, series, 21, 21, 1);
+					_field8E = 2;
+				}
+			}
+			break;
+		}
+		break;
+
+	case 102:
+		_field92 = 2;
+		_field8E = 2;
+		player_set_commands_allowed(true);
+		_fieldAA = 1;
+		kernel_timing_trigger(1, 100, nullptr);
+		_fieldB6 = 0;
+		_fieldB2 = 1;
+		kernel_timing_trigger(60, 40, nullptr);
+
+		break;
+
+	case 103:
+		Common::strcpy_s(_G(player).verb, "give");
+		Common::strcpy_s(_G(player).noun, "money");
+		if (inv_player_has("REBUS AMULET")) {
+			sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 53, 74, 100, _withoutAmuletSeries, 74, 74, 0);
+		} else {
+			sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 53, 74, 100, _ppShowsAmuletTakesMoneySeries, 74, 74, 0);
+		}
+
+		_field8E = 12;
+		_fieldA6 = 1;
+		_G(kernel).trigger_mode = KT_PARSE;
+
+		kernel_timing_trigger(1,4,nullptr);
+		break;
+
+	case 104:
+		_field8E = 12;
+		_G(kernel).trigger_mode = KT_PARSE;
+		kernel_timing_trigger(30, 5, nullptr);
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_timing_trigger(1, 100, nullptr);
+
+		break;
+
+	case 105:
+		terminateMachine(_ppSquatMach);
+		_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 514, 367, 97, 3840, 0, triggerMachineByHashCallback, "pp squat");
+		sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 1, 100, _peskyRockLoopSeries, 1, 1, 0);
+		_field8E = 0;
+
+		break;
+
+	case 106:
+		kernel_timing_trigger(150, 107, nullptr);
+		break;
+
+	case 107:
+		if (inv_player_has("REBUS AMULET"))
+			sendWSMessage_10000(1, _ppSquatMach, _withoutAmuletSeries, 52, 1, 108, _withoutAmuletSeries, 1, 1, 0);
+		else
+			sendWSMessage_10000(1, _ppSquatMach, _ppShowsAmuletTakesMoneySeries, 52, 1, 108, _ppShowsAmuletTakesMoneySeries, 1, 1, 0);
+
+		_field92 = 0;
+		_field8E = 0;
+
+		break;
+
+	case 108:
+		terminateMachine(_ppSquatMach);
+		_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 514, 367, 97, 3840, false, triggerMachineByHashCallback, "pp squat");
+		_rebusAmuletMach = series_show_sprite("rebus amulet", 0, 3840);
+		sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 1, 100, _peskyRockLoopSeries, 1, 1, 0);
+
+		_field8E = 0;
+		_fieldC2 = 3;
+		_fieldA6 = 0;
+		_fieldCA = 0;
+
+		break;
+
+	case 110:
+		Common::strcpy_s(_G(player).verb, "handout");
+		kernel_timing_trigger(1, 100, nullptr);
+		_G(kernel).trigger_mode = KT_PARSE;
+		kernel_timing_trigger(1, 3, nullptr);
+
+		break;
+
+	case 111:
+		terminateMachine(_ppSquatMach);
+		_ppSquatMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 514, 367, 97, 3840, false, triggerMachineByHashCallback, "pp squat");
+		sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 1, 100, _peskyRockLoopSeries, 1, 1, 0);
+
+		_field8E = 0;
+		_fieldA6 = 1;
+
+		break;
+
+	case 115:
+		kernel_timing_trigger(1, 116, nullptr);
+		break;
+
+	case 116:
+		series_unload(_peskyPointsRipForegroundSeries);
+		sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 1, 100, _peskyRockLoopSeries, 1, 1, 0);
+
+		break;
+
+	case 118:
+		kernel_timing_trigger(1, 119, nullptr);
+		break;
+
+	case 119:
+		series_unload(_peskyPointsRipBackgroundSeries);
+		sendWSMessage_10000(1, _ppSquatMach, _peskyRockLoopSeries, 1, 1, 100, _peskyRockLoopSeries, 1, 1, 0);
+
+		break;
+
+	case 749:
+		_G(game).new_room = 203;
+		break;
+
+	default:
+		break;
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section2/room207.h b/engines/m4/riddle/rooms/section2/room207.h
index a2a50e7e6fb..183c80b8ab6 100644
--- a/engines/m4/riddle/rooms/section2/room207.h
+++ b/engines/m4/riddle/rooms/section2/room207.h
@@ -40,20 +40,29 @@ public:
 	void daemon() override;
 
 private:
+	int32 _field4C = 0;
+	int32 _field50 = 0;
 	int32 _field88 = 0;
-	int32 _field89 = 0;
-	int32 _field96 = 0;
-	int32 _field9E = 0;
+	KernelTriggerType _field89_triggerMode = KT_PARSE;
+	int32 _field8A = 0;
+	int32 _field8E = 0;
+	int32 _field92 = 0;
+	const char *_field96_digiName = nullptr;
+	int32 _field9A_triggerNum = 0;
+	int32 _field9E_triggerNum = 0;
 	int32 _fieldA2 = 0;
 	int32 _fieldA4 = 0;
 	int32 _fieldA6 = 0;
 	int32 _fieldA8 = 0;
 	int32 _fieldAA = 0;
-	int32 _fieldAC = 0;
+	int32 _fieldAC_ripForegroundFl = 0;
 	int32 _fieldAE = 0;
 	int32 _fieldB2 = 0;
 	int32 _fieldB6 = 0;
+	int32 _fieldBA = 0;
 	int32 _fieldBE = 0;
+	int32 _fieldC2 = 0;
+	int32 _fieldC6 = 0;
 	int32 _fieldCA = 0;
 
 	int32 _leadPipeSeries = 0;
@@ -81,6 +90,9 @@ private:
 	machine *_wheelMach = nullptr;
 	machine *_ppSquatMach = nullptr;
 
+	machine *_field84 = nullptr;
+	machine *_field68 = nullptr;
+
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list