[Scummvm-git-logs] scummvm master -> 75f315c1cd8f6c18a7782a499322083e1ecdddd6
dreammaster
noreply at scummvm.org
Sat Aug 31 23:05:43 UTC 2024
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
31b1dce9ad M4: RIDDLE: Room 408 init
75f315c1cd M4: RIDDLE: Added room 408 parser
Commit: 31b1dce9adacb6ccf010d2b27cabe80681fefe8a
https://github.com/scummvm/scummvm/commit/31b1dce9adacb6ccf010d2b27cabe80681fefe8a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-31T16:05:33-07:00
Commit Message:
M4: RIDDLE: Room 408 init
Changed paths:
engines/m4/graphics/gr_series.cpp
engines/m4/graphics/gr_series.h
engines/m4/riddle/rooms/room.cpp
engines/m4/riddle/rooms/room.h
engines/m4/riddle/rooms/section4/room406.cpp
engines/m4/riddle/rooms/section4/room406.h
engines/m4/riddle/rooms/section4/room407.cpp
engines/m4/riddle/rooms/section4/room407.h
engines/m4/riddle/rooms/section4/room408.cpp
engines/m4/riddle/rooms/section4/room408.h
diff --git a/engines/m4/graphics/gr_series.cpp b/engines/m4/graphics/gr_series.cpp
index e9874b6f1d2..796deb3e568 100644
--- a/engines/m4/graphics/gr_series.cpp
+++ b/engines/m4/graphics/gr_series.cpp
@@ -341,6 +341,14 @@ machine *series_play_xy(const char *seriesName, int loopCount, int flags,
scale, x, y);
}
+machine *series_simple_play(const char *seriesName, frac16 layer, bool stickWhenDone) {
+ int flags = 0;
+ if (stickWhenDone)
+ flags |= 0x10;
+
+ return series_play(seriesName, layer, flags);
+}
+
void series_stream_check_series(machine *m, int val) {
// TODO: series_stream_check_series
error("TODO: series_stream_check_series");
diff --git a/engines/m4/graphics/gr_series.h b/engines/m4/graphics/gr_series.h
index 0503bf2de9e..7dd9faa786f 100644
--- a/engines/m4/graphics/gr_series.h
+++ b/engines/m4/graphics/gr_series.h
@@ -100,7 +100,7 @@ machine *series_show_sprite(const char *seriesName, int32 index, int32 layer);
machine *series_play(const char *seriesName, frac16 layer, uint32 flags = 0,
int16 triggerNum = -1, int32 frameRate = 6, int32 loopCount = 0, int32 s = 100,
int32 x = 0, int32 y = 0, int32 firstFrame = 0, int32 lastFrame = -1);
-//machine *series_simple_play(char *seriesName, frac16 layer, bool stick_when_done);
+machine *series_simple_play(const char *seriesName, frac16 layer, bool stickWhenDone);
machine *series_show(const char *seriesName, frac16 layer, uint32 flags = 0,
int16 triggerNum = -1, int32 duration = -1, int32 index = 0, int32 s = 100,
diff --git a/engines/m4/riddle/rooms/room.cpp b/engines/m4/riddle/rooms/room.cpp
index 8e937b4e908..1807f5ed615 100644
--- a/engines/m4/riddle/rooms/room.cpp
+++ b/engines/m4/riddle/rooms/room.cpp
@@ -29,6 +29,12 @@ namespace Rooms {
int Room::_ripSketching;
+void Room::preload() {
+ _G(player).walker_type = 1;
+ _G(player).shadow_type = 1;
+ LoadWSAssets("OTHER SCRIPT");
+}
+
void Room::restoreAutosave() {
if (g_engine->autosaveExists()) {
_G(kernel).restore_slot = 0;
diff --git a/engines/m4/riddle/rooms/room.h b/engines/m4/riddle/rooms/room.h
index f610c2ddb4a..8bd5294b897 100644
--- a/engines/m4/riddle/rooms/room.h
+++ b/engines/m4/riddle/rooms/room.h
@@ -125,6 +125,8 @@ protected:
public:
Room() : M4::Room() {}
~Room() override {}
+
+ void preload();
};
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section4/room406.cpp b/engines/m4/riddle/rooms/section4/room406.cpp
index af4af7d2e43..8b85f614bac 100644
--- a/engines/m4/riddle/rooms/section4/room406.cpp
+++ b/engines/m4/riddle/rooms/section4/room406.cpp
@@ -46,12 +46,6 @@ static const char *const SAID[][2] = {
{ nullptr, nullptr }
};
-void Room406::preload() {
- _G(player).walker_type = 1;
- _G(player).shadow_type = 1;
- LoadWSAssets("OTHER SCRIPT");
-}
-
void Room406::init() {
player_set_commands_allowed(false);
diff --git a/engines/m4/riddle/rooms/section4/room406.h b/engines/m4/riddle/rooms/section4/room406.h
index 8a3512d6fb6..8cf53797fa0 100644
--- a/engines/m4/riddle/rooms/section4/room406.h
+++ b/engines/m4/riddle/rooms/section4/room406.h
@@ -70,7 +70,6 @@ public:
Room406() : Room() {}
~Room406() override {}
- void preload() override;
void init() override;
void daemon() override;
void pre_parser() override;
diff --git a/engines/m4/riddle/rooms/section4/room407.cpp b/engines/m4/riddle/rooms/section4/room407.cpp
index b57b8208938..24e8484263a 100644
--- a/engines/m4/riddle/rooms/section4/room407.cpp
+++ b/engines/m4/riddle/rooms/section4/room407.cpp
@@ -71,12 +71,6 @@ static const char *const SAID[][2] = {
{ nullptr, nullptr }
};
-void Room407::preload() {
- _G(player).walker_type = 1;
- _G(player).shadow_type = 1;
- LoadWSAssets("OTHER SCRIPT");
-}
-
void Room407::init() {
player_set_commands_allowed(false);
digi_preload("407_s31");
diff --git a/engines/m4/riddle/rooms/section4/room407.h b/engines/m4/riddle/rooms/section4/room407.h
index 00efed06c32..da444a1207d 100644
--- a/engines/m4/riddle/rooms/section4/room407.h
+++ b/engines/m4/riddle/rooms/section4/room407.h
@@ -254,7 +254,6 @@ public:
Room407() : Room() {}
~Room407() override {}
- void preload() override;
void init() override;
void daemon() override;
void pre_parser() override;
diff --git a/engines/m4/riddle/rooms/section4/room408.cpp b/engines/m4/riddle/rooms/section4/room408.cpp
index ba192ec27d1..44246802300 100644
--- a/engines/m4/riddle/rooms/section4/room408.cpp
+++ b/engines/m4/riddle/rooms/section4/room408.cpp
@@ -20,6 +20,7 @@
*/
#include "m4/riddle/rooms/section4/room408.h"
+#include "m4/riddle/rooms/section4/section4.h"
#include "m4/graphics/gr_series.h"
#include "m4/riddle/vars.h"
@@ -28,6 +29,157 @@ namespace Riddle {
namespace Rooms {
void Room408::init() {
+ player_set_commands_allowed(false);
+
+ if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
+ _val1 = 0;
+ _val2 = -1;
+ _val3 = 0;
+ _val4 = -1;
+ _val5 = -1;
+ _val6 = 0;
+ _val7 = 0;
+ _val8 = 0;
+ _val9 = 0;
+ }
+
+ digi_preload("950_s19");
+ digi_preload("950_s20");
+ digi_preload("950_s21");
+ hotspot_set_active("WOLF", false);
+ hotspot_set_active("PLANK", false);
+ hotspot_set_active("EDGER", false);
+ _exit = series_show("RIP EXITS 407", 0xf00, 16);
+
+ if (_G(flags)[V139] == 1) {
+ _G(flags)[V139] = 0;
+ _edger = series_place_sprite("Edger gone", 0, 0, -53, 100, 0xf00);
+ hotspot_set_active("EDGER", true);
+ inv_move_object("EDGER", 408);
+ ws_demand_location(234, 319, 3);
+ ws_walk(438, 325, nullptr, 400, 1);
+
+ } else if (_G(flags)[V139] == 3) {
+ _G(flags)[V139] = 0;
+
+ if (inv_object_is_here("PLANK")) {
+ _plank = series_place_sprite("Plank gone", 0, 0, 0, 100, 0xf00);
+ hotspot_set_active("PLANK", true);
+ }
+
+ ws_demand_location(-20, 345, 3);
+ ws_walk(234, 319, nullptr, 420, 1);
+
+ } else {
+ if (inv_player_has("TURTLE") && !inv_player_has("EDGER") &&
+ !_G(flags)[GLB_TEMP_12]) {
+ _edger = series_place_sprite("Edger gone", 0, 0, -53, 100, 0xf00);
+ hotspot_set_active("EDGER", true);
+ }
+
+ if (inv_player_has("TURTLE") && !inv_player_has("PLANK") &&
+ !_G(flags)[GLB_TEMP_12] && inv_object_is_here("PLANK")) {
+ _plank = series_place_sprite("Plank gone", 0, 0, 0, 100, 0xf00);
+ hotspot_set_active("PLANK", true);
+ }
+
+ switch (_G(game).previous_room) {
+ case KERNEL_RESTORING_GAME:
+ digi_preload("950_s22");
+
+ if (_G(flags)[V131] == 400) {
+ hotspot_set_active("WOLF", true);
+ _val8 = 2001;
+ _val9 = 2200;
+ _wolf = series_load("WOLF CLPNG LOOP LOOKS TO SIDE");
+ _wolfie = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xd00, 0,
+ triggerMachineByHashCallbackNegative, "WOLFIE");
+ sendWSMessage_10000(1, _wolfie, _wolf, 1, 10, 110, _wolf, 10, 10, 0);
+ }
+
+ player_set_commands_allowed(true);
+ break;
+
+ case 402:
+ if (_G(flags)[V132]) {
+ ws_hide_walker();
+ ws_walk_load_shadow_series(S4_SHADOW_DIRS, S4_SHADOW_NAMES);
+ ws_walk_load_walker_series(S4_NORMAL_DIRS, S4_NORMAL_NAMES);
+ kernel_timing_trigger(1, 300);
+ } else {
+ if (_G(flags)[V131] == 408) {
+ hotspot_set_active("WOLF", true);
+ _wolf = series_load("WOLF CLPNG LOOP LOOKS TO SIDE");
+ _wolfie = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xd00, 0,
+ triggerMachineByHashCallbackNegative, "WOLFIE");
+ sendWSMessage_10000(1, _wolfie, _wolf, 1, 10, 110, _wolf, 10, 10, 0);
+ _val8 = 2001;
+ _val9 = 2200;
+ }
+
+ ws_demand_location(-20, 345, 3);
+ ws_walk(35, 345, nullptr, 20, 3);
+ }
+ break;
+
+ case 407:
+ digi_preload("950_s22");
+ terminateMachineAndNull(_exit);
+
+ if (_G(flags)[GLB_TEMP_12]) {
+ _G(flags)[V131] = 999;
+ } else if (inv_player_has("TURTLE")) {
+ _G(flags)[V131] = 402;
+ _G(flags)[V117] = 1;
+ } else if (_G(flags)[V124]) {
+ _G(flags)[V131] = 402;
+ } else {
+ _G(flags)[V131] = 403;
+ }
+
+ _ripExits = series_load("RIP EXITS 407");
+ ws_demand_location(201, 287, 4);
+ ws_hide_walker();
+
+ _exit = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, 0,
+ triggerMachineByHashCallbackNegative, "RIP ENTERS from GIZMO");
+ sendWSMessage_10000(1, _exit, _ripExits, 1, 75, 40, _ripExists, 75, 75, 0);
+ digi_play("408_s01", 2);
+ break;
+
+ default:
+ digi_preload("950_s22");
+
+ if (_G(flags)[V117] && _G(flags)[V125] == 3 &&
+ !_G(flags)[GLB_TEMP_12] && !inv_player_has("EDGER") &&
+ !inv_player_has("PLANK")) {
+ _G(flags)[V131] = 408;
+ _G(flags)[V117] = 0;
+ }
+
+ if (_G(flags)[V131] == 408) {
+ hotspot_set_active("WOLF", true);
+ _wolf = series_load("WOLF CLPNG LOOP LOOKS TO SIDE");
+ _wolfie = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, -53, 100, 0xd00, 0,
+ triggerMachineByHashCallbackNegative, "WOLFIE");
+ sendWSMessage_10000(1, _wolfie, _wolf, 1, 10, 110, _wolf, 10, 10, 0);
+ _val8 = 2001;
+ _val9 = 2200;
+ }
+
+ ws_demand_location(660, 345, 9);
+
+ if (_G(flags)[V125] == 3) {
+ series_simple_play("408 turtle popup", 0, true);
+ ws_walk(438, 325, nullptr, 350, 1);
+ } else {
+ ws_walk(615, 345, nullptr, 30, 9);
+ }
+ break;
+ }
+ }
+
+ digi_play_loop("950_s22", 3, 120, -1, 950);
}
void Room408::daemon() {
diff --git a/engines/m4/riddle/rooms/section4/room408.h b/engines/m4/riddle/rooms/section4/room408.h
index 2207625e47b..d5a867c15a5 100644
--- a/engines/m4/riddle/rooms/section4/room408.h
+++ b/engines/m4/riddle/rooms/section4/room408.h
@@ -29,12 +29,31 @@ namespace Riddle {
namespace Rooms {
class Room408 : public Room {
+private:
+ int _val1 = 0;
+ int _val2 = 0;
+ int _val3 = 0;
+ int _val4 = 0;
+ int _val5 = 0;
+ int _val6 = 0;
+ int _val7 = 0;
+ int _val8 = 0;
+ int _val9 = 0;
+ machine *_exit = nullptr;
+ int _ripExits = 0;
+ machine *_edger = nullptr;
+ machine *_plank = nullptr;
+ int _wolf = 0;
+ machine *_wolfie = nullptr;
+
public:
Room408() : Room() {}
~Room408() override {}
void init() override;
void daemon() override;
+ void pre_parser() override;
+ void parser() override;
};
} // namespace Rooms
Commit: 75f315c1cd8f6c18a7782a499322083e1ecdddd6
https://github.com/scummvm/scummvm/commit/75f315c1cd8f6c18a7782a499322083e1ecdddd6
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-08-31T16:05:33-07:00
Commit Message:
M4: RIDDLE: Added room 408 parser
Changed paths:
engines/m4/riddle/rooms/section4/room408.cpp
engines/m4/riddle/rooms/section4/room408.h
diff --git a/engines/m4/riddle/rooms/section4/room408.cpp b/engines/m4/riddle/rooms/section4/room408.cpp
index 44246802300..f204009b1e2 100644
--- a/engines/m4/riddle/rooms/section4/room408.cpp
+++ b/engines/m4/riddle/rooms/section4/room408.cpp
@@ -36,7 +36,7 @@ void Room408::init() {
_val2 = -1;
_val3 = 0;
_val4 = -1;
- _val5 = -1;
+ _currentNode = -1;
_val6 = 0;
_val7 = 0;
_val8 = 0;
@@ -143,7 +143,7 @@ void Room408::init() {
_exit = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0, 0,
triggerMachineByHashCallbackNegative, "RIP ENTERS from GIZMO");
- sendWSMessage_10000(1, _exit, _ripExits, 1, 75, 40, _ripExists, 75, 75, 0);
+ sendWSMessage_10000(1, _exit, _ripExits, 1, 75, 40, _ripExits, 75, 75, 0);
digi_play("408_s01", 2);
break;
@@ -185,6 +185,296 @@ void Room408::init() {
void Room408::daemon() {
}
+void Room408::pre_parser() {
+ bool takeFlag = player_said("take");
+ bool lookFlag = player_said_any("look", "look at");
+ bool enterFlag = player_said("enter");
+
+ if (lookFlag && player_said(" "))
+ _G(player).resetWalk();
+
+ if (enterFlag && player_said("GRAVEYARD"))
+ _G(player).resetWalk();
+
+ if (player_said("journal") && !takeFlag && !lookFlag &&
+ _G(kernel).trigger == -1)
+ _G(player).resetWalk();
+}
+
+void Room408::parser() {
+ bool lookFlag = player_said_any("look", "look at");
+ bool talkFlag = player_said("talk", "talk to");
+ bool takeFlag = player_said("take");
+ bool enterFlag = player_said("enter");
+ bool useFlag = player_said_any("push", "pull", "gear", "open", "close");
+
+ if (player_said("conv408a")) {
+ if (_G(kernel).trigger == -1) {
+ _val7 = 1103;
+ _val9 = 2102;
+ conv_resume();
+ } else {
+ conv408a();
+ }
+ } else if (talkFlag && player_said("WOLF")) {
+ player_set_commands_allowed(false);
+ _val4 = -1;
+ _val6 = 1000;
+ _val7 = 1100;
+ kernel_timing_trigger(1, 102, KT_DAEMON, KT_PARSE);
+ } else if (lookFlag && player_said("WINDOW")) {
+ digi_play("408r03", 1);
+ } else if (lookFlag && player_said("CASTLE")) {
+ digi_play("408r01", 1);
+ } else if (lookFlag && player_said("TOPIARY")) {
+ digi_play("408r02", 1);
+ } else if (lookFlag && player_said("SUNDIAL")) {
+ digi_play(player_been_here(408) ? "408r32" : "408r04", 1);
+ } else if (lookFlag && player_said_any("BUSH", "BUSH ")) {
+ digi_play("408r05", 1);
+ } else if (lookFlag && player_said("PLANK") && inv_object_is_here("PLANK")) {
+ digi_play("408r20", 1);
+ } else if (lookFlag && player_said("EDGER") && inv_object_is_here("EDGER")) {
+ digi_play("408r35", 1);
+ } else if (lookFlag && player_said("WOLF")) {
+ digi_play("408r21", 1);
+ } else if (takeFlag && player_said("TOPIARY")) {
+ digi_play("408r06", 1);
+ } else if (takeFlag && player_said("SUNDIAL")) {
+ digi_play("408r08", 1);
+ } else if (takeFlag && player_said("PLANK") && takePlank()) {
+ // No implementation
+ } else if (takeFlag && player_said("EDGER") && takeEdger()) {
+ // No implementation
+ } else if (player_said("EDGER", "BUSH")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ _ripLowReacher = series_load("RIP TREK MED REACH HAND POS1");
+ setGlobals1(_ripLowReacher, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(1);
+ break;
+
+ case 1:
+ _edger = series_place_sprite("Edger gone", 0, 0, -53, 100, 0xf00);
+ hotspot_set_active("EDGER", true);
+ inv_move_object("EDGER", 408);
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripLowReacher);
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+ } else if (player_said("PLANK", "TOPIARY")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (_G(flags)[V131] != 408) {
+ player_set_commands_allowed(false);
+ _ripLowReacher = series_load("RIP TREK LOW REACHER POS1");
+ setGlobals1(_ripLowReacher, 1, 7, 7, 7, 0, 7, 1, 1, 1);
+ sendWSMessage_110000(1);
+ }
+ break;
+
+ case 1:
+ _plank = series_place_sprite("Plank gone", 0, 0, 0, 100, 0xf00);
+ inv_move_object("PLANK", 408);
+ hotspot_set_active("PLANK", true);
+ sendWSMessage_120000(3);
+ break;
+
+ case 2:
+ _G(game).setRoom(403);
+ break;
+
+ default:
+ break;
+ }
+ } else if (useFlag && player_said("TOPIARY")) {
+ digi_play("408r07", 1);
+ } else if (useFlag && player_said("SUNDIAL")) {
+ digi_play(player_been_here(407) ? "408r34" : "408r09", 1);
+ } else if (useFlag && player_said("WINDOW")) {
+ digi_play("408r10", 1);
+ } else if (player_said("POMERANIAN MARKS", "WOLF") &&
+ inv_player_has("POMERANIAN MARKS")) {
+ digi_play("408w07", 1);
+ } else if (enterFlag && player_said("CASTLE GROUNDS")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ ws_walk(-20, 345, nullptr, 1, 9);
+ break;
+ case 1:
+ disable_player_commands_and_fade_init(2);
+ break;
+ case 2:
+ adv_kill_digi_between_rooms(false);
+ digi_play_loop("950_s22", 3, 255, -1, 950);
+ _G(game).setRoom(402);
+ break;
+ default:
+ break;
+ }
+ } else if (enterFlag && player_said("GRAVEYARD")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ ws_walk(660, 345, nullptr, 1, 3);
+ break;
+ case 1:
+ disable_player_commands_and_fade_init(2);
+ break;
+ case 2:
+ _G(game).setRoom(403);
+ break;
+ default:
+ break;
+ }
+ } else if (player_said("journal") && !takeFlag && !lookFlag &&
+ !inv_player_has(_G(player).noun)) {
+ if (_G(flags)[kCastleCartoon]) {
+ digi_play("com016", 1);
+ } else if (_G(kernel).trigger == 6) {
+ _G(flags)[kCastleCartoon] = 1;
+ sendWSMessage_multi("com015");
+ } else {
+ sendWSMessage_multi("com015");
+ }
+ } else if (lookFlag && player_said(" ")) {
+ digi_play("408r01", 1);
+ } else {
+ return;
+ }
+
+ _G(player).command_ready = false;
+}
+
+void Room408::conv408a() {
+ int who = conv_whos_talking();
+ _currentNode = conv_current_node();
+ const char *sound = conv_sound_to_play();
+
+ if (sound) {
+ if (who <= 0) {
+ _val9 = 2101;
+ digi_play(sound, 1);
+ } else if (who == 1) {
+ _val7 = 1102;
+ digi_play(sound, 1);
+ }
+ } else {
+ conv_resume();
+ }
+}
+
+bool Room408::takePlank() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_player_has("PLANK")) {
+ player_set_commands_allowed(false);
+
+ if (_G(flags)[V131] == 408) {
+ digi_play("408r29", 1, 255, 5);
+ } else {
+ _ripLowReacher = series_load("RIP TREK LOW REACHER POS1");
+ setGlobals1(_ripLowReacher, 1, 7, 7, 7, 0, 7, 1, 1, 1);
+ sendWSMessage_110000(1);
+ }
+ break;
+ }
+ return false;
+
+ case 1:
+ terminateMachineAndNull(_plank);
+ inv_give_to_player("PLANK");
+ hotspot_set_active("PLANK", false);
+ kernel_examine_inventory_object("PING PLANK",
+ _G(master_palette), 5, 1, 362, 225, 2, "408_s02", -1);
+ break;
+
+ case 2:
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripLowReacher);
+ player_set_commands_allowed(true);
+ break;
+
+ case 5:
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ return false;
+ }
+
+ return true;
+}
+
+bool Room408::takeEdger() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (!inv_player_has("EDGER")) {
+ player_set_commands_allowed(false);
+
+ if (_G(flags)[V131] == 408) {
+ digi_play("408r30", 1, 255, 5);
+ } else {
+ _ripLowReacher = series_load("RIP TREK MED REACH HAND POS1");
+ setGlobals1(_ripLowReacher, 1, 10, 10, 10, 0, 10, 1, 1, 1);
+ sendWSMessage_110000(1);
+ }
+ break;
+ }
+ return false;
+
+ case 1:
+ terminateMachineAndNull(_edger);
+ hotspot_set_active("EDGER", false);
+ inv_give_to_player("EDGER");
+ kernel_examine_inventory_object("PING EDGER", _G(master_palette),
+ 5, 1, 190, 215, 2, nullptr, -1);
+ break;
+
+ case 2:
+ sendWSMessage_120000(3);
+ break;
+
+ case 3:
+ sendWSMessage_150000(4);
+ break;
+
+ case 4:
+ series_unload(_ripLowReacher);
+ player_set_commands_allowed(true);
+ break;
+
+ case 5:
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+
+ return true;
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section4/room408.h b/engines/m4/riddle/rooms/section4/room408.h
index d5a867c15a5..c470e068f6c 100644
--- a/engines/m4/riddle/rooms/section4/room408.h
+++ b/engines/m4/riddle/rooms/section4/room408.h
@@ -34,7 +34,7 @@ private:
int _val2 = 0;
int _val3 = 0;
int _val4 = 0;
- int _val5 = 0;
+ int _currentNode = 0;
int _val6 = 0;
int _val7 = 0;
int _val8 = 0;
@@ -45,6 +45,11 @@ private:
machine *_plank = nullptr;
int _wolf = 0;
machine *_wolfie = nullptr;
+ int _ripLowReacher = 0;
+
+ void conv408a();
+ bool takePlank();
+ bool takeEdger();
public:
Room408() : Room() {}
More information about the Scummvm-git-logs
mailing list