[Scummvm-git-logs] scummvm master -> 54696e2195448d1ef327ddfc539e47aab94f45f5
Strangerke
noreply at scummvm.org
Thu Feb 6 09:56:42 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:
54696e2195 M4: RIDDLE: Even more work on Room809::parser
Commit: 54696e2195448d1ef327ddfc539e47aab94f45f5
https://github.com/scummvm/scummvm/commit/54696e2195448d1ef327ddfc539e47aab94f45f5
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2025-02-06T10:56:23+01:00
Commit Message:
M4: RIDDLE: Even more work on Room809::parser
Changed paths:
engines/m4/riddle/rooms/section8/room809.cpp
diff --git a/engines/m4/riddle/rooms/section8/room809.cpp b/engines/m4/riddle/rooms/section8/room809.cpp
index f543091f691..07df3fbb02d 100644
--- a/engines/m4/riddle/rooms/section8/room809.cpp
+++ b/engines/m4/riddle/rooms/section8/room809.cpp
@@ -162,6 +162,8 @@ void Room809::parser() {
return;
}
+ int32 eax = -1;
+
switch (_G(kernel).trigger) {
case -1:
if (check_said()) {
@@ -210,7 +212,100 @@ void Room809::parser() {
break;
case 1:
- //TODO Not implemented yet
+ player_update_info(_mcTrekMach, &_G(player_info));
+ if (_G(player_info).x < 1340 && -_G(game_buff_ptr)->x1 < 1259) {
+ g_engine->camera_shift_xy(1259, 0);
+ }
+
+ if (player_said_any("look", "look at"))
+ eax = 1;
+ else if (player_said_any("gear", "use"))
+ eax = 0;
+ else if (player_said("take"))
+ eax = 2;
+ else if (player_said("talk to"))
+ eax = 3;
+ else if (player_said_any("walk to", "spleen", "walk"))
+ eax = 5;
+ else if (player_said("journal"))
+ eax = 4;
+ else if (player_said("go"))
+ eax = 6;
+
+ switch (eax) {
+ case 1:
+ if (player_said(" ")) {
+ digi_play("809r02", 1, 255, -1, -1);
+ } else if (player_said("mountains")) {
+ digi_play("809r34", 1, 255, -1, -1);
+ } else if (player_said("diorama")) {
+ digi_play("809r02", 1, 255, -1, -1);
+ } else if (player_said("lake")) {
+ digi_play("809r03", 1, 255, -1, -1);
+ } else if (player_said("mausoleum")) {
+ digi_play("809r04", 1, 255, -1, -1);
+ } else if (player_said("river")) {
+ digi_play("809r05", 1, 255, -1, -1);
+ } else if (player_said("buildings")) {
+ digi_play("809r06", 1, 255, -1, -1);
+ } else if (player_said("dragon head")) {
+ digi_play("809r07", 1, 255, _G(flags[V101]) ? 39 : -1, -1);
+ } else if (player_said("soldier ")) {
+ digi_play("809r08", 1, 255, -1, -1);
+ } else if (player_said("lit urn")) {
+ digi_play("com060", 1, 255, -1, 997);
+ } else if (player_said("unlit urn")) {
+ digi_play("com061", 1, 255, -1, 997);
+ } else if (player_said("urn")) {
+ digi_play("809r33", 1, 255, -1, -1);
+ } else if (player_said("weir")) {
+ digi_play("809r10", 1, 255, -1, -1);
+ } else if (player_said("gate")) {
+ digi_play("809r09", 1, 255, -1, -1);
+ } else if (player_said_any("mei chen", "mei chen ", "mei chen ") || (player_said("mei chen ") && !inv_object_in_scene("two soldiers' shields", 809))) {
+ kernel_trigger_dispatchx(kernel_trigger_create(40));
+ } else if (player_said("mei chen ")) {
+ digi_play("809r11", 1, 255, -1, -1);
+ } else {
+ _G(player).command_ready = true;
+ }
+ break;
+
+ case 2:
+ _G(player).command_ready = true;
+ break;
+
+ case 3:
+ //TODO Not implemented yet
+ break;
+
+ case 4:
+ digi_play("809r32", 1, 255, -1, -1);
+ break;
+
+ case 5:
+ if (inv_object_in_scene("two soldiers' shields", 809)) {
+ player_set_commands_allowed(false);
+ inv_give_to_player("two soldiers' shields");
+ terminateMachine(_809rp01Mach);
+ _809rp01Mach = series_plain_play("809rp01", 1, 2, 100, 0, 5, 52, true);
+ }
+
+ break;
+ case 6:
+ if (player_said("east")) {
+ kernel_trigger_dispatchx(kernel_trigger_create(53));
+ } else if (player_said("east")) {
+ kernel_trigger_dispatchx(kernel_trigger_create(65));
+ }
+
+ break;
+
+ case 0:
+ default:
+ //TODO Not implemented yet
+ break;
+ }
break;
case 39:
@@ -245,7 +340,28 @@ void Room809::parser() {
break;
case 42:
- //TODO Not implemented yet
+ player_set_commands_allowed(false);
+ setGlobals1(_ripTalkerPos5Series, 1, 4, 1, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0);
+ sendWSMessage_110000(_G(my_walker), -1);
+ switch (imath_ranged_rand(1, 4)) {
+ case 1:
+ digi_play("com034", 1, 255, 43, 997);
+ break;
+
+ case 2:
+ digi_play("com035", 1, 255, 43, 997);
+ break;
+
+ case 3:
+ digi_play("com036", 1, 255, 43, 997);
+ break;
+
+ case 4:
+ default:
+ digi_play("com037", 1, 255, 43, 997);
+ break;
+ }
+
break;
case 43:
@@ -273,7 +389,16 @@ void Room809::parser() {
break;
case 44:
- //TODO Not implemented yet
+ player_set_commands_allowed(false);
+ _G(flags[V103]) = 1;
+ if (-_G(game_buff_ptr)->x1 < 1259) {
+ g_engine->camera_shift_xy(1259, 0);
+ }
+
+ ws_hide_walker(_G(my_walker));
+ _809hallSeries = series_load("809rp03", -1, nullptr);
+ series_play("809rp03", 0, 0, 45, 5, 0, 100, 0, 0, 0, 104);
+
break;
case 45:
@@ -297,9 +422,17 @@ void Room809::parser() {
break;
case 48:
- //TODO Not implemented yet
+ player_set_commands_allowed(false);
+ if (-_G(game_buff_ptr)->x1 < 1259) {
+ g_engine->camera_shift_xy(1259, 0);
+ }
+
+ ws_hide_walker(_G(my_walker));
+ series_play("809rp01", 256, 0, 49, 5, 0, 100, 0, 0, 0, 169);
+
break;
+
case 49:
_809rp01Mach = series_play("809rp01", 256, 16, 50, 5, 0, 100, 0, 0, 170, -1);
digi_play("809_s06", 2, 255, -1, -1);
More information about the Scummvm-git-logs
mailing list