[Scummvm-git-logs] scummvm master -> 7baae04bdd09b19d119dd70b3193762292e3327d

Strangerke noreply at scummvm.org
Fri Nov 1 21:52:31 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:
7baae04bdd M4: RIDDLE: Partial implementation of room 205 (daemon up to trigger 666)


Commit: 7baae04bdd09b19d119dd70b3193762292e3327d
    https://github.com/scummvm/scummvm/commit/7baae04bdd09b19d119dd70b3193762292e3327d
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-01T22:52:02+01:00

Commit Message:
M4: RIDDLE: Partial implementation of room 205 (daemon up to trigger 666)

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


diff --git a/engines/m4/riddle/inventory.cpp b/engines/m4/riddle/inventory.cpp
index fde54b1465e..9567bc61c87 100644
--- a/engines/m4/riddle/inventory.cpp
+++ b/engines/m4/riddle/inventory.cpp
@@ -26,8 +26,6 @@
 namespace M4 {
 namespace Riddle {
 
-#define INVENTORY_COUNT 123
-
 struct InvObject {
 	const char *_name;
 	int16 _scene, _cel, _cursor;
@@ -182,5 +180,13 @@ void Inventory::remove(const Common::String &name) {
 	_GI(inventory)->_must_redraw_all = true;
 }
 
+// Added for room 205
+const char * Inventory::get_name(int32 id) {
+	if (id < 0 || id >= INVENTORY_COUNT)
+		return "";
+
+	return INVENTORY_ITEMS[id]._name;
+}
+
 } // namespace Riddle
 } // namespace M4
diff --git a/engines/m4/riddle/inventory.h b/engines/m4/riddle/inventory.h
index be77522256b..16f03398835 100644
--- a/engines/m4/riddle/inventory.h
+++ b/engines/m4/riddle/inventory.h
@@ -30,6 +30,8 @@
 namespace M4 {
 namespace Riddle {
 
+#define INVENTORY_COUNT 123
+
 struct InventoryItem {
 	const char *_asset = nullptr;
 	const char *_name = nullptr;
@@ -48,6 +50,8 @@ public:
 	void add(const Common::String &name, const Common::String &verbs, int32 sprite, int32 cursor) override;
 	void set_scroll(int32 scroll) override;
 	void remove(const Common::String &name) override;
+
+	static const char *get_name(int32 id);
 };
 
 } // namespace Riddle
diff --git a/engines/m4/riddle/rooms/section2/room205.cpp b/engines/m4/riddle/rooms/section2/room205.cpp
index 2294f9e92ed..900524bdecc 100644
--- a/engines/m4/riddle/rooms/section2/room205.cpp
+++ b/engines/m4/riddle/rooms/section2/room205.cpp
@@ -20,7 +20,10 @@
  */
 
 #include "m4/riddle/rooms/section2/room205.h"
+
+#include "m4/adv_r/other.h"
 #include "m4/graphics/gr_series.h"
+#include "m4/riddle/inventory.h"
 #include "m4/riddle/riddle.h"
 #include "m4/riddle/vars.h"
 
@@ -28,6 +31,17 @@ namespace M4 {
 namespace Riddle {
 namespace Rooms {
 
+
+static const int16 WALKER_DIRS[] = {200, 201, -1};
+static const char *WALKER_NAMES[] = {"kuang walker 10", "kuang walker 6"};
+static const int16 SHADOW_DIRS[] = {210, 211, -1};
+static const char *SHADOW_NAMES[] = {"kuangs shadow 10", "kuangs shadow 6"};
+
+static const int16 WALKER_DIRS2[] = {240, -1};
+static const char *WALKER_NAMES2[] = {"shen guo walker 12"};
+static const int16 SHADOW_DIRS2[] = {250, -1};
+static const char *SHADOW_NAMES2[] = {"shen guo shadow 12"};
+
 void Room205::preload() {
 	LoadWSAssets("OTHER SCRIPT", _G(master_palette));
 	_G(player).walker_type = WALKER_ALT;
@@ -46,7 +60,7 @@ void Room205::init() {
 		digi_preload("205R01", -1);
 		digi_preload("205M02", -1);
 
-		_205rp1Series = series_load("205RP01", -1, nullptr);
+		_205rp01Series = series_load("205RP01", -1, nullptr);
 		_205mc01Series = series_load("205MC01", -1, nullptr);
 		_205mc02Series = series_load("205MC02", -1, nullptr);
 
@@ -169,6 +183,788 @@ void Room205::parser() {
 }
 
 void Room205::daemon() {
+	switch (_G(kernel).trigger) {
+	case 500:
+		player_set_commands_allowed(true);
+		break;
+
+	case 501:
+		player_update_info(_G(my_walker), &_G(player_info));
+		ws_hide_walker(_G(my_walker));
+		_safariShadow1Mach = series_show("SAFARI SHADOW 1", 2304, 16, -1, -1, 0, _G(player_info).scale + 1, _G(player_info).x, _G(player_info).y);
+		series_play("205RP01", 1792, 0, 502, 5, 0, 100, 0, 0, 0, 16);
+
+		break;
+
+	case 502:
+		digi_play("205R01", 1, 255, 506, -1);
+		series_play("205RP01", 1792, 0, 503, 5, 0, 100, 0, 0, 17, 18);
+		ws_hide_walker(_mcEntranceTrekMach);
+		_candlemanShadow3Mach = series_show("CANDLEMAN SHADOW3", 2304, 16, -1, -1, 0, 84, 261, 359);
+		_205MeiStanderMach = series_play("205MC01", 1792, 16, -1, 5, 0, 100, 0, 0, 0, -1);
+
+		break;
+
+	case 503:
+		series_play("205RP01", 1792, 2, 504, 5, 0, 100, 0, 0, 11, 17);
+		break;
+
+	case 504:
+		_205rp1Mach = series_play("205RP01", 1792, 16, 505, 5, 0, 100, 0, 0, 12, -1);
+		break;
+
+	case 505:
+	case 526:
+	case 538:
+	case 544:
+	case 552:
+	case 588:
+	case 592:
+		_fieldD8 = 1;
+		break;
+
+	case 506:
+		if (_fieldD8) {
+			_fieldD8 = 0;
+			terminateMachine(_205MeiStanderMach);
+			series_play("205MC02", 1792, 0, 507, 5, 0, 100, 0, 0, 0, 5);
+		} else {
+			kernel_timing_trigger(10, 529, nullptr);
+		}
+
+		break;
+
+	case 507:
+		_205MeiStanderMach = series_play("205MC02", 256, 16, 508, 5, 0, 100, 0, 0, 6, -1);
+		digi_play("205M02", 1, 255, -1, -1);
+
+		break;
+
+	case 508:
+		terminateMachine(_205rp1Mach);
+		terminateMachine(_safariShadow1Mach);
+		ws_unhide_walker(_G(my_walker));
+		ws_walk(_G(my_walker), 277, 304, nullptr, 509, 9, true);
+		digi_play("205R11", 1, 255, -1, -1);
+
+		break;
+
+	case 509:
+		player_update_info(_G(my_walker), &_G(player_info));
+		ws_hide_walker(_G(my_walker));
+		_safariShadow1Mach = series_show("SAFARI SHADOW 3", 2304, 16, -1, -1, 0, _G(player_info).scale + 1, _G(player_info).x, _G(player_info).y);
+		_205rp1Mach = series_play("205RP02", 2048, 16, 510, 5, 0, 100, 0, 0, 0, 13);
+
+		break;
+
+	case 510:
+		terminateMachine(_safariShadow1Mach);
+		terminateMachine(_205rp1Mach);
+		_205rp1Mach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 2048, false, triggerMachineByHashCallback, "205rp02");
+		sendWSMessage_10000(1, _205rp1Mach, _205rp02Series, 14, 17, -1, _205rp02Series, 14, 17, 1);
+		sendWSMessage_1a0000(_205rp1Mach, 11);
+		digi_play("205R12a", 1, 255, 512, -1);
+
+		break;
+
+	case 512:
+		terminateMachine(_205rp1Mach);
+		series_play("205RP02", 2048, 2, 513, 5, 0, 100, 0, 0, 0, 8);
+		digi_play("205r12b", 1, 255, -1, -1);
+
+		break;
+
+	case 513:
+		ws_unhide_walker(_G(my_walker));
+		ws_walk(_G(my_walker), 277, 304, nullptr, 514, 9, true);
+
+		break;
+
+	case 514:
+		digi_unload("205R01");
+		digi_unload("205M02");
+		series_unload(_205rp01Series);
+		series_unload(_205mc01Series);
+
+		digi_unload("205R11");
+		series_unload(_205rp02Series);
+
+		_ripTrekHeadTurnPos5Series = series_load("RIP TREK HEAD TURN POS5", -1, nullptr);
+		digi_preload("205R12", -1);
+		_ripTalkerPos5Series = series_load("RIP TALKER POS 5", -1, nullptr);
+		_205mc03Series = series_load("205MC03", -1, nullptr);
+		digi_preload("205R02", -1);
+		_205rp03Series = series_load("205RP03", -1, nullptr);
+		kernel_timing_trigger(10, 515, nullptr);
+
+		break;
+
+	case 515:
+		player_update_info(_G(my_walker), &_G(player_info));
+		ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 516, 5, true);
+
+		break;
+
+	case 516:
+		setGlobals1(_ripTrekHeadTurnPos5Series, 1, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+		sendWSMessage_110000(_G(my_walker), 517);
+
+		break;
+
+	case 517:
+		sendWSMessage_140000(_G(my_walker), 518);
+		digi_play("205R12c", 1, 255, -1, -1);
+
+		break;
+
+	case 518:
+		setGlobals1(_ripTrekHeadTurnPos5Series, 8, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+		sendWSMessage_110000(_G(my_walker), 519);
+
+		break;
+
+	case 519:
+		sendWSMessage_140000(_G(my_walker), 523);
+
+		break;
+
+	case 520:
+		setGlobals1(_ripTrekHeadTurnPos5Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+		sendWSMessage_110000(_G(my_walker), 521);
+
+		break;
+
+	case 521:
+		sendWSMessage_190000(_G(my_walker), 13);
+
+		break;
+
+	case 522:
+		sendWSMessage_150000(_G(my_walker), 523);
+
+		break;
+
+	case 523:
+		terminateMachine(_205MeiStanderMach);
+		terminateMachine(_candlemanShadow3Mach);
+		series_play("205MC03", 1792, 0, 524, 5, 0, 100, 0, 0, 0, -1);
+
+		break;
+
+	case 524:
+		ws_unhide_walker(_mcEntranceTrekMach);
+		ws_demand_facing(_mcEntranceTrekMach, 2);
+		sendWSMessage_10000(_mcEntranceTrekMach, 300, 249, 2, 526, 1);
+		ws_walk(_G(my_walker), 349, 249, nullptr, 527, 11, true);
+
+		break;
+
+	case 527:
+		ws_hide_walker(_G(my_walker));
+		_205rp1Mach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, false, triggerMachineByHashCallback, "205rp03");
+		sendWSMessage_10000(1, _205rp1Mach, _205rp03Series, 1, 11, -1, _205rp03Series, 2, 10, 4);
+		sendWSMessage_1a0000(_205rp1Mach, 11);
+		digi_play("205R02", 1, 255, 528, -1);
+
+		break;
+
+	case 528:
+		sendWSMessage_10000(1, _205rp1Mach, _205rp03Series, 11, 11, 529, _205rp03Series, 11, 11, 0);
+
+		break;
+
+	case 529:
+		if (_fieldD8) {
+			_fieldD8 = 0;
+			sendWSMessage_60000(_mcEntranceTrekMach);
+			kernel_timing_trigger(10, 532, nullptr);
+			series_unload(_ripTrekHeadTurnPos5Series);
+			series_unload(_ripTalkerPos5Series);
+			series_unload(_205mc02Series);
+
+			digi_unload("205R12");
+			series_unload(_205mc03Series);
+			digi_unload("205R02");
+
+			_205all0Series = series_load("205ALL0", -1, nullptr);
+			digi_preload("205_s01", -1);
+			digi_preload("205R13", -1);
+			terminateMachine(_205rp1Mach);
+			series_play("205ALL0", 3840, 0, 530, 5, 0, 100, 0, 0, 0, 32);
+		} else {
+			kernel_timing_trigger(10, 529, nullptr);
+		}
+
+		break;
+
+	case 530:
+		digi_play("205_s01", 2, 255, -1, -1);
+		series_play("205ALL0", 3840, 0, 531, 5, 0, 100, 0, 0, 33, 56);
+
+		break;
+
+	case 531:
+		digi_play("205_s01", 2, 255, -1, -1);
+		series_play("205ALL0", 3840, 0, 533, 5, 0, 100, 0, 0, 57, 65);
+
+		break;
+
+	case 532:
+		series_unload(S8_SHADOW_DIRS2[4]);
+		series_unload(S8_SHADOW_DIRS2[3]);
+		series_unload(S8_SHADOW_DIRS2[2]);
+		series_unload(S8_SHADOW_DIRS2[1]);
+		series_unload(S8_SHADOW_DIRS2[0]);
+
+		break;
+
+	case 533:
+		series_play("205ALL0", 3840, 0, 534, 5, 0, 100, 0, 0, 66, -1);
+		_G(flags[V289]) = 1;
+		digi_play("205R13", 1, 255, 538, -1);
+
+		break;
+
+	case 534:
+		if (_fieldD8) {
+			_fieldD8 = 0;
+			_205all0Mach = series_show("205ALL0", 3840, 16, -1, -1, 88, 100, 0, 0);
+			kernel_timing_trigger(10, 539, nullptr);
+		} else {
+			series_play("205ALL0", 3840, 2, 535, 5, 0, 100, 0, 0, 66, -1);
+		}
+
+		break;
+
+	case 535:
+		if (_fieldD8) {
+			_fieldD8 = 0;
+			_205all0Mach = series_show("205ALL0", 3840, 16, -1, -1, 88, 100, 0, 0);
+			kernel_timing_trigger(10, 539, nullptr);
+		} else {
+			series_play("205ALL0", 3840, 16, 536, 5, 0, 100, 0, 0, 66, -1);
+		}
+
+		break;
+
+	case 536:
+		series_unload(_205rp03Series);
+		digi_unload("205_s01");
+		ws_walk_load_shadow_series(SHADOW_DIRS, SHADOW_NAMES);
+		ws_walk_load_walker_series(WALKER_DIRS, WALKER_NAMES);
+		digi_preload("205K01", -1);
+		_205all1Series = series_load("205ALL1", -1, nullptr);
+		digi_preload("205_s02", -1);
+		series_load("205BITS", -1, nullptr);
+		_205rtlk1Series = series_load("205RTLK1", -1, nullptr);
+		_205mtlk1Series = series_load("205MTLK1", -1);
+		digi_preload("205M01", -1);
+		_205ktlk1Series = series_load("205KTLK1", -1, nullptr);
+		digi_preload("205K03", -1);
+		digi_preload("205r05", -1);
+		digi_preload("205k04", -1);
+		_205ktlk2Series = series_load("205KTLK2", -1, nullptr);
+		digi_preload("205k05", -1);
+		ws_walk_load_shadow_series(SHADOW_DIRS2, SHADOW_NAMES2);
+		ws_walk_load_walker_series(WALKER_DIRS2, WALKER_NAMES2);
+		digi_preload("205S01", -1);
+		digi_preload("205k06", -1);
+
+		kernel_timing_trigger(10, 537, nullptr);
+
+		break;
+
+	case 537:
+		if (!_fieldD8) {
+			kernel_timing_trigger(10, 537, nullptr);
+		} else {
+			_fieldD8 = 0;
+			kernel_timing_trigger(10, 538, nullptr);
+		}
+
+		break;
+
+	case 539:
+		_kuangWalker205Mach = triggerMachineByHash_3000(8, 17, *WALKER_DIRS, *SHADOW_DIRS, 1000, 0, 10, triggerMachineByHashCallback3000, "kuang walker 205");
+		terminateMachine(_205TabletsMach);
+		_205TabletsMach = series_show("205 TABLETS", 0, 16, -1, -1, 0, 100, 0, 0);
+		ws_demand_location(_kuangWalker205Mach, 435, 254);
+		ws_demand_facing(_kuangWalker205Mach, 10);
+		digi_play("205k01", 1, 255, 544, -1);
+		kernel_timing_trigger(120, 540, nullptr);
+		sendWSMessage_10000(_kuangWalker205Mach, 393, 254, 10, -1, true);
+
+		break;
+
+	case 540:
+		terminateMachine(_205all0Mach);
+		series_play("205ALL1", 3840, 0, 541, 5, 0, 100, 0, 0, 0, 6);
+
+		break;
+
+	case 541:
+		digi_play("205_s02", 2, 255, 542, -1);
+		_205all0Mach = series_play("205ALL1", 3840, 16, 545, 5, 0, 100, 0, 0, 7, -1);
+
+		break;
+
+	case 542:
+		series_show("205BITS", 3846, 16, -1, -1, 0, 100, 0, 0);
+		inv_move_object("KEY", 999);
+		player_set_commands_allowed(true);
+		player_set_commands_allowed(false);
+
+		break;
+
+	case 543:
+		digi_play("205K02", 1, 255, 544, -1);
+
+		break;
+
+	case 545:
+		if (!_fieldD8) {
+			kernel_timing_trigger(10, 545);
+		} else {
+			terminateMachine(_205TabletsMach);
+			_205TabletsMach = series_show("205 TABLETS", 3584, 16, -1, -1, 0, 100, 0, 0);
+			_fieldD8 = 0;
+			terminateMachine(_205all0Mach);
+			_candlemanShadow3Mach = series_show("CANDLEMAN SHADOW5", 3840, 16, -1, -1, 0, 50, 299, 247);
+			_205MeiStanderMach = series_show("205MTLK1", 3840, 16, -1, -1, 0, 100, 0, 0);
+			_safariShadow1Mach = series_show("SAFARI SHADOW 4", 3840, 16, -1, -1, 0, 51, 356, 253);
+			_205rp1Mach = series_play("205RTLK1", 3840, 16, -1, 5, 0, 100, 0, 0, 0, -1);
+			digi_play("205R04", 1, 255, 546);
+		}
+
+		break;
+
+	case 546:
+		terminateMachine(_205MeiStanderMach);
+		_205MeiStanderMach = series_play("205MTLK1", 3840, 16, -1, 5, 0, 100, 0, 0, 0, -1);
+		digi_play("205M01", 1, 255, 547, -1);
+
+		break;
+
+	case 547:
+		ws_hide_walker(_kuangWalker205Mach);
+		_kuangsShadow2Mach = series_show("KUANGS SHADOW 2", 3840, 16, -1, -1, 0, 52, 394, 254);
+		_kuangTalkerMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3584, 0, triggerMachineByHashCallback, "kuang talker");
+		sendWSMessage_10000(1, _kuangTalkerMach, _205ktlk1Series, 1, 1, -1, _205ktlk1Series, 1, 5, 1);
+		sendWSMessage_1a0000(_kuangTalkerMach, 11);
+		digi_play("205K03", 1, 255, 548, -1);
+
+		break;
+
+	case 548:
+		sendWSMessage_10000(1, _kuangTalkerMach, _205ktlk1Series, 1, 1, -1, _205ktlk1Series, 1, 1, 0);
+		terminateMachine(_205rp1Mach);
+		_205rp1Mach = series_play("205RTLK1", 3840, 16, -1, 5, 0, 100, 0, 0, 0, -1);
+		kernel_timing_trigger(10, 553, nullptr);
+		digi_play("205R05", 1, 255, 549, -1);
+
+		break;
+
+	case 549:
+		sendWSMessage_10000(1, _kuangTalkerMach, _205ktlk1Series, 1, 1, -1, _205ktlk1Series, 1, 5, 1);
+		digi_play("205K04", 1, 255, 550, -1);
+
+		break;
+
+	case 550:
+		sendWSMessage_10000(1, _kuangTalkerMach, _205ktlk1Series, 1, 1, -1, _205ktlk1Series, 1, 1, 0);
+		kernel_timing_trigger(60, 551, nullptr);
+
+		break;
+
+	case 551:
+		terminateMachine(_kuangTalkerMach);
+		_kuangTalkerMach = series_play("205KTLK2", 3584, 16, -1, 5, 0, 100, 0, 0, 0, -1);
+		digi_play("205K05", 1, 255, 552, -1);
+
+		break;
+
+
+	case 553:
+		_shenSuitGunWalkerMach = triggerMachineByHash_3000(8, 18, *WALKER_DIRS2, *SHADOW_DIRS2, 320, 600, 11, triggerMachineByHashCallback3000, "shen suit gun walker");
+		sendWSMessage_10000(_shenSuitGunWalkerMach, 346, 293, 11, 554, true);
+
+		break;
+
+	case 554:
+		if (!_fieldD8) {
+			kernel_timing_trigger(10, 554, nullptr);
+		} else {
+			_fieldD8 = 0;
+			kernel_timing_trigger(10, 555, nullptr);
+		}
+
+		break;
+
+	case 555:
+		digi_play("205S01", 1, 255, 556, -1);
+		digi_unload("205R13");
+		series_unload(_205all0Series);
+		series_unload(_205all1Series);
+		digi_unload("205K01");
+		series_unload(_205all1Series);
+		digi_unload("205_s02");
+		digi_unload("205K02");
+		digi_unload("205M01");
+		digi_unload("205K03");
+		digi_unload("205r05");
+		digi_unload("205k04");
+		series_unload(_205ktlk2Series);
+		digi_unload("205k05");
+
+		break;
+
+	case 556:
+		digi_unload("205S01");
+		digi_play("205K06", 1, 255, -1, -1);
+		digi_preload("205_s05", -1);
+		digi_preload("205_s06", -1);
+		digi_preload("205_s03", -1);
+		digi_preload("205_s04", -1);
+		digi_preload("205k07", -1);
+		_205all4Series = series_load("205ALL4", -1, nullptr);
+		_205rtlk2Series = series_load("205RTLK2", -1, nullptr);
+		digi_preload("205r06", -1);
+		kernel_timing_trigger(10, 557, nullptr);
+
+		break;
+
+	case 557:
+		terminateMachine(_kuangTalkerMach);
+		series_unload(_205ktlk1Series);
+		terminateMachine(_205rp1Mach);
+		series_unload(_205rtlk1Series);
+		terminateMachine(_205MeiStanderMach);
+		series_unload(_205mtlk1Series);
+		terminateMachine(_kuangsShadow2Mach);
+		terminateMachine(_safariShadow1Mach);
+		terminateMachine(_candlemanShadow3Mach);
+		_205all0Mach = series_stream("205ALL2", 7, 3328, 563);
+		series_stream_break_on_frame(_205all0Mach, 14, 558);
+
+		break;
+
+	case 558:
+		inv_move_object("JOURNAL", 999);
+		hotspot_set_active("GAP WITH JOURNAL", true);
+		digi_play("205_s05", 2, 255, -1, -1);
+		player_set_commands_allowed(true);
+		player_set_commands_allowed(false);
+		series_stream_break_on_frame(_205all0Mach, 21, 559);
+
+		break;
+
+	case 559:
+		digi_play("205_s06", 2, 255, -1, -1);
+		series_stream_break_on_frame(_205all0Mach, 26, 560);
+
+		break;
+
+	case 560:
+		digi_play("205_s06", 2, 255, -1, 1);
+		series_stream_break_on_frame(_205all0Mach, 47, 561);
+
+		break;
+
+	case 561:
+		digi_play("205_s03", 2, 255, -1, 1);
+		series_stream_break_on_frame(_205all0Mach, 64, 562);
+
+		break;
+
+	case 562:
+		digi_play("205_s04", 2, 255, -1, 1);
+		series_stream_break_on_frame(_205all0Mach, -1, -1);
+
+		break;
+
+	case 563:
+		sendWSMessage_60000(_shenSuitGunWalkerMach);
+		_shenGuoShadow12Mach = series_show("SHEN GUO SHADOW 12", 3840, 16, -1, -1, 0, 63, 344, 291);
+		_kuangsShadow2Mach = series_show("KUANGS SHADOW 6", 3840, 16, -1, -1, 0, 63, 390, 276);
+		_candlemanShadow3Mach = series_show("CANDLEMAN SHADOW5", 3840, 16, -1, -1, 0, 50, 293, 248);
+		digi_play("205k07", 1, 255, -1, -1);
+		_205all0Mach = series_stream("205ALL3", 5, 3840, 564);
+
+		break;
+
+	case 564:
+		terminateMachine(_kuangsShadow2Mach);
+		ws_unhide_walker(_kuangWalker205Mach);
+		ws_demand_location(_kuangWalker205Mach, 389, 275);
+		ws_demand_facing(_kuangWalker205Mach, 7);
+		sendWSMessage_10000(_kuangWalker205Mach, 400, 600, 0, 565, true);
+		terminateMachine(_shenGuoShadow12Mach);
+		_205all0Mach = series_play("205ALL4", 3840, 16, 567, 5, 0, 100, 0, 0, 0, -1);
+		digi_unload("205k06");
+		digi_unload("205_s05");
+		digi_unload("205_s06");
+		digi_unload("205_s03");
+		digi_unload("205_s04");
+		digi_unload("205k07");
+
+		break;
+
+	case 565:
+		sendWSMessage_60000(_kuangWalker205Mach);
+		kernel_timing_trigger(10, 566, nullptr);
+
+		break;
+
+	case 566:
+		series_unload(WALKER_DIRS[0]);
+		series_unload(WALKER_DIRS[1]);
+		series_unload(SHADOW_DIRS[0]);
+		series_unload(SHADOW_DIRS[1]);
+
+		break;
+
+	case 567:
+		terminateMachine(_205all0Mach);
+		series_unload(_205all4Series);
+		_205all0Mach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, 0, triggerMachineByHashCallback, "rip talker");
+		sendWSMessage_10000(1, _205all0Mach, _205rtlk2Series, 1, 14, -1, _205rtlk2Series, 4, 14, 4);
+		digi_play("205r06", 1, 255, 568, -1);
+
+		break;
+
+	case 568:
+		digi_unload("205r06");
+		sendWSMessage_10000(1, _205all0Mach, _205rtlk2Series, 13, 15, -1, _205rtlk2Series, 15, 15, 0);
+		series_unload(WALKER_DIRS2[0]);
+		series_unload(SHADOW_DIRS2[0]);
+		_205ShenGouStaresSeries = series_load("205 SHEN GOU STARES", -1, nullptr);
+		_205all5Series = series_load("205ALL5", -1, nullptr);
+		_205rtlk3Series = series_load("205RTLK3", -1, nullptr);
+		digi_preload("205r07", -1);
+		terminateMachine(_205all0Mach);
+		series_unload(_205rtlk2Series);
+		terminateMachine(_candlemanShadow3Mach);
+		_205all0Mach = series_stream("205 RIP SMILES", 5, 0, 572);
+
+		break;
+
+	case 572:
+		_205all0Mach = series_play("205 SHEN GOU STARES", 0, 16, 573, 5, 0, 100, 0, 0, 0, 8);
+
+		break;
+
+	case 573:
+		kernel_timing_trigger(60, 574, nullptr);
+
+		break;
+
+	case 574:
+		terminateMachine(_205all0Mach);
+		series_play("205 SHEN GOU STARES", 0, 0, 575, 5, 0, 100, 0, 0, 9, -1);
+
+		break;
+
+	case 575:
+		series_play("205ALL5", 3840, 0, 576, 5, 0, 100, 0, 0, 0, -1);
+
+		break;
+
+	case 576:
+		_unkInventoryId = 0;
+
+		digi_play("205r07", 1, 255, 578, -1);
+		_candlemanShadow3Mach = series_show("MCTSH1", 3840, 16, -1, -1, 2, 51, 290, 251);
+		_205all0Mach = series_play("205RTLK3", 3840, 16, 577, 5, 0, 100, 0, 0, 0, -1);
+
+		break;
+
+	case 577:
+		if (INVENTORY_COUNT - 1 <= _unkInventoryId) {
+			_fieldD8 = 1;
+			break;
+		}
+
+		if (inv_player_has(Inventory::get_name(_unkInventoryId))) {
+			inv_move_object(Inventory::get_name(_unkInventoryId), 999);
+			player_set_commands_allowed(true);
+			player_set_commands_allowed(false);
+			kernel_timing_trigger(30, 277, nullptr);
+		} else {
+			kernel_timing_trigger(1, 577, nullptr);
+		}
+		++_unkInventoryId;
+
+		break;
+
+	case 578:
+		if (!_fieldD8) {
+			kernel_timing_trigger(10, 578, nullptr);
+		} else {
+			_fieldD8 = 0;
+			series_unload(_205ShenGouStaresSeries);
+			series_unload(_205all5Series);
+			digi_unload("205r07");
+			terminateMachine(_205all0Mach);
+			series_unload(_205rtlk3Series);
+			terminateMachine(_candlemanShadow3Mach);
+			_205GunPointedSeries = series_load("205 GUN POINTED", -1, nullptr);
+			_205all0Mach = series_stream("205SRISE", 5, 0, 500);
+		}
+
+		break;
+
+	case 580:
+		midi_play("suspens2", 255, 0, 581, 949);
+		_205GunPointedMach = series_play("205 GUN POINTED", 0, 16, 582, 5, 0, 100, 0, 0, 0, 4);
+
+		break;
+
+	case 581:
+		if (!_fieldD8) {
+			kernel_timing_trigger(10, 581, nullptr);
+		} else {
+			_fieldD8 = 0;
+			terminateMachine(_205GunPointedMach);
+			series_play("205 GUN POINTED", 0, 0, 584, 5, 0, 100, 0, 0, 12, -1);
+		}
+
+		break;
+
+	case 582:
+		_fieldD8 = 0;
+
+		_205rtlk4Series = series_load("205RTLK4", -1, nullptr);
+		digi_preload("205r09", -1);
+		_205strlk1Series = series_load("205STLK1", -1, nullptr);
+		digi_preload("205s02", -1);
+		digi_preload("205r08", -1);
+
+		_fieldD8 = 1;
+
+		break;
+
+	case 583:
+		terminateMachine(_205GunPointedMach);
+		series_play("205 GUN POINTED", 0, 0, 584, 5, 0, 100, 0, 0, 4, -1);
+
+		break;
+
+	case 584:
+		digi_play("205r08", 1, 255, 585, -1);
+		_candlemanShadow3Mach = series_show("CANDLEMAN SHADOW3", 3840, 16, -1, -1, 0, 61, 312, 283);
+		_205all0Mach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, false, triggerMachineByHashCallback, "rip talker");
+		sendWSMessage_10000(1, _205all0Mach, _205rtlk4Series, 1, 10, -1, _205rtlk4Series, 2, 10, 4);
+
+		break;
+
+	case 585:
+		digi_play("205r09", 1, 255, 586, -1);
+
+		break;
+
+	case 586:
+		series_unload(_205GunPointedSeries);
+		terminateMachine(_205all0Mach);
+		series_unload(_205rtlk4Series);
+		digi_play("205s02", 1, 255, 588, -1);
+		_shenSuitGunWalkerMach = series_play("205STLK1", 3840, 16, 589, 5, 0, 100, 0, 0, 0, -1);
+
+		break;
+
+	case 589:
+		if (!_fieldD8) {
+			kernel_timing_trigger(10, 589, nullptr);
+		} else {
+			_fieldD8 = 0;
+			kernel_timing_trigger(10, 590, nullptr);
+		}
+
+		break;
+
+	case 590:
+		digi_preload("205r10", -1);
+		digi_play("205r10", 1, 255, 593, -1);
+		_205rtlk5Series = series_load("205RTLK5", -1, nullptr);
+		_205all6Series = series_load("205ALL6", -1, nullptr);
+		_205RipGetsBitchSlappedSeries = series_load("205 RIP GETS BITCH SLAPPED", -1, nullptr);
+		digi_preload("205_s07", -1);
+		digi_preload("205_s08", -1);
+		digi_preload("205_s22", -1);
+		terminateMachine(_candlemanShadow3Mach);
+		terminateMachine(_shenSuitGunWalkerMach);
+		series_unload(_205strlk1Series);
+		_205all0Mach = series_play("205RTLK5", 3840, 16, 592, 5, 0, 100, 0, 0, 0, -1);
+
+		break;
+
+	case 593:
+		if (!_fieldD8) {
+			kernel_timing_trigger(10, 593, nullptr);
+		} else {
+			_fieldD8 = 0;
+			terminateMachine(_205all0Mach);
+			series_unload(_205rtlk5Series);
+			series_play("205ALL6", 768, 0, 594, 5, 0, 100, 0, 0, 0, 10);
+		}
+
+		break;
+
+	case 594:
+		digi_play("205_s07", 2, 255, -1, -1);
+		series_play("205ALL6", 768, 0, 595, 5, 0, 100, 0, 0, 11, 19);
+
+		break;
+
+	case 595:
+		digi_play("205_s08", 2, 255, -1, -1);
+		series_play("205ALL6", 768, 0, 596, 5, 0, 100, 0, 0, 20, 40);
+
+		break;
+
+	case 596:
+		_205CharcoalSpriteMach = series_show("205 CHARCOAL SPRITE", 32767, 16, -1, -1, 0, 100, 0, 0);
+		_205GunPointedMach = series_show("205 GUN IN BRAZIER", 768, 16, -1, -1, 0, 100, 0, 0);
+		hotspot_set_active(_G(currentSceneDef).hotspots, "CHARCOAL", true);
+		series_play("205ALL6", 768, 0, 897, 5, 0, 100, 0, 0, 41, -1);
+
+		break;
+
+	case 597:
+		_205MeiStanderMach = series_show("205 MEI SPRITE TO FILL IN", 3845, 16, -1, -1, 0, 100, 0, 0);
+		series_play("205 RIP GETS BITCH SLAPPED", 3584, 0, 598, 5, 0, 100, 0, 0, 0, 11);
+
+		break;
+
+	case 598:
+		digi_play("205_s22", 2, 255, -1, -1);
+		_205all0Mach = series_play("205 RIP GETS BITCH SLAPPED", 3584, 16, 599, 5, 0, 100, 0, 0, 12, -1);
+
+		break;
+
+	case 599:
+		series_unload(_205all6Series);
+		digi_unload("205r08");
+		digi_unload("205r09");
+		digi_unload("205r10");
+		digi_unload("205s02");
+		digi_unload("205_s07");
+		digi_unload("205_s08");
+		kernel_timing_trigger(imath_ranged_rand(1200, 1800), 901, nullptr);
+		_fieldE8 = 1;
+		kernel_timing_trigger(10, 1000, nullptr);
+
+		break;
+
+	case 666:
+		other_save_game_for_resurrection();
+		_G(game).new_section = 4;
+		_G(game).new_room = 413;
+
+		break;
+
+	default:
+		break;
+	}
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section2/room205.h b/engines/m4/riddle/rooms/section2/room205.h
index 2e4ddc61843..42ba43a1c09 100644
--- a/engines/m4/riddle/rooms/section2/room205.h
+++ b/engines/m4/riddle/rooms/section2/room205.h
@@ -49,25 +49,57 @@ private:
 	int32 _field19C = 0;
 	int32 _field1A0 = 0;
 
+	int32 _205all0Series = 0;
+	int32 _205all1Series = 0;
+	int32 _205all4Series = 0;
+	int32 _205all5Series = 0;
+	int32 _205all6Series = 0;
 	int32 _205FireInBrazierSeries = 0;
 	int32 _205GunFireSeries = 0;
+	int32 _205GunPointedSeries = 0;
+	int32 _205ktlk1Series = 0;
+	int32 _205ktlk2Series = 0;
 	int32 _205mc01Series = 0;
 	int32 _205mc02Series = 0;
-	int32 _205rp1Series = 0;
+	int32 _205mc03Series = 0;
+	int32 _205mtlk1Series = 0;
+	int32 _205rp01Series = 0;
 	int32 _205rp02Series = 0;
+	int32 _205rp03Series = 0;
+	int32 _205rtlk1Series = 0;
+	int32 _205rtlk2Series = 0;
+	int32 _205rtlk3Series = 0;
+	int32 _205rtlk4Series = 0;
+	int32 _205rtlk5Series = 0;
+	int32 _205ShenGouStaresSeries = 0;
+	int32 _205strlk1Series;
 	int32 _205TabletsSeries = 0;
 	int32 _ripGetsShotSeries = 0;
+	int32 _ripTalkerPos5Series = 0;
+	int32 _ripTrekHeadTurnPos5Series = 0;
 	int32 _ripTrekLowReacherPos5Series = 0;
 	int32 _ripTrekLowReachPos2Series = 0;
 	int32 _ripTrekMedReachHandPos1Series = 0;
-	
+	int32 _unkInventoryId = 0;
+
+	machine *_205all0Mach = nullptr;
 	machine *_205CharcoalSpriteMach = nullptr;
 	machine *_205FireInBrazierMach = nullptr;
 	machine *_205GunInBrazierMach = nullptr;
+	machine *_205GunPointedMach = nullptr;
 	machine *_205LeftEntranceTabletMach = nullptr;
 	machine *_205MeiStanderMach = nullptr;
+	machine *_205rp1Mach = nullptr;
 	machine *_205TabletsMach = nullptr;
+	machine *_candlemanShadow3Mach = nullptr;
+	machine *_kuangsShadow2Mach = nullptr;
+	machine *_kuangTalkerMach = nullptr;
+	machine *_kuangWalker205Mach = nullptr;
 	machine *_mcEntranceTrekMach = nullptr;
+	machine *_safariShadow1Mach = nullptr;
+	machine *_shenGuoShadow12Mach = nullptr;
+	machine *_shenSuitGunWalkerMach = nullptr;
+	int32 _205RipGetsBitchSlappedSeries = 0;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list