[Scummvm-git-logs] scummvm master -> 10b1010ff0c7d9cd6232a207908393906e4a5ad1
dreammaster
noreply at scummvm.org
Sat Nov 2 20:11:33 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:
10b1010ff0 M4: RIDDLE: More of room 203 daemon
Commit: 10b1010ff0c7d9cd6232a207908393906e4a5ad1
https://github.com/scummvm/scummvm/commit/10b1010ff0c7d9cd6232a207908393906e4a5ad1
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-11-02T13:11:15-07:00
Commit Message:
M4: RIDDLE: More of room 203 daemon
Changed paths:
engines/m4/riddle/rooms/section2/room203.cpp
engines/m4/riddle/rooms/section2/room203.h
diff --git a/engines/m4/riddle/rooms/section2/room203.cpp b/engines/m4/riddle/rooms/section2/room203.cpp
index a200e2f9f60..17a480e5f68 100644
--- a/engines/m4/riddle/rooms/section2/room203.cpp
+++ b/engines/m4/riddle/rooms/section2/room203.cpp
@@ -25,6 +25,7 @@
#include "m4/adv_r/other.h"
#include "m4/graphics/gr_series.h"
#include "m4/gui/gui_vmng_screen.h"
+#include "m4/m4.h"
namespace M4 {
namespace Riddle {
@@ -337,6 +338,14 @@ void Room203::daemon() {
kernel_timing_trigger(140, 4);
break;
+ case 3:
+ sendWSMessage_10000(_mei, 170, 352, 4, -1, 1);
+ break;
+
+ case 4:
+ ws_walk(115, 353, nullptr, 5, 3);
+ break;
+
case 5:
_meiHallOfClassics = series_load("mc hall of classics line");
setGlobals1(_meiHallOfClassics, 1, 8, 8, 8, 2, 35, 41, 41, 41);
@@ -374,6 +383,17 @@ void Room203::daemon() {
digi_play("203m02", 1, 255, 10);
break;
+ case 10:
+ if (_ctr1 >= 1) {
+ _ctr1 = 0;
+ sendWSMessage_120000(_mei, -1);
+ sendWSMessage_110000(11);
+ digi_play("203r02", 1, 255, 11);
+ } else {
+ ++_ctr1;
+ }
+ break;
+
case 11:
if (_ctr1 >= 1) {
_ctr1 = 0;
@@ -399,6 +419,15 @@ void Room203::daemon() {
kernel_timing_trigger(40, 15);
break;
+ case 15:
+ sendWSMessage_150000(-1);
+ ws_walk(315, 353, nullptr, 16);
+ break;
+
+ case 16:
+ ws_walk(350, 328, nullptr, 17, 10);
+ break;
+
case 17:
series_unload(_meiCheekLine);
series_unload(_ripLookAtHeadsTalkMei);
@@ -418,7 +447,7 @@ void Room203::daemon() {
sendWSMessage_120000(_mei, -1);
_gkMode = 3001;
_digiName1 = "203g01";
- _val12 = 20;
+ _digiTrigger1 = 20;
kernel_trigger_dispatchx(kernel_trigger_create(125));
break;
@@ -486,12 +515,62 @@ void Room203::daemon() {
kernel_timing_trigger(1, 29);
break;
+ case 40:
+ _oldLadyMode = 40;
+ _oldLady1 = series_load("old lady");
+ _oldLadyProtectsHelmet = series_load("old lady protect helmet");
+ _ripKneeling = series_load("rip kneels down to old lady");
+ _ripKneelingTalk = series_load("rip kneeling talks to old lady");
+ _ripPointsAtHelmet = series_load("rip points at helmet");
+ ws_hide_walker();
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
+ triggerMachineByHashCallback, "rip kneel");
+ sendWSMessage_10000(1, _ripley, _ripKneeling, 1, 31, 42, _ripKneeling, 31, 31, 0);
+ break;
+
case 42:
sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 16, 43,
_ripKneelingTalk, 16, 16, 0);
digi_play("203r20", 1, 255, 45);
break;
+ case 43:
+ sendWSMessage_10000(1, _ripley, _ripPointsAtHelmet, 1, 5, 44,
+ _ripPointsAtHelmet, 5, 5, 0);
+ break;
+
+ case 44:
+ sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 5, 1, -1,
+ _ripKneelingTalk, 5, 5, 0);
+ break;
+
+ case 45:
+ sendWSMessage_10000(1, _oldLady, _oldLady1, 1, 7, 46, _oldLady1, 7, 7, 0);
+ break;
+
+ case 46:
+ sendWSMessage_10000(1, _oldLady, _oldLady1, 7, 1, 47, _oldLadyFrame, 1, 1, 0);
+ break;
+
+ case 47:
+ sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 1, 16, 48,
+ _oldLadyProtectsHelmet, 16, 16, 0);
+ break;
+
+ case 48:
+ sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 16, 1, 49, _oldLadyFrame, 1, 1, 0);
+ break;
+
+ case 49:
+ sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 5, 1, 50,
+ _ripKneelingTalk, 1, 1, 0);
+ break;
+
+ case 50:
+ sendWSMessage_10000(1, _ripley, _ripKneeling, 31, 1, 51, _ripKneeling, 1, 1, 0);
+ break;
+
case 51:
terminateMachineAndNull(_ripley);
series_unload(_ripPointsAtHelmet);
@@ -504,6 +583,22 @@ void Room203::daemon() {
kernel_timing_trigger(1, 130);
break;
+ case 60:
+ _oldLadyMode = 60;
+ _oldLadyNoHelmet = series_load("old lady feeding no helmet");
+ ws_hide_walker();
+ _ripKneeling = series_load("rip kneels down to old lady");
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
+ triggerMachineByHashCallback, "rip kneel");
+ sendWSMessage_10000(1, _ripley, _ripKneeling, 1, 31, 62, _ripKneeling, 31, 31, 0);
+ break;
+
+ case 62:
+ series_unload(_ripKneeling);
+ _ripKneelingTalk = series_load("rip kneeling talks to old lady");
+ sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 5, 65, _ripKneelingTalk, 5, 5, 0);
+ break;
+
case 65:
_ripGivesPhoto = series_load("rip gives photo to old lady");
sendWSMessage_10000(1, _ripley, _ripGivesPhoto, 1, 9, 67, _ripGivesPhoto, 9, 9, 0);
@@ -518,6 +613,12 @@ void Room203::daemon() {
kernel_timing_trigger(60, 68);
break;
+ case 68:
+ _oldLadyShowsPhoto = series_load("old lady shows photo");
+ sendWSMessage_10000(1, _oldLady, _oldLadyShowsPhoto, 1, 23, 69,
+ _oldLadyShowsPhoto, 23, 23, 0);
+ break;
+
case 69:
_stream1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
triggerMachineByHashCallback, "POPUP OL & lover");
@@ -527,10 +628,33 @@ void Room203::daemon() {
kernel_timing_trigger(150, 70);
break;
+ case 70:
+ sendWSMessage_10000(1, _stream1, _oldLadyPhotoPopup, 5, 1, 71,
+ _oldLadyPhotoPopup, 1, 1, 0);
+ break;
+
+ case 71:
+ terminateMachineAndNull(_stream1);
+ series_unload(_oldLadyPhotoPopup);
+ series_unload(_oldLadyShowsPhoto);
+ _oldLadyPointsToPhoto = series_load("old lady points to photo");
+ sendWSMessage_10000(1, _oldLady, _oldLadyPointsToPhoto, 1, 12, 72,
+ _oldLadyPointsToPhoto, 12, 12, 0);
+ break;
+
case 72:
kernel_timing_trigger(15, 73);
break;
+ case 73:
+ sendWSMessage_10000(1, _oldLady, _oldLadyPointsToPhoto, 12, 1, 74,
+ _oldLadyPointsToPhoto, 1, 1, 0);
+ break;
+
+ case 74:
+ sendWSMessage_10000(1, _ripley, _ripGivesPhoto, 9, 1, 75, _ripGivesPhoto, 1, 1, 0);
+ break;
+
case 75:
terminateMachineAndNull(_ripley);
terminateMachineAndNull(_oldLady);
@@ -543,11 +667,23 @@ void Room203::daemon() {
digi_play("203r21", 1);
break;
+ case 76:
+ digi_preload("203r21");
+ _stream1 = series_stream("old lady gives helmet", 5, 1, 79);
+ series_stream_break_on_frame(_stream1, 77, 62);
+ break;
+
case 77:
series_set_frame_rate(_stream1, 3000);
series_stream("old woman smiles", 5, 0, 78);
break;
+ case 78:
+ series_set_frame_rate(_stream1, 5);
+ ws_OverrideCrunchTime(_stream1);
+ series_stream_break_on_frame(_stream1, 87, 79);
+ break;
+
case 79:
_oldLady = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
triggerMachineByHashCallback, "ol");
@@ -569,6 +705,14 @@ void Room203::daemon() {
ws_OverrideCrunchTime(_stream1);
break;
+ case 82:
+ terminateMachineAndNull(_ripley);
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x100, 0,
+ triggerMachineByHashCallback, "rip kneel");
+ _ripKneeling = series_load("rip kneels down to old lady");
+ sendWSMessage_10000(1, _ripley, _ripKneeling, 31, 1, 84, _ripKneeling, 1, 1, 0);
+ break;
+
case 84:
midi_fade_volume(0, 120);
kernel_timing_trigger(120, 749);
@@ -628,6 +772,31 @@ void Room203::daemon() {
kernel_timing_trigger(120, 92);
break;
+ case 94:
+ if (_flag1) {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 19, 21, 95,
+ _peskyYellsThief, 21, 21, 0);
+ } else {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 19, 1, -1,
+ _peskyYellsThief, 1, 1, 0);
+ }
+ break;
+
+ case 95:
+ if (_flag1) {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 19, 94,
+ _peskyYellsThief, 19, 19, 0);
+ } else {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 1, -1,
+ _peskyYellsThief, 1, 1, 0);
+ }
+ break;
+
+ case 96:
+ sendWSMessage_10000(1, _ripley, _ripClimbsAndBacksDown, 75, 1, 97,
+ _ripClimbsAndBacksDown, 1, 1, 0);
+ break;
+
case 97:
terminateMachineAndNull(_ripley);
series_unload(_ripClimbsAndBacksDown);
@@ -636,6 +805,40 @@ void Room203::daemon() {
kernel_timing_trigger(3, 98);
break;
+ case 98:
+ ws_walk(_G(player_info).x, _G(player_info).y, nullptr, -1, 4);
+ terminateMachineAndNull(_official);
+ terminateMachineAndNull(_officialShadow);
+ ws_walk_load_shadow_series(OFFICIAL_SHADOW_DIRS, OFFICIAL_SHADOW_NAMES);
+ ws_walk_load_walker_series(OFFICIAL_NORMAL_DIRS, OFFICIAL_NORMAL_NAMES);
+ _official = triggerMachineByHash_3000(8, 5, *OFFICIAL_NORMAL_DIRS, *OFFICIAL_SHADOW_DIRS,
+ 1300, 360, 9, triggerMachineByHashCallback3000, "official arresting");
+ sendWSMessage_10000(_official, 720, 345, 9, 99, 1);
+ break;
+
+ case 99:
+ _flag1 = false;
+ _officialTurn9_11_pointGun = series_load("official turn 9-11 point gun");
+ setGlobals1(_officialTurn9_11_pointGun, 1, 31, 31, 31, 0, 31, 13, 13, 13, 0, 13, 1, 1, 1);
+ sendWSMessage_110000(_official, 100);
+ break;
+
+ case 100:
+ sendWSMessage_120000(_official, -1);
+ ws_walk(656, 335, nullptr, 101, 9);
+ break;
+
+ case 101:
+ sendWSMessage_130000(_official, 102);
+ ws_walk(280, 345, nullptr, 103, 9);
+ break;
+
+ case 102:
+ sendWSMessage_150000(_official, -1);
+ g_engine->camera_shift_xy(0, 0);
+ sendWSMessage_10000(_official, 345, 355, 9, -1, 1);
+ break;
+
case 103:
_ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei");
setGlobals1(_ripLookAtHeadsTalkMei, 11, 16, 16, 16, 1, 16, 11, 11, 11);
@@ -643,6 +846,12 @@ void Room203::daemon() {
digi_play("203r28", 1, 255, 104);
break;
+ case 104:
+ _officialMoveAlong = series_load("official move along");
+ setGlobals1(_officialMoveAlong, 1, 12, 12, 12, 0, 12, 1, 1, 1);
+ sendWSMessage_110000(_official, 105);
+ break;
+
case 105:
sendWSMessage_120000(_official, 106);
break;
@@ -837,10 +1046,52 @@ void Room203::daemon() {
break;
case 126:
- // TODO
switch (_gkMode) {
case 3000:
+ if (_gkShould == 3000 && _gkMode == 3000 && _trigger1 != -1) {
+ kernel_trigger_dispatchx(_trigger1);
+ _trigger1 = -1;
+ }
+
+ sendWSMessage_10000(1, _gk, _gkFrame, 1, 1, -1, _gkFrame, 1, 1, 0);
break;
+
+ case 3001:
+ _gkManyDoNeedPass = series_load("gk many do but need a pass");
+
+ if (_digiName1) {
+ digi_play(_digiName1, 1, 255, _digiTrigger1);
+ _digiName1 = nullptr;
+ }
+
+ sendWSMessage_10000(1, _gk, _gkManyDoNeedPass, 1, 15, 125,
+ _gkManyDoNeedPass, 15, 15, 0);
+ _gkShould = 3001;
+ _gkMode = 3002;
+ break;
+
+ case 3002:
+ sendWSMessage_10000(1, _gk, _gkManyDoNeedPass, 15, 1, 125, _gkFrame, 1, 1, 0);
+ _gkShould = 3001;
+ _gkMode = 3003;
+ break;
+
+ case 3003:
+ series_unload(_gkManyDoNeedPass);
+ _gkShould = _gkMode = 3000;
+ break;
+
+ case 3004:
+ if (_digiName1) {
+ digi_play(_digiName1, 1, 255, _digiTrigger1);
+ _digiName1 = nullptr;
+ }
+
+ sendWSMessage_10000(1, _gk, _gkMayNotPass, 1, 36, 125,
+ _gkManyDoNeedPass, 1, 1, 0);
+ _gkShould = _gkMode = 3000;
+ break;
+
default:
break;
}
@@ -949,19 +1200,102 @@ void Room203::daemon() {
kernel_timing_trigger(120, 352);
break;
+ case 354:
+ if (_flag1) {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 17, 21, 355,
+ _peskyYellsThief, 21, 21, 0);
+ } else {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 17, 1, -1,
+ _peskyYellsThief, 1, 1, 0);
+ }
+ break;
+
+ case 355:
+ if (_flag1) {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 1, -1,
+ _peskyYellsThief, 1, 1, 0);
+ } else {
+ sendWSMessage_10000(1, _peasant, _peskyYellsThief, 21, 17, 354,
+ _peskyYellsThief, 17, 17, 0);
+ }
+ break;
+
+ case 356:
+ terminateMachineAndNull(_official);
+ _official = triggerMachineByHash_3000(8, 5, *OFFICIAL_NORMAL_DIRS,
+ *OFFICIAL_SHADOW_DIRS, 1436, 362, 9, triggerMachineByHashCallback3000,
+ "official arresting");
+ break;
+
+ case 357:
+ _flag1 = false;
+ setGlobals1(_officialTurn9_11, 1, 19, 19, 19);
+ sendWSMessage_110000(_official, 358);
+ break;
+
+ case 358:
+ sendWSMessage_150000(_official, -1);
+ ws_demand_facing(11);
+ sendWSMessage_10000(_official, 1025, 290, 11, 359, 1);
+ break;
+
+ case 359:
+ setGlobals1(_officialTurn11_3, 1, 39, 39, 39, 0, 39, 23, 23, 23, 0,
+ 23, 39, 39, 39, 0, 39, 39, 39, 39, 0);
+ sendWSMessage_110000(_official, 360);
+ break;
+
case 360:
sendWSMessage_120000(_official, 363);
break;
+ case 363:
+ ws_demand_location(1100, 290, 9);
+ ws_walk(1060, 290, nullptr, 36, 7);
+ break;
+
+ case 364:
+ sendWSMessage_150000(_official, -1);
+ ws_demand_facing(_official, 9);
+ setGlobals1(_officialTurn3_7, 1, 27, 27, 27);
+ sendWSMessage_110000(_official, 365);
+ ws_walk(1062, 313, nullptr, 8888, 7);
+ break;
+
+ case 365:
+ sendWSMessage_150000(_official, -1);
+ ws_demand_facing(7);
+ sendWSMessage_10000(_official, 1010, 345, 9, 366, 1);
+ break;
+
case 366:
ws_walk(280, 345, nullptr, 103, 9);
kernel_timing_trigger(50, 367);
break;
+ case 367:
+ g_engine->camera_shift_xy(0, 0);
+ sendWSMessage_10000(_official, 345, 355, 9, -1, 1);
+ break;
+
+ case 390:
+ sendWSMessage_10000(1, _pigeons1, _pigeonsSeries1, 1, 88, -1,
+ _pigeonsSeries1, 1, 88, 0);
+ break;
+
+ case 392:
+ sendWSMessage_10000(1, _pigeons3, _pigeonsSeries3, 1, 93, -1,
+ _pigeonsSeries3, 1, 93, 0);
+ break;
+
case 666:
digi_play("203r56", 1, 255, 667);
break;
+ case 667:
+ digi_unload("203r56");
+ break;
+
case 749:
midi_stop();
break;
@@ -1019,6 +1353,15 @@ void Room203::daemon() {
kernel_timing_trigger(60, 81);
break;
+ case 8888:
+ ws_walk(940, 345, nullptr, -1, 7);
+ break;
+
+ case 9000:
+ setGlobals1(_ripHeadTurn, 1, 4, 4, 4);
+ sendWSMessage_110000(9002);
+ break;
+
case 9002:
digi_play("203r51", 1, 255, 9004);
break;
@@ -1033,6 +1376,15 @@ void Room203::daemon() {
sendWSMessage_140000(-1);
break;
+ case 9005:
+ sendWSMessage_10000(_g1, -30, 350, 9, -1, 1);
+ _sg = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x500, 0,
+ triggerMachineByHashCallback, "sg");
+ sendWSMessage_10000(1, _sg, _203sg01, 1, 1, -1, _203sg01, 1, 1, 0);
+ setGlobals1(_ripHeadTurn, 6, 9, 9, 9);
+ sendWSMessage_110000(9006);
+ break;
+
case 9006:
kernel_timing_trigger(60, 9007);
break;
@@ -1056,6 +1408,15 @@ void Room203::daemon() {
kernel_timing_trigger(120, 9030);
break;
+ case 9011:
+ sendWSMessage_10000(_mei, 417, 240, 2, -1, 1);
+ break;
+
+ case 9014:
+ digi_play("203_s09", 2);
+ sendWSMessage_10000(1, _sg, _203sg01, 85, 130, 9020, _203sg01, 130, 130, 0);
+ break;
+
case 9020:
sendWSMessage_10000(1, _sg, _203sg01, 131, 155, -1, _203sg01, 155, 155, 0);
disable_player_commands_and_fade_init(9025);
@@ -1065,6 +1426,17 @@ void Room203::daemon() {
_G(game).setRoom(204);
break;
+ case 9030:
+ _G(camera_reacts_to_player) = false;
+ g_engine->camera_shift_xy(640, 0);
+ kernel_timing_trigger(30, 9013);
+ break;
+
+ case 9040:
+ series_stream("203pu99", 5, 0, -1);
+ sendWSMessage_10000(_g1, 200, 350, 9, 9005, 0);
+ break;
+
default:
error("Unhandled trigger");
break;
diff --git a/engines/m4/riddle/rooms/section2/room203.h b/engines/m4/riddle/rooms/section2/room203.h
index 6b93c674629..6cdaf73c9ef 100644
--- a/engines/m4/riddle/rooms/section2/room203.h
+++ b/engines/m4/riddle/rooms/section2/room203.h
@@ -32,7 +32,6 @@ class Room203 : public Section2Room {
private:
int _val1 = 0;
int _val2 = 0;
- const char *_digiName1 = nullptr;
int _val4 = 0;
int _val5 = 0;
int _val6 = 0;
@@ -41,7 +40,8 @@ private:
bool _showWalker = false;
bool _ripley80000 = false;
int _val11 = 0;
- int _val12 = 0;
+ const char *_digiName1 = nullptr;
+ int _digiTrigger1 = 0;
int _trigger1 = -1;
int _trigger2 = -1;
int _trigger3 = -1;
@@ -67,6 +67,8 @@ private:
int _meiHallOfClassics = 0;
machine *_gk = nullptr;
int _gkFrame = 0;
+ int _gkManyDoNeedPass = 0;
+ int _gkMayNotPass = 0;
int _gkMode = 0, _gkShould = 0;
machine *_oldLady = nullptr;
int _oldLadyFrame = 0;
@@ -78,6 +80,7 @@ private:
int _oldLadyPointsToPhoto = 0;
int _oldLadyPhotoPopup = 0;
int _oldLadyProtectsHelmet = 0;
+ int _oldLadyShowsPhoto = 0;
machine *_pigeons1 = nullptr;
machine *_pigeons3 = nullptr;
int _pigeonsSeries1 = 0;
@@ -87,8 +90,10 @@ private:
int _officialStander = 0;
int _officialMode = 0, _officialShould = 0;
int _officialTurn9_11 = 0;
+ int _officialTurn9_11_pointGun = 0;
int _officialTurn11_3 = 0;
int _officialTurn3_7 = 0;
+ int _officialMoveAlong = 0;
machine *_peasant = nullptr;
machine *_peasantShadow = nullptr;
int _peasantSeries = 0;
More information about the Scummvm-git-logs
mailing list