[Scummvm-git-logs] scummvm master -> 2a20049ac750ddebbc2a6dac9fe1ae22a7195e62
dreammaster
noreply at scummvm.org
Sat Oct 26 05:32: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:
2a20049ac7 M4: RIDDLE: In progress room 201 daemon
Commit: 2a20049ac750ddebbc2a6dac9fe1ae22a7195e62
https://github.com/scummvm/scummvm/commit/2a20049ac750ddebbc2a6dac9fe1ae22a7195e62
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-10-25T22:31:38-07:00
Commit Message:
M4: RIDDLE: In progress room 201 daemon
Changed paths:
engines/m4/riddle/rooms/section2/room201.cpp
engines/m4/riddle/rooms/section2/room201.h
engines/m4/riddle/rooms/section2/section2.cpp
engines/m4/riddle/rooms/section2/section2.h
engines/m4/riddle/rooms/section3/room301.cpp
engines/m4/riddle/triggers.h
diff --git a/engines/m4/riddle/rooms/section2/room201.cpp b/engines/m4/riddle/rooms/section2/room201.cpp
index 85361416ae5..e26fa0668af 100644
--- a/engines/m4/riddle/rooms/section2/room201.cpp
+++ b/engines/m4/riddle/rooms/section2/room201.cpp
@@ -20,6 +20,7 @@
*/
#include "m4/riddle/rooms/section2/room201.h"
+#include "m4/riddle/rooms/section2/section2.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
@@ -37,7 +38,7 @@ void Room201::init() {
if (_G(game).previous_room != KERNEL_RESTORING_GAME)
_val1 = _val2 = 0;
- _val3 = 0;
+ _itemDigi = 0;
digi_preload("950_s02");
_nod = series_load("HEAD NOD Y/N");
@@ -58,56 +59,806 @@ void Room201::init() {
if (_G(game).previous_room != KERNEL_RESTORING_GAME)
_val4 = 0;
- _val5 = 0;
+ _doc = nullptr;
kernel_timing_trigger(1, 507);
digi_play_loop("950_s02", 3, 50);
if (_flag1) {
- _machine1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 512, 0,
+ _mei1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 512, 0,
triggerMachineByHashCallback, "mc");
- sendWSMessage(1, _machine1, _series4, 1, 1, -1, _series4, 1, 1, 0);
+ sendWSMessage(1, _mei1, _series4, 1, 1, -1, _series4, 1, 1, 0);
- _machine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 512, 0,
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 512, 0,
triggerMachineByHashCallback, "rip");
- sendWSMessage(1, _machine2, _series2, 1, 21, -1, _series2, 21, 21, 0);
+ sendWSMessage(1, _ripley, _series2, 1, 21, -1, _series2, 21, 21, 0);
kernel_timing_trigger(10, 100);
} else {
if (_val4 == 1)
- _machine3 = series_place_sprite("201DOC", 0, 0, 0, 100, 0x410);
+ _doc = series_place_sprite("201DOC", 0, 0, 0, 100, 0x410);
if (_G(game).previous_room == KERNEL_RESTORING_GAME) {
if (_G(flags)[V053] == 1) {
- _mei1 = series_load("MEI TREK HAND ON HIP POS4");
- _mei2 = series_load("MEI TREK TALKER POS4");
- _mei3 = series_load("MEI CHEN TREK WALK POS4");
- _machine4 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 200, 238, 73, 0x900, 0,
+ _meiHandHip = series_load("MEI TREK HAND ON HIP POS4");
+ _meiTalker = series_load("MEI TREK TALKER POS4");
+ _meiWalk = series_load("MEI CHEN TREK WALK POS4");
+ _mei2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 200, 238, 73, 0x900, 0,
triggerMachineByHashCallback, "MC");
- sendWSMessage(1, _machine4, _mei1, 22, 22, 2000, _mei1, 22, 22, 0);
+ sendWSMessage(1, _mei2, _meiHandHip, 22, 22, 2000, _meiHandHip, 22, 22, 0);
_val5 = 2;
_val6 = 2;
- _val7 = -1;
+ _trigger9 = -1;
_val8 = -1;
_val9 = -1;
} else {
hotspot_set_active("MEI CHEN", false);
}
- return;
+ } else {
+ player_set_commands_allowed(false);
+ ws_demand_location(79, 257, 3);
+
+ if (_G(flags)[V053] == 2 && _G(game).previous_room != KERNEL_RESTORING_GAME) {
+ ++_G(flags)[V006];
+
+ if (setItemsPlacedFlags()) {
+ _itemDigi = getItemsPlacedDigi();
+ ++_val1;
+ }
+ }
+
+ if (_G(flags)[V053] > 0) {
+ hotspot_set_active("MEI CHEN", false);
+ ws_walk(356, 256, nullptr, 1000, 3);
+ _G(flags)[V068] = 1;
+
+ if (_G(flags)[V053] == 1)
+ _G(flags)[V364] = 1;
+
+ } else {
+ digi_preload("201R01");
+ digi_preload("201M03");
+ _G(flags)[V068] = 1;
+ _G(flags)[V053] = 1;
+ setupMei();
+ _G(flags)[V059] = 0;
+ sendWSMessage_10000(_mei0, 180, 257, 3, 180, 1);
+ kernel_timing_trigger(1, 8000);
+ }
+ }
+ }
+}
+
+void Room201::daemon() {
+ switch (_G(kernel).trigger) {
+ case 50:
+ player_set_commands_allowed(true);
+ break;
+
+ case 75:
+ ws_walk(237, 247, nullptr, 205, 10);
+ break;
+
+ case 100:
+ digi_play("201r30", 1, 255, 102);
+ break;
+
+ case 102:
+ sendWSMessage_10000(1, _mei1, _series4, 1, 6, -1, _series4, 3, 6, 1);
+ sendWSMessage_190000(_mei1, 11);
+ sendWSMessage_1a0000(_mei1, 11);
+ digi_play("201m09", 1, 255, 104);
+ break;
+
+ case 104:
+ sendWSMessage_10000(1, _mei1, _series4, 7, 18, -1, _series4, 18, 18, 1);
+ sendWSMessage_10000(1, _ripley, _series2, 21, 42, 105, _series2, 42, 42, 1);
+ digi_play("201r31", 1, 255, 110);
+ break;
+
+ case 105:
+ sendWSMessage_10000(1, _ripley, _series2, 43, 52, 106, _series2, 52, 52, 1);
+ digi_play("950_s35", 2);
+ break;
+
+ case 106:
+ sendWSMessage_10000(1, _ripley, _series2, 52, 21, 108, _series2, 21, 21, 1);
+ sendWSMessage_10000(1, _mei1, _series4, 18, 7, -1, _series4, 7, 7, 1);
+ break;
+
+ case 108:
+ sendWSMessage_10000(1, _ripley, _series2, 13, 13, -1, _series2, 13, 21, 1);
+ sendWSMessage_1a0000(_ripley, 11);
+ break;
+
+ case 110:
+ sendWSMessage_10000(1, _ripley, _series2, 21, 21, -1, _series2, 21, 21, 1);
+ sendWSMessage_10000(1, _mei1, _series4, 33, 61, -1, _series4, 61, 63, 1);
+ sendWSMessage_1a0000(_mei1, 11);
+ digi_play("201m06", 1, 255, 112);
+ break;
+
+ case 112:
+ sendWSMessage_10000(1, _mei1, _series4, 61, 61, -1, _series4, 61, 61, 1);
+ sendWSMessage_10000(1, _ripley, _series2, 13, 13, -1, _series2, 13, 21, 1);
+ digi_play("201r32", 1, 255, 116);
+ break;
+
+ case 116:
+ sendWSMessage_10000(1, _ripley, _series2, 21, 21, -1, _series2, 21, 21, 1);
+ sendWSMessage_10000(1, _mei1, _series4, 61, 61, -1, _series4, 61, 63, 1);
+ sendWSMessage_1a0000(_mei1, 11);
+ digi_play("201m07", 1, 255, 120);
+ break;
+
+ case 120:
+ sendWSMessage_10000(1, _mei1, _series4, 61, 61, -1, _series4, 61, 61, 1);
+ sendWSMessage_10000(1, _ripley, _series2, 53, 61, -1, _series2, 61, 63, 1);
+ sendWSMessage_1a0000(_ripley, 11);
+ digi_play("201r33", 1, 255, 123);
+ kernel_timing_trigger(150, 121);
+ break;
+
+ case 121:
+ sendWSMessage_10000(1, _ripley, _series2, 61, 53, -1, _series2, 13, 21, 1);
+ sendWSMessage_1a0000(_ripley, 11);
+ break;
+
+ case 123:
+ sendWSMessage_10000(1, _ripley, _series2, 13, 13, -1, _series2, 13, 13, 1);
+ sendWSMessage_10000(1, _mei1, _series4, 64, 78, -1, _series4, 78, 81, 1);
+ sendWSMessage_1a0000(_mei1, 11);
+ digi_play("201m08", 1, 255, 126);
+ break;
+
+ case 126:
+ sendWSMessage_10000(1, _mei1, _series4, 78, 64, -1, _series4, 64, 64, 1);
+ sendWSMessage_10000(1, _ripley, _series2, 73, 82, 127, _series2, 82, 82, 1);
+ digi_play("201r34", 1, 255, 129);
+ break;
+
+ case 127:
+ terminateMachineAndNull(_mei1);
+ sendWSMessage_10000(1, _ripley, _series3, 1, 8, -1, _series3, 8, 12, 1);
+ break;
+
+ case 129:
+ sendWSMessage_10000(1, _ripley, _series3, 12, 12, -1, _series3, 12, 12, 1);
+ kernel_timing_trigger(60, 130);
+ break;
+
+ case 130:
+ _conv1 = 0;
+ sendWSMessage_10000(1, _ripley, _series3, 13, 27, 162, _series3, 27, 27, 1);
+ break;
+
+ case 131:
+ sendWSMessage_10000(1, _ripley, _series3, 29, 42, 160, _series3, 42, 42, 1);
+ sendWSMessage_190000(_ripley, 30);
+ break;
+
+ case 132:
+ _conv1 = 0;
+ sendWSMessage_10000(1, _ripley, _series3, 51, 73, 161, _series3, 73, 73, 1);
+ digi_play("com119", 1, 190, -1);
+ break;
+
+ case 137:
+ _conv1 = 0;
+ sendWSMessage_10000(1, _ripley, _series3, 74, 93, 138, _series3, 93, 93, 1);
+ break;
+
+ case 138:
+ sendWSMessage_10000(1, _ripley, _series3, 94, 98, -1, _series3, 98, 102, 11);
+ digi_play("201r36", 1, 255, 140);
+ kernel_timing_trigger(160, 139);
+ break;
+
+ case 139:
+ sendWSMessage_10000(1, _ripley, _series3, 103, 113, -1, _series3, 113, 113, 1);
+ break;
+
+ case 140:
+ sendWSMessage_10000(1, _ripley, _series3, 114, 115, 144, _series3, 115, 115, 1);
+ break;
+
+ case 144:
+ kernel_timing_trigger(50, 145);
+ break;
+
+ case 145:
+ sendWSMessage_10000(1, _ripley, _series3, 116, 128, -1, _series3, 128, 128, 1);
+ digi_play("201r35", 1, 255, 146);
+ break;
+
+ case 146:
+ kernel_timing_trigger(100, 147);
+ break;
+
+ case 147:
+ interface_hide();
+ disable_player_commands_and_fade_init(150);
+ break;
+
+ case 150:
+ _G(game).setRoom(203);
+ break;
+
+ case 160:
+ sendWSMessage_10000(1, _ripley, _series3, 43, 50, 132, _series3, 50, 50, 1);
+ break;
+
+ case 161:
+ sendWSMessage_10000(1, _ripley, _series3, 73, 73, -1, _series3, 73, 73, 1);
+ _conv1 = 10;
+ digi_play("201x08", 1, 255, 137);
+ break;
+
+ case 162:
+ sendWSMessage_10000(1, _ripley, _series3, 28, 28, -1, _series3, 28, 28, 1);
+ kernel_timing_trigger(120, 131);
+ break;
+
+ case 180:
+ sendWSMessage_10000(_mei0, 200, 238, 4, -1, 1);
+ break;
+
+ case 205:
+ _ripTalk = series_load("RIP TREK TALK");
+ setGlobals1(_ripTalk, 1, 7, 1, 7, 1);
+ sendWSMessage_110000(9139);
+ digi_play("201r01", 1, 255, 210);
+ kernel_timing_trigger(1, 1999);
+ break;
+
+ case 217:
+ if (_ctr1 >= 1) {
+ _ctr1 = 0;
+ sendWSMessage_150000(220);
+ } else {
+ ++_ctr1;
+ }
+ break;
+
+ case 230:
+ _val6 = 0;
+ kernel_timing_trigger(120, 235);
+ break;
+
+ case 235:
+ player_update_info();
+ ws_walk(_G(player_info).x, _G(player_info).y, nullptr, 240, 3);
+ break;
+
+ case 240:
+ setGlobals1(_series6, 1, 7, 7, 7);
+ sendWSMessage_110000(241);
+ break;
+
+ case 242:
+ sendWSMessage_140000(-1);
+ _conv1 = 0;
+ _trigger10 = kernel_trigger_create(244);
+ break;
+
+ case 245:
+ _conv1 = 3;
+ _trigger10 = kernel_trigger_create(260);
+ break;
+
+ case 270:
+ _val6 = 0;
+ _trigger9 = kernel_trigger_create(279);
+ break;
+
+ case 279:
+ _val6 = 2;
+ ws_walk(356, 256, nullptr, 280, 3);
+ break;
+
+ case 290:
+ if (_ctr1 >= 1) {
+ _ctr1 = 0;
+ sendWSMessage_140000(-1);
+ _conv1 = 0;
+ _trigger10 = kernel_trigger_create(300);
+
+ } else {
+ ++_ctr1;
+ }
+ break;
+
+ case 310:
+ _ripHandChin = series_load("RIP TREK HAND CHIN POS3");
+ setGlobals1(_ripHandChin, 1, 14, 14, 14);
+ sendWSMessage_110000(320);
+ digi_play(_G(flags)[GLB_TEMP_2] == 1 ? "201r05" : "201r06", 1, 255, 320);
+ break;
+
+ case 320:
+ if (_ctr1 >= 1) {
+ _ctr1 = 0;
+ sendWSMessage_140000(325);
+ _conv1 = 8;
+ } else {
+ ++_ctr1;
+ }
+ break;
+
+ case 325:
+ series_unload(_ripHandChin);
+ digi_unload("201R01");
+ digi_unload("201M03");
+ player_set_commands_allowed(true);
+ break;
+
+ case 507:
+ _agent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, 0,
+ triggerMachineByHashCallback, "201 guy behind desk 1");
+ _num3 = 9;
+ _conv1 = 8;
+ _trigger10 = _trigger11 = _trigger12 = -1;
+ _flag3 = false;
+ break;
+
+ case 509:
+ _agent = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x400, 0,
+ triggerMachineByHashCallback, "201 guy behind desk 2");
+ sendWSMessage_10000(1, _agent, _nod, 1, 1, 510, _nod, 1, 1, 0);
+ _num3 = 0;
+ _conv1 = 0;
+ _trigger10 = _trigger11 = _trigger12 = -1;
+ _flag3 = false;
+ break;
+
+ case 510:
+ if (_num3 == 0 && _conv1 == 0 && _trigger10 != -1) {
+ kernel_trigger_dispatchx(_trigger10);
+ _trigger10 = -1;
+ }
+
+ if (_num3 == 9 && _conv1 == 8 && _trigger11 != -1) {
+ kernel_trigger_dispatchx(_trigger11);
+ _trigger11 = -1;
+ }
+
+ if (_num3 == 9 && _conv1 == 8 && _trigger11 != -1) {
+ kernel_trigger_dispatchx(_trigger11);
+ _trigger11 = -1;
+ }
+
+ if (_flag3) {
+ terminateMachineAndNull(_agent);
+ } else {
+ kernel_timing_trigger(1, 511);
+ }
+ break;
+
+ case 1000:
+ animateRipley();
+ kernel_timing_trigger(2, 1003);
+ break;
+
+ case 1003:
+ _conv2 = 6;
+ _trigger4 = kernel_trigger_create(1004);
+ break;
+
+ case 1004:
+ _conv2 = 7;
+ _trigger5 = kernel_trigger_create(1005);
+ break;
+
+ case 1010:
+ _conv2 = 7;
+ _conv1 = 0;
+ _trigger10 = kernel_trigger_create(1030);
+ break;
+
+ case 1035:
+ _conv1 = 3;
+ _trigger10 = kernel_trigger_create(1040);
+ break;
+
+ case 1065:
+ _trigger10 = kernel_trigger_create(1070);
+ break;
+
+ case 1070:
+ if (_G(flags)[V079] == 0 && _G(flags)[V053] == 1) {
+ kernel_timing_trigger(1, 9200);
+ } else {
+ kernel_timing_trigger(15, 1073);
+ _conv2 = 6;
+ }
+
+ case 1073:
+ _conv1 = 0;
+ _trigger10 = kernel_trigger_create(1075);
+ break;
+
+ case 1075:
+ _trigger4 = kernel_trigger_create(1080);
+ break;
+
+ case 2000:
+ if (_val5 == 0 && _val6 == 0 && _trigger9 != -1) {
+ kernel_trigger_dispatchx(_trigger9);
+ _trigger9 = -1;
+ }
+
+ if (_val5 == 2 && _val6 == 2 && _val8 != -1) {
+ kernel_trigger_dispatchx(_val8);
+ _val8 = -1;
}
+ if (_val5 == 5 && _val6 == 5 && _val9 != -1) {
+ kernel_trigger_dispatchx(_val9);
+ _val9 = -1;
+ }
+
+ kernel_timing_trigger(1, 2010);
+ break;
+
+ case 3000:
player_set_commands_allowed(false);
- ws_demand_location(79, 257, 3);
+ animateRipley();
+ _conv1 = 0;
+ kernel_timing_trigger(2, 3003);
+ break;
+
+ case 3003:
+ _conv2 = 7;
+ _trigger5 = kernel_trigger_create(3005);
+ break;
+
+ case 3005:
+ _trigger10 = kernel_trigger_create(3010);
+ break;
+
+ case 3010:
+ _conv2 = 8;
+ digi_play("201r27", 1, 255, 3020);
+ break;
+
+ case 3020:
+ _conv2 = 7;
+ _conv1 = 10;
+ digi_play("201x06", 1, 255, 3030);
+ break;
+
+ case 3030:
+ _conv2 = 8;
+ _conv1 = 0;
+ digi_play("201r28", 1, 255, 3040);
+ break;
+
+ case 3040:
+ _conv2 = 7;
+ _conv1 = 10;
+ digi_play("201x07", 1, 255, 3050);
+ break;
+
+ case 3050:
+ _conv2 = 8;
+ _conv1 = 0;
+ digi_play("201r29", 1, 255, 3060);
+ break;
+
+ case 3060:
+ _conv2 = 6;
+ _conv1 = 0;
+ _trigger10 = kernel_trigger_create(3070);
+ break;
- if (_G(flags)[V053] == 2) {
- // TODO
+ case 3070:
+ _conv1 = 8;
+ _trigger4 = kernel_trigger_create(3080);
+ break;
+
+ case 3080:
+ _trigger11 = kernel_trigger_create(3090);
+ break;
+
+ case 3090:
+ _G(flags)[V066] = 1;
+ _num2 = 1;
+ player_set_commands_allowed(true);
+ break;
+
+ case 4000:
+ _num1 = 1;
+ _conv2 = 1;
+ _trigger1 = _trigger2 = _trigger3 = _trigger4 = -1;
+ _trigger5 = _trigger6 = _trigger7 = _trigger8 = -1;
+
+ player_update_info();
+ ws_hide_walker();
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale,
+ _G(player_info).depth, false, triggerMachineByHashCallback, "Rip Machine State");
+ sendWSMessage_10000(1, _ripley, _series6, 1, 1, 4010, _series6, 1, 1, 0);
+ _shadow3 = series_place_sprite("SAFARI SHADOW 3", 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
+ break;
+
+ case 4010:
+ if (_num1 == 1 && _conv2 == 1 && _trigger1 != -1) {
+ kernel_trigger_dispatchx(_trigger1);
+ _trigger1 = -1;
}
+
+ if (_num1 == 3 && _conv2 == 3 && _trigger2 != -1) {
+ kernel_trigger_dispatchx(_trigger2);
+ _trigger2 = -1;
+ }
+
+ if (_num1 == 4 && _conv2 == 4 && _trigger3 != -1) {
+ kernel_trigger_dispatchx(_trigger3);
+ _trigger3 = -1;
+ }
+
+ if (_num1 == 6 && _conv2 == 6 && _trigger4 != -1) {
+ kernel_trigger_dispatchx(_trigger4);
+ _trigger4 = -1;
+ }
+
+ if (_num1 == 7 && _conv2 == 7 && _trigger5 != -1) {
+ kernel_trigger_dispatchx(_trigger5);
+ _trigger5 = -1;
+ }
+
+ if (_num1 == 7 && _conv2 == 16 && _trigger6 != -1) {
+ kernel_trigger_dispatchx(_trigger6);
+ _trigger6 = -1;
+ }
+
+ if (_num1 == 2 && _conv2 == 22 && _trigger7 != -1) {
+ kernel_trigger_dispatchx(_trigger7);
+ _trigger7 = -1;
+ }
+
+ if (_num1 == 7 && _conv2 == 13 && _trigger8 != -1) {
+ kernel_trigger_dispatchx(_trigger8);
+ _trigger8 = -1;
+ }
+
+ if (_num2) {
+ terminateMachineAndNull(_ripley);
+ ws_unhide_walker();
+ terminateMachineAndNull(_shadow3);
+
+ } else {
+ kernel_timing_trigger(1, 4020);
+ }
+ break;
+
+ case 7010:
+ _conv2 = 17;
+ _trigger5 = kernel_trigger_create(7020);
+ break;
+
+ case 8000:
+ kernel_timing_trigger(120, 75);
+ break;
+
+ case 9010:
+ kernel_timing_trigger(1, 509);
+ kernel_timing_trigger(5, 9020);
+ break;
+
+ case 9050:
+ _itemDigi2 = _itemDigi3 = _itemDigi4 = _itemDigi5 = nullptr;
+ inv_give_to_player("MESSAGE LOG");
+
+ if (_val1 <= 0) {
+ kernel_timing_trigger(1, 1080);
+ } else {
+ if (_itemDigi) {
+ _itemDigi2 = _itemDigi;
+ _itemDigi = nullptr;
+ } else if (_G(flags)[V364] == 1) {
+ _itemDigi2 = "201R26";
+ _G(flags)[V364] = 0;
+ } else if (_G(flags)[V365] == 1) {
+ _itemDigi2 = "201R61";
+ _G(flags)[V365] = 0;
+ } else if (_G(flags)[V366] == 1) {
+ _itemDigi2 = "401R31";
+ _G(flags)[V366] = 0;
+ } else if (_G(flags)[V373] == 1) {
+ _itemDigi2 = "401R36";
+ _G(flags)[V373] = 0;
+ } else if (_G(flags)[V370] == 1) {
+ _itemDigi2 = "501R02B";
+ _itemDigi3 = _itemDigi4 = nullptr;
+ _G(flags)[V370] = 0;
+ } else if (_G(flags)[V371] == 1) {
+ _itemDigi2 = "501R03C";
+ _itemDigi3 = _itemDigi4 = _itemDigi5 = nullptr;
+ _G(flags)[V371] = 0;
+ } else if (_G(flags)[V372] == 1) {
+ _itemDigi2 = "701R39";
+ _itemDigi3 = "701R39A";
+ _G(flags)[V372] = 0;
+ } else if (_G(flags)[V367] == 1) {
+ _itemDigi2 = "401R37";
+ _G(flags)[V367] = 0;
+ _flag2 = true;
+ } else if (_G(flags)[V368] == 1) {
+ _itemDigi2 = "401R38";
+ _G(flags)[V368] = 0;
+ _flag2 = true;
+ } else if (_G(flags)[V369] == 1) {
+ _itemDigi2 = "401R39";
+ _G(flags)[V369] = 0;
+ _flag2 = true;
+ }
+
+ kernel_timing_trigger(1, 9060);
+ }
+ break;
+
+ case 9139:
+ sendWSMessage_150000(-1);
+ break;
+
+ case 9200:
+ _guyPassForm = series_load("GUY PASS FORM TO RIPLEY");
+ digi_preload("950_S34");
+ _conv2 = 8;
+ digi_play("201R60", 1, 255, 9210);
+ break;
+
+ case 9210:
+ _conv2 = 24;
+ _trigger5 = kernel_trigger_create(9215);
+ break;
+
+ case 9215:
+ series_unload(_guyPassForm);
+ digi_unload("950_S34");
+ kernel_timing_trigger(5, 1070);
+ break;
+
+ case 9220:
+ _conv2 = 7;
+ _trigger5 = kernel_trigger_create(1070);
+ break;
+
+ case 9230:
+ _conv2 = 7;
+ _trigger5 = kernel_trigger_create(9240);
+ break;
+
+ case 9240:
+ _conv2 = 28;
+ break;
+
+ case 9250:
+ _conv2 = 8;
+ digi_play("COM084", 1, 255, 9220, 997);
+
+ if (!inv_player_has("ROMANOV EMERALD"))
+ inv_give_to_player("ROMANOV EMERALD");
+ break;
+
+ case 9300:
+ series_unload(S2_MEI_NORMAL_DIRS[4]);
+ series_unload(S2_MEI_NORMAL_DIRS[2]);
+ series_unload(S2_MEI_NORMAL_DIRS[1]);
+ series_unload(S2_MEI_NORMAL_DIRS[0]);
+ break;
+
+ default:
+ break;
}
}
-void Room201::daemon() {
- // TODO
+void Room201::parser() {
+ bool lookFlag = player_said_any("look", "look at");
+ bool takeFlag = player_said("take");
+ bool talkFlag = player_said_any("talk", "talk to");
+ bool useFlag = player_said("gear");
+
+ if (player_said("conv201a")) {
+ conv201a();
+
+ } else if (lookFlag || takeFlag || talkFlag || useFlag) {
+ // TODO
+ } else {
+ return;
+ }
+
+ _G(player).command_ready = false;
+}
+
+void Room201::setupMei() {
+ _meiTalker = series_load("MEI TREK TALKER POS4");
+ _meiWalk = series_load("MEI CHEN TREK WALK POS4");
+ ws_walk_load_walker_series(S2_MEI_NORMAL_DIRS, S2_MEI_NORMAL_NAMES);
+ ws_walk_load_shadow_series(S2_MEI_SHADOW_DIRS, S2_MEI_SHADOW_NAMES);
+ _mei0 = triggerMachineByHash_3000(8, 4, *S2_MEI_NORMAL_DIRS,
+ *S2_MEI_SHADOW_DIRS, 79, 257, 3, triggerMachineByHashCallback3000, "mc");
+}
+
+void Room201::conv201a() {
+ const char *sound = conv_sound_to_play();
+ int who = conv_whos_talking();
+ int node = conv_current_node();
+ int entry = conv_current_entry();
+
+ player_set_commands_allowed(false);
+
+ if (_G(kernel).trigger == 1) {
+ if (who <= 0) {
+ _conv1 = 0;
+
+ } else if (who == 1) {
+ _conv2 = 7;
+
+ if (node == 1 && entry == 1) {
+ int32 x1, y1, x2, y2;
+ conv_set_box_xy(490, -4);
+ conv_get_dlg_coords(&x1, &y1, &x2, &y2);
+ conv_set_dlg_coords(x1, y1 - 10, x2, y2 - 10);
+ } else {
+ conv_set_box_xy(10, 10);
+ }
+
+ if (node == 1 && entry == 3) {
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(1, 7000, KT_DAEMON, KT_PARSE);
+ return;
+ }
+
+ if (node == 14 && entry != 12) {
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(1, 9000, KT_DAEMON, KT_PARSE);
+ return;
+ }
+ }
+
+ player_set_commands_allowed(true);
+ conv_resume();
+
+ } else {
+ if (who <= 0) {
+ if (node == 3 && entry == 0) {
+ player_set_commands_allowed(false);
+ _conv2 = 18;
+ _guyPassForm = series_load("GUY PASS FORM TO RIPLEY");
+ return;
+ } else {
+ _conv1 = 10;
+ }
+ } else if (who == 1) {
+ if (node != 14)
+ _conv2 = 8;
+ }
+
+ if (sound)
+ digi_play(sound, 1, 255, 1);
+ }
+}
+
+void Room201::animateRipley() {
+ _trigger1 = _trigger2 = _trigger3 = _trigger4 = -1;
+ _trigger5 = _trigger6 = _trigger7 = _trigger8 = -1;
+ _num1 = 6;
+ _conv2 = 6;
+ _num2 = 0;
+
+ player_update_info();
+ ws_hide_walker();
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100,
+ _G(player_info).depth, 0, triggerMachineByHashCallback,
+ "Rip Delta Machine State");
+ sendWSMessage_10000(1, _ripley, _series7, 1, 1, 4010, _series7, 1, 1, 0);
+ _shadow3 = series_place_sprite("SAFARI SHADOW 3", 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0xf00);
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section2/room201.h b/engines/m4/riddle/rooms/section2/room201.h
index 3906ed300df..08d089181bf 100644
--- a/engines/m4/riddle/rooms/section2/room201.h
+++ b/engines/m4/riddle/rooms/section2/room201.h
@@ -31,18 +31,26 @@ namespace Rooms {
class Room201 : public Section2Room {
private:
bool _flag1 = false;
+ bool _flag2 = false;
+ bool _flag3 = false;
int _val1 = 0;
int _val2 = 0;
- int _val3 = 0;
+ const char *_itemDigi = nullptr;
+ const char *_itemDigi2 = nullptr;
+ const char *_itemDigi3 = nullptr;
+ const char *_itemDigi4 = nullptr;
+ const char *_itemDigi5 = nullptr;
int _val4 = 0;
int _val5 = 0;
int _val6 = 0;
- int _val7 = 0;
int _val8 = 0;
int _val9 = 0;
- int _nod = -1;
- int _guyWriting = -1;
- int _guyParcel = -1;
+ int _conv1 = 0;
+ int _conv2 = 0;
+ int _nod = 0;
+ int _guyWriting = 0;
+ int _guyParcel = 0;
+ int _guyPassForm = 0;
int _series1 = -1;
int _series2 = -2;
int _series3 = -1;
@@ -51,13 +59,38 @@ private:
int _series6 = -2;
int _series7 = -1;
int _series8 = -1;
- machine *_machine1 = nullptr;
- machine *_machine2 = nullptr;
- machine *_machine3 = nullptr;
- machine *_machine4 = nullptr;
- int _mei1 = -1;
- int _mei2 = -1;
- int _mei3 = -1;
+ machine *_mei0 = nullptr;
+ machine *_mei1 = nullptr;
+ machine *_mei2 = nullptr;
+ machine *_ripley = nullptr;
+ machine *_doc = nullptr;
+ machine *_shadow3 = nullptr;
+ machine *_agent = nullptr;
+ int _meiHandHip = -1;
+ int _meiTalker = -1;
+ int _meiWalk = -1;
+ int _ripHandChin = -1;
+ int _ripTalk = -1;
+ int _num1 = 0;
+ int _num2 = 0;
+ int _num3 = 0;
+ int _trigger1 = -1;
+ int _trigger2 = -1;
+ int _trigger3 = -1;
+ int _trigger4 = -1;
+ int _trigger5 = -1;
+ int _trigger6 = -1;
+ int _trigger7 = -1;
+ int _trigger8 = -1;
+ int _trigger9 = -1;
+ int _trigger10 = -1;
+ int _trigger11 = -1;
+ int _trigger12 = -1;
+ int _ctr1 = 0;
+
+ void setupMei();
+ void conv201a();
+ void animateRipley();
public:
Room201() : Section2Room() {}
@@ -65,6 +98,7 @@ public:
void init() override;
void daemon() override;
+ void parser() override;
};
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section2/section2.cpp b/engines/m4/riddle/rooms/section2/section2.cpp
index 667e6e71c0c..b75651f3ec9 100644
--- a/engines/m4/riddle/rooms/section2/section2.cpp
+++ b/engines/m4/riddle/rooms/section2/section2.cpp
@@ -28,10 +28,25 @@ namespace Rooms {
const int16 S2_DIRS1[] = {240, -1};
const char *S2_NAMES1[] = { "pesky walk pos3" };
-
const int16 S2_DIRS2[] = {250, -1};
const char *S2_NAMES2[] = { "shadow pesky walk pos3" };
+const int16 S2_MEI_NORMAL_DIRS[] = { 220, 221, 222, 223, 224, -1 };
+const char *S2_MEI_NORMAL_NAMES[] = {
+ "mei chen trek walk pos1",
+ "mei chen trek walk pos2",
+ "mei chen trek walk pos3",
+ "mei chen trek walk pos4",
+ "mei chen trek walk pos5"
+};
+const int16 S2_MEI_SHADOW_DIRS[] = { 230, 231, 232, 233, 234, -1 };
+const char *S2_MEI_SHADOW_NAMES[] = {
+ "mctsh1",
+ "mctsh2",
+ "mctsh3",
+ "mctsh4",
+ "mctsh5"
+};
Section2::Section2() : Rooms::Section() {
add(201, &_room201);
diff --git a/engines/m4/riddle/rooms/section2/section2.h b/engines/m4/riddle/rooms/section2/section2.h
index 99b5816f6f8..896f5236b51 100644
--- a/engines/m4/riddle/rooms/section2/section2.h
+++ b/engines/m4/riddle/rooms/section2/section2.h
@@ -40,6 +40,11 @@ extern const char *S2_NAMES1[];
extern const int16 S2_DIRS2[];
extern const char *S2_NAMES2[];
+extern const int16 S2_MEI_NORMAL_DIRS[];
+extern const char *S2_MEI_NORMAL_NAMES[];
+extern const int16 S2_MEI_SHADOW_DIRS[];
+extern const char *S2_MEI_SHADOW_NAMES[];
+
class Section2 : public Section {
private:
Room201 _room201;
diff --git a/engines/m4/riddle/rooms/section3/room301.cpp b/engines/m4/riddle/rooms/section3/room301.cpp
index 9eeefc0ec15..5c8492bb798 100644
--- a/engines/m4/riddle/rooms/section3/room301.cpp
+++ b/engines/m4/riddle/rooms/section3/room301.cpp
@@ -1040,7 +1040,7 @@ void Room301::conv301a() {
const char *sound = conv_sound_to_play();
int who = conv_whos_talking();
int node = conv_current_node();
- warning("TRIGGER %d, WHO %d NODE %d", _G(kernel).trigger, who, node);
+
if (_G(kernel).trigger == 1) {
if (who <= 0) {
if (node != 3) {
diff --git a/engines/m4/riddle/triggers.h b/engines/m4/riddle/triggers.h
index cca697beddb..b3e8bdcf70d 100644
--- a/engines/m4/riddle/triggers.h
+++ b/engines/m4/riddle/triggers.h
@@ -41,7 +41,7 @@ extern void setGlobals3(int series, int val1, int val2);
extern void setGlobals4(int series, int val2, int val3, int val4);
extern void sendWSMessage_10000(int val1, machine *mach, int val2, int val3,
- int val4, int trigger, int val9, int val6, int val7, int val8);
+ int val4, int trigger, int series2, int val6, int val7, int val8);
extern void sendWSMessage_10000(machine *mach, int destX, int destY, int index,
int trigger, int val4);
More information about the Scummvm-git-logs
mailing list