[Scummvm-git-logs] scummvm master -> c2361795ca2087125ff403bfb22b17b0740e973f

dreammaster noreply at scummvm.org
Thu Aug 15 05:50:05 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:
c2361795ca M4: RIDDLE: In progress room 403 daemon


Commit: c2361795ca2087125ff403bfb22b17b0740e973f
    https://github.com/scummvm/scummvm/commit/c2361795ca2087125ff403bfb22b17b0740e973f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-14T22:49:58-07:00

Commit Message:
M4: RIDDLE: In progress room 403 daemon

Changed paths:
    engines/m4/riddle/rooms/section4/room403.cpp
    engines/m4/riddle/rooms/section4/room403.h


diff --git a/engines/m4/riddle/rooms/section4/room403.cpp b/engines/m4/riddle/rooms/section4/room403.cpp
index 0b1f215e2d0..b711512f9b6 100644
--- a/engines/m4/riddle/rooms/section4/room403.cpp
+++ b/engines/m4/riddle/rooms/section4/room403.cpp
@@ -260,7 +260,487 @@ void Room403::init() {
 }
 
 void Room403::daemon() {
+	int frame;
 
+	switch (_G(kernel).trigger) {
+	case 10:
+		digi_play("graveyard_amb_2", 2, 50);
+		kernel_timing_trigger(1050, 10);
+		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:
+		switch (_val6) {
+		case 1000:
+			switch (_val7) {
+			case 1100:
+				_val8 = 2000;
+				_val9 = 2100;
+				kernel_timing_trigger(1, 110);
+				player_update_info();
+				ws_hide_walker();
+				player_set_commands_allowed(false);
+
+				_ripOnLadder = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, 0,
+					triggerMachineByHashCallbackNegative, "rip takes wolf");
+				_ripTalksWolf = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+					_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00, 0,
+					triggerMachineByHashCallbackNegative, "rip talks wolf SHADOW");
+
+				sendWSMessage_10000(1, _ripOnLadder, _ripTalkPay, 1, 10, 102,
+					_ripTalkPay, 10, 10, 0);
+				sendWSMessage_10000(1, _ripTalksWolf, _safariShadow, 1, 1, -1,
+					_safariShadow, 1, 1, 0);
+				_val7 = 1101;
+				break;
+
+			case 1101:
+				_val7 = 1003;
+				kernel_timing_trigger(1, 102);
+
+				conv_load("conv403a", 10, 10, 101);
+				conv_export_value_curr(_G(flags)[V111], 0);
+				conv_export_value_curr(_G(flags)[V121], 1);
+				conv_export_value_curr(_G(flags)[V122], 2);
+				conv_export_value_curr(_G(flags)[V120], 3);
+
+				conv_export_value_curr(inv_player_has("POMERANIAN MARKS") ? 1 : 0, 5);
+				conv_export_pointer_curr(&_G(flags)[V114], 5);
+				conv_export_pointer_curr(&_G(flags)[V115], 6);
+				conv_export_value_curr(_G(flags)[V337], 10);
+				conv_play();
+				break;
+
+			case 1102:
+				frame = imath_ranged_rand(11, 13);
+				sendWSMessage_10000(1, _ripOnLadder, _ripTalkPay, frame, frame, 102,
+					_ripTalkPay, frame, frame, 0);
+				sendWSMessage_190000(_ripOnLadder, 11);
+				sendWSMessage_1a0000(_ripOnLadder, 11);
+				break;
+
+			case 1103:
+				sendWSMessage_10000(1, _ripOnLadder, _ripTalkPay, 10, 10, 102,
+					_ripTalkPay, 10, 10, 0);
+				break;
+
+			case 1104:
+				sendWSMessage_10000(1, _ripOnLadder, _ripTalkPay, 10, 10, -1,
+					_ripTalkPay, 10, 10, 0);
+				break;
+
+			case 1105:
+				player_set_commands_allowed(false);
+
+				if (_val5) {
+					_val5 = 0;
+					sendWSMessage_10000(1, _ripOnLadder, _ripTalkPay, 10, 1, 305,
+						_ripTalkPay, 1, 1, 0);
+					_val9 = 2251;
+					_G(flags)[V124] = 1;
+				} else {
+					sendWSMessage_10000(1, _ripOnLadder, _ripTalkPay, 10, 1, 103,
+						_ripTalkPay, 1, 1, 0);
+					_val7 = 1106;
+
+					if (!_G(flags)[V115])
+						_val9 = 2103;
+				}
+				break;
+
+			case 1106:
+				terminateMachineAndNull(_ripOnLadder);
+				terminateMachineAndNull(_ripTalksWolf);
+				ws_unhide_walker();
+				_G(flags)[V114] = 0;
+
+				if (!_G(flags)[V115] || _flag2 ||
+						!inv_player_has("POMERANIAN MARKS")) {
+					_flag2 = false;
+					_val8 = 2001;
+					_val9 = 2300;
+					kernel_timing_trigger(1, 110);
+					player_set_commands_allowed(true);
+				} else {
+					player_set_commands_allowed(false);
+					_val12 = 1;
+					_val8 = 2000;
+					_val9 = 2230;
+					kernel_timing_trigger(1, 110);
+				}
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 1010:
+			switch (_val7) {
+			case 1200:
+				player_set_commands_allowed(false);
+				terminateMachineAndNull(_ventClosed);
+				_ripClimbsLadder = series_load("RIPLEY CLIMBS LADDER");
+				ws_hide_walker();
+
+				_ripOnLadder = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, 0,
+					triggerMachineByHashCallbackNegative, "RIP climbs ladder");
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 1, 12, 103,
+					_ripClimbsLadder, 12, 12, 0);
+				_val7 = 1202;
+				break;
+
+			case 1202:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 13, 23, 103,
+					_ripClimbsLadder, 23, 23, 0);
+				_val7 = 1203;
+				break;
+
+			case 1203:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 24, 33, 103,
+					_ripClimbsLadder, 33, 33, 0);
+				_val7 = 1204;
+				break;
+
+			case 1204:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 34, 40, 103,
+					_ripClimbsLadder, 40, 40, 0);
+				_val7 = 1205;
+				break;
+
+			case 1205:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 41, 52, 103,
+					_ripClimbsLadder, 52, 52, 0);
+				_val7 = 1209;
+				break;
+
+			case 1209:
+				_val10 = 1;
+				player_set_commands_allowed(true);
+				break;
+
+			case 1210:
+				player_set_commands_allowed(false);
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 52, 36, 103,
+					_ripClimbsLadder, 36, 36, 0);
+				_val7 = 1212;
+				break;
+
+			case 1212:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 35, 26, 103,
+					_ripClimbsLadder, 26, 26, 0);
+				_val7 = 1213;
+				break;
+
+			case 1213:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 25, 14, 103,
+					_ripClimbsLadder, 14, 14, 0);
+				_val7 = 1214;
+				break;
+
+			case 1214:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 13, 4, 103,
+					_ripClimbsLadder, 4, 4, 0);
+				_val7 = 1215;
+				break;
+
+			case 1215:
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 3, 1, 103,
+					_ripClimbsLadder, 1, 1, 0);
+				_val7 = 1219;
+				break;
+
+			case 1219:
+				terminateMachineAndNull(_ripOnLadder);
+				ws_unhide_walker();
+				_ventClosed = series_show("SPRITE OF VENT CLOSED", 0x600, 16);
+				series_unload(_ripClimbsLadder);
+				_val10 = 0;
+				player_set_commands_allowed(true);
+				break;
+
+			case 1220:
+				player_set_commands_allowed(false);
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 53, 59, 103,
+					_ripClimbsLadder, 59, 59, 0);
+				break;
+
+			case 1222:
+				digi_play("403_s06", 2);
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 60, 74, 103,
+					_ripClimbsLadder, 74, 74, 0);
+				_val7 = 1223;
+				break;
+
+			case 1230:
+				player_set_commands_allowed(false);
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 74, 69, 103,
+					_ripClimbsLadder, 69, 69, 0);
+				_val7 = 1232;
+				break;
+
+			case 1232:
+				digi_play("403_s06", 2);
+				sendWSMessage_10000(1, _ripOnLadder, _ripClimbsLadder, 68, 53, 103,
+					_ripClimbsLadder, 53, 53, 0);
+				_val7 = 1210;
+				break;
+
+			case 1240:
+				player_set_commands_allowed(false);
+				digi_preload("403R29");
+				series_stream("VENT POPUP LADDER", 10, 0, 103);
+				kernel_timing_trigger(390, 350);
+				_val7 = 1230;
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 1020:
+			switch (_val7) {
+			case 1300:
+				player_set_commands_allowed(false);
+				_ripLegUp = series_load("RIP GETS A LEG UP");
+				ws_hide_walker();
+
+				_ripOnLadder = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, 0,
+					triggerMachineByHashCallbackNegative, "RIP climbs plank");
+				sendWSMessage_10000(1, _ripOnLadder, _ripLegUp, 1, 10, 103,
+					_ripLegUp, 10, 10, 0);
+				_val7 = 1302;
+				break;
+
+			case 1302:
+				digi_play("403_s08", 2);
+				sendWSMessage_10000(1, _ripOnLadder, _ripLegUp, 11, 44, 103,
+					_ripLegUp, 44, 44, 0);
+				_val7 = 1303;
+				break;
+
+			case 1303:
+				_val10 = 3;
+				player_set_commands_allowed(true);
+				break;
+
+			case 1310:
+				player_set_commands_allowed(false);
+				sendWSMessage_10000(1, _ripOnLadder, _ripLegUp, 44, 1, 103,
+					_ripLegUp, 1, 1, 0);
+				digi_play("403_s08", 2);
+				_val7 = 1312;
+				break;
+
+			case 1312:
+				terminateMachineAndNull(_ripOnLadder);
+				ws_unhide_walker();
+				series_unload(_ripLegUp);
+				_val10 = 0;
+
+				if (_G(flags)[V125] == 3)
+					kernel_timing_trigger(1, 442);
+				break;
+
+			case 1320:
+				player_set_commands_allowed(false);
+				_ripTurtle = series_load("RIP TURTLE SERIES");
+				_noTreat = series_load("403RP06 NO TREAT");
+				terminateMachineAndNull(_ventClosed);
+
+				if (_G(flags)[V125] == 1)
+					sendWSMessage_10000(1, _ripOnLadder, _ripTurtle, 1, 12, 103,
+						_ripTurtle, 12, 12, 0);
+				else
+					sendWSMessage_10000(1, _ripOnLadder, _noTreat, 1, 12, 103,
+						_noTreat, 12, 12, 0);
+
+				_val7 = 1322;
+				break;
+
+			case 1322:
+				digi_play("403_s06", 2);
+
+				if (_G(flags)[V125] == 1)
+					sendWSMessage_10000(1, _ripOnLadder, _ripTurtle, 13, 28, 103,
+						_ripTurtle, 28, 28, 0);
+				else
+					sendWSMessage_10000(1, _ripOnLadder, _noTreat, 13, 28, 103,
+						_noTreat, 28, 28, 0);
+
+				_val7 = 1323;
+				break;
+
+			case 1323:
+				if (_G(flags)[V125]) {
+					hotspot_set_active("GRATE", false);
+					hotspot_set_active("TURTLE TREAT", true);
+					_val10 = 5;
+				} else {
+					_val10 = 4;
+				}
+
+				player_set_commands_allowed(true);
+				break;
+
+			case 1330:
+				player_set_commands_allowed(false);
+
+				if (_G(flags)[V125] == 1)
+					sendWSMessage_10000(1, _ripOnLadder, _ripTurtle, 28, 21, 103,
+						_ripTurtle, 21, 21, 0);
+				else
+					sendWSMessage_10000(1, _ripOnLadder, _noTreat, 28, 21, 103,
+						_noTreat, 21, 21, 0);
+
+				_val7 = 1332;
+				break;
+
+			case 1332:
+				digi_play("403_s10", 2);
+
+				if (_G(flags)[V125] == 1)
+					sendWSMessage_10000(1, _ripOnLadder, _ripTurtle, 20, 1, 103,
+						_ripTurtle, 44, 44, 0);
+				else
+					sendWSMessage_10000(1, _ripOnLadder, _noTreat, 20, 1, 103,
+						_noTreat, 44, 44, 0);
+
+				_val7 = 1333;
+				break;
+
+			case 1333:
+				series_unload(_noTreat);
+				series_unload(_ripTurtle);
+				_ventClosed = series_show("SPRITE OF VENT CLOSED", 0x600, 16);
+
+				hotspot_set_active("GRATE", 1);
+				hotspot_set_active("TURTLE TREAT", false);
+				_val7 = 1310;
+				kernel_timing_trigger(1, 103);
+				break;
+
+			case 1340:
+				player_set_commands_allowed(false);
+				digi_preload("403R29");
+				series_stream("VENT POPUP PLANK", 10, 0, 103);
+				kernel_timing_trigger(390, 350);
+				_val7 = 1330;
+				break;
+
+			case 1400:
+				player_set_commands_allowed(false);
+
+				if (_G(flags)[V125]) {
+					digi_play("403r49", 1, 255, 103);
+				} else {
+					sendWSMessage_10000(1, _ripOnLadder, _ripTurtle, 29, 52, 103,
+						_ripTurtle, 52, 52, 0);
+					_G(flags)[V125] = 1;
+					_val10 = 5;
+
+					hotspot_set_active("GRATE", false);
+					hotspot_set_active("TURTLE TREATS", true);
+					_val7 = 1402;
+				}
+				break;
+
+			case 1402:
+				player_set_commands_allowed(true);
+				break;
+
+			case 1410:
+				player_set_commands_allowed(false);
+
+				if (_G(flags)[V125] == 1)
+					sendWSMessage_10000(1, _ripOnLadder, _ripTurtle, 53, 81, 103,
+						_ripTurtle, 81, 81, 0);
+				else
+					sendWSMessage_10000(1, _ripOnLadder, _noTreat, 53, 81, 103,
+						_noTreat, 81, 81, 0);
+
+				_val7 = 1412;
+				break;
+
+			case 1412:
+				if (_val10 != 5) {
+					digi_play("403r50", 1, 255, 103);
+				} else if (_G(flags)[V125] == 1) {
+					digi_play("403r51", 1, 255, 103);
+					_G(flags)[V125] = 0;
+				} else {
+					kernel_timing_trigger(1, 440);
+				}
+
+				_val7 = 1413;
+				break;
+
+			case 1413:
+				sendWSMessage_10000(1, _ripOnLadder, _noTreat, 81, 53, 103,
+					_noTreat, 28, 28, 0);
+				_val7 = 1414;
+				break;
+
+			case 1414:
+				inv_give_to_player("TURTLE");
+				_val10 = 4;
+				hotspot_set_active("GRATE", true);
+				hotspot_set_active("TURTLE TREAT", false);
+				player_set_commands_allowed(true);
+				break;
+
+			case 1500:
+				player_set_commands_allowed(false);
+				_ripPlankEdger = series_load("RIPLEY ON PLANK USES EDGER");
+				sendWSMessage_10000(1, _ripOnLadder, _ripPlankEdger, 1, 20, 103,
+					_ripPlankEdger, 20, 20, 0);
+				_val7 = 1502;
+				break;
+
+			case 1502:
+				digi_play("403_s10", 2);
+				sendWSMessage_10000(1, _ripOnLadder, _ripPlankEdger, 20, 63, 103,
+					_noTreat, 52, 52, 0);
+				_val7 = 1503;
+				break;
+
+			case 1504:
+				_G(flags)[V125] = 2;
+				series_unload(_ripPlankEdger);
+				player_set_commands_allowed(true);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
+	default:
+		break;
+	}
 }
 
 #define TRIGGER _G(kernel).trigger_mode = KT_DAEMON; \
diff --git a/engines/m4/riddle/rooms/section4/room403.h b/engines/m4/riddle/rooms/section4/room403.h
index ac3dae32e83..522d44b7bb9 100644
--- a/engines/m4/riddle/rooms/section4/room403.h
+++ b/engines/m4/riddle/rooms/section4/room403.h
@@ -69,6 +69,8 @@ private:
 	int _ripMedReach = 0;
 	int _series1 = 0;
 	int _ripPutBoard = 0;
+	machine *_ripTalksWolf = nullptr;
+	int _ripPlankEdger = 0;
 
 	void conv403a();
 	void conv403a1();




More information about the Scummvm-git-logs mailing list