[Scummvm-git-logs] scummvm master -> f77b744362c7a9b04f59c34a0094d7d605738034
Strangerke
noreply at scummvm.org
Mon Dec 30 08:48:35 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:
f77b744362 M4: RIDDLE: Room 807: Finish the implementation of daemon, start implementing parser
Commit: f77b744362c7a9b04f59c34a0094d7d605738034
https://github.com/scummvm/scummvm/commit/f77b744362c7a9b04f59c34a0094d7d605738034
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-12-30T09:48:11+01:00
Commit Message:
M4: RIDDLE: Room 807: Finish the implementation of daemon, start implementing parser
Changed paths:
engines/m4/riddle/rooms/section8/room807.cpp
engines/m4/riddle/rooms/section8/room807.h
diff --git a/engines/m4/riddle/rooms/section8/room807.cpp b/engines/m4/riddle/rooms/section8/room807.cpp
index 87163cb4d0e..5bc5fe320da 100644
--- a/engines/m4/riddle/rooms/section8/room807.cpp
+++ b/engines/m4/riddle/rooms/section8/room807.cpp
@@ -209,6 +209,13 @@ void Room807::pre_parser() {
}
void Room807::parser() {
+ _G(player).command_ready = false;
+
+ if (_G(kernel).trigger == 747) {
+ player_set_commands_allowed(true);
+ _field34 = 0;
+ return;
+ }
// TODO Not yet implemented
}
@@ -317,19 +324,180 @@ void Room807::daemon() {
break;
case 13:
+ if (player_commands_allowed() && checkStrings() && (_G(flags[V274]) != 0 || inv_object_in_scene("wooden post", 807) || inv_object_in_scene("wooden beam", 807))) {
+ player_set_commands_allowed(false);
+ intr_cancel_sentence();
+ switch (imath_ranged_rand(1, 4)) {
+ case 1:
+ digi_play("950_s15", 2, 255, 14, -1);
+ break;
+
+ case 2:
+ digi_play("950_s16", 2, 255, 14, -1);
+ break;
+
+ case 3:
+ digi_play("950_s17", 2, 255, 14, -1);
+ break;
+
+ case 4:
+ default:
+ digi_play("950_s18", 2, 255, 14, -1);
+ break;
+
+ }
+
+ } else {
+ kernel_timing_trigger(60, 13, nullptr);
+ }
+
+
+ break;
+
case 14:
+ player_update_info(_G(my_walker), &_G(player_info));
+ switch (_G(player_info).facing) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 15, 3, true);
+ _807newFacing = 3;
+
+ break;
+
+ case 5:
+ kernel_timing_trigger(30, 15, "phantom reaction");
+ _807newFacing = 5;
+
+ break;
+
+ case 7:
+ kernel_timing_trigger(30, 15, "phantom reaction");
+ _807newFacing = 7;
+
+ break;
+
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ ws_walk(_G(my_walker), _G(player_info).x, _G(player_info).y, nullptr, 15, 9, true);
+ _807newFacing = 9;
+
+ break;
+
+ default:
+ break;
+ }
+
+
+ break;
+
case 15:
+ _dword1A194C = 0;
+ _dword1A1954 = imath_ranged_rand(1, 4);
+ switch (_dword1A1954) {
+ case 1:
+ digi_play("COM052", 1, 255, 16, 997);
+ break;
+
+ case 2:
+ digi_play("COM054", 1, 255, 16, 997);
+ break;
+
+ case 3:
+ digi_play("COM056", 1, 255, 16, 997);
+ break;
+
+ case 4:
+ digi_play("COM057", 1, 255, 16, 997);
+ break;
+
+ default:
+ break;
+ }
+
+ setGlobals3(_mctd82aSeries, 1, 22);
+ subD7916(_mcTrekMach, 18);
+ switch (_807newFacing) {
+ case 3:
+ case 9:
+ setGlobals3(_ripPos3LookAroundSeries, 1, 20);
+ break;
+
+ default:
+ setGlobals3(_ripLooksAroundInAweSeries, 1, 14);
+ break;
+ }
+
+ subD7916(_G(my_walker), 17);
+
+ break;
+
case 16:
+ switch (_dword1A1954) {
+ case 1:
+ digi_play("COM053", 1, 255, -1, 997);
+ break;
+
+ case 2:
+ digi_play("COM055", 1, 255, -1, 997);
+ break;
+
+ case 4:
+ digi_play("COM058", 1, 255, -1, 997);
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
case 17:
+ kernel_timing_trigger(imath_ranged_rand(90, 120), 19, nullptr);
+ break;
+
case 18:
+ kernel_timing_trigger(imath_ranged_rand(90, 120), 20, nullptr);
+ break;
+
case 19:
+ switch (_807newFacing) {
+ case 3:
+ case 9:
+ setGlobals3(_ripPos3LookAroundSeries, 19, 1);
+ break;
+
+ default:
+ setGlobals3(_ripLooksAroundInAweSeries, 13, 1);
+ break;
+ }
+
+ subD7916(_G(my_walker), 21);
+
+ break;
+
case 20:
+ setGlobals3(_mctd82aSeries, 22, 1);
+ subD7916(_mcTrekMach, 21);
+
+ break;
+
case 21:
+ ++_dword1A194C;
+ if (_dword1A194C == 2) {
+ player_set_commands_allowed(true);
+ ws_demand_facing(_G(my_walker), _807newFacing);
+ kernel_timing_trigger(imath_ranged_rand(7200, 14400), 13, nullptr);
+ }
+
+ break;
+
default:
break;
}
-
- // TODO Not yet implemented
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section8/room807.h b/engines/m4/riddle/rooms/section8/room807.h
index 47de2e27ca9..b39a670bb67 100644
--- a/engines/m4/riddle/rooms/section8/room807.h
+++ b/engines/m4/riddle/rooms/section8/room807.h
@@ -22,15 +22,15 @@
#ifndef M4_RIDDLE_ROOMS_SECTION8_ROOM807_H
#define M4_RIDDLE_ROOMS_SECTION8_ROOM807_H
-#include "m4/riddle/rooms/room.h"
+#include "m4/riddle/rooms/section8/section8_room.h"
namespace M4 {
namespace Riddle {
namespace Rooms {
-class Room807 : public Room {
+class Room807 : public Section8Room {
public:
- Room807() : Room() {}
+ Room807() : Section8Room() {}
~Room807() override {}
void preload() override;
@@ -40,6 +40,10 @@ public:
void daemon() override;
private:
+ int32 _807newFacing = 0;
+ int32 _dword1A194C = 0;
+ int32 _dword1A1954 = 0;
+
int32 _field34 = 0;
int32 _field38 = 0;
More information about the Scummvm-git-logs
mailing list