[Scummvm-git-logs] scummvm master -> 1f48bb48bbadce0b30f8a69108c4aaf2576f2985
Strangerke
noreply at scummvm.org
Thu Oct 31 00:06:11 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:
1f48bb48bb M4: RIDDLE: Partial implementation of room 205 (preload, init, pre-parser)
Commit: 1f48bb48bbadce0b30f8a69108c4aaf2576f2985
https://github.com/scummvm/scummvm/commit/1f48bb48bbadce0b30f8a69108c4aaf2576f2985
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-10-31T01:05:10+01:00
Commit Message:
M4: RIDDLE: Partial implementation of room 205 (preload, init, pre-parser)
Changed paths:
engines/m4/riddle/rooms/section2/room205.cpp
engines/m4/riddle/rooms/section2/room205.h
diff --git a/engines/m4/riddle/rooms/section2/room205.cpp b/engines/m4/riddle/rooms/section2/room205.cpp
index 57e0135064b..2294f9e92ed 100644
--- a/engines/m4/riddle/rooms/section2/room205.cpp
+++ b/engines/m4/riddle/rooms/section2/room205.cpp
@@ -21,13 +21,151 @@
#include "m4/riddle/rooms/section2/room205.h"
#include "m4/graphics/gr_series.h"
+#include "m4/riddle/riddle.h"
#include "m4/riddle/vars.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
+void Room205::preload() {
+ LoadWSAssets("OTHER SCRIPT", _G(master_palette));
+ _G(player).walker_type = WALKER_ALT;
+ _G(player).shadow_type = SHADOW_ALT;
+}
+
void Room205::init() {
+ midi_play("vines", 0, -1, -1, 949);
+ _ripTrekMedReachHandPos1Series = series_load("RIP TREK MED REACH HAND POS1", -1, nullptr);
+ _ripTrekLowReacherPos5Series = series_load("RIP TREK LOW REACHER POS5", -1, nullptr);
+ _ripTrekLowReachPos2Series = series_load("RIP TREK LOW REACH POS2", -1, nullptr);
+ _ripGetsShotSeries = series_load("RIP GETS SHOT", -1, nullptr);
+ _205GunFireSeries = series_load("205 gun fire", -1, nullptr);
+
+ if (!_G(flags[V029])) {
+ digi_preload("205R01", -1);
+ digi_preload("205M02", -1);
+
+ _205rp1Series = series_load("205RP01", -1, nullptr);
+ _205mc01Series = series_load("205MC01", -1, nullptr);
+ _205mc02Series = series_load("205MC02", -1, nullptr);
+
+ digi_preload("205R11", -1);
+
+ _205rp02Series = series_load("205RP02", -1, nullptr);
+ }
+
+ _field198 = 0;
+ _field19C = 0;
+ _field1A0 = 0;
+ _fieldD8 = 0;
+ _fieldE8 = 0;
+ _fieldE4 = 0;
+ series_show("205PRIES", 3840, 16, -1, -1, 0, 100, 0, 0);
+ _205LeftEntranceTabletMach = series_show("205 LEFT ENTRANCE TABLET", 257, 16, -1, -1, 0, 100, 0, 0);
+
+ if (!_G(flags[V028]))
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MASTER LU'S TABLET", false);
+
+ if (_G(flags[V024])) {
+ _fieldE0 = 1;
+ series_show("205GONG", 1025, 16, -1, -1, 0, 100, 0, 0);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "GUN", false);
+ digi_preload("205_s34", -1);
+ digi_play_loop("205_s34", 3, 25, -1, -1);
+
+ if (!_G(flags[V028]))
+ kernel_timing_trigger(7200, 1055, nullptr);
+ } else {
+ _fieldE0 = 0;
+ hotspot_set_active(_G(currentSceneDef).hotspots, "GONG ", false);
+ _205FireInBrazierSeries = series_load("205 FIRE IN BRAZIER", -1, nullptr);
+ _205FireInBrazierMach = series_play("205 FIRE IN BRAZIER", 1024, 0, -1, 7, -1, 100, 0, 0, 0, -1);
+ digi_preload("205_s34", -1);
+ digi_play_loop("205_s34", 3, 166, -1, -1);
+
+ if (_G(flags[V029]))
+ _205GunInBrazierMach = series_show("205 gun in brazier", 768, 16, -1, -1, 0, 100, 0, 0);
+ }
+
+ if (inv_player_has("CHARCOAL")) {
+ if (_G(flags[V029]))
+ hotspot_set_active(_G(currentSceneDef).hotspots, "CHARCOAL", false);
+ } else if (_G(flags[V029]))
+ _205CharcoalSpriteMach = series_show("205 CHARCOAL SPRITE", 3840, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags[V025])) {
+ series_show("205 MALLET LAYED ON GONG", 1024, 16, -1, -1, 0, 100, 0, 0);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "GAP WITH JOURNAL", false);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MALLET ", false);
+ }
+
+ if (_G(flags[V029])) {
+ series_show("205BITS", 3846, 16, -1, -1, 0, 100, 0, 0);
+ kernel_timing_trigger(imath_ranged_rand(1200, 1800), 901, nullptr);
+ }
+
+ if (_G(flags[V028])) {
+ _205MeiStanderMach = series_show("205 MEI STANDER", 3845, 16, -1, -1, 0, 100, 0, 0);
+ series_show("205 TABLETS DOWN", 3840, 16, -1, -1, 0, 100, 0, 0);
+ series_show("205GLASS", 3840, 16, -1, -1, 0, 100, 0, 0);
+
+ hotspot_set_active(_G(currentSceneDef).hotspots, "TABLET ", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "RIGHT TABLET", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "SHEN GUO", false);
+ } else {
+ _205TabletsSeries = series_load("205 TABLETS", -1, nullptr);
+ _205TabletsMach = series_show("205 TABLETS", 3584, 16, -1, -1, 0, 100, 0, 0);
+
+ hotspot_set_active(_G(currentSceneDef).hotspots, "GLASSES", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "FALLEN TABLETS", false);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN ", false);
+ }
+
+ _G(flags[V027]) = 0;
+ _fieldDC = 0;
+
+ if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
+ player_set_commands_allowed(false);
+ if (_G(flags[V029])) {
+ ws_demand_facing(_G(my_walker), 11);
+ ws_demand_location(_G(my_walker), 320, 480);
+ ws_walk(_G(my_walker), 317, 356, nullptr, 500, 11, true);
+ } else {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN ", false);
+ ws_walk_load_walker_series(S8_SHADOW_DIRS1, S8_SHADOW_NAMES1);
+ ws_walk_load_walker_series(S8_SHADOW_DIRS2, S8_SHADOW_NAMES2);
+ _mcEntranceTrekMach = triggerMachineByHash_3000(8, 4, *S8_SHADOW_DIRS2, *S8_SHADOW_DIRS1, 258, 490, 1, triggerMachineByHashCallback3000, "mc_entrance_trek");
+ ws_demand_facing(_G(my_walker), 11);
+ ws_demand_location(_G(my_walker), 320, 480);
+ ws_walk(_G(my_walker), 317, 356, nullptr, 501, 11, true);
+ sendWSMessage_10000(_mcEntranceTrekMach, 261, 359, 2, -1, true);
+
+ return;
+ }
+ }
+
+ if (!_G(flags[V028]))
+ kernel_timing_trigger(1, 1000, nullptr);
+}
+
+void Room205::pre_parser() {
+ if (player_said("GEAR", "RIGHT TABLET") && _G(flags[V022]) && !_G(flags[V024])) {
+ _G(player).need_to_walk = false;
+ _G(player).ready_to_walk = true;
+ _G(player).waiting_for_walk = false;
+ }
+
+ if (player_said("EXIT") && _G(flags[V025])) {
+ _G(player).need_to_walk = false;
+ _G(player).ready_to_walk = true;
+ _G(player).waiting_for_walk = false;
+ }
+}
+
+void Room205::parser() {
}
void Room205::daemon() {
diff --git a/engines/m4/riddle/rooms/section2/room205.h b/engines/m4/riddle/rooms/section2/room205.h
index 25dbfe6b1ec..2e4ddc61843 100644
--- a/engines/m4/riddle/rooms/section2/room205.h
+++ b/engines/m4/riddle/rooms/section2/room205.h
@@ -33,8 +33,41 @@ public:
Room205() : Room() {}
~Room205() override {}
+ void preload() override;
void init() override;
+ void pre_parser() override;
+ void parser() override;
void daemon() override;
+
+private:
+ int32 _fieldD8 = 0;
+ int32 _fieldDC = 0;
+ int32 _fieldE0 = 0;
+ int32 _fieldE4 = 0;
+ int32 _fieldE8 = 0;
+ int32 _field198 = 0;
+ int32 _field19C = 0;
+ int32 _field1A0 = 0;
+
+ int32 _205FireInBrazierSeries = 0;
+ int32 _205GunFireSeries = 0;
+ int32 _205mc01Series = 0;
+ int32 _205mc02Series = 0;
+ int32 _205rp1Series = 0;
+ int32 _205rp02Series = 0;
+ int32 _205TabletsSeries = 0;
+ int32 _ripGetsShotSeries = 0;
+ int32 _ripTrekLowReacherPos5Series = 0;
+ int32 _ripTrekLowReachPos2Series = 0;
+ int32 _ripTrekMedReachHandPos1Series = 0;
+
+ machine *_205CharcoalSpriteMach = nullptr;
+ machine *_205FireInBrazierMach = nullptr;
+ machine *_205GunInBrazierMach = nullptr;
+ machine *_205LeftEntranceTabletMach = nullptr;
+ machine *_205MeiStanderMach = nullptr;
+ machine *_205TabletsMach = nullptr;
+ machine *_mcEntranceTrekMach = nullptr;
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list