[Scummvm-git-logs] scummvm master -> 783714eed82361d46036cd149b7fb77a6f9c3e93
dreammaster
noreply at scummvm.org
Mon Nov 4 05:35:26 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:
783714eed8 M4: RIDDLE: Added room 203 parser
Commit: 783714eed82361d46036cd149b7fb77a6f9c3e93
https://github.com/scummvm/scummvm/commit/783714eed82361d46036cd149b7fb77a6f9c3e93
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-11-03T21:35:15-08:00
Commit Message:
M4: RIDDLE: Added room 203 parser
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 7a036ed768d..d8504be1f9b 100644
--- a/engines/m4/riddle/rooms/section2/room203.cpp
+++ b/engines/m4/riddle/rooms/section2/room203.cpp
@@ -2097,7 +2097,7 @@ void Room203::daemon() {
case 1122:
_ripleyShould = 1123;
- digi_play(_digiName2, 1, 255, 151);
+ digi_play(_digiName2.c_str(), 1, 255, 151);
break;
case 1123:
@@ -2577,33 +2577,590 @@ void Room203::daemon() {
}
void Room203::pre_parser() {
- // TODO
+ bool lookFlag = player_said_any("look", "look at");
+
+ if (lookFlag && player_said(" "))
+ _G(player).resetWalk();
+
+ if (lookFlag && player_said("ALLEY WALL") && _G(kernel).trigger == -1) {
+ _G(player).resetWalk();
+ ws_walk(710, 300, nullptr, 230, 11);
+ _G(kernel).trigger_mode = KT_PREPARSE;
+ }
}
void Room203::parser() {
-#ifdef TODO
- ws_hide_walker();
- player_set_commands_allowed(false);
- player_update_info();
- _ripsh1 = series_place_sprite("ripsh1", 0, _G(player_info).x, _G(player_info).y,
- _G(player_info).scale, 0x500);
- _peskyBegLoop = series_load("pesky beg loop");
- _ripHandsBehBack = series_load("rip trek hands beh back pos1");
-
- _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
- _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x400, 0,
- triggerMachineByHashCallback, "rip in conv");
- _ripleyMode = 1001;
- _ripleyShould = 1010;
- sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 1, 11, 150,
- _ripHandsBehBack, 11, 11, 0);
-
- _G(kernel).trigger_mode = KT_PARSE;
- _peasantMode2 = _peasantMode;
- _peasantMode = 4055;
-#endif
-}
+ bool lookFlag = player_said_any("look", "look at");
+ bool talkFlag = player_said_any("talk", "talk to");
+ bool takeFlag = player_said("take");
+
+ if (player_said("conv203c")) {
+ if (_G(kernel).trigger == 1) {
+ _ripleyShould = 1230;
+ _officialShould = 2012;
+ conv_resume();
+ } else {
+ conv203c();
+ }
+ } else if (player_said("conv203d")) {
+ conv203d();
+ } else if (player_said("conv203e")) {
+ conv203e();
+ } else if (player_said("enter bsa")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ disable_player_commands_and_fade_init(1);
+ break;
+ case 1:
+ _G(game).setRoom(207);
+ break;
+ default:
+ break;
+ }
+ } else if (lookFlag && player_said("ARCHWAY")) {
+ _G(flags)[V073] = 1;
+ digi_play("203R15", 1);
+ } else if (player_said("archway")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _G(flags)[V073] = 1;
+ _officialMode = 2001;
+ _officialShould = 2040;
+ _digiName3 = "203O01";
+ _digiTrigger3 = -1;
+ _trigger4 = kernel_trigger_create(2);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_trigger_dispatchx(kernel_trigger_create(140));
+ _G(kernel).trigger_mode = KT_PARSE;
+ break;
+ case 1:
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("leave")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ disable_player_commands_and_fade_init(1);
+ break;
+ case 1:
+ _G(game).setRoom(201);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("gatekeeper")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _ripHeadTurn = series_load("203pass");
+ setGlobals1(_ripHeadTurn, 1, 6, 6, 6);
+ sendWSMessage_110000(2);
+ break;
+ case 1:
+ kernel_timing_trigger(60, 7);
+ break;
+ case 3:
+ ws_walk(400, 252, nullptr, 5, 1);
+ break;
+ case 5:
+ disable_player_commands_and_fade_init(5);
+ break;
+ case 6:
+ _G(game).setRoom(204);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("walk through")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _gkMayNotPass = series_load("gk may not pass");
+ _gkMode = 3004;
+ _digiName1 = "203g03";
+ _digiTrigger1 = -1;
+ _trigger1 = kernel_trigger_create(2);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_trigger_dispatchx(kernel_trigger_create(125));
+ _G(kernel).trigger_mode = KT_PARSE;
+ break;
+ case 2:
+ series_unload(_gkMayNotPass);
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (lookFlag && player_said("HALL OF CLASSICS")) {
+ digi_play("203r12", 1);
+ } else if (lookFlag && player_said("GATEKEEPER")) {
+ digi_play("203r06", 1);
+ } else if (lookFlag && player_said("OLD LADY")) {
+ player_set_commands_allowed(false);
+ playSound("203r07", _G(kernel).trigger);
+ } else if (lookFlag && player_said("SOLDIER'S HELMET ")) {
+ digi_play("203r09a", 1);
+ } else if (lookFlag && HAS("SOLDIER'S HELMET") && !_G(flags)[V060]) {
+ _G(flags)[V051] = 1;
+ player_set_commands_allowed(false);
+ playSound("203r09", _G(kernel).trigger);
+ } else if (lookFlag && player_said("PEASANT")) {
+ digi_play("203r08", 1);
+ } else if (lookFlag && player_said("tree")) {
+ digi_play("203r63", 1);
+ } else if (player_said("SHRUNKEN HEAD", "BASKET")) {
+ digi_play("203r65", 1);
+ } else if (player_said("SOLDIER'S HELMET", "BASKET") && inv_player_has("SOLDIER'S HELMET")) {
+ digi_play("203r59", 1);
+ } else if (lookFlag && player_said("BASKET")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _ripTugsAtCollar = series_load("rip tugs at collar");
+ setGlobals1(_ripTugsAtCollar, 1, 9, 9, 9, 0, 9, 1, 1, 1);
+ sendWSMessage_110000(211);
+ digi_play("203CLRT1", 1);
+ break;
+ case 211:
+ sendWSMessage_120000(212);
+ break;
+ case 212:
+ sendWSMessage_150000(213);
+ break;
+ case 213:
+ series_unload(_ripTugsAtCollar);
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (lookFlag && player_said("BLACKSMITH'S WINDOW")) {
+ _G(flags)[V054] = 1;
+ _G(flags)[V036] = 1;
+ digi_play("203R34", 1);
+ } else if (lookFlag && player_said("sign")) {
+ digi_play("203R55", 1);
+ } else if (lookFlag && player_said("pigeons")) {
+ digi_play("203R57", 1);
+ } else if (lookFlag && player_said("HERBAL SHOP")) {
+ digi_play("203R11", 1);
+ } else if (lookFlag && player_said("OFFICIAL")) {
+ digi_play("203R13", 1);
+ } else if (lookFlag && player_said("ALLEY WALL")) {
+ if (_G(kernel).trigger != -1)
+ lookThroughHole("203r14", _G(kernel).trigger);
+ } else if (lookFlag && player_said("AWNING")) {
+ digi_play("203R16", 1);
+ } else if (lookFlag && player_said("WOODPILE")) {
+ digi_play("203R35", 1);
+ } else if (lookFlag && player_said("WINDOW")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ _G(flags)[V072] = _peasantMode;
+ disable_player_commands_and_fade_init(1);
+ break;
+ case 1:
+ _G(game).setRoom(202);
+ break;
+ default:
+ break;
+ }
+ } else if (lookFlag && player_said("DOOR")) {
+ digi_play("203R37", 1);
+
+ } else if (talkFlag && player_said("OLD LADY")) {
+ g_engine->camera_shift_xy(760, 0);
+ player_set_commands_allowed(false);
+ _flag2 = true;
+
+ if (_G(flags)[V060]) {
+ playSound("203r23", _G(kernel).trigger);
+ } else {
+ _ripleyMode = 1002;
+ _ripleyShould = 1110;
+ _trigger3 = 153;
+ }
+ } else if (talkFlag && player_said("PEASANT")) {
+ ws_hide_walker();
+ player_set_commands_allowed(false);
+ player_update_info();
+ _ripsh1 = series_place_sprite("ripsh1", 0, _G(player_info).x, _G(player_info).y,
+ _G(player_info).scale, 0x500);
+ _peskyBegLoop = series_load("pesky beg loop");
+ _ripHandsBehBack = series_load("rip trek hands beh back pos1");
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+ _G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x400, 0,
+ triggerMachineByHashCallback, "rip in conv");
+ _ripleyMode = 1001;
+ _ripleyShould = 1010;
+ sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 1, 11, 150,
+ _ripHandsBehBack, 11, 11, 0);
+
+ _G(kernel).trigger_mode = KT_PARSE;
+ _peasantMode2 = _peasantMode;
+ _peasantMode = 4055;
+ } else if (talkFlag && player_said("OFFICIAL")) {
+ player_set_commands_allowed(false);
+ _G(flags)[V073] = 1;
+ _trigger4 = -1;
+ _G(kernel).trigger_mode = KT_DAEMON;
+
+ if (_G(flags)[V071]) {
+ _ripleyMode = 1003;
+ _ripleyShould = 1210;
+ kernel_trigger_dispatchx(kernel_trigger_create(150));
+ _G(kernel).trigger_mode = KT_PARSE;
+ } else {
+ _officialMode = 2001;
+ _officialShould = 2020;
+ }
+ } else if (talkFlag && player_said("GATEKEEPER")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+
+ if (_G(flags)[V069]) {
+ kernel_trigger_dispatchx(kernel_trigger_create(1));
+ } else {
+ _G(flags)[V069] = 1;
+ digi_play("203r17", 1, 255, 1);
+ }
+ break;
+ case 1:
+ _gkMayNotPass = series_load("gk may not pass");
+ _gkMode = 3004;
+ _digiName1 = "203g02";
+ _digiTrigger1 = -1;
+ _trigger1 = kernel_trigger_create(2);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_trigger_dispatchx(kernel_trigger_create(125));
+ _G(kernel).trigger_mode = KT_PARSE;
+ break;
+ case 2:
+ series_unload(_gkMayNotPass);
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+
+ } else if (takeFlag && player_said("SOLDIER'S HELMET ")) {
+ digi_play("203R39", 1);
+ } else if (takeFlag && HERE("SOLDIER'S HELMET")) {
+ if (!_G(flags)[V061]) {
+ player_set_commands_allowed(false);
+ playSound("203r58", _G(kernel).trigger);
+ }
+ } else if (takeFlag && player_said("pigeons")) {
+ digi_play("203R62", 1);
+ } else if (player_said("SOLDIER'S HELMET", "tree") && inv_player_has("SOLDIER'S HELMET")) {
+ digi_play("203r60", 1);
+ } else if (player_said("BUCKET", "BASKET") && inv_player_has("BUCKET")) {
+ digi_play("203r61", 1);
+ } else if (takeFlag && player_said("WOODPILE")) {
+ digi_play("207R40", 1);
+ } else if (takeFlag && player_said("BASKET")) {
+ lookAtHeads("203r38", _G(kernel).trigger);
+ } else if (player_said("US DOLLARS", "PEASANT") && inv_player_has("US DOLLARS")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _peskyAction = series_load("rip trek med reach hand pos1");
+ setGlobals1(_peskyAction, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(1);
+ break;
+ case 1:
+ if (_G(flags)[V075]) {
+ digi_play("203r40b", 1, 255, 2);
+ } else {
+ digi_play("203r40a", 1, 255, 2);
+ _G(flags)[V075] = 1;
+ }
+ break;
+ case 2:
+ sendWSMessage_120000(3);
+ break;
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+ case 4:
+ series_unload(_peskyAction);
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("CHINESE YUAN", "PEASANT") && inv_player_has("CHINESE YUAN")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _peskyBegLoop = series_load("pesky beg loop");
+ _peasantMode2 = _peasantMode;
+ _peasantMode = 4055;
+ _peskyAction = series_load("rip trek med reach hand pos1");
+ setGlobals1(_peskyAction, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(1);
+ break;
+ case 1:
+ _peasantMode = 4056;
+ digi_play("203p01", 1, 255, 2);
+ break;
+ case 2:
+ _peasantMode = 4058;
+ sendWSMessage_120000(3);
+ break;
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+ case 4:
+ series_unload(_peskyAction);
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("OFFICIAL") && (HAS("US DOLLARS") || HAS("CHINESE YUAN"))) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _ripHandTalk = series_load("rip trek hand talk pos3");
+ setGlobals1(_ripHandTalk, 1, 4, 4, 4, 0, 4, 1, 1, 1);
+ sendWSMessage_110000(4);
+ break;
+ case 4:
+ _officialMode = 2001;
+ _officialShould = 2040;
+ _digiName3 = "203O02";
+ _digiTrigger3 = -1;
+ _trigger4 = kernel_trigger_create(5);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_trigger_dispatchx(kernel_trigger_create(140));
+ _G(kernel).trigger_mode = KT_PARSE;
+ break;
+ case 5:
+ sendWSMessage_120000(6);
+ break;
+ case 6:
+ sendWSMessage_150000(7);
+ break;
+ case 7:
+ series_unload(_ripHandTalk);
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("SEVEN SPOKES", "ALLEY WALL") && inv_player_has("SEVEN SPOKES")) {
+ if (_G(flags)[V061]) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ ws_hide_walker();
+ _ripley = series_stream("climbs wall", 5, 3584, -1);
+ series_stream_break_on_frame(_ripley, 21, 203);
+ break;
+ case 202:
+ inv_move_object("SEVEN SPOKES", 999);
+ _G(game).setRoom(204);
+ break;
+ case 203:
+ digi_play("203_s06", 1, 100, -1);
+ series_stream_break_on_frame(_ripley, 49, 204);
+ break;
+ case 204:
+ series_stream_break_on_frame(_ripley, 63, 205);
+ break;
+ case 205:
+ series_stream_break_on_frame(_ripley, 74, 206);
+ digi_play("203_s06", 1, 100, -1);
+ break;
+ case 206:
+ series_stream_break_on_frame(_ripley, 121, 207);
+ digi_play("203_s06", 1, 100, -1);
+ break;
+ case 207:
+ series_stream_break_on_frame(_ripley, 123, 8833);
+ digi_play("203_s06", 1, 100, -1);
+ break;
+ case 208:
+ series_stream_break_on_frame(_ripley, 202, 209);
+ digi_play("203_s06", 1, 100, -1);
+ break;
+ case 209:
+ digi_play("203_s06", 1, 100, -1);
+ series_stream_break_on_frame(_ripley, 315, 3333);
+ break;
+ case 3333:
+ disable_player_commands_and_fade_init(202);
+ break;
+ case 8833:
+ digi_play("203_s07", 1, 100, -1);
+ series_stream_break_on_frame(_ripley, 151, 208);
+ break;
+ default:
+ break;
+ }
+ } else {
+ player_set_commands_allowed(false);
+ _G(player).disable_hyperwalk = true;
+ _trigger2 = 90;
+ }
+ } else if (player_said("OLD LADY") && (HAS("US DOLLARS") || HAS("CHINESE YUAN"))) {
+ if (_G(flags)[V051] != 0 && _G(flags)[V060] == 0) {
+ _trigger3 = 40;
+ player_set_commands_allowed(false);
+ } else {
+ playSound("203r19", _G(kernel).trigger);
+ }
+ } else if (player_said("RIPLEY PHOTO", "OLD LADY") && inv_player_has("RIPLEY PHOTO")) {
+ player_set_commands_allowed(false);
+ _flag2 = true;
+ g_engine->camera_shift_xy(760, 0);
+ _trigger3 = 60;
+ } else if (player_said("SOLDIER'S HELMET", "AWNING") && inv_player_has("SOLDIER'S HELMET")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ _G(flags)[V061] = 1;
+ ws_hide_walker();
+ player_set_commands_allowed(false);
+ hotspot_set_active("SOLDIER'S HELMET ", true);
+ series_load("one frame helmet");
+ _ripTossesHelmet = series_load("rip tosses helmet");
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 960, -53, 100, 0x100, 0,
+ triggerMachineByHashCallback, "rip throws helmet");
+ sendWSMessage_10000(1, _ripley, _ripTossesHelmet, 1, 33, 2, _ripTossesHelmet, 33, 33, 0);
+ break;
+ case 2:
+ digi_play("203_s03", 1);
+ sendWSMessage_10000(1, _ripley, _ripTossesHelmet, 33, 42, 3, _ripTossesHelmet, 42, 42, 0);
+ break;
+ case 3:
+ setupHelmetHotspot();
+ terminateMachineAndNull(_ripley);
+ series_unload(_ripTossesHelmet);
+ series_place_sprite("one frame helmet", 0, 960, -53, 100, 0x700);
+ ws_unhide_walker();
+ kernel_timing_trigger(3, 4);
+ break;
+ case 4:
+ inv_move_object("SOLDIER'S HELMET", 203);
+ player_update_info();
+ ws_walk(_G(player_info).x + 65, _G(player_info).y + 10, nullptr, -1, 10);
+ _val1 = 1;
+ if (_peasantMode == 4050) {
+ _peasantMode = 4050;
+ _peasantShould = 4094;
+ } else {
+ _val5 = 4146;
+ }
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("BUCKET", "AWNING") && inv_player_has("BUCKET")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ ws_hide_walker();
+ player_set_commands_allowed(false);
+ _ripTossesBucket = series_load("rip tosses bucket");
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 960, -53, 100, 0x100, false,
+ triggerMachineByHashCallback, "rip throws bucket");
+ sendWSMessage_10000(1, _ripley, _ripTossesBucket, 1, 47, 1,
+ _ripTossesBucket, 47, 47, 0);
+ case 1:
+ terminateMachineAndNull(_ripley);
+ ws_unhide_walker();
+ series_unload(_ripTossesBucket);
+ _oneFrameBucket = series_load("one frame bucket");
+ series_place_sprite("one frame bucket", 0, 960, -53, 100, 0x700);
+
+ if (_peasantShould == 4150 || _peasantShould == 4151)
+ player_set_commands_allowed(true);
+ else
+ _peasantShould = 4146;
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("GATEKEEPER") && (HAS("US DOLLARS") || HAS("CHINESE YUAN"))) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _gkMayNotPass = series_load("gk may not pass");
+ _peskyAction = series_load("rip trek med reach hand pos1");
+ setGlobals1(_peskyAction, 1, 10, 10, 10, 1, 10, 1, 1, 1, 1);
+ sendWSMessage_110000(1);
+ break;
+ case 1:
+ _gkMode = 3004;
+ _digiName1 = nullptr;
+ _digiTrigger1 = -1;
+ _trigger1 = kernel_trigger_create(2);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_trigger_dispatchx(kernel_trigger_create(125));
+ _G(kernel).trigger_mode = KT_PARSE;
+ break;
+ case 2:
+ sendWSMessage_120000(3);
+ break;
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+ case 4:
+ series_unload(_peskyAction);
+ series_unload(_gkMayNotPass);
+ player_set_commands_allowed(true);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("SOLDIER'S HELMET", "PEASANT")) {
+ digi_play("203r64", 1);
+ } else if (player_said("journal") && !takeFlag && !lookFlag && !inv_player_has(_G(player).noun)) {
+ if (_G(flags)[kChinshiCartoon] == 1) {
+ digi_play("203r54", 1);
+ } else {
+ if (_G(kernel).trigger == 6) {
+ _G(flags)[V089] = 1;
+ _G(flags)[kChinshiCartoon] = 1;
+ }
+
+ sendWSMessage_multi("203r53");
+ }
+ } else if (lookFlag && inv_player_has(_G(player).noun)) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (_G(flags)[V050]) {
+ digi_play("203R36A", 1);
+ } else {
+ _G(flags)[V050] = 1;
+ player_set_commands_allowed(false);
+ _flag2 = true;
+ digi_play("203R36", 1, 255, 1);
+ }
+ break;
+ case 1:
+ _flag2 = false;
+ player_set_commands_allowed(true);
+ digi_play("203R36A", 1);
+ break;
+
+ default:
+ break;
+ }
+ } else {
+ return;
+ }
+
+ _G(player).command_ready = false;
+}
void Room203::setupHelmetHotspot() {
for (HotSpotRec *hs = _G(currentSceneDef).hotspots; hs; hs = hs->next) {
@@ -2763,6 +3320,182 @@ void Room203::peasantAnim2() {
_peasantRocksShadow, 1, 1, 0);
}
+void Room203::conv203c() {
+ const char *sound = conv_sound_to_play();
+ int who = conv_whos_talking();
+ int node = conv_current_node();
+ int entry = conv_current_entry();
+
+ if (sound) {
+ digi_play(sound, 1, 255, (node == 3 && entry == 0 && who == 0) ? -1 : 1);
+
+ if (who <= 0) {
+ _officialShould = (node == 3 && entry == 0) ? 2014 : 2013;
+ } else if (who == 1) {
+ _ripleyShould = (node == 1 && entry == 0) ? 1221 : 1220;
+ }
+ } else {
+ conv_resume();
+ }
+}
+
+void Room203::conv203d() {
+ const char *sound = conv_sound_to_play();
+ int who = conv_whos_talking();
+
+ if (_G(kernel).trigger == 1) {
+ if (who <= 0)
+ _peasantMode = 4057;
+ else if (who == 1)
+ _ripleyShould = 1030;
+ conv_resume();
+
+ } else {
+ if (who <= 0)
+ _peasantMode = 4056;
+ else if (who == 1)
+ _ripleyShould = 1020;
+
+ if (sound)
+ digi_play(sound, 1, 255, 1);
+ else
+ conv_resume();
+ }
+}
+
+void Room203::conv203e() {
+ const char *sound = conv_sound_to_play();
+ int who = conv_whos_talking();
+ int node = conv_current_node();
+ int entry = conv_current_entry();
+
+ if (_G(kernel).trigger == 1) {
+ if (who == 1)
+ _ripleyShould = 1130;
+
+ conv_resume();
+ } else {
+ if (who <= 0) {
+ _oldLadyShould = 5302;
+ } else if (who == 1) {
+ if (node == 1 && entry == 3) {
+ _digiName2 = sound;
+ _ripleyShould = 1121;
+ } else {
+ _unkShould = 1120;
+ _ripleyShould = 1120;
+ }
+ }
+
+ if (!sound) {
+ conv_resume();
+ } else if (node != 1 || entry != 3) {
+ digi_play(sound, 1, 255, 1);
+ }
+ }
+}
+
+void Room203::playSound(const char *digiName, int trigger) {
+ switch (trigger) {
+ case -1:
+ _flag2 = true;
+ player_set_commands_allowed(false);
+ _ripLookDown = series_load("rip trek look down pos3");
+ setGlobals1(_ripLookDown, 1, 3, 3, 3, 0, 3, 1, 1, 1);
+ sendWSMessage_110000(210);
+ break;
+
+ case 210:
+ digi_play(digiName, 1, 255, 211);
+ break;
+
+ case 211:
+ sendWSMessage_120000(212);
+ break;
+
+ case 212:
+ sendWSMessage_150000(213);
+ break;
+
+ case 213:
+ series_unload(_ripLookDown);
+ _flag2 = false;
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room203::lookThroughHole(const char *digiName, int trigger) {
+ switch (trigger) {
+ case 230:
+ player_set_commands_allowed(false);
+ _ripLooksThroughHole = series_load("rip looks through hole pos1");
+ setGlobals1(_ripLooksThroughHole, 1, 12, 12, 12, 1, 12, 1, 1, 1);
+ sendWSMessage_110000(231);
+ break;
+
+ case 231:
+ if (digiName)
+ digi_play(digiName, 1, 255, 232);
+ else
+ kernel_timing_trigger(40, 232);
+ break;
+
+ case 232:
+ sendWSMessage_120000(233);
+ break;
+
+ case 233:
+ sendWSMessage_150000(234);
+ break;
+
+ case 234:
+ series_unload(_ripLooksThroughHole);
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room203::lookAtHeads(const char *digiName, int trigger) {
+ switch (trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei");
+ setGlobals1(_ripLookAtHeadsTalkMei, 11, 16, 16, 16, 1, 16, 11, 11, 11);
+ sendWSMessage_110000(220);
+ break;
+
+ case 220:
+ if (digiName)
+ digi_play(digiName, 1, 255, 221);
+ else
+ kernel_timing_trigger(40, 221);
+ break;
+
+ case 221:
+ sendWSMessage_120000(222);
+ break;
+
+ case 222:
+ sendWSMessage_150000(223);
+ break;
+
+ case 223:
+ series_unload(_ripLookAtHeadsTalkMei);
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section2/room203.h b/engines/m4/riddle/rooms/section2/room203.h
index cd5ad23b130..28fb309b690 100644
--- a/engines/m4/riddle/rooms/section2/room203.h
+++ b/engines/m4/riddle/rooms/section2/room203.h
@@ -40,7 +40,7 @@ private:
int _val11 = 0;
const char *_digiName1 = nullptr;
int _digiTrigger1 = 0;
- const char *_digiName2 = nullptr;
+ Common::String _digiName2;
const char *_digiName3 = nullptr;
int _digiTrigger3 = -1;
int _trigger1 = -1;
@@ -65,6 +65,11 @@ private:
int _ripTalker = 0;
int _ripArmsX = 0;
int _ripHeadDownTalkOff = 0;
+ int _ripLookDown = 0;
+ int _ripTugsAtCollar = 0;
+ int _ripLooksThroughHole = 0;
+ int _ripTossesHelmet = 0;
+ int _ripTossesBucket = 0;
machine *_ripsh1 = nullptr;
machine *_mei = nullptr;
int _meiTalkToRip = 0;
@@ -111,6 +116,7 @@ private:
int _peasantRocksShadow = 0;
int _peskyYellsThief = 0;
int _peskyBegLoop = 0;
+ int _peskyAction = 0;
int _peasantMode = 0, _peasantShould = 0;
int _peasantMode2 = 0;
int _peasantX = 0;
@@ -129,6 +135,7 @@ private:
machine *_g2 = nullptr;
int _ripleyMode = 0;
int _unkShould = 0;
+ int _oneFrameBucket = 0;
int _ctr1 = 0;
@@ -142,6 +149,12 @@ private:
void peasantWalk();
void peasantAnim1();
void peasantAnim2();
+ void conv203c();
+ void conv203d();
+ void conv203e();
+ void playSound(const char *digiName, int trigger);
+ void lookThroughHole(const char *digiName, int trigger);
+ void lookAtHeads(const char *digiName, int trigger);
public:
Room203() : Section2Room() {}
More information about the Scummvm-git-logs
mailing list