[Scummvm-git-logs] scummvm master -> 60d8932116bad44ab24fdac99c3750c4b315b163
Strangerke
noreply at scummvm.org
Mon Dec 9 23:55:43 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:
60d8932116 M4: RIDDLE: room 706: Implement daemon
Commit: 60d8932116bad44ab24fdac99c3750c4b315b163
https://github.com/scummvm/scummvm/commit/60d8932116bad44ab24fdac99c3750c4b315b163
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-10T00:54:30+01:00
Commit Message:
M4: RIDDLE: room 706: Implement daemon
Changed paths:
engines/m4/riddle/rooms/section7/room706.cpp
engines/m4/riddle/rooms/section7/room706.h
diff --git a/engines/m4/riddle/rooms/section7/room706.cpp b/engines/m4/riddle/rooms/section7/room706.cpp
index 76cf8b79437..23eb0b3f1c4 100644
--- a/engines/m4/riddle/rooms/section7/room706.cpp
+++ b/engines/m4/riddle/rooms/section7/room706.cpp
@@ -147,7 +147,287 @@ void Room706::parser() {
}
void Room706::daemon() {
- // TODO Not implemented yet
+ bool esi = player_said("take");
+
+ switch (_G(kernel).trigger) {
+ case 70:
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTrekMedReachHandPos1Series, 1, 5, 5, 5, 0, 5, 10, 10, 10, 0, 10, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 71);
+
+ break;
+
+ case 71:
+ kernel_timing_trigger(5, 72, nullptr);
+ break;
+
+ case 72:
+ sendWSMessage_120000(_G(my_walker), 73);
+ break;
+
+ case 73:
+ kernel_timing_trigger(5, 73, nullptr);
+ break;
+
+ case 74:
+ switch (_G(flags[V219])) {
+ case 1:
+ inv_give_to_player("PEACE WHEEL");
+ _G(flags[V219]) = 0;
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING PEACE WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+ break;
+
+ case 2:
+ inv_give_to_player("INSIGHT WHEEL");
+ _G(flags[V219]) = 0;
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING INSIGHT WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+ break;
+
+ case 3:
+ inv_give_to_player("SERENITY WHEEL");
+ _G(flags[V219]) = 0;
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING SERENITY WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+ break;
+
+ case 4:
+ inv_give_to_player("TRUTH WHEEL");
+ _G(flags[V219]) = 0;
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING TRUTH WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+ break;
+
+ case 5:
+ inv_give_to_player("WISDOM WHEEL");
+ _G(flags[V219]) = 0;
+ player_update_info(_G(my_walker), &_G(player_info));
+ digi_play("950_S40", 2, 255, -1, 950);
+ kernel_examine_inventory_object("PING WISDOM WHEEL", _G(master_palette), 5, 1, _G(player_info).camera_x + 800, 225, 75, nullptr, -1);
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 75:
+ sendWSMessage_130000(_G(my_walker), 76);
+ break;
+
+ case 76:
+ sendWSMessage_150000(_G(my_walker), 77);
+ break;
+
+ case 77:
+ hotspot_set_active(_G(currentSceneDef).hotspots, "PRAYER WHEEL #15", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "EMPTY NICHE", true);
+ player_set_commands_allowed(true);
+
+ break;
+
+ case 80:
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTrekMedReachHandPos1Series, 1, 5, 5, 5, 0, 5, 10, 10, 10, 0, 10, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 81);
+
+ break;
+
+ case 81:
+ kernel_timing_trigger(5, 82, nullptr);
+ break;
+
+ case 82:
+ sendWSMessage_120000(_G(my_walker), 83);
+ break;
+
+ case 83:
+ if (!esi || _G(player).click_y > 374)
+ break;
+
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ digi_play("com077", 1, 255, 84, -1);
+ break;
+
+ case 2:
+ digi_play("com078", 1, 255, 84, -1);
+ break;
+
+ case 3:
+ digi_play("com079", 1, 255, 84, -1);
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 84:
+ sendWSMessage_130000(_G(my_walker), 85);
+ break;
+
+ case 85:
+ sendWSMessage_150000(_G(my_walker), 86);
+ break;
+
+ case 86:
+ case 91:
+ player_set_commands_allowed(true);
+ break;
+
+ case 123:
+ if (_field78_mode != 124)
+ break;
+
+ switch (_field7C_should) {
+ case 121:
+ _706eye3aSeries = series_load("706eye3a", -1, nullptr);
+ _field7C_should = 922;
+ _monkMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 256, false, triggerMachineByHashCallback, "monk");
+ sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 1, 5, 123, _706eye3aSeries, 5, 5, 0);
+
+ break;
+
+ case 122:
+ terminateMachine(_monkMach);
+ series_unload(_706eye3aSeries);
+ conv_resume(conv_get_handle());
+
+ break;
+
+ case 125:
+ conv_load("conv706a", 10, 10, 91);
+ conv_export_value_curr(0, 0);
+ conv_export_value_curr(_G(flags[V211]), 1);
+ conv_export_value_curr(_G(flags[V213]), 2);
+ conv_export_value_curr((_G(flags[V219]) == 4) ? 1 : 0, 0);
+
+ conv_play(conv_get_handle());
+
+ break;
+
+ case 922:
+ switch (imath_ranged_rand(1, 2)) {
+ case 1:
+ _field7C_should = 923;
+ break;
+
+ case 2:
+ _field7C_should = 924;
+ break;
+
+ default:
+ break;
+ }
+
+ kernel_timing_trigger(10, 123, nullptr);
+
+ break;
+
+ case 923:
+ _field7C_should = 925;
+ sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 6, 9, -1, _706eye3aSeries, 10, 11, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play(conv_sound_to_play(), 1, 255, 123, -1);
+
+ break;
+
+ case 924:
+ _field7C_should = 925;
+ sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 10, 10, -1, _706eye3aSeries, 10, 11, 4);
+ sendWSMessage_1a0000(_monkMach, 9);
+ digi_play(conv_sound_to_play(), 1, 255, 123, -1);
+
+ break;
+
+ case 925:
+ _field7C_should = 926;
+ sendWSMessage_10000(1, _monkMach, _706eye3aSeries, 12, 15, 123, _706eye3aSeries, 15, 15, 0);
+ break;
+
+ case 926:
+ _field7C_should = 122;
+ kernel_timing_trigger(10, 123, nullptr);
+
+ break;
+
+ default: // including case 126
+ break;
+ }
+
+ break;
+
+ case 127:
+ if (_field78_mode != 124)
+ break;
+
+ switch (_field7C_should) {
+ case 121:
+ case 122:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 922:
+ case 923:
+ case 924:
+ case 925:
+ case 926:
+ kernel_timing_trigger(1, 123, nullptr);
+ break;
+
+ default:
+ break;
+
+ }
+ break;
+
+ case 131:
+ sendWSMessage_120000(_G(my_walker), 132);
+ break;
+
+ case 132:
+ digi_play("706r23", 1, 255, 133, -1);
+ break;
+
+ case 133:
+ sendWSMessage_150000(_G(my_walker), 135);
+ break;
+
+ case 135:
+ series_unload(_ripShieldsFaceSeries);
+ player_set_commands_allowed(true);
+
+ break;
+
+ case 140:
+ player_set_commands_allowed(true);
+ ws_unhide_walker(_G(my_walker));
+ terminateMachine(_ripStairsMach);
+ kernel_timing_trigger(10, 141, nullptr);
+
+ break;
+
+ case 141:
+ series_unload(_706RipGoesDownStairsSeries);
+ break;
+
+ default:
+ break;
+ }
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section7/room706.h b/engines/m4/riddle/rooms/section7/room706.h
index 0c7cfb3f6b7..79076d56f71 100644
--- a/engines/m4/riddle/rooms/section7/room706.h
+++ b/engines/m4/riddle/rooms/section7/room706.h
@@ -40,10 +40,15 @@ public:
void daemon() override;
private:
+ int32 _field78_mode = 0;
+ int32 _field7C_should = 0;
+
+ int32 _706eye3aSeries = 0;
int32 _706RipGoesDownStairsSeries = 0;
int32 _ripShieldsFaceSeries = 0;
int32 _ripTrekMedReachHandPos1Series = 0;
+ machine *_monkMach = nullptr;
machine *_prayerWheelMach = nullptr;
machine *_ripStairsMach = nullptr;
};
More information about the Scummvm-git-logs
mailing list