[Scummvm-git-logs] scummvm master -> 91fc3be37778086426c5d2b35d6bd0a0d422d325

dreammaster noreply at scummvm.org
Fri Sep 13 04:57:34 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:
91fc3be377 M4: RIDDLE: More room 504 daemon


Commit: 91fc3be37778086426c5d2b35d6bd0a0d422d325
    https://github.com/scummvm/scummvm/commit/91fc3be37778086426c5d2b35d6bd0a0d422d325
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-12T21:56:29-07:00

Commit Message:
M4: RIDDLE: More room 504 daemon

Changed paths:
    engines/m4/riddle/rooms/section5/room504.cpp
    engines/m4/riddle/rooms/section5/room504.h


diff --git a/engines/m4/riddle/rooms/section5/room504.cpp b/engines/m4/riddle/rooms/section5/room504.cpp
index 8bdcc89747d..0ad9e69a88c 100644
--- a/engines/m4/riddle/rooms/section5/room504.cpp
+++ b/engines/m4/riddle/rooms/section5/room504.cpp
@@ -107,6 +107,8 @@ void Room504::init() {
 }
 
 void Room504::daemon() {
+	int frame;
+
 	switch (_G(kernel).trigger) {
 	case 501:
 		player_update_info();
@@ -165,9 +167,228 @@ void Room504::daemon() {
 		break;
 
 	case 504:
-		// TODO
 		switch (_val2) {
 		case 1:
+			switch (_convState1) {
+			case 1:
+				sendWSMessage_10000(1, _mzMachine, _mzDigs, 1, 23, 503,
+					_mzDigs, 23, 23, 0);
+
+				if (_flag1) {
+					player_update_info();
+					_volume2 = 1;
+
+					switch (imath_ranged_rand(1, 4)) {
+					case 1:
+						digi_play("504_s02", 2, _volume2);
+						break;
+					case 2:
+						digi_play("504_s02a", 2, _volume2);
+						break;
+					case 3:
+						digi_play("504_s02b", 2, _volume2);
+						break;
+					case 4:
+						digi_play("504_s02c", 2, _volume2);
+						break;
+					}
+
+					if (_G(player_info).x < 550) {
+						_volume2 = 0;
+					} else if (_G(player_info).x < 1050) {
+						_volume2 = 255;
+					} else if (_G(player_info).x > 1050) {
+						_volume2 = _G(player_info).x * -0.219827586 + 485.8189655;
+					}
+
+					digi_change_panning(2, _volume2);
+				}
+				break;
+
+			case 2:
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, 1, 11, 503,
+					_mzStandsTalks, 11, 11, 0);
+				_val2 = 2;
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 2:
+			switch (_convState1) {
+			case 1:
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, 11, 1, 503,
+					_mzStandsTalks, 1, 1, 0);
+				_val2 = 1;
+				break;
+
+			case 2:
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, 11, 11, 503,
+					_mzStandsTalks, 11, 11, 0);
+				break;
+
+			case 4:
+				frame = imath_ranged_rand(10, 26);
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, frame, frame, 503,
+					_mzStandsTalks, frame, frame, 0);
+				break;
+
+			case 5:
+				_mzTakesMoney = series_load("504 MZ TAKES MONEY");
+				sendWSMessage_10000(1, _mzMachine, _mzTakesMoney, 1, 11, 503,
+					_mzTakesMoney, 11, 11, 0);
+				_val2 = 5;
+				break;
+
+			case 6:
+				_mzTakesEmerald = series_load("504 MZ TAKES EMERALD");
+				sendWSMessage_10000(1, _mzMachine, _mzTakesEmerald, 1, 12, 517,
+					_mzTakesEmerald, 13, 13, 0);
+				break;
+
+			case 9:
+				_mzGivesHead = series_load("504 MZ GIVES HEAD");
+				sendWSMessage_10000(1, _mzMachine, _mzGivesHead, 1, 27, 503,
+					_mzGivesHead, 28, 28, 0);
+				_val2 = 9;
+				break;
+
+			case 10:
+				_mzGivesHead = series_load("504 MZ GIVES HEAD");
+				digi_play(conv_sound_to_play(), 1);
+				sendWSMessage_10000(1, _mzMachine, _mzGivesHead, 1, 27, 503,
+					_mzGivesHead, 28, 28, 0);
+				_convState1 = 11;
+				break;
+
+			case 11:
+				kernel_timing_trigger(60, 503);
+				_convState1 = 12;
+				break;
+
+			case 12:
+				sendWSMessage_10000(1, _mzMachine, _mzGivesHead, 27, 1, 503,
+					_mzGivesHead, 1, 1, 0);
+				break;
+
+			case 13:
+				conv_resume();
+				_convState1 = 2;
+				kernel_timing_trigger(1, 503);
+				break;
+
+			case 15:
+				_ripLeansBack = series_load("504 rip leans back");
+				_mzMenancesClimbs = series_load("504 MZ MENACES CLIMBS");
+				digi_preload("504_S02D");
+				digi_play("504_S02D", 1);
+				sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 1, 21, 503,
+					_mzMenancesClimbs, 21, 21, 0);
+				sendWSMessage_190000(3);
+				_convState1 = 15;
+				_val2 = 15;
+				break;
+
+			case 16:
+				_mzMenancesClimbs = series_load("504 MZ MENACES CLIMBS");
+				_ripLeansBack = series_load("504 rip leans back");
+				digi_preload("504_502D");
+				digi_play("504_502D", 1);
+				sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 1, 21, 524,
+					_mzMenancesClimbs, 21, 21, 0);
+				sendWSMessage_190000(_mzMachine, 3);
+				series_unload(_mzDigs);
+				series_unload(_mzStandsTalks);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 5:
+			switch (_convState1) {
+			case 2:
+				sendWSMessage_10000(1, _mzMachine, _mzTakesMoney, 12, 32, 503,
+					_mzTakesMoney, 32, 32, 0);
+				_convState1 = 3;
+				break;
+
+			case 3:
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, 11, 11, 503,
+					_mzStandsTalks, 11, 11, 0);
+				_convState1 = 2;
+				_val2 = 2;
+				series_unload(_mzTakesMoney);
+				break;
+
+			case 5:
+				sendWSMessage_10000(1, _mzMachine, _mzTakesMoney, 11, 11, 503,
+					_mzTakesMoney, 11, 11, 0);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 9:
+			switch (_convState1) {
+			case 2:
+				sendWSMessage_10000(1, _mzMachine, _mzGivesHead, 30, 43, 503,
+					_mzGivesHead, 43, 43, 0);
+				_convState1 = 3;
+				break;
+
+			case 3:
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, 11, 11, 503,
+					_mzStandsTalks, 11, 11, 0);
+				_convState1 = 2;
+				_val2 = 2;
+				series_unload(_mzGivesHead);
+				break;
+
+			case 9:
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, 28, 28, 503,
+					_mzStandsTalks, 28, 28, 0);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 15:
+			switch (_convState1) {
+			case 2:
+				sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 21, 1, 503,
+					_mzMenancesClimbs, 1, 1, 0);
+				_convState1 = 3;
+				break;
+
+			case 3:
+				sendWSMessage_10000(1, _mzMachine, _mzStandsTalks, 11, 11, 503,
+					_mzStandsTalks, 11, 11, 0);
+				_convState1 = 2;
+				_val2 = 2;
+				series_unload(_mzMenancesClimbs);
+				digi_unload("504_S02D");
+				break;
+
+			case 15:
+				frame = imath_ranged_rand(21, 23);
+				sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, frame, frame, 503,
+					_mzMenancesClimbs, frame, frame, 0);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		default:
 			break;
 		}
 		break;
