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

dreammaster noreply at scummvm.org
Sun Sep 1 17:14:08 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:
e97ad304fc M4: RIDDLE: Added room 409


Commit: e97ad304fc2a2c3836a9ba1d14ab50e6052fb680
    https://github.com/scummvm/scummvm/commit/e97ad304fc2a2c3836a9ba1d14ab50e6052fb680
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-01T10:14:02-07:00

Commit Message:
M4: RIDDLE: Added room 409

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


diff --git a/engines/m4/riddle/rooms/section4/room409.cpp b/engines/m4/riddle/rooms/section4/room409.cpp
index 8089e7d5ab4..30d341628e8 100644
--- a/engines/m4/riddle/rooms/section4/room409.cpp
+++ b/engines/m4/riddle/rooms/section4/room409.cpp
@@ -28,9 +28,269 @@ namespace Riddle {
 namespace Rooms {
 
 void Room409::init() {
+	player_set_commands_allowed(false);
+	digi_preload("409r01a");
+	digi_preload("409r01b");
+	digi_preload("409r01c");
+	digi_preload("950_s27");
+	ws_demand_location(239, 295, 3);
+
+	_seriesShadow = series_load("SAFARI SHADOW 3");
+	_seriesDoorOpen = series_load("409 DOOR OPEN");
+	_seriesRope = series_load("409ROPE");
+	_seriesWolfOpensDoor = series_load("409 WOLF OPENS DOOR");
+	_seriesReadTelegram = series_load("RIP TREK READS TELEGRAM POS5");
+	_seriesRp02 = series_load("409RP02");
+	_seriesHeadTurn = series_load("RIP TREK HEAD TURN POS5");
+	_seriesTalker = series_load("RIP TALKER POS 5");
+	_seriesReachHand = series_load("RIP TREK MED REACH HAND POS1");
+
+	_turtleRope = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, 0,
+		triggerMachineByHashCallbackNegative, "TURTLE & rope");
+	sendWSMessage_10000(1, _turtleRope, _seriesRope, 1, 20, 100, _seriesRope, 20, 20, 0);
+
+	_volume = 255;
+	_flag = true;
+
+	digi_play("950_s27", 2, 255, -1, 950);
+	digi_play("409_s04", 3);
+
+	_wolfWalker = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x300, 0,
+		triggerMachineByHashCallbackNegative, "WOLFIE");
+	sendWSMessage_10000(1, _wolfWalker, _seriesWolfOpensDoor, 1, 20, 350,
+		_seriesWolfOpensDoor, 20, 20, 0);
 }
 
 void Room409::daemon() {
+	switch (_G(kernel).trigger) {
+	case 100:
+		if (_flag) {
+			sendWSMessage_10000(1, _turtleRope, _seriesRope, 1, 20, 100,
+				_seriesRope, 20, 20, 0);
+			digi_play("950_s27", 3, _volume, -1, 950);
+		}
+		break;
+
+	case 350:
+		kernel_timing_trigger(75, 351);
+		break;
+
+	case 351:
+		sendWSMessage_10000(1, _wolfWalker, _seriesWolfOpensDoor, 21, 38, 352,
+			_seriesWolfOpensDoor, 38, 38, 0);
+		digi_play("409_s01", 1);
+		break;
+
+	case 352:
+		terminateMachineAndNull(_wolfWalker);
+		_doorOpen = series_place_sprite("409 DOOR OPEN", 0, 0, 0, 100, 0x300);
+		kernel_timing_trigger(120, 353);
+		digi_play("409w11a", 1);
+		break;
+
+	case 353:
+		ws_walk(323, 295, nullptr, 354, 3);
+		break;
+
+	case 354:
+		kernel_timing_trigger(180, 355);
+		break;
+
+	case 355:
+		ws_walk(333, 319, nullptr, 356, 5);
+		break;
+
+	case 356:
+		kernel_timing_trigger(60, 357);
+		break;
+
+	case 357:
+		ws_hide_walker();
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, 0,
+			triggerMachineByHashCallbackNegative, "rip looks at turtle");
+		sendWSMessage_10000(1, _ripley, _seriesRp02, 1, 16, 358,
+			_seriesRp02, 16, 16, 0);
+		break;
+
+	case 358:
+		kernel_timing_trigger(60, 359);
+		break;
+
+	case 359:
+		sendWSMessage_10000(1, _ripley, _seriesRp02, 16, 1, 360, _seriesRp02, 1, 1, 0);
+		break;
+
+	case 360:
+		terminateMachineAndNull(_ripley);
+		ws_unhide_walker();
+
+		player_update_info();
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+			_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, 0,
+			triggerMachineByHashCallbackNegative, "rip looks around");
+		ws_hide_walker();
+		sendWSMessage_10000(1, _ripley, _seriesHeadTurn, 1, 6, -1,
+			_seriesHeadTurn, 6, 6, 0);
+		kernel_timing_trigger(150, 361);
+		break;
+
+	case 361:
+		sendWSMessage_10000(1, _ripley, _seriesHeadTurn, 6, 1, -1, _seriesHeadTurn, 1, 1, 0);
+		kernel_timing_trigger(180, 362);
+		kernel_timing_trigger(90, 363);
+		break;
+
+	case 362:
+		_volume = 40;
+		digi_play("409r01c", 1, 255, 366);
+		break;
+
+	case 363:
+		sendWSMessage_10000(1, _ripley, _seriesHeadTurn, 8, 12, -1, _seriesHeadTurn, 12, 12, 0);
+		kernel_timing_trigger(150, 364);
+		break;
+
+	case 364:
+		sendWSMessage_10000(1, _ripley, _seriesHeadTurn, 12, 8, -1, _seriesHeadTurn, 8, 8, 0);
+		kernel_timing_trigger(150, 365);
+		break;
+
+	case 366:
+		sendWSMessage_10000(1, _ripley, _seriesTalker, 1, 4, -1, _seriesTalker, 1, 4, 1);
+		digi_play("409r01a", 1, 255, 367);
+		midi_play("ATONING", 255, 1, -1, 949);
+		break;
+
+	case 367:
+		digi_play("409r01b", 1, 255, 368);
+		break;
+
+	case 368:
+		terminateMachineAndNull(_ripley);
+		ws_unhide_walker();
+		ws_walk(379, 330, nullptr, 380, 1);
+		break;
+
+	case 380:
+		setGlobals1(1, _seriesReachHand, 10, 10, 10, 0, 10, 1, 1, 1);
+		sendWSMessage_110000(381);
+		break;
+
+	case 381:
+		digi_play("950_s07", 2);
+		sendWSMessage_120000(382);
+		inv_give_to_player("TOMB MESSAGE");
+		break;
+
+	case 382:
+		sendWSMessage_150000(384);
+		break;
+
+	case 384:
+		ws_walk(377, 332, nullptr, 385, 5);
+		break;
+
+	case 385:
+		player_update_info();
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+			_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x100, 0,
+			triggerMachineByHashCallbackNegative, "rip looks around");
+		_shadow = series_place_sprite("SAFARI SHADOW 5", 0,
+			_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
+		sendWSMessage_10000(1, _ripley, _seriesReadTelegram, 1, 21, 386,
+			_seriesReadTelegram, 22, 31, 0);
+		break;
+
+	case 386:
+		sendWSMessage_1a0000(_ripley, 12);
+		digi_play("409r02d", 1, 255, 387);
+		break;
+
+	case 387:
+		digi_play("409r02a", 1, 255, 388);
+		break;
+
+	case 388:
+		digi_play("409r02b", 1, 255, 389);
+		break;
+
+	case 389:
+		midi_fade_volume(0, 120);
+		kernel_timing_trigger(120, -1);
+		sendWSMessage_10000(1, _ripley, _seriesReadTelegram, 21, 1, 391,
+			_seriesReadTelegram, 1, 1, 0);
+		sendWSMessage_190000(_ripley, 5);
+		break;
+
+	case 391:
+		sendWSMessage_10000(1, _ripley, _seriesHeadTurn, 8, 12, -1,
+			_seriesHeadTurn, 12, 12, 0);
+		digi_play("409r02c", 1, 255, 401);
+		break;
+
+	case 401:
+		sendWSMessage_10000(1, _ripley, _seriesHeadTurn, 12, 8, 402,
+			_seriesHeadTurn, 1, 1, 0);
+		break;
+
+	case 402:
+		terminateMachineAndNull(_ripley);
+		terminateMachineAndNull(_shadow);
+		ws_unhide_walker();
+		ws_walk(379, 330, nullptr, 403, 1);
+		break;
+
+	case 403:
+		setGlobals1(1, _seriesReachHand, 10, 10, 10, 0, 10, 1, 1, 1);
+		sendWSMessage_110000(405);
+		break;
+
+	case 405:
+		sendWSMessage_120000(-1);
+		digi_play("409_s03", 2);
+		inv_give_to_player("KEY");
+		kernel_examine_inventory_object("PING KEY", _G(master_palette),
+			5, 1, 270, 150, -1, 0, -1);
+		digi_play("409r03a", 1, 255, 406);
+		break;
+
+	case 406:
+		kernel_unexamine_inventory_object(_G(master_palette), 5, 1);
+		sendWSMessage_150000(-1);
+
+		if (!_G(flags)[V286] || !_G(flags)[V287] || !_G(flags)[V288])
+			digi_play("409r04a", 1, 255, 407);
+		else
+			digi_play("409r05a", 1, 255, 407);
+		break;
+
+	case 407:
+		ws_walk(333, 319, nullptr, 408, 5);
+		_volume = 255;
+		break;
+
+	case 408:
+		ws_hide_walker();
+		_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x100, 0,
+			triggerMachineByHashCallbackNegative, "rip looks at turtle");
+		sendWSMessage_10000(1, _ripley, _seriesRp02, 1, 16, 409, _seriesRp02, 16, 16, 0);
+		break;
+
+	case 409:
+		digi_play("409r06", 1, 255, 410);
+		break;
+
+	case 410:
+		disable_player_commands_and_fade_init(420);
+		break;
+
+	case 420:
+		_G(game).setRoom(401);
+		break;
+
+	default:
+		break;	
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section4/room409.h b/engines/m4/riddle/rooms/section4/room409.h
index 909789c015d..3d29ba0737d 100644
--- a/engines/m4/riddle/rooms/section4/room409.h
+++ b/engines/m4/riddle/rooms/section4/room409.h
@@ -29,6 +29,24 @@ namespace Riddle {
 namespace Rooms {
 
 class Room409 : public Room {
+private:
+	int _volume = 0;
+	bool _flag = false;
+	machine *_ripley = nullptr;
+	machine *_shadow = nullptr;
+	machine *_turtleRope = nullptr;
+	machine *_wolfWalker = nullptr;
+	machine *_doorOpen = nullptr;
+	int _seriesShadow = 0;
+	int _seriesDoorOpen = 0;
+	int _seriesRope = 0;
+	int _seriesWolfOpensDoor = 0;
+	int _seriesReadTelegram = 0;
+	int _seriesRp02 = 0;
+	int _seriesHeadTurn = 0;
+	int _seriesTalker = 0;
+	int _seriesReachHand = 0;
+
 public:
 	Room409() : Room() {}
 	~Room409() override {}




More information about the Scummvm-git-logs mailing list