[Scummvm-git-logs] scummvm master -> bf43f2cc0740bfc2829c624babc2c1628d2f51cd
Strangerke
noreply at scummvm.org
Fri Dec 20 09:41:41 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:
bf43f2cc07 M4: RIDDLE: Room 709: WIP implementation of daemon
Commit: bf43f2cc0740bfc2829c624babc2c1628d2f51cd
https://github.com/scummvm/scummvm/commit/bf43f2cc0740bfc2829c624babc2c1628d2f51cd
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-20T10:41:28+01:00
Commit Message:
M4: RIDDLE: Room 709: WIP implementation of daemon
Changed paths:
engines/m4/riddle/rooms/section7/room709.cpp
engines/m4/riddle/rooms/section7/room709.h
diff --git a/engines/m4/riddle/rooms/section7/room709.cpp b/engines/m4/riddle/rooms/section7/room709.cpp
index 4b6e68045a1..9fdb1a74481 100644
--- a/engines/m4/riddle/rooms/section7/room709.cpp
+++ b/engines/m4/riddle/rooms/section7/room709.cpp
@@ -595,6 +595,384 @@ void Room709::parser() {
}
void Room709::daemon() {
+ int32 delay;
+
+ switch (_G(kernel).trigger) {
+ case 10:
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTrekLowReachPos2Series, 1, 16, 16, 16, 0, 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 11);
+
+ break;
+
+ case 11:
+ if (_field80_save == 97) {
+ inv_give_to_player("CHISEL");
+ terminateMachine(_709ChiselMach);
+ _field44 = 0;
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", false);
+ kernel_examine_inventory_object("PING CHISEL", _G(master_palette), 5, 1, 163, 203, -1, nullptr, -1);
+ digi_play("709R03", 1, 255, 12, -1);
+ }
+
+ if (_field80_save == 22) {
+ inv_give_to_player("INCENSE BURNER");
+ terminateMachine(_709IncenseHolderMach);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", false);
+ _field48 = 0;
+ kernel_examine_inventory_object("PING INCENSE BURNER", _G(master_palette), 5, 1, 329, 189, -1, nullptr, -1);
+ digi_play("709R13", 1, 255, 12, -1);
+ }
+
+ break;
+
+ case 12:
+ sendWSMessage_120000(_G(my_walker), 13);
+ break;
+
+ case 13:
+ kernel_timing_trigger(5, 14, nullptr);
+ break;
+
+ case 14:
+ sendWSMessage_150000(_G(my_walker), 15);
+ break;
+
+ case 15:
+ player_set_commands_allowed(true);
+ break;
+
+ case 20:
+ ws_demand_location(_G(my_walker), 410, 300);
+ ws_demand_facing(_G(my_walker), 9);
+ _field80_save = _maze709Arr[_field80_save]._field_10;
+ if (_field44 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", false);
+ terminateMachine(_709ChiselMach);
+ }
+
+ if (_field80_save == 97 && inv_object_is_here("CHISEL")) {
+ _field44 = 1;
+ _709ChiselMach = series_place_sprite("709 CHISEL", 0, 0, 0, 100, 3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", true);
+ }
+
+ if (_field48 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", false);
+ terminateMachine(_709IncenseHolderMach);
+ }
+
+ if (_field80_save == 22 && inv_object_is_here("INCENSE BURNER")) {
+ _field48 = 1;
+ _709IncenseHolderMach = series_place_sprite("709 INCENSE HOLDER", 0, 0, 0, 100, 3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", true);
+ }
+
+ if (_field74 == 1) {
+ terminateMachine(_field24Mach);
+ _field74 = 0;
+ }
+
+ if (_field70 == 1) {
+ terminateMachine(_ripPullMach);
+ _field70 = 0;
+ }
+
+ if (_field78 == 1) {
+ terminateMachine(_field2CMach);
+ _field78 = 0;
+ }
+
+ if (_field7C == 1) {
+ terminateMachine(_field30Mach);
+ _field7C = 0;
+ }
+
+ if (_field80_save == 82) {
+ _ripPullMach = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 3840, false, triggerMachineByHashCallback, "rip pull machine");
+ sendWSMessage_10000(1, _ripPullMach, _mazeLeftDoorLiteSeries, 1, 10, -1, _mazeLeftDoorLiteSeries, 10, 10, 0);
+ _field70 = 1;
+ pal_fade_init(_G(master_palette), 0, 255, 100, 30, -1);
+ player_set_commands_allowed(true);
+ delay = imath_ranged_rand(1, 10);
+ if (delay == 10) {
+ kernel_timing_trigger(delay, 1000, nullptr);
+ }
+ }
+
+ break;
+
+ case 30:
+ ws_demand_location(_G(my_walker), 230, 300);
+ ws_demand_facing(_G(my_walker), 3);
+ _field80_save = _maze709Arr[_field80_save]._field_14;
+ if (_field44 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", false);
+ terminateMachine(_709ChiselMach);
+ }
+
+ if (_field80_save == 97 && inv_object_is_here("Chisel")) {
+ _field44 = 1;
+ _709ChiselMach = series_place_sprite("709 CHISEL", 0,0,0,100,3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", true);
+ }
+
+ if (_field48 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", false);
+ terminateMachine(_709IncenseHolderMach);
+ }
+
+ if (_field80_save == 22 && inv_object_is_here("INCENSE BURNER")) {
+ _field48 = 1;
+ _709IncenseHolderMach = series_place_sprite("709 INCENSE HOLDER", 0, 0, 0, 100, 3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", true);
+ }
+
+ if (_field74 == 1) {
+ terminateMachine(_field24Mach);
+ _field74 = 0;
+ }
+
+ if (_field70 == 1) {
+ terminateMachine(_ripPullMach);
+ _field70 = 0;
+ }
+
+ if (_field78 == 1) {
+ terminateMachine(_field2CMach);
+ _field78 = 0;
+ }
+
+ if (_field7C == 1) {
+ terminateMachine(_field30Mach);
+ _field7C = 0;
+ }
+
+ pal_fade_init(_G(master_palette), 0, 255, 100, 30, -1);
+ player_set_commands_allowed(true);
+ delay = imath_ranged_rand(1, 10);
+ if (delay == 10) {
+ kernel_timing_trigger(delay, 1000, nullptr);
+ }
+
+ break;
+
+ case 40:
+ ws_demand_location(_G(my_walker), 320, 400);
+ ws_demand_facing(_G(my_walker), 1);
+ _field80_save = _maze709Arr[_field80_save]._field_18;
+ if (_field44 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", false);
+ terminateMachine(_709ChiselMach);
+ }
+
+ if (_field80_save == 97 && inv_object_is_here("Chisel")) {
+ _field44 = 1;
+ _709ChiselMach = series_place_sprite("709 CHISEL", 0, 0, 0, 100, 3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", true);
+ }
+
+ if (_field48 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", false);
+ terminateMachine(_709IncenseHolderMach);
+ }
+
+ if (_field80_save == 22 && inv_object_is_here("INCENSE BURNER")) {
+ _field48 = 1;
+ _709IncenseHolderMach = series_place_sprite("709 INCENSE HOLDER", 0, 0, 0, 100, 3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", true);
+ }
+
+ if (_field74 == 1) {
+ terminateMachine(_field24Mach);
+ _field74 = 0;
+ }
+
+ if (_field70 == 1) {
+ terminateMachine(_ripPullMach);
+ _field70 = 0;
+ }
+
+ if (_field78 == 1) {
+ terminateMachine(_field2CMach);
+ _field78 = 0;
+ }
+
+ if (_field7C == 1) {
+ terminateMachine(_field30Mach);
+ _field7C = 0;
+ }
+
+ pal_fade_init(_G(master_palette), 0, 255, 100, 30, -1);
+ player_set_commands_allowed(true);
+ delay = imath_ranged_rand(1, 10);
+ if (delay == 10) {
+ kernel_timing_trigger(delay, 1000, nullptr);
+ }
+
+ break;
+
+ case 50:
+ ws_demand_location(_G(my_walker), 320, 280);
+ ws_demand_facing(_G(my_walker), 5);
+ _field80_save = _maze709Arr[_field80_save]._field_1C;
+
+ if (_field80_save == 50) {
+ adv_kill_digi_between_rooms(false);
+ digi_play_loop("950_s41", 3, 255, -1, -1);
+ RemoveSystemHotkey(KEY_CLEAR);
+ RemoveSystemHotkey(5);
+ _G(game).new_room = 710;
+ }
+
+ if (_field44 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", false);
+ terminateMachine(_709ChiselMach);
+ }
+
+ if (_field80_save == 97 && inv_object_is_here("Chisel")) {
+ _field44 = 1;
+ _709ChiselMach = series_place_sprite("709 CHISEL", 0, 0, 0, 100, 3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Chisel", true);
+ }
+
+ if (_field48 == 1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", false);
+ terminateMachine(_709IncenseHolderMach);
+ }
+
+ if (_field80_save == 22 && inv_object_is_here("INCENSE BURNER")) {
+ _field48 = 1;
+ _709IncenseHolderMach = series_place_sprite("709 INCENSE HOLDER", 0, 0, 0, 100, 3840);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "Incense Burner", true);
+ }
+
+ if (_field74 == 1) {
+ terminateMachine(_field24Mach);
+ _field74 = 0;
+ }
+
+ if (_field70 == 1) {
+ terminateMachine(_ripPullMach);
+ _field70 = 0;
+ }
+
+ if (_field78 == 1) {
+ terminateMachine(_field2CMach);
+ _field78 = 0;
+ }
+
+ if (_field7C == 1) {
+ terminateMachine(_field30Mach);
+ _field7C = 0;
+ }
+
+ pal_fade_init(_G(master_palette), 0, 255, 100, 30, -1);
+ player_set_commands_allowed(true);
+ delay = imath_ranged_rand(1, 10);
+ if (delay == 10) {
+ kernel_timing_trigger(delay, 1000, nullptr);
+ }
+
+ break;
+
+ case 100:
+ digi_play("950_s41", 3, 255, 100, -1);
+ break;
+
+ case 500:
+ digi_stop(1);
+ digi_play_loop("304_s05", 2, 255, -1, -1);
+ kernel_timing_trigger(20, 502, nullptr);
+
+ break;
+
+ case 502:
+ digi_play("709_s99", 3, 255, 504, -1);
+ break;
+
+ case 504:
+ adv_kill_digi_between_rooms(false);
+ digi_play_loop("950_s41", 3, 255, -1, -1);
+ RemoveSystemHotkey(KEY_CLEAR);
+ RemoveSystemHotkey(5);
+ _G(game).new_room = 710;
+
+ break;
+
+ case 1000:
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(10, 1001, nullptr);
+
+ break;
+
+ case 1001:
+ player_update_info(_G(my_walker), &_G(player_info));
+
+ switch (_G(player_info).facing) {
+ case 1:
+ kernel_timing_trigger(10, 1002);
+ break;
+
+ case 3:
+ case 9:
+ kernel_timing_trigger(10, 1047);
+ break;
+
+ case 5:
+ kernel_timing_trigger(10, 1022);
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 1002:
+ case 1007:
+ case 1008:
+ sendWSMessage_190000(_G(my_walker), 5);
+ sendWSMessage_120000(_G(my_walker), 1009);
+
+ break;
+
+ case 1009:
+ case 1010:
+ case 1011:
+ case 1012:
+ case 1013:
+ case 1014:
+ case 1015:
+ case 1022:
+ case 1027:
+ case 1028:
+ case 1029:
+ case 1030:
+ case 1031:
+ case 1032:
+ case 1033:
+ case 1034:
+ case 1037:
+ case 1038:
+ case 1039:
+ case 1040:
+ case 1041:
+ case 1047:
+ case 1057:
+ case 1058:
+ case 1059:
+ case 1060:
+ case 1061:
+ case 1067:
+ case 1068:
+ case 1069:
+ case 1070:
+ case 1073:
+
+ default:
+ break;
+ }
+
// TODO Not implemented yet
}
diff --git a/engines/m4/riddle/rooms/section7/room709.h b/engines/m4/riddle/rooms/section7/room709.h
index bdfad010527..4310737fc31 100644
--- a/engines/m4/riddle/rooms/section7/room709.h
+++ b/engines/m4/riddle/rooms/section7/room709.h
@@ -72,6 +72,10 @@ private:
int32 _mazeRightDoorLiteSeries = 0;
int32 _ripTrekLowReachPos2Series = 0;
+ machine *_field24Mach = nullptr;
+ machine *_field2CMach = nullptr;
+ machine *_field30Mach = nullptr;
+
machine *_709IncenseHolderMach = nullptr;
machine *_709rpro5Mach = nullptr;
machine *_709rpro6Mach = nullptr;
More information about the Scummvm-git-logs
mailing list