[Scummvm-git-logs] scummvm master -> 2d27ebc197ff2392db4f5e55230f6df15cca7ba7
Strangerke
noreply at scummvm.org
Wed Oct 9 22:35:06 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:
2d27ebc197 M4: RIDDLE: Implement parser in room 996
Commit: 2d27ebc197ff2392db4f5e55230f6df15cca7ba7
https://github.com/scummvm/scummvm/commit/2d27ebc197ff2392db4f5e55230f6df15cca7ba7
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-10-09T23:34:17+01:00
Commit Message:
M4: RIDDLE: Implement parser in room 996
Changed paths:
engines/m4/riddle/rooms/section9/room996.cpp
engines/m4/riddle/rooms/section9/room996.h
diff --git a/engines/m4/riddle/rooms/section9/room996.cpp b/engines/m4/riddle/rooms/section9/room996.cpp
index 4317f5bef58..18d69b61b27 100644
--- a/engines/m4/riddle/rooms/section9/room996.cpp
+++ b/engines/m4/riddle/rooms/section9/room996.cpp
@@ -27,6 +27,11 @@ namespace M4 {
namespace Riddle {
namespace Rooms {
+Room996::Room996() : Room() {
+ for (int i = 0; i < 13; ++i)
+ _flagArray[i] = 0;
+}
+
void Room996::preload() {
_G(player).walker_in_this_scene = false;
}
@@ -164,21 +169,264 @@ void Room996::parser() {
}
}
+ switch (_flagArray[12]) {
+ case 1:
+ if (_G(kernel).trigger == -1) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "FORWARD", true);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "BACK", false);
+ terminateMachine(_roomStates_ripTalker);
+ terminateMachine(_roomStates_field18);
+ terminateMachine(_roomStates_ripTalking);
+ terminateMachine(_roomStates_ripTalk);
+ terminateMachine(_roomStates_field24);
+ kernel_timing_trigger(10, 1, nullptr);
+
+ } else if (_G(kernel).trigger == 1 && _G(flags)[V280] != 0) {
+ _roomStates_tt = series_show("996 Peru Pictograph Snake", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V148])
+ _roomStates_field4 = series_show("996 Peru Pictograph Condor", 256, 16, -1, -1, 0, 100, 0, 0);
+ else
+ _roomStates_field4 = series_show("996 Peru Pictograph Spider", 256, 16, -1, -1, 0, 100, -13, -87);
+
+ if (_G(flags)[V156])
+ _roomStates_pu = series_show("996 Peru Pictos Solved Spider", 256, 16, -1, -1, 0, 100, 0, 0);
+ else
+ _roomStates_field8 = series_show("996 Peru Pictograph Spider", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V283])
+ _roomStates_untie = series_show("996 Peru Pictograph Monkey", 256, 16, -1, -1, 0, 100, 0, 0);
+ else
+ _roomStates_untie = series_show("996 Peru Pictograph Spider", 256, 16, -1, -1, 0, 100, -21, 71);
+ }
+ break;
+ case 2:
+ if (_G(kernel).trigger == -1) {
+ if (_flagArray[_moveValue] != 0 || _G(flags)[V047] || _G(flags)[V196] || _G(flags)[V201] || _G(flags)[V207] || _G(flags)[V208] || _G(flags)[V209])
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", true);
+ else
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", false);
+
+ hotspot_set_active(_G(currentSceneDef).hotspots, "back", true);
+ terminateMachine(_roomStates_tt);
+ terminateMachine(_roomStates_field4);
+ terminateMachine(_roomStates_pu);
+ terminateMachine(_roomStates_field8);
+ terminateMachine(_roomStates_untie);
+ terminateMachine(_roomStates_loop1);
+ terminateMachine(_roomStates_loop2);
+ terminateMachine(_roomStates_loop3);
+ terminateMachine(_roomStates_loop4);
+ terminateMachine(_roomStates_loop5);
+ terminateMachine(_roomStates_loop6);
+ terminateMachine(_roomStates_loop7);
+ terminateMachine(_roomStates_ear2);
+ terminateMachine(_roomStates_field4C);
+ kernel_timing_trigger(10, 1, nullptr);
+
+ } else if (_G(kernel).trigger == 1) {
+ if (_G(flags)[V285])
+ _roomStates_ripTalker = series_show("996 TITLE JOURNAL TYPE", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V286])
+ _roomStates_field18 = series_show("996 sikkamese text alone", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V287])
+ _roomStates_ripTalking = series_show("996 PERU SCRIPT", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V288]) {
+ if (player_been_here(615))
+ _roomStates_ripTalk = series_show("996 EASTER ISLAND SCRIPT", 256, 16, -1, -1, 0, 100, 0, 0);
+ else
+ _roomStates_ripTalk = series_show("996 East Isl. w/o #s", 256, 16, -1, -1, 0, 100, 0, 0);
+ }
- warning("STUB - Room996::parser not implemented");
-
+ if (_G(flags)[V289])
+ _roomStates_field24 = series_show("996 KEY TO TOMB SCRIPT", 256, 16, -1, -1, 0, 100, 0, 0);
- if (_flagArray[12] == 2) {
- if (_G(kernel).trigger >= 1) {
-
}
+ break;
+ case 3:
+ if (_G(kernel).trigger == -1) {
+ if (player_said("forward", nullptr, nullptr)) {
+ digi_play("950_s56", 1, 255, -1, 950);
+ ++_moveValue;
+ } else if (player_said("back", nullptr, nullptr)) {
+ digi_play("950_s56", 1, 255, -1, 950);
+ --_moveValue;
+ }
- _G(player).command_ready = false;
- return;
- }
+ if (_moveValue == 0) {
+ _flagArray[12] = 2;
+ digi_play("950_s56", 1, 255, -1, 950);
+ } else if (_flagArray[_moveValue] == 0) {
+ if (_G(flags)[V047])
+ _flagArray[12] = 4;
+ else if (_G(flags)[V196] || _G(flags)[V201] || _G(flags)[V207] || _G(flags)[V208] || _G(flags)[V209])
+ _flagArray[12] = 5;
+ }
+
+ if (_flagArray[_moveValue] != 0 || _G(flags)[V047] || _G(flags)[V196] || _G(flags)[V201] || _G(flags)[V207] || _G(flags)[V208] || _G(flags)[V209])
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", true);
+ else
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", false);
+ if (_flagArray[12] == 4) {
+ if (_G(flags)[V196] || _G(flags)[V201] || _G(flags)[V207] || _G(flags)[V208] || _G(flags)[V209])
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", true);
+ else
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", false);
+ }
+ if (_flagArray[12] == 5)
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", false);
+
+ terminateMachine(_roomStates_ripTalker);
+ terminateMachine(_roomStates_field18);
+ terminateMachine(_roomStates_ripTalking);
+ terminateMachine(_roomStates_ripTalk);
+ terminateMachine(_roomStates_field24);
+ terminateMachine(_roomStates_loop1);
+ terminateMachine(_roomStates_loop2);
+ terminateMachine(_roomStates_loop3);
+ terminateMachine(_roomStates_loop4);
+ terminateMachine(_roomStates_loop5);
+ terminateMachine(_roomStates_loop6);
+ terminateMachine(_roomStates_loop7);
+ terminateMachine(_roomStates_ear2);
+ terminateMachine(_roomStates_field4C);
+ kernel_timing_trigger(10, 1, nullptr);
+ } else if (_G(kernel).trigger == 1) {
+ switch (_flagArray[_moveValue]) {
+ case 1:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 0, 100, 0, 0);
+ break;
+ case 2:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 1, 100, 0, 0);
+ break;
+ case 3:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 2, 100, 0, 0);
+ break;
+ case 4:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 3, 100, 0, 0);
+ break;
+ case 5:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 4, 100, 0, 0);
+ break;
+ case 6:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 5, 100, 0, 0);
+ break;
+ case 7:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 6, 100, 0, 0);
+ break;
+ case 8:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 7, 100, 0, 0);
+ break;
+ case 9:
+ _roomStates_loop1 = series_show("996car", 256, 16, -1, -1, 8, 100, 0, 0);
+ break;
+ default:
+ break;
+ }
+ }
+ break;
+ case 4:
+ if (_G(kernel).trigger == -1) {
+ if (_G(flags)[V196] || _G(flags)[V201] || _G(flags)[V207] || _G(flags)[V208] || _G(flags)[V209])
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", true);
+ else
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", false);
+
+ terminateMachine(_roomStates_ripTalker);
+ terminateMachine(_roomStates_field18);
+ terminateMachine(_roomStates_ripTalking);
+ terminateMachine(_roomStates_ripTalk);
+ terminateMachine(_roomStates_field24);
+ terminateMachine(_roomStates_loop1);
+ terminateMachine(_roomStates_loop3);
+ terminateMachine(_roomStates_loop4);
+ terminateMachine(_roomStates_loop5);
+ terminateMachine(_roomStates_loop6);
+ terminateMachine(_roomStates_loop7);
+ terminateMachine(_roomStates_ear2);
+ terminateMachine(_roomStates_field4C);
+ kernel_timing_trigger(10, 1, nullptr);
+ } else if (_G(kernel).trigger == 1) {
+ _check201Fl = _G(flags)[V201] != 0;
+ _check207Fl = _G(flags)[V207] != 0;
+ _check208Fl = _G(flags)[V208] != 0;
+ _check209Fl = _G(flags)[V209] != 0;
+
+ if (!_check201Fl && !_check207Fl && !_check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ136", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && !_check207Fl && !_check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ122", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (!_check201Fl && _check207Fl && !_check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ123", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (!_check201Fl && !_check207Fl && !_check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ124", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (!_check201Fl && !_check207Fl && _check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ125", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && _check207Fl && !_check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ126", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && !_check207Fl && _check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ127", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && !_check207Fl && !_check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ128", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (!_check201Fl && _check207Fl && !_check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ129", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (!_check201Fl && _check207Fl && _check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ130", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (!_check201Fl && !_check207Fl && _check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ131", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && _check207Fl && _check208Fl && !_check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ132", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && !_check207Fl && _check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ133", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && _check207Fl && !_check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ134", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (!_check201Fl && _check207Fl && _check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING OBJ135", 256, 16, -1, -1, 0, 100, 206, 67);
+ } else if (_check201Fl && _check207Fl && _check208Fl && _check209Fl) {
+ _roomStates_loop2 = series_show("PING TWELVETREES' MAP", 256, 16, -1, -1, 0, 100, 206, 67);
+ }
+ }
+ break;
+ case 5:
+ if (_G(kernel).trigger == -1) {
+ terminateMachine(_roomStates_ripTalker);
+ terminateMachine(_roomStates_field18);
+ terminateMachine(_roomStates_ripTalking);
+ terminateMachine(_roomStates_ripTalk);
+ terminateMachine(_roomStates_field24);
+ terminateMachine(_roomStates_loop2);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "forward", false);
+ kernel_timing_trigger(10, 1, nullptr);
+ } else if (_G(kernel).trigger == 1) {
+ _roomStates_loop3 = series_show("996 EA Glyph title", 256, 16, -1, -1, 0, 100, 0, 0);
+ if (_G(flags)[V201] || _G(flags)[V207] || _G(flags)[V208] || _G(flags)[V209])
+ _roomStates_loop5 = series_show("996 EA Glyph Quarry title", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V196])
+ _roomStates_loop4 = series_show("996 EA Glyph Fallen head", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V201])
+ _roomStates_loop7 = series_show("996 EA Glyph Sharks Tooth", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V207])
+ _roomStates_loop6 = series_show("996 EA Glyph Scallop Shell", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V208])
+ _roomStates_ear2 = series_show("996 EA Glyph Starfish", 256, 16, -1, -1, 0, 100, 0, 0);
+
+ if (_G(flags)[V209])
+ _roomStates_field4C = series_show("996 EA Glyph SeaHorse", 256, 16, -1, -1, 0, 100, 0, 0);
+ }
+ break;
+ default:
+ break;
+ }
_G(player).command_ready = false;
}
diff --git a/engines/m4/riddle/rooms/section9/room996.h b/engines/m4/riddle/rooms/section9/room996.h
index 750e984abad..580fbe03d78 100644
--- a/engines/m4/riddle/rooms/section9/room996.h
+++ b/engines/m4/riddle/rooms/section9/room996.h
@@ -31,7 +31,7 @@ namespace Rooms {
class Room996 : public Room {
public:
- Room996() : Room() {}
+ Room996();
~Room996() override {}
void preload() override;
@@ -44,13 +44,31 @@ private:
int32 _flag = 0;
int32 _flagArray[13];
int32 _moveValue = 0;
+ bool _check201Fl = false;
+ bool _check207Fl = false;
+ bool _check208Fl = false;
+ bool _check209Fl = false;
+ machine *_roomStates_ear2 = nullptr;
+ machine *_roomStates_field4 = nullptr;
+ machine *_roomStates_field8 = nullptr;
+ machine *_roomStates_field18 = nullptr;
+ machine *_roomStates_field24 = nullptr;
+ machine *_roomStates_field4C = nullptr;
machine *_roomStates_loop0 = nullptr;
- machine * _roomStates_untie = nullptr;
- machine * _roomStates_pu = nullptr;
- machine * _roomStates_field8 = nullptr;
- machine * _roomStates_field4 = nullptr;
- machine * _roomStates_tt = nullptr;
+ machine *_roomStates_loop1 = nullptr;
+ machine *_roomStates_loop2 = nullptr;
+ machine *_roomStates_loop3 = nullptr;
+ machine *_roomStates_loop4 = nullptr;
+ machine *_roomStates_loop5 = nullptr;
+ machine *_roomStates_loop6 = nullptr;
+ machine *_roomStates_loop7 = nullptr;
+ machine *_roomStates_pu = nullptr;
+ machine *_roomStates_ripTalk = nullptr;
+ machine *_roomStates_ripTalker = nullptr;
+ machine *_roomStates_ripTalking = nullptr;
+ machine *_roomStates_tt = nullptr;
+ machine *_roomStates_untie = nullptr;
};
} // namespace Rooms
More information about the Scummvm-git-logs
mailing list