@@ -195,6 +416,18 @@ void Room504::daemon() {
 		}
 		break;
 
+	case 511:
+		g_engine->camera_shift_xy(862, 0);
+		_trigger1 = kernel_trigger_create(512);
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_timing_trigger(5, 505);
+		break;
+
+	case 512:
+		_convState2 = 3;
+		digi_play("504R51", 1, 255, 513);
+		break;
+
 	case 513:
 		_convState2 = 1;
 		_convState1 = 2;
@@ -206,20 +439,48 @@ void Room504::daemon() {
 		_trigger4 = kernel_trigger_create(515);
 		break;
 
+	case 515:
+		_convState2 = 6;
+		digi_play("504R13", 1, 255, 516);
+		break;
+
 	case 516:
 		_convState2 = 5;
 		_convState1 = 6;
 		break;
 
+	case 518:
+		sendWSMessage_10000(1, _mzMachine, _mzTakesEmerald, 20, 21, -1,
+			_mzTakesEmerald, 20, 20, 4);
+		digi_play("504Z13", 1, 255, 519);
+		break;
+
+	case 519:
+		_convState2 = 3;
+		digi_play("504R14", 1, 255, 520);
+		break;
+
 	case 520:
 		_convState2 = 1;
-		sendWSMessage_10000(1, _mzMachine, _mzSeries1, 21, 29, 503,
+		sendWSMessage_10000(1, _mzMachine, _mzTakesEmerald, 21, 29, 503,
 			_mzStandsTalks, 11, 11, 4);
 		_convState1 = 2;
 		_val2 = 2;
 		_trigger2 = kernel_trigger_create(521);
 		break;
 
+	case 521:
+		series_unload(_mzTakesEmerald);
+		_convState1 = 4;
+		digi_play("504Z15", 1, 255, 522);
+		break;
+
+	case 522:
+		_convState1 = 2;
+		_convState2 = 5;
+		digi_play("504R15", 1, 255, 523);
+		break;
+
 	case 523:
 		_convState2 = 1;
 		_convState1 = 16;
@@ -229,6 +490,27 @@ void Room504::daemon() {
 		_trigger1 = kernel_trigger_create(525);
 		break;
 
+	case 525:
+		_convState2 = 8;
+		_trigger4 = kernel_trigger_create(526);
+		sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 21, 23, -1,
+			_mzMenancesClimbs, 21, 23, 4);
+		digi_play("504Z15", 1, 255, 526);
+		break;
+
+
+	case 527:
+		digi_play("504_S06", 1, 255, 528);
+		break;
+
+	case 528:
+		digi_unload("504_S06");
+		_convState2 = 1;
+		sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 52, 59, -1,
+			_mzMenancesClimbs, 58, 59, 4);
+		digi_play("504Z16", 1, 255, 529);
+		break;
+
 	case 529:
 		_convState2 = 3;
 		digi_play("504R16", 1, 255, 530);
@@ -236,8 +518,8 @@ void Room504::daemon() {
 
 	case 530:
 		_convState2 = 1;
-		sendWSMessage_10000(1, _mzMachine, _mzSeries2, 60, 61, -1,
-			_mzSeries2, 60, 62, 4);
+		sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 60, 61, -1,
+			_mzMenancesClimbs, 60, 62, 4);
 		digi_play("504Z17", 1, 255, 531);
 		break;
 
@@ -251,7 +533,7 @@ void Room504::daemon() {
 		ws_walk_load_walker_series(NORMAL_DIRS, NORMAL_NAMES);
 		ws_walk_load_shadow_series(SHADOW_DIRS, SHADOW_NAMES);
 		terminateMachineAndNull(_mzMachine);
-		series_unload(_mzSeries2);
+		series_unload(_mzMenancesClimbs);
 		digi_unload("504_S02D");
 
 		_menendez = triggerMachineByHash_3000(8, 16, NORMAL_DIRS, SHADOW_DIRS,
@@ -276,6 +558,12 @@ void Room504::daemon() {
 		digi_play("504Z18", 1, 255, 538);
 		break;
 
+	case 538:
+		_convState2 = 10;
+		digi_play("504R18", 1, 255, 540);
+		kernel_timing_trigger(150, 539);
+		break;
+
 	case 540:
 		_convState2 = 10;
 		digi_play("504R18A", 1, 255, 541);
@@ -307,6 +595,12 @@ void Room504::daemon() {
 		_convState2 = 9;
 		break;
 
+	case 548:
+		_trigger1 = kernel_trigger_create(549);
+		_G(kernel).trigger_mode = KT_DAEMON;
+		kernel_timing_trigger(5, 505);
+		break;
+
 	case 549:
 		_convState2 = 3;
 		digi_play("504R51", 1, 255, 550);
@@ -328,6 +622,33 @@ void Room504::daemon() {
 		digi_play("504R13", 1, 255, 553);
 		break;
 
+	case 553:
+		_convState2 = 5;
+		_convState1 = 4;
+
+		if (_flag4) {
+			_flag4 = false;
+			_convState1 = 5;
+			_trigger3 = kernel_trigger_create(554);
+		} else {
+			switch (imath_ranged_rand(1, 3)) {
+			case 1:
+				digi_play("504Z05", 1, 255, 555);
+				break;
+			case 2:
+				digi_play("504Z10", 1, 255, 555);
+				break;
+
+			case 3:
+				digi_play("504Z11", 1, 255, 555);
+				break;
+
+			default:
+				break;
+			}
+		}
+		break;
+
 	case 554:
 		_convState1 = 2;
 		_trigger2 = kernel_trigger_create(555);
@@ -392,6 +713,11 @@ void Room504::daemon() {
 		kernel_timing_trigger(5, 566);
 		break;
 
+	case 566:
+		player_update_info();
+		ws_walk(_G(player_info).x + 10, _G(player_info).y, nullptr, 567, 3);
+		break;
+
 	case 567:
 		player_update_info();
 		digi_preload("COM125");
@@ -438,6 +764,14 @@ void Room504::daemon() {
 		digi_play("COM125", 1);
 		break;
 
+	case 580:
+		player_set_commands_allowed(false);
+		_ripMedReach = series_load("RIP TREK MED REACH HAND POS1");
+		_vineTie = series_load("504 R VINE TIE BEFORE THROW");
+		setGlobals1(_ripMedReach, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+		sendWSMessage_110000(581);
+		break;
+
 	case 581:
 		_vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
 			triggerMachineByHashCallbackNegative, "Rope Falling to the Ground");
@@ -471,14 +805,78 @@ void Room504::daemon() {
 		terminateMachineAndNull(_vineMachine2);
 		break;
 
+	case 586:
+		player_set_commands_allowed(false);
+		kernel_timing_trigger(30, 587);
+		break;
+
+	case 587:
+		if (g_engine->game_camera_panning()) {
+			kernel_timing_trigger(5, 587);
+		} else {
+			player_set_commands_allowed(false);
+			_ripMedReach = series_load("RIP TREK MED REACH HAND POS1");
+			_ripLowReach = series_load("RIP LOW REACH POS1");
+			setGlobals1(_ripMedReach, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+			sendWSMessage_110000(588);
+		}
+		break;
+
 	case 588:
 		sendWSMessage_120000(589);
 		break;
 
+	case 590:
+		setGlobals1(_ripLowReach, 1, 24, 24, 24, 0, 24, 1, 1, 1);
+		sendWSMessage_110000(591);
+		break;
+
+	case 591:
+		switch (_val1) {
+		case 1:
+			inv_give_to_player("ROPE");
+			kernel_examine_inventory_object("PING ROPE", 5, 1, 449, 90, 592);
+			break;
+		case 2:
+			inv_give_to_player("GREEN VINE");
+			kernel_examine_inventory_object("PING GREEN VINE", 5, 1, 449, 90, 592);
+			break;
+		case 3:
+			inv_give_to_player("BROWN VINE");
+			kernel_examine_inventory_object("PING BROWN VINE", 5, 1, 449, 90, 592);
+			break;
+		case 4:
+			inv_give_to_player("VINES");
+			kernel_examine_inventory_object("PING VINES", 5, 1, 449, 90, 592);
+			break;
+		default:
+			break;
+		}
+
+		setVines();
+		break;
+
 	case 592:
 		sendWSMessage_120000(593);
 		break;
 
+	case 603:
+		player_set_commands_allowed(false);
+		kernel_timing_trigger(30, 604);
+		break;
+
+	case 604:
+		if (g_engine->game_camera_panning()) {
+			kernel_timing_trigger(5, 587);
+		} else {
+			player_set_commands_allowed(false);
+			_ripMedReach = series_load("RIP TREK MED REACH HAND POS1");
+			_ropeRSlurpsUp = series_load("504 R ROPE SLURPS UP");
+			setGlobals1(_ropeRSlurpsUp, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+			sendWSMessage_110000(605);
+		}
+		break;
+
 	case 606:
 		terminateMachineAndNull(_vineMachine2);
 		sendWSMessage_120000(607);
@@ -515,6 +913,43 @@ void Room504::daemon() {
 		}
 		break;
 
+	case 613:
+		_vineUnrolling = series_load("VINE UNROLLING AS TIED");
+		_vineMachine1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+			triggerMachineByHashCallbackNegative, "Vine Unrolling as Tied");
+		sendWSMessage_10000(1, _vineMachine1, _vineUnrolling, 1, 6, 614,
+			_vineUnrolling, 6, 6, 0);
+		break;
+
+	case 620:
+		player_set_commands_allowed(false);
+		_ripStepUpLeft = series_load("RIP STEP UP ON LEFT");
+		_ripThrowFromLeft = series_load("RIP THROW FROM L");
+		digi_preload("504_S04");
+		digi_preload("504_S04A");
+		ws_hide_walker();
+
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x300, 0,
+			triggerMachineByHashCallbackNegative, "Rip Throwing Right");
+		sendWSMessage_10000(1, _ripley, _ripStepUpLeft, 1, 25, 622,
+			_ripStepUpLeft, 25, 25, 0);
+		break;
+
+	case 630:
+		player_set_commands_allowed(false);
+		_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
+		_vineUnrolling = series_load("VINE UNROLLING AS TIED");
+		setGlobals1(_ripHiReach2Handed, 1, 13, 13, 13, 0, 13, 1, 1, 1);
+		sendWSMessage_110000(632);
+		break;
+
+	case 632:
+		_vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+			triggerMachineByHashCallbackNegative, "Vine Unrolling as Tied");
+		sendWSMessage_10000(1, _vineMachine2, _vineUnrolling, 1, 6, 633,
+			_vineUnrolling, 6, 6, 0);
+		break;
+
 	case 633:
 		switch (_val1) {
 		case 1:
@@ -547,6 +982,38 @@ void Room504::daemon() {
 		terminateMachineAndNull(_vineMachine2);
 		break;
 
+	case 638:
+		player_set_commands_allowed(false);
+		_ripLowReach = series_load("RIP LOW REACH POS1");
+		_leftVineTie = series_load("VINE PULLS TIGHT FROM L TO R");
+		setGlobals1(_ripLowReach, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+		sendWSMessage_110000(639);
+		break;
+
+	case 639:
+		switch (_val1) {
+		case 1:
+			_G(flags)[V154] = 3;
+			break;
+		case 2:
+			_G(flags)[V152] = 3;
+			break;
+		case 3:
+			_G(flags)[V153] = 3;
+			break;
+		case 4:
+			_G(flags)[V171] = 3;
+			break;
+		default:
+			break;
+		}
+
+		setVines();
+		_vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+			triggerMachineByHashCallbackNegative, "Rope Rising");
+		sendWSMessage_120000(640);
+		break;
+
 	case 641:
 		_vineTie = series_load("504 R VINE TIE BEFORE THROW");
 		_vine = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
@@ -554,6 +1021,9 @@ void Room504::daemon() {
 		sendWSMessage_10000(1, _vine, _vineTie, 1, 6, 642, _vineTie, 6, 6, 0);
 		break;
 
+	case 655:
+		digi_play("504R01", 1, 255, 762);
+		break;
 
 	case 657:
 		_convState2 = 5;
@@ -636,6 +1106,22 @@ void Room504::daemon() {
 		_trigger2 = kernel_trigger_create(674);
 		break;
 
+	case 684:
+		player_set_commands_allowed(false);
+		_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
+		_rightVineTie = series_load("504 R VINE TIE TO L SIDE");
+		setGlobals1(_ripHiReach2Handed, 1, 13, 13, 13, 0, 13, 1, 1, 1);
+		sendWSMessage_110000(685);
+		break;
+
+	case 693:
+		player_set_commands_allowed(false);
+		_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
+		_vineUnrolling = series_load("VINE UNROLLING AS TIED");
+		setGlobals1(_ripHiReach2Handed, 1, 13, 13, 13);
+		sendWSMessage_110000(694);
+		break;
+
 	case 696:
 		switch (_val1) {
 		case 1:
@@ -667,6 +1153,14 @@ void Room504::daemon() {
 		}
 		break;
 
+	case 700:
+		player_set_commands_allowed(false);
+		_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
+		_ropeLSlurpsUp = series_load("504 ROPE SLURPS UP");
+		setGlobals1(_ripHiReach2Handed, 1, 13, 13, 13);
+		sendWSMessage_110000(701);
+		break;
+
 	case 703:
 		switch (_val1) {
 		case 1:
@@ -703,6 +1197,22 @@ void Room504::daemon() {
 		digi_play("504R45", 1, 255, 708);
 		break;
 
+	case 708:
+		ws_walk(173, 198, nullptr, 709, 11);
+		break;
+
+	case 709:
+		player_set_commands_allowed(false);
+		_ripLowReach = series_load("RIP LOW REACH POS1");
+		setGlobals1(_ripLowReach, 1, 10, 10, 10);
+		sendWSMessage_110000(710);
+		break;
+
+	case 711:
+		series_unload(_ripLowReach);
+		ws_walk(200, 153, nullptr, _flag2 ? 570 : 714, 3);
+		break;
+
 	case 714:
 		player_set_commands_allowed(false);
 		digi_preload("504_S09");
@@ -729,10 +1239,19 @@ void Room504::daemon() {
 		series_stream_break_on_frame(_ripStep, 27, 721);
 		break;
 
+	case 719:
+		kernel_timing_trigger(30, 720);
+		break;
+
 	case 720:
 		digi_play("504_S03", 1);
 		break;
 
+	case 721:
+		series_stream_check_series(_ripStep, 9999);
+		kernel_timing_trigger(360, 722);
+		break;
+
 	case 722:
 		pal_fade_init(21, 255, 0, 30, 723);
 		interface_hide();
@@ -749,6 +1268,27 @@ void Room504::daemon() {
 		digi_play("504R45", 1, 255, 726);
 		break;
 
+	case 726:
+		ws_walk(530, 161, nullptr, 727, 11);
+		break;
+
+	case 728:
+		player_set_commands_allowed(false);
+		_ripMedReach = series_load("RIP TREK MED REACH HAND POS1");
+		setGlobals1(_ripHiReach2Handed, 1, 10, 10, 10);
+		sendWSMessage_110000(728);
+		break;
+
+	case 729:
+		series_unload(_ripMedReach);
+
+		if (inv_player_has("SHOVEL")) {
+			kernel_timing_trigger(1, 756);
+		} else {
+			ws_walk(528, 168, nullptr, _flag2 ? 558 : 734, 8);
+		}
+		break;
+
 	case 734:
 		player_set_commands_allowed(false);
 		digi_preload("504_s09");
@@ -779,24 +1319,57 @@ void Room504::daemon() {
 		series_stream_break_on_frame(_ripStep, 25, 742);
 		break;
 
+	case 740:
+		kernel_timing_trigger(30, 741);
+		break;
+
 	case 741:
 		digi_play("504_S03", 1);
 		break;
 
+	case 742:
+		series_stream_check_series(_ripStep, 9999);
+		kernel_timing_trigger(360, 743);
+		break;
+
 	case 743:
 		pal_fade_init(21, 255, 0, 30, 744);
 		interface_hide();
 		break;
 
+	case 746:
+		player_set_commands_allowed(false);
+		ws_walk(50, 226, nullptr, 747, 9);
+		break;
+
+	case 747:
+		disable_player_commands_and_fade_init(748);
+		ws_walk(0, 226, nullptr, -1, 9);
+		break;
+
 	case 748:
 		_G(game).setRoom(501);
 		inv_move_object("ROPE", 504);
 		break;
 
+	case 749:
+		player_set_commands_allowed(false);
+		ws_walk(50, 226, nullptr, 750, 9);
+		break;
+
+	case 750:
+		ws_walk(183, 207, nullptr, 751, 3);
+		break;
+
 	case 751:
 		digi_play("504R44", 1, 255, 752);
 		break;
 
+	case 754:
+		digi_play("504_S01", 3, _volume);
+		kernel_timing_trigger(828, 754);
+		break;
+
 	case 755:
 		player_set_commands_allowed(false);
 		digi_play("504R45", 1, 255, 756);
@@ -807,6 +1380,17 @@ void Room504::daemon() {
 		ws_walk(546, 143, nullptr, 757, 11);
 		break;
 
+	case 757:
+		_ripLowReach = series_load("RIP LOW REACH POS1");
+		setGlobals1(_ripLowReach, 1, 10, 10, 10);
+		sendWSMessage_110000(758);
+		break;
+
+	case 759:
+		series_unload(_ripLowReach);
+		ws_walk(528, 168, nullptr, _flag2 ? 558 : 734, 8);
+		break;
+
 	// TODO: Various switch cases
 
 	default:
diff --git a/engines/m4/riddle/rooms/section5/room504.h b/engines/m4/riddle/rooms/section5/room504.h
index c8dae22ecca..4e7e33d1211 100644
--- a/engines/m4/riddle/rooms/section5/room504.h
+++ b/engines/m4/riddle/rooms/section5/room504.h
@@ -35,17 +35,29 @@ private:
 	int _upSteps = 0;
 	int _downSteps = 0;
 	int _volume = 0;
+	int _volume2 = 0;
 	int _convState1 = 0;
 	int _convState2 = 0;
 	int _ripSketching = 0;
 	int _ripLowReach = 0;
 	int _ripMedReach = 0;
 	int _ripWipe = 0;
+	int _ripStepUpLeft = 0;
+	int _ripThrowFromLeft = 0;
+	int _ripHiReach2Handed = 0;
+	int _ripLeansBack = 0;
 	int _mzDigs = 0;
 	int _mzStandsTalks = 0;
-	int _mzSeries1 = 0;
-	int _mzSeries2 = 0;
+	int _mzTakesEmerald = 0;
+	int _mzMenancesClimbs = 0;
+	int _mzTakesMoney = 0;
+	int _mzGivesHead = 0;
 	int _vineTie = 0;
+	int _vineUnrolling = 0;
+	int _rightVineTie = 0;
+	int _leftVineTie = 0;
+	int _ropeLSlurpsUp = 0;
+	int _ropeRSlurpsUp = 0;
 
 	machine *_vines1 = nullptr;
 	machine *_vines2 = nullptr;
@@ -59,6 +71,7 @@ private:
 	machine *_pole = nullptr;
 	machine *_mzMachine = nullptr;
 	machine *_menendez = nullptr;
+	machine *_vineMachine1 = nullptr;
 	machine *_vineMachine2 = nullptr;
 	machine *_ripStep = nullptr;
 	machine *_vine = nullptr;
@@ -66,7 +79,7 @@ private:
 	bool _flag2 = false;
 	bool _flag3 = false;
 	bool _flag4 = false;
-
+	
 	int _trigger1 = 0;
 	int _trigger2 = 0;
 	int _trigger3 = 0;




More information about the Scummvm-git-logs mailing list