[Scummvm-git-logs] scummvm master -> bc3b5e67eabae19691b36a9d77d1231d8e4e7831
dreammaster
noreply at scummvm.org
Sun Sep 15 03:51:10 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:
bc3b5e67ea M4: RIDDLE: Added room 508 daemon
Commit: bc3b5e67eabae19691b36a9d77d1231d8e4e7831
https://github.com/scummvm/scummvm/commit/bc3b5e67eabae19691b36a9d77d1231d8e4e7831
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-14T20:50:51-07:00
Commit Message:
M4: RIDDLE: Added room 508 daemon
Changed paths:
engines/m4/riddle/rooms/section5/room508.cpp
engines/m4/riddle/rooms/section5/room508.h
diff --git a/engines/m4/riddle/rooms/section5/room508.cpp b/engines/m4/riddle/rooms/section5/room508.cpp
index 75e147dd94e..e9e1a2c9deb 100644
--- a/engines/m4/riddle/rooms/section5/room508.cpp
+++ b/engines/m4/riddle/rooms/section5/room508.cpp
@@ -97,7 +97,339 @@ void Room508::init() {
}
void Room508::daemon() {
+ switch (_G(kernel).trigger) {
+ case 503:
+ player_set_commands_allowed(false);
+ ws_walk(423, 356, nullptr, 504, 1);
+ break;
+
+ case 504:
+ _ripPutsShovel = series_load("RIP PUTS SHOVEL IN CAPSTAN");
+ digi_preload("508_S03");
+ player_update_info();
+ ws_hide_walker();
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100,
+ _G(player_info).depth, 0, triggerMachineByHashCallbackNegative, "Rp1");
+ sendWSMessage_10000(1, _ripley, _ripPutsShovel, 1, 22, 505,
+ _ripPutsShovel, 22, 22, 0);
+ inv_move_object("SHOVEL", 508);
+ break;
+
+ case 505:
+ digi_play("508_S03", 2);
+ sendWSMessage_10000(1, _ripley, _ripPutsShovel, 23, 34, 506,
+ _ripPutsShovel, 34, 34, 0);
+ break;
+
+ case 506:
+ ws_unhide_walker();
+ _shovel = series_place_sprite("SHOVEL SPRITE", 0, 0, 0, 100, 0x300);
+ hotspot_set_active("SHOVEL", true);
+ terminateMachineAndNull(_ripley);
+ kernel_timing_trigger(1, 507);
+ break;
+
+ case 507:
+ series_unload(_ripPutsShovel);
+ digi_unload("508_S03");
+ player_set_commands_allowed(true);
+ break;
+
+ case 508:
+ player_set_commands_allowed(false);
+ _ripPutsShovel = series_load("RIP PUTS SHOVEL IN CAPSTAN");
+ digi_preload("508_S03");
+ player_update_info();
+ ws_hide_walker();
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100,
+ _G(player_info).depth, 0, triggerMachineByHashCallbackNegative, "Rp2");
+ sendWSMessage_10000(1, _ripley, _ripPutsShovel, 34, 25, 509,
+ _ripPutsShovel, 25, 25, 0);
+ hotspot_set_active("SHOVEL", false);
+ inv_give_to_player("SHOVEL");
+ terminateMachineAndNull(_shovel);
+ break;
+
+ case 509:
+ digi_play("508_S03", 2);
+ sendWSMessage_10000(1, _ripley, _ripPutsShovel, 24, 1, 510,
+ _ripPutsShovel, 1, 1, 0);
+ break;
+
+ case 510:
+ ws_unhide_walker();
+ terminateMachineAndNull(_ripley);
+ series_unload(_ripPutsShovel);
+ digi_unload("508_S03");
+ player_set_commands_allowed(true);
+ break;
+
+ case 511:
+ player_set_commands_allowed(false);
+ _ripTryTurnDome = series_load("508 RIP TRYS TURNING DOME");
+ player_update_info();
+ ws_hide_walker();
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100,
+ _G(player_info).depth, 0, triggerMachineByHashCallbackNegative, "Rp3");
+ terminateMachineAndNull(_shovel);
+ sendWSMessage_10000(1, _ripley, _ripTryTurnDome, 1, 29, 512,
+ _ripTryTurnDome, 29, 29, 0);
+ break;
+
+ case 512:
+ sendWSMessage_10000(1, _ripley, _ripTryTurnDome, 29, 1, 513,
+ _ripTryTurnDome, 1, 1, 0);
+ break;
+
+ case 513:
+ _shovel = series_place_sprite("SHOVEL SPRITE", 0, 0, 0, 100, 0x300);
+ ws_unhide_walker();
+ terminateMachineAndNull(_ripley);
+ series_unload(_ripTryTurnDome);
+
+ if (_val1)
+ kernel_timing_trigger(1, 514);
+ else
+ digi_play("508r11", 1, 255, 514);
+ break;
+
+ case 514:
+ if (_val1) {
+ digi_play("508R16", 1);
+ _val1 = 0;
+ } else {
+ player_set_commands_allowed(true);
+ }
+ break;
+
+ case 515:
+ player_set_commands_allowed(false);
+ interface_hide();
+ digi_preload("508_s02");
+ digi_preload("508_s04");
+ _ripTryTurnDome = series_load("508 RIP TRYS TURNING DOME");
+ player_update_info();
+ ws_hide_walker();
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100,
+ _G(player_info).depth, 0, triggerMachineByHashCallbackNegative, "Rp4");
+ sendWSMessage_10000(1, _ripley, _ripTryTurnDome, 1, 29, 516,
+ _ripTryTurnDome, 29, 29, 0);
+ break;
+
+ case 516:
+ _ripStartTurnDome = series_stream("RIP STARTS TURNING DOME", 7, 0x100, -1);
+ series_stream_break_on_frame(_ripStartTurnDome, 19, 518);
+ kernel_timing_trigger(90, 517);
+ terminateMachineAndNull(_shovel);
+ terminateMachineAndNull(_skull);
+ terminateMachineAndNull(_ripley);
+ break;
+
+ case 517:
+ digi_play_loop("508_S02", 1);
+ digi_play_loop("508_S04", 2);
+ break;
+
+ case 518:
+ terminateMachineAndNull(_shovel);
+ terminateMachineAndNull(_skull);
+ terminateMachineAndNull(_ripley);
+ series_stream_check_series(_ripStartTurnDome, 9999);
+ kernel_timing_trigger(1, 519);
+ break;
+
+ case 519:
+ pal_fade_init(21, 255, 0, 30, 520);
+ break;
+
+ case 520:
+ _G(flags)[V158] = 1;
+ digi_play_loop("508_s01", 3, 120);
+ adv_kill_digi_between_rooms(false);
+ digi_play_loop("508_S02", 1);
+ digi_play_loop("508_S04", 2);
+ _G(game).setRoom(506);
+ break;
+
+ case 525:
+ digi_stop(1);
+ digi_stop(2);
+ digi_unload("508_s02");
+ digi_unload("508_s04");
+
+ _domeAfterTurn = series_place_sprite("DOME SPRITE AFTER ITS TURNED", 0, 0, 0, 100, 0xf00);
+ _skull = series_place_sprite("SKULL SPRITE AFTER DOME TURN", 0, 0, 0, 100, 0x450);
+ _shovel = series_place_sprite("SHOVEL AFTER DOMES TURNED", 0, 0, 0, 100, 0x300);
+ _statue = series_place_sprite("STATU SPRITE AFTER DOME TURN", 0, 0, 0, 100, 0x450);
+
+ _light = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xf00, 0,
+ triggerMachineByHashCallbackNegative, "Receeding Light");
+ sendWSMessage_10000(1, _light, _lightAppearing, 12, 12, -1,
+ _lightAppearing, 12, 12, 0);
+
+ player_update_info();
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100,
+ _G(player_info).depth, 0, triggerMachineByHashCallbackNegative, "Rp");
+ sendWSMessage_10000(1, _ripley, _ripReturnsToStander, 1, 10, -1,
+ _ripReturnsToStander, 10, 10, 0);
+
+ _chain = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xf00, 0,
+ triggerMachineByHashCallbackNegative, "Chain Breaking Machine");
+ sendWSMessage_10000(1, _chain, _chainBreaking, 1, 58, 675,
+ _chainBreaking, 58, 58, 0);
+ digi_play("508_s08", 1, 255, 555);
+ break;
+
+ case 530:
+ series_unload(_ripReturnsToStander);
+ _G(flags)[V158] = 0;
+ _G(flags)[V157] = 0;
+ break;
+
+ case 539:
+ _x = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xf00, 0,
+ triggerMachineByHashCallbackNegative, "x");
+ sendWSMessage_10000(1, _x, _flick, 1, 2, -1, _flick, 1, 2, 0);
+ sendWSMessage_190000(_x, 1);
+ sendWSMessage_1a0000(_x, 1);
+ series_stream_check_series(_spect, 5);
+ ws_OverrideCrunchTime(_spect);
+ break;
+
+ case 541:
+ sendWSMessage_190000(_light, 17);
+ sendWSMessage_10000(1, _light, _lightAppearing, 12, 8, 542,
+ _lightAppearing, 8, 8, 0);
+ break;
+
+ case 542:
+ sendWSMessage_10000(1, _light, _lightAppearing, 8, 1, 543,
+ _lightAppearing, 1, 1, 0);
+ sendWSMessage_10000(1, _x, _flick, 1, 6, 679, _flick, 6, 6, 0);
+ break;
+
+ case 543:
+ terminateMachineAndNull(_light);
+ series_unload(_lightAppearing);
+ sendWSMessage_120000(544);
+ break;
+
+ case 544:
+ sendWSMessage_10000(1, _x, _flick, 1, 6, 679, _flick, 6, 6, 0);
+ sendWSMessage_130000(545);
+ break;
+
+ case 545:
+ sendWSMessage_150000(546);
+ break;
+
+ case 546:
+ _G(flags)[V161] = 1;
+ series_unload(_ripSketching);
+ kernel_timing_trigger(5, 552);
+ break;
+
+ case 548:
+ digi_play("508R12", 1, 255, 539);
+ break;
+
+ case 552:
+ digi_play("508R14", 1, 255, 553);
+ break;
+
+ case 553:
+ _G(flags)[V157] = 1;
+ _G(flags)[V287] = 1;
+ _val2 -= 5;
+
+ if (_val2 > 0) {
+ digi_change_panning(2, _val2);
+ kernel_timing_trigger(2, 553);
+ } else {
+ digi_stop(2);
+ interface_show();
+ player_set_commands_allowed(true);
+ }
+ break;
+
+ case 555:
+ digi_unload("508_s08");
+ digi_preload("508_s07");
+ _val2 = 255;
+
+ digi_play("508_S07", 2);
+ _lightAppearing = series_load("LIGHT APPEARING ON FLOOR");
+ _flick = series_load("508flick");
+ _spect = series_stream("508spect", 6, 0, 668);
+ series_stream_break_on_frame(_spect, 16, 666);
+ kernel_timing_trigger(30, 673);
+ break;
+
+ case 562:
+ player_set_commands_allowed(true);
+ break;
+
+ case 666:
+ series_stream_check_series(_spect, 3000);
+ hotspot_set_active("CRYSTAL SKULL ", true);
+ hotspot_set_active("SHOVEL ", true);
+ hotspot_set_active("SHOVEL", false);
+ kernel_timing_trigger(5, 530);
+ break;
+
+ case 668:
+ kernel_timing_trigger(1, 671);
+ break;
+
+ case 671:
+ _ripSketching = series_load("RIP SKETCHING IN NOTEBOOK POS 2");
+ setGlobals1(_ripSketching, 1, 24, 24, 24, 0, 24, 39, 39, 39, 0, 39, 1, 1, 1);
+ sendWSMessage_110000(681);
+ break;
+
+ case 673:
+ terminateMachineAndNull(_ripley);
+ ws_unhide_walker();
+ ws_demand_location(437, 349, 1);
+ ws_walk(436, 359, nullptr, 548, 10);
+ break;
+
+ case 675:
+ hotspot_set_active("CHAIN ", false);
+ terminateMachineAndNull(_chain);
+ series_unload(_chainBreaking);
+ _chainAfterBreak = series_place_sprite("508 CHAIN AFTER BREAK", 0, 0, 0, 100, 0xf00);
+ break;
+
+ case 679:
+ terminateMachineAndNull(_x);
+ series_unload(_flick);
+ break;
+
+ case 681:
+ sendWSMessage_120000(682);
+ break;
+
+ case 682:
+ sendWSMessage_110000(684);
+ break;
+
+ case 684:
+ sendWSMessage_120000(686);
+ kernel_timing_trigger(180, 541);
+ break;
+
+ case 686:
+ sendWSMessage_130000(545);
+ break;
+
+ default:
+ break;
+ }
}
void Room508::pre_parser() {
diff --git a/engines/m4/riddle/rooms/section5/room508.h b/engines/m4/riddle/rooms/section5/room508.h
index 56ed58ccadf..b3a357a2f64 100644
--- a/engines/m4/riddle/rooms/section5/room508.h
+++ b/engines/m4/riddle/rooms/section5/room508.h
@@ -31,14 +31,25 @@ namespace Rooms {
class Room508 : public Room {
private:
int _val1 = 0;
+ int _val2 = 0;
int _ripReturnsToStander = 0;
int _chainBreaking = 0;
int _lightAppearing = 0;
+ int _ripPutsShovel = 0;
+ int _ripTryTurnDome = 0;
+ int _ripSketching = 0;
+ int _flick = 0;
+ machine *_ripley = nullptr;
+ machine *_ripStartTurnDome = nullptr;
machine *_chainAfterBreak = nullptr;
machine *_domeAfterTurn = nullptr;
machine *_skull = nullptr;
machine *_shovel = nullptr;
-
+ machine *_statue = nullptr;
+ machine *_light = nullptr;
+ machine *_chain = nullptr;
+ machine *_x = nullptr;
+ machine *_spect = nullptr;
public:
Room508() : Room() {}
~Room508() override {}
More information about the Scummvm-git-logs
mailing list