[Scummvm-git-logs] scummvm master -> c585ffb34f5b658c605a7a3aa447a099add05267
Strangerke
noreply at scummvm.org
Thu Jan 30 07:58:04 UTC 2025
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:
c585ffb34f M4: RIDDLE: Recover work on the hardcoded logic of room 808, fix a bug in pre_parser
Commit: c585ffb34f5b658c605a7a3aa447a099add05267
https://github.com/scummvm/scummvm/commit/c585ffb34f5b658c605a7a3aa447a099add05267
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-01-30T08:56:58+01:00
Commit Message:
M4: RIDDLE: Recover work on the hardcoded logic of room 808, fix a bug in pre_parser
Changed paths:
engines/m4/riddle/flags.h
engines/m4/riddle/rooms/section8/room808.cpp
diff --git a/engines/m4/riddle/flags.h b/engines/m4/riddle/flags.h
index 240f100eede..781d3d18b94 100644
--- a/engines/m4/riddle/flags.h
+++ b/engines/m4/riddle/flags.h
@@ -311,8 +311,8 @@ enum Flag {
V274 = 274,
V275 = 275,
V276 = 276,
- V277 = 277,
- V278 = 278,
+ V277 = 277, // look at "hole in chasm wall", 808 -> 1 when animation displayed once
+ V278 = 278, // look at "hole in bridge", 808 -> 1 when animation displayed once
V279 = 279,
V280 = 280,
V281 = 281,
diff --git a/engines/m4/riddle/rooms/section8/room808.cpp b/engines/m4/riddle/rooms/section8/room808.cpp
index ec236867d0d..9d5f68d6f76 100644
--- a/engines/m4/riddle/rooms/section8/room808.cpp
+++ b/engines/m4/riddle/rooms/section8/room808.cpp
@@ -214,7 +214,7 @@ void Room808::pre_parser() {
_G(player).walk_x = 202;
_G(player).walk_y = 179;
_G(player).walk_facing = 2;
- } else if (player_said_any("mei chen", "east") || scumm_stricmp(_G(player).noun, "wheel") || scumm_stricmp(_G(player).noun, "bridge")) {
+ } else if (player_said_any("mei chen", "east") || !scumm_strnicmp(_G(player).noun, "wheel", 5) || !scumm_strnicmp(_G(player).noun, "bridge", 6)) {
_G(player).need_to_walk = false;
_G(player).ready_to_walk = true;
_G(player).waiting_for_walk = false;
@@ -489,6 +489,85 @@ void Room808::parser() {
break;
case 1:
+ if (player_said(" ")) {
+ digi_play("808r01", 1, 255, -1, -1);
+ } else if (!scumm_strnicmp(_G(player).noun, "wheel", 5) || !scumm_strnicmp(_G(player).noun, "bridge", 6)) {
+ switch (_G(kernel).trigger) {
+ // TODO Not implemented
+ default:
+ break;
+ }
+ } else if (!scumm_stricmp(_G(player).noun, "FARMER'S SHOVEL") && inv_object_in_scene("FARMER'S SHOVEL", 808)) {
+ // TODO Not implemented
+ } else if (player_said("chain")) {
+ digi_play("808r04", 1, 255, -1, -1);
+ } else if (player_said("slot")) {
+ digi_play("808r05", 1, 255, -1, -1);
+ } else if (player_said("crank") && inv_object_in_scene("crank", 808)) {
+ digi_play("808r06", 1, 255, -1, -1);
+ } else if (player_said("lit urn")) {
+ digi_play("808r07", 1, 255, -1, -1);
+ } else if (player_said("unlit urn")) {
+ digi_play("com061", 1, 255, -1, 997);
+ } else if (player_said("soldier")) {
+ digi_play("808r09", 1, 255, -1, -1);
+ } else if (player_said ("broken feet")) {
+ digi_play("808r10", 1, 255, -1, -1);
+ } else if (player_said("large hole")) {
+ digi_play("808r11", 1, 255, -1, -1);
+ } else if (player_said_any("corridor", "east")) {
+ digi_play("808r12", 1, 255, -1, -1);
+ } else if (player_said("lower staircase")) {
+ digi_play("808r13", 1, 255, -1, -1);
+ } else if (player_said("chasm")) {
+ switch (_G(kernel).trigger) {
+ // TODO not implemented
+ default:
+ break;
+ }
+ } else if (player_said("hole in bridge")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (_G(flags[V278]) && _G(flags[V277]))
+ digi_play("808r16", 1, 255, -1, -1);
+ else {
+ _G(flags[V278]) = 1;
+ digi_play("808r15", 1, 255, _G(flags[V278]) ? 10 : -1, -1);
+ }
+ break;
+
+ case 10:
+ digi_play("808r15a", 1, 255, -1, -1);
+ break;
+
+ default:
+ break;
+ }
+ } else if (player_said("hole in chasm wall")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (_G(flags[V278]) && _G(flags[V277]))
+ digi_play("808r16", 1, 255, -1, -1);
+ else {
+ _G(flags[V277]) = 1;
+ digi_play("808r17", 1, 255, _G(flags[V278]) ? 10 : -1, -1);
+ }
+ break;
+
+ case 10:
+ digi_play("808r17a", 1, 255, -1, -1);
+ break;
+
+ default:
+ break;
+ }
+ } else if (player_said("mei chen")) {
+ digi_play("808r18", 1, 255, -1, -1);
+ } else
+ break;
+
+ return;
+
case 2:
case 3:
break;
More information about the Scummvm-git-logs
mailing list