[Scummvm-git-logs] scummvm master -> e7f037025c474403a281b0204fb594cc39bdec8d
dreammaster
noreply at scummvm.org
Sat Sep 21 19:25:35 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:
e7f037025c M4: RIDDLE: Finished room 603 daemon
Commit: e7f037025c474403a281b0204fb594cc39bdec8d
https://github.com/scummvm/scummvm/commit/e7f037025c474403a281b0204fb594cc39bdec8d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-21T12:24:38-07:00
Commit Message:
M4: RIDDLE: Finished room 603 daemon
Changed paths:
engines/m4/riddle/rooms/room.cpp
engines/m4/riddle/rooms/room.h
engines/m4/riddle/rooms/section6/room603.cpp
diff --git a/engines/m4/riddle/rooms/room.cpp b/engines/m4/riddle/rooms/room.cpp
index 07fa786445d..dcfe8459364 100644
--- a/engines/m4/riddle/rooms/room.cpp
+++ b/engines/m4/riddle/rooms/room.cpp
@@ -415,12 +415,28 @@ void Room::sendWSMessage_1e0000(machine *recv, int val1, int val2) {
sendWSMessage(0x1e0000, 0, recv, 0, nullptr, 1);
}
-void Room::sendWSMessage_200000(machine *recv, int trigger) {
+void Room::sendWSMessage_1e0000(int val1, int val2) {
+ sendWSMessage_1e0000(_G(my_walker), val1, val2);
+}
+void Room::sendWSMessage_1f0000(machine *recv, int val1, int val2) {
+ _G(globals)[V023] = val1 << 16;
+ _G(globals)[V024] = val2 << 16;
+ sendWSMessage(0x1f0000, 0, recv, 0, nullptr, 1);
}
-void Room::sendWSMessage_1e0000(int val1, int val2) {
- sendWSMessage_1e0000(_G(my_walker), val1, val2);
+void Room::sendWSMessage_1f0000(int val1, int val2) {
+ sendWSMessage_1f0000(_G(my_walker), val1, val2);
+}
+
+void Room::sendWSMessage_200000(machine *recv, int trigger) {
+ _G(globals)[V023] = (trigger << 16) / 100;
+ sendWSMessage(0x200000, 0, recv, 0, nullptr, 1);
+}
+
+void Room::sendWSMessage_210000(machine *recv, int trigger) {
+ _G(globals)[V023] = (trigger << 16) / 100;
+ sendWSMessage(0x210000, 0, recv, 0, nullptr, 1);
}
void Room::sendWSMessage_29a0000(machine *recv, int val1) {
diff --git a/engines/m4/riddle/rooms/room.h b/engines/m4/riddle/rooms/room.h
index d4fd97ca5dd..2485c02cdaf 100644
--- a/engines/m4/riddle/rooms/room.h
+++ b/engines/m4/riddle/rooms/room.h
@@ -104,7 +104,10 @@ protected:
void sendWSMessage_1a0000(machine *recv, int trigger);
void sendWSMessage_1e0000(machine *recv, int val1, int val2);
void sendWSMessage_1e0000(int val1, int val2);
+ void sendWSMessage_1f0000(machine *recv, int val1, int val2);
+ void sendWSMessage_1f0000(int val1, int val2);
void sendWSMessage_200000(machine *recv, int trigger);
+ void sendWSMessage_210000(machine *recv, int trigger);
void sendWSMessage_29a0000(machine *recv, int val1);
void sendWSMessage_29a0000(int val1);
diff --git a/engines/m4/riddle/rooms/section6/room603.cpp b/engines/m4/riddle/rooms/section6/room603.cpp
index 15e4893bc35..2460f3c08a6 100644
--- a/engines/m4/riddle/rooms/section6/room603.cpp
+++ b/engines/m4/riddle/rooms/section6/room603.cpp
@@ -31,11 +31,25 @@ static const int16 NORMAL_DIRS1[] = { 200, -1 };
static const char *NORMAL_NAMES1[] = { "shen guo walker 3" };
static const int16 SHADOW_DIRS1[] = { 210, -1 };
static const char *SHADOW_NAMES1[] = { "shen guo shadow 3" };
+
static const int16 NORMAL_DIRS2[] = { 220, -1 };
static const char *NORMAL_NAMES2[] = { "kuang walker 2" };
static const int16 SHADOW_DIRS2[] = { 230, -1 };
static const char *SHADOW_NAMES2[] = { "kuangs shadow 2" };
+static const int16 NORMAL_DIRS3[] = { 200, 201, 202, 203, -1 };
+static const char *NORMAL_NAMES3[] = {
+ "tt walker 1", "tt walker 2", "tt walker 3",
+ "tt walker 4", "tt walker 5"
+};
+static const int16 SHADOW_DIRS3[] = { 210, 211, 212, 213, -1 };
+static const char *SHADOW_NAMES3[] = {
+ "tt walker shadow 1", "tt walker shadow 2",
+ "tt walker shadow 3", "tt walker shadow 4",
+ "tt walker shadow 5"
+};
+
+
static const char *SAID[][2] = {
{ "shed", "603r03" },
{ "wire", "603r04" },
@@ -593,7 +607,116 @@ void Room603::daemon() {
break;
}
break;
- // TODO
+
+ case 6:
+ if (_num1 == 6) {
+ sendWSMessage_10000(1, _ripley, _ripTwoHandTalk, 6, 6, 300,
+ _ripTwoHandTalk, 6, 6, 0);
+ } else {
+ sendWSMessage_10000(1, _ripley, _ripTwoHandTalk, 6, 1, 300,
+ _ripTwoHandTalk, 1, 1, 0);
+ _num2 = 0;
+ }
+ break;
+
+ case 8:
+ switch (_num1) {
+ case 1:
+ terminateMachineAndNull(_tt);
+ terminateMachineAndNull(_shirt);
+ terminateMachineAndNull(_shadow);
+ _sleeve = series_show("603SLEEV", 0x400, 16);
+ hotspot_set_active("SLEEVE", true);
+ hotspot_set_active("SHIRT", false);
+ sendWSMessage_10000(1, _ripley, _rp02, 1, 28, 305, _rp02, 28, 28, 0);
+ _num1 = 0;
+ sendWSMessage_1e0000(_ripley, 0, 0);
+ sendWSMessage_1f0000(_ripley, 0, 0);
+ sendWSMessage_200000(_ripley, 100);
+ sendWSMessage_210000(_ripley, 100);
+ break;
+
+ case 2:
+ sendWSMessage_10000(1, _ripley, _rp04, 1, 31, 330, _rp04, 31, 31, 0);
+ _num1 = 0;
+ break;
+
+ case 8:
+ sendWSMessage_10000(1, _ripley, _ripHandsBehindBack, 15, 15, 300,
+ _ripHandsBehindBack, 15, 15, 0);
+ break;
+
+ case 13:
+ case 14:
+ sendWSMessage_10000(1, _ripley, _rp01, 34, 35, 300, _rp01, 35, 35, 1);
+ sendWSMessage_1e0000(_ripley, 0, 0);
+ sendWSMessage_200000(_ripley, 100);
+ sendWSMessage_1f0000(_ripley, 0, 0);
+ sendWSMessage_210000(_ripley, 100);
+ _num2 = 13;
+ break;
+
+ default:
+ sendWSMessage_10000(1, _ripley, _ripHandsBehindBack, 15, 1, 300,
+ _rp04, 1, 1, 0);
+ sendWSMessage_190000(_ripley, 4);
+ _num2 = 0;
+ break;
+ }
+ break;
+
+ case 9:
+ if (_num1 == 9) {
+ sendWSMessage_10000(1, _ripley, _ripHandChin, 16, 16, 300,
+ _ripHandChin, 16, 16, 0);
+ } else {
+ sendWSMessage_10000(1, _ripley, _ripHandChin, 16, 1, 300,
+ _ripHandChin, 1, 1, 0);
+ _num2 = 0;
+ }
+ break;
+
+ case 10:
+ if (_num1 == 9) {
+ sendWSMessage_10000(1, _ripley, _ripHandsHips, 12, 12, 300,
+ _ripHandChin, 12, 12, 0);
+ } else {
+ sendWSMessage_10000(1, _ripley, _ripHandsHips, 12, 1, 300,
+ _ripHandsHips, 1, 1, 0);
+ _num2 = 0;
+ }
+ break;
+
+ case 13:
+ switch (_num1) {
+ case 5:
+ case 13:
+ sendWSMessage_10000(1, _ripley, _rp01, 36, 36, -1, _rp01, 36, 38, 1);
+ sendWSMessage_1e0000(_ripley, 0, 0);
+ sendWSMessage_200000(_ripley, 100);
+ sendWSMessage_1f0000(_ripley, 0, 0);
+ sendWSMessage_210000(_ripley, 100);
+ sendWSMessage_1a0000(_ripley, 13);
+ break;
+
+ case 14:
+ sendWSMessage_10000(1, _ripley, _rp01, 36, 36, 300, _rp01, 36, 36, 1);
+ sendWSMessage_1e0000(_ripley, 0, 0);
+ sendWSMessage_200000(_ripley, 100);
+ sendWSMessage_1f0000(_ripley, 0, 0);
+ sendWSMessage_210000(_ripley, 100);
+ sendWSMessage_1a0000(_ripley, 30);
+ break;
+ default:
+ sendWSMessage_10000(1, _ripley, _rp01, 35, 34, 300,
+ _ripHandsBehindBack, 15, 15, 300);
+ sendWSMessage_1e0000(_ripley, 0, 0);
+ sendWSMessage_200000(_ripley, 100);
+ _num2 = 8;
+ break;
+ }
+ break;
+
default:
break;
}
@@ -720,6 +843,396 @@ void Room603::daemon() {
kernel_trigger_dispatchx(kernel_trigger_create(401));
break;
+ case 401:
+ switch (_val7) {
+ case 6:
+ switch (_val8) {
+ case 6:
+ sendWSMessage_10000(1, _tt, _ttD01, 1, 1, 400, _ttD01, 1, 1, 0);
+ break;
+
+ case 8:
+ if (imath_ranged_rand(1, 2) == 1) {
+ sendWSMessage_10000(1, _tt, _ttD01, 2, 2, -1, _ttD01, 2, 24, 4);
+ } else {
+ sendWSMessage_10000(1, _tt, _ttD01, 25, 25, -1, _ttD01, 25, 60, 4);
+ }
+
+ sendWSMessage_1a0000(_tt, 13);
+ break;
+
+ case 11:
+ case 12:
+ sendWSMessage_10000(1, _tt, _ttD01, 61, 76, 400, _ttD01, 77, 77, 1);
+ _val7 = 12;
+ break;
+
+ case 13:
+ sendWSMessage_10000(1, _tt, _ttD01, 96, 121, 400, _ttD01, 1, 1, 1);
+ _val8 = 6;
+ break;
+
+ case 14:
+ case 15:
+ sendWSMessage_10000(1, _tt, _ttD01, 85, 93, 400, _ttD01, 93, 93, 1);
+ _val7 = 15;
+ break;
+
+ case 16:
+ ws_walk_load_walker_series(NORMAL_DIRS3, NORMAL_NAMES3);
+ ws_walk_load_shadow_series(SHADOW_DIRS3, SHADOW_NAMES3);
+ sendWSMessage_10000(1, _tt, _tt03, 122, 112, 402, _tt03, 112, 112, 0);
+ break;
+
+ case 17:
+ if (imath_ranged_rand(50, 150) < ++_val9) {
+ _val9 = 0;
+
+ if (imath_ranged_rand(1, 2) == 1) {
+ sendWSMessage_10000(1, _tt, _ttD01, 61, 76, 400, _ttD01, 77, 77, 1);
+ _val7 = 12;
+ } else {
+ sendWSMessage_10000(1, _tt, _ttD01, 1, 1, 400, _ttD01, 1, 1, 0);
+ }
+ } else {
+ kernel_timing_trigger(13, 400);
+ }
+ break;
+
+ case 20:
+ ws_walk_load_walker_series(NORMAL_DIRS3, NORMAL_NAMES3);
+ ws_walk_load_shadow_series(SHADOW_DIRS3, SHADOW_NAMES3);
+ sendWSMessage_10000(1, _tt, _tt03, 122, 112, 410, _tt03, 112, 112, 0);
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 12:
+ switch (_val8) {
+ case 11:
+ sendWSMessage_10000(1, _tt, _ttD01, 77, 77, -1, _ttD01, 77, 84, 4);
+ sendWSMessage_1a0000(_tt, 13);
+ break;
+
+ case 12:
+ sendWSMessage_10000(1, _tt, _ttD01, 77, 77, 400, _ttD01, 77, 77, 0);
+ break;
+
+ case 17:
+ if (imath_ranged_rand(50, 150) < ++_val9) {
+ _val9 = 0;
+
+ if (imath_ranged_rand(1, 2) == 1) {
+ sendWSMessage_10000(1, _tt, _ttD01, 76, 61, 400, _ttD01, 1, 1, 0);
+ _val7 = 6;
+ } else {
+ sendWSMessage_10000(1, _tt, _ttD01, 77, 77, 400, _ttD01, 77, 77, 0);
+ }
+ } else {
+ kernel_timing_trigger(13, 400);
+ }
+ break;
+
+ default:
+ sendWSMessage_10000(1, _tt, _ttD01, 76, 61, 400, _ttD01, 1, 1, 0);
+ break;
+ }
+ break;
+
+ case 15:
+ switch (_val8) {
+ case 15:
+ sendWSMessage_10000(1, _tt, _ttD01, 93, 93, 400, _ttD01, 93, 93, 0);
+ break;
+
+ default:
+ sendWSMessage_10000(1, _tt, _ttD01, 93, 85, 400, _ttD01, 1, 1, 0);
+ _val7 = 6;
+
+ if (_val8 == 14)
+ _val8 = 6;
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 402:
+ terminateMachineAndNull(_tt);
+ digi_unload("603_S01");
+ digi_unload("603_S01B");
+ _trigger1 = 0;
+ terminateMachineAndNull(_ttShadow);
+
+ _tt = triggerMachineByHash_3000(8, 9, NORMAL_DIRS3, SHADOW_DIRS3,
+ 291, 293, 4, triggerMachineByHashCallback3000, "tt walker");
+ sendWSMessage_10000(_tt, 357, 283, 1, 405, 0);
+ conv_resume();
+ kernel_timing_trigger(180, 406);
+ break;
+
+ case 404:
+ // Switch case not found :)
+ break;
+
+ case 405:
+ sendWSMessage_10000(_tt, 501, 235, 8, -1, 1);
+ break;
+
+ case 406:
+ ws_walk(459, 236, nullptr, 404, 2);
+ break;
+
+ case 410:
+ terminateMachineAndNull(_tt);
+ terminateMachineAndNull(_ttShadow);
+ _tt = triggerMachineByHash_3000(8, 9, NORMAL_DIRS3, SHADOW_DIRS3,
+ 291, 293, 4, triggerMachineByHashCallback3000, "tt walker");
+ sendWSMessage_10000(_tt, 397, 286, 2, 415, 0);
+ kernel_timing_trigger(200, 411);
+ _G(player).disable_hyperwalk = true;
+ break;
+
+ case 411:
+ case 511:
+ _num1 = 12;
+ kernel_timing_trigger(1, 300);
+ break;
+
+ case 412:
+ sendWSMessage_10000(_tt, 670, 229, 3, -1, 1);
+ disable_player_commands_and_fade_init(416);
+ break;
+
+ case 415:
+ sendWSMessage_10000(_tt, 519, 244, 3, 412, 0);
+ break;
+
+ case 416:
+ _G(game).setRoom(605);
+ _G(flags)[V203] = 2;
+ adv_kill_digi_between_rooms(false);
+ digi_play("950_s28a", 3);
+ break;
+
+ case 500:
+ kernel_trigger_dispatchx(kernel_trigger_create(501));
+ break;
+
+ case 501:
+ switch (_val7) {
+ case 6:
+ switch (_val8) {
+ case 7:
+ case 8:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 11, 13, 500,
+ _ttDigShirtOn, 13, 13, 0);
+ _val7 = 18;
+ break;
+
+ case 17:
+ if (imath_ranged_rand(1, 5) < ++_val9) {
+ _val9 = 0;
+
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 1, 1, 500,
+ _ttDigShirtOn, 1, 1, 0);
+ break;
+ case 2:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 1, 10, 500,
+ _ttDigShirtOn, 1, 1, 0);
+ playRandomDigi(4);
+ break;
+ case 3:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 11, 13, 500,
+ _ttDigShirtOn, 13, 13, 0);
+ playRandomDigi(4);
+ break;
+ default:
+ break;
+ }
+ } else {
+ kernel_timing_trigger(13, 500);
+ }
+ break;
+
+ case 21:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 11, 13, 500,
+ _ttDigShirtOn, 13, 13, 0);
+ _val7 = 18;
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 7:
+ switch (_val8) {
+ case 7:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 38, 38, 500,
+ _ttDigShirtOn, 38, 38, 0);
+ break;
+
+ case 8:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 39, 39, -1,
+ _ttDigShirtOn, 39, 65, 4);
+ sendWSMessage_1a0000(_tt, 13);
+ break;
+
+ case 17:
+ if (imath_ranged_rand(3, 9) < ++_val9) {
+ _val9 = 0;
+
+ if (imath_ranged_rand(1, 2) == 1) {
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 38, 38, 500,
+ _ttDigShirtOn, 38, 38, 0);
+ } else {
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 66, 85, 500,
+ _ttDigShirtOn, 1, 1, 0);
+ _val7 = 6;
+ }
+ } else {
+ kernel_timing_trigger(13, 500);
+ }
+ break;
+
+ case 20:
+ ws_walk_load_walker_series(NORMAL_DIRS3, NORMAL_NAMES3);
+ ws_walk_load_shadow_series(SHADOW_DIRS3, SHADOW_NAMES3);
+ sendWSMessage_10000(1, _tt, _tt03, 83, 111, 510, _tt03, 111, 111, 0);
+ break;
+
+ case 21:
+ ws_walk_load_walker_series(NORMAL_DIRS3, NORMAL_NAMES3);
+ ws_walk_load_shadow_series(SHADOW_DIRS3, SHADOW_NAMES3);
+ sendWSMessage_10000(1, _tt, _tt03, 83, 112, 530, _tt03, 112, 112, 1);
+ break;
+
+
+ default:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 66, 85, 500,
+ _ttDigShirtOn, 1, 1, 0);
+ _val7 = 6;
+ break;
+ }
+ break;
+
+ case 12:
+ switch (_val8) {
+ case 7:
+ case 8:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 17, 38, 500,
+ _ttDigShirtOn, 38, 38, 0);
+ _val7 = 7;
+ break;
+
+ case 17:
+ if (imath_ranged_rand(1, 5) < ++_val9) {
+ _val9 = 0;
+
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 13, 13, 500,
+ _ttDigShirtOn, 13, 13, 0);
+ break;
+ case 2:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 13, 11, 500,
+ _ttDigShirtOn, 1, 1, 0);
+ _val7 = 6;
+ playRandomDigi(4);
+ break;
+ case 3:
+ if (imath_ranged_rand(4, 10) < ++_val10) {
+ _val10 = 0;
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 17, 38, 500,
+ _ttDigShirtOn, 38, 38, 0);
+ _val7 = 7;
+ } else {
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 13, 13, 500,
+ _ttDigShirtOn, 13, 13, 0);
+ }
+ break;
+ default:
+ break;
+ }
+ } else {
+ kernel_timing_trigger(13, 500);
+ }
+ break;
+
+ case 21:
+ sendWSMessage_10000(1, _tt, _ttDigShirtOn, 17, 38, 500,
+ _ttDigShirtOn, 38, 38, 0);
+ _val7 = 7;
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 510:
+ terminateMachineAndNull(_tt);
+ _trigger1 = 0;
+ _tt = triggerMachineByHash_3000(8, 9, NORMAL_DIRS3, SHADOW_DIRS3,
+ 291, 293, 4, triggerMachineByHashCallback3000, "tt walker");
+ sendWSMessage_10000(_tt, 357, 283, 3, 0x200, 0);
+ kernel_timing_trigger(100, 511);
+ _G(player).disable_hyperwalk = true;
+ break;
+
+ case 512:
+ sendWSMessage_10000(_tt, 519, 244, 3, 513, 0);
+ break;
+
+ case 513:
+ sendWSMessage_10000(_tt, 670, 229, 3, -1, 1);
+ disable_player_commands_and_fade_init(516);
+ break;
+
+ case 516:
+ _G(game).setRoom(605);
+ _G(flags)[V203] = 2;
+ adv_kill_digi_between_rooms(false);
+ digi_play_loop("950_s28a", 3);
+ break;
+
+ case 530:
+ terminateMachineAndNull(_tt);
+ _trigger1 = 0;
+ _tt = triggerMachineByHash_3000(8, 9, NORMAL_DIRS3, SHADOW_DIRS3,
+ 291, 293, 4, triggerMachineByHashCallback3000, "tt walker");
+ sendWSMessage_10000(_tt, 397, 286, 2, 533, 0);
+ kernel_timing_trigger(70, 531);
+ _G(player).disable_hyperwalk = true;
+ conv_resume();
+ break;
+
+ case 531:
+ _num1 = 12;
+ break;
+
+ case 532:
+ sendWSMessage_10000(_tt, 670, 229, 3, 534, 1);
+ break;
+
+ case 533:
+ sendWSMessage_10000(_tt, 519, 244, 3, 532, 0);
+ break;
+
// TODO: Various
default:
break;
More information about the Scummvm-git-logs
mailing list