[Scummvm-git-logs] scummvm master -> 76e6ac6f2e6e661c1a440b4c8d43be150cb723a3
Strangerke
noreply at scummvm.org
Sat Nov 16 06:51:53 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:
76e6ac6f2e M4: RIDDLE: Room 204: Implement and rename daemon sub-functions, star working on parser
Commit: 76e6ac6f2e6e661c1a440b4c8d43be150cb723a3
https://github.com/scummvm/scummvm/commit/76e6ac6f2e6e661c1a440b4c8d43be150cb723a3
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-16T07:51:41+01:00
Commit Message:
M4: RIDDLE: Room 204: Implement and rename daemon sub-functions, star working on parser
Changed paths:
engines/m4/riddle/rooms/section2/room204.cpp
engines/m4/riddle/rooms/section2/room204.h
diff --git a/engines/m4/riddle/rooms/section2/room204.cpp b/engines/m4/riddle/rooms/section2/room204.cpp
index febe3cf932d..d442e1a17e4 100644
--- a/engines/m4/riddle/rooms/section2/room204.cpp
+++ b/engines/m4/riddle/rooms/section2/room204.cpp
@@ -224,6 +224,400 @@ void Room204::pre_parser() {
}
void Room204::parser() {
+ bool esi = player_said_any("look", "look at");
+ bool takeFl = player_said("take");
+ bool talkFl = player_said_any("talk", "talk to");
+ bool edi = player_said("gear");
+ int32 ecx = 0;
+
+ if (player_said("conv204a")) {
+ subParser_1F42C();
+ goto done;
+ }
+
+ if (_G(kernel).trigger == 747) {
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(1, 606, nullptr);
+ goto done;
+ }
+
+ if (player_been_here(205) && esi && player_said_any("FOO DOG", "PAGODA", "BRONZE LANTERN", "CONFUCIAN ANALECTS", "CONFUCIAN ANALECTS ", "TABLETS OF HISTORY", "LAO-TZU TABLETS")) {
+ digi_play("204R62", 1, 255, -1, -1);
+ goto done;
+ }
+
+ if (!player_been_here(205)) {
+ if (inv_player_has("MALLET") && !_field40 && !_field16C
+ && !(player_said("MALLET") && player_said_any("GONG", "ACOLYTE")) && !(esi && player_said("MALLET"))
+ && !(takeFl && player_said("GONG")) && !(esi && player_said("MEI CHEN"))&& !(edi && player_said("MALLET"))) {
+ _field124 = 2;
+ player_update_info(_G(my_walker), &_G(player_info));
+ _field40 = 1;
+ player_set_commands_allowed(false);
+ _field34_x = _G(player_info).x;
+ _field38_y = _G(player_info).y;
+ _field3C_facing = _G(player_info).facing;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(1, 647, nullptr);
+ goto done;
+ }
+
+ if (esi && player_said("SHIH CHI TABLETS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x > 1500) {
+ _fieldDC = 0;
+ _fieldE4_walkerDestX = 1663;
+ ecx = 1;
+ }
+ }
+
+ if (esi && player_said("SHIH CHING TABLETS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x > 1400) {
+ _fieldDC = 0;
+ _fieldE4_walkerDestX = 1494;
+ ecx = 1;
+ }
+ }
+
+ if (esi && player_said("CONFUCIAN ANALECTS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x > 1280) {
+ _fieldDC = 0;
+ _fieldE4_walkerDestX = 1412;
+ ecx = 1;
+ }
+ }
+
+ if (esi && player_said("CONFUCIAN ANALECTS ") && !_field4) {
+ digi_play("204R52", 1, 255, -1, -1);
+ goto done;
+ }
+
+ if (esi && player_said("CONFUCIAN ANALECTS ")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ _field108 = 1;
+ kernel_timing_trigger(5, 1, nullptr);
+
+ break;
+
+ case 1:
+ ws_get_walker_info(_mcMach, &_fieldFC_infoX, &_field100_infoY, &_G(player_info).scale, &_G(player_info).depth, &_G(player_info).facing);
+ if (_fieldFC_infoX == _fieldE4_walkerDestX) {
+ DisposePath(_mcMach->walkPath);
+ _mcMach->walkPath = CreateCustomPath(555, 323, 463, 359, 317, 367, -1);
+ ws_custom_walk(_mcMach, 9, 2, 1);
+ } else {
+ kernel_timing_trigger(60, 1);
+ }
+ break;
+
+ case 2:
+ _meiTalksPos3Series = series_load("MEI TALKS POS3", -1, nullptr);
+ setGlobals1(_meiTalksPos3Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcMach, 3);
+
+ if (_field180 != 99999 && _field180) {
+ digi_play("204M13", 1, 255, 3, -1);
+ } else {
+ digi_play("204M06", 1, 255, 3, -1);
+ _field180 = 99999;
+ }
+
+ case 3:
+ if (_dword1A1898 >= 1) {
+ _dword1A1898 = 0;
+ sendWSMessage_150000(_mcMach, 4);
+ } else {
+ ++_dword1A1898;
+ }
+
+ break;
+
+ case 4:
+ series_unload(_meiTalksPos3Series);
+ DisposePath(_mcMach->walkPath);
+
+ _fieldDC = 1;
+ _fieldE4_walkerDestX = 555;
+
+ _mcMach->walkPath = CreateCustomPath(463, 359, 555, 323, -1);
+ ws_custom_walk(_mcMach, 10, 5, true);
+
+ break;
+
+ case 5:
+ _field108 = 0;
+ _G(kernel).trigger_mode = KT_DAEMON;
+ kernel_timing_trigger(1, 630, nullptr);
+ _fieldE0 = 555;
+ deleteMeiCheiHotspot();
+ addMovingMeiHotspot();
+
+ break;
+
+ default:
+ break;
+
+ }
+
+ goto done;
+ } // if (esi && player_said("CONFUCIAN ANALECTS "))
+
+ if (esi && player_said("TAO-TE CHING TABLETS")) {
+ _fieldDC = 0;
+ _fieldE4_walkerDestX = 1328;
+ ecx = 1;
+ }
+
+ if (esi && player_said("SHIH CHI TABLETS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x >= 1300) {
+ _fieldDC = 0;
+ _fieldE4_walkerDestX = 1245;
+ ecx = 1;
+ }
+ }
+
+ if (esi && player_said("LAO-TZU TABLETS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x > 700) {
+ _fieldDC = 0;
+ _fieldE4_walkerDestX = 800;
+ ecx = 1;
+ }
+ }
+
+ if (esi && player_said("SHANG TABLETS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x < 900) {
+ _fieldDC = 1;
+ _fieldE4_walkerDestX = 717;
+ ecx = 1;
+ }
+ }
+
+ if (esi && player_said("TABLETS OF HISTORY")) {
+ _fieldDC = 1;
+ _fieldE4_walkerDestX = 670;
+ ecx = 1;
+ }
+
+ if (esi && player_said("CONFUCIAN ANALECTS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x < 1280) {
+ _fieldDC = 1;
+ _fieldE4_walkerDestX = 555;
+ ecx = 1;
+ }
+ }
+
+ if (esi && player_said("LAO-TZU TABLETS")) {
+ player_update_info(_G(my_walker), &_G(player_info));
+ if (_G(player_info).x < 640) {
+ _fieldDC = 1;
+ _fieldE4_walkerDestX = 472;
+ ecx = 1;
+ }
+ }
+
+ if (ecx == 1) {
+ if (!_field4)
+ digi_play("204R52", 1, 255, -1, -1);
+ else {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ _field104 = 1;
+ kernel_timing_trigger(1, 1, nullptr);
+
+ break;
+ case 1:
+ DisposePath(_mcMach->walkPath);
+ _mcMach->walkPath = CreateCustomPath(_fieldE4_walkerDestX, 323, -1);
+ _fieldE0 = 0;
+
+ _G(kernel).trigger_mode = KT_DAEMON;
+ ws_custom_walk(_mcMach, (_fieldDC == 1) ? 10 : 2, 632, true);
+ _G(kernel).trigger_mode = KT_PARSE;
+
+ kernel_timing_trigger(5, 2, nullptr);
+
+ break;
+
+ case 2:
+ if (_fieldE0 == _fieldE4_walkerDestX)
+ kernel_timing_trigger(30, 5, nullptr);
+ else
+ kernel_timing_trigger(1, 2, nullptr);
+
+ break;
+
+ case 5:
+ _meiReadsTabletsSeries = series_load("MEI READS TABLETS", -1, nullptr);
+ setGlobals1(_meiReadsTabletsSeries, 1, 15, 15, 15, 0, 16, 29, 29, 16, 2, 15, 1, 1, 1, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcMach, 6);
+
+ break;
+
+ case 6:
+ sendWSMessage_120000(_mcMach, -1);
+ switch (_fieldE4_walkerDestX) {
+ case 472:
+ if (_field184 != 472 && _field184) {
+ digi_play("204M11", 1, 255, 7, -1);
+ } else {
+ digi_play("204M04", 1, 255, 7, -1);
+ _field184 = 472;
+ }
+
+ deleteMalletHotspot();
+ addLookMalletHotspot();
+
+ break;
+
+ case 555:
+ if (_field180 != 555 && _field180) {
+ digi_play("204M13", 1, 255, 7, -1);
+ } else {
+ digi_play("204M06", 1, 255, 7, -1);
+ _field180 = 555;
+ }
+
+ break;
+
+ case 670:
+ digi_play("204M10", 1, 255, 7, -1);
+ break;
+
+ case 717:
+ digi_play("204M05", 1, 255, 7, -1);
+ break;
+
+ case 800:
+ if (_field184 != 800 && _field184) {
+ digi_play("204M11", 1, 255, 7, -1);
+ } else {
+ digi_play("204M04", 1, 255, 7, -1);
+ _field184 = 800;
+ }
+
+ break;
+
+ case 1245:
+ if (_field188 != 1245 && _field188) {
+ digi_play("204M15", 1, 255, 7, -1);
+ } else {
+ digi_play("204M09", 1, 255, 7, -1);
+ _field188 = 1245;
+ }
+
+ break;
+
+ case 1328:
+ if (_field184 != 1328 && _field184) {
+ digi_play("204M14", 1, 255, 7, -1);
+ } else {
+ digi_play("204M04", 1, 255, 7, -1);
+ _field184 = 1328;
+ }
+
+ break;
+
+ case 1412:
+ if (_field180 != 1412 && _field180) {
+ digi_play("204M13", 1, 255, 7, -1);
+ } else {
+ digi_play("204M06", 1, 255, 7, -1);
+ _field180 = 1412;
+ }
+
+ break;
+
+ case 1494:
+ digi_play("204M07", 1, 255, 7, -1);
+ break;
+
+ case 1576:
+ digi_play("204M08", 1, 255, 7, -1);
+ break;
+
+ case 1663:
+ if (_field188 != 1663 && _field188) {
+ digi_play("204M15", 1, 255, 7, -1);
+ } else {
+ digi_play("204M09", 1, 255, 7, -1);
+ _field188 = 1663;
+ }
+
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 7:
+ sendWSMessage_130000(_mcMach, 8);
+ break;
+
+ case 8:
+ sendWSMessage_150000(_mcMach, 9);
+ break;
+
+ case 9:
+ series_unload(_meiReadsTabletsSeries);
+ _field104 = 0;
+ player_set_commands_allowed(true);
+
+ break;
+ }
+ }
+
+ goto done;
+ } // (ecx == 1)
+
+ if (player_said("walk through") && _field4 == 1) {
+ if (_G(flags[V056]) == 1) {
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(2, 609, nullptr);
+ } else {
+ player_set_commands_allowed(false);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ ws_walk(_G(my_walker), 1874, 333, nullptr, 710, 3, true);
+ }
+ goto done;
+ }
+
+ if (player_said("walk through") && _field4 == 0) {
+ player_set_commands_allowed(false);
+ _G(kernel).trigger_mode = KT_DAEMON;
+ ws_walk(_G(my_walker), 1874, 333, nullptr, 710, 3, true);
+ goto done;
+ }
+
+ if ((player_said("MALLET", "GONG") || (edi && player_said("MALLET"))) && inv_player_has("MALLET")) {
+ subParser_1F71D();
+ goto done;
+ }
+
+ warning("Incomplete...");
+ } // if (!player_been_here(205)
+
+ else {
+ warning("Incomplete...");
+ }
+
+
+
+
+done:
+ _G(player).command_ready = false;
}
void Room204::daemon() {
@@ -979,7 +1373,7 @@ void Room204::daemon() {
}
if (_field108 == 1)
- subDaemon_ADB7C();
+ killMcMach();
if (_field108 == 0)
ws_hide_walker(_mcMach);
@@ -1591,7 +1985,7 @@ void Room204::daemon() {
player_update_info(_mcMach, &_G(player_info));
if (_G(game_buff_ptr)->x1 * -1 >= _G(player_info).x) {
hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN", false);
- subDaemon_21781();
+ setWalkerDestX();
player_update_info(_mcMach, &_G(player_info));
if ((_G(game_buff_ptr)->x1 * -1) - 30 > _G(player_info).x) {
@@ -1605,7 +1999,7 @@ void Room204::daemon() {
} else if ((_G(game_buff_ptr)->x1 * -1) + 639 <= _G(player_info).x) {
hotspot_set_active(_G(currentSceneDef).hotspots, "MEI CHEN", false);
- subDaemon_21781();
+ setWalkerDestX();
player_update_info(_mcMach, &_G(player_info));
if ((_G(game_buff_ptr)->x1 * -1) + 669 < _G(player_info).x) {
@@ -1798,7 +2192,7 @@ void Room204::daemon() {
_fieldDC = 1;
_fieldE0 = 555;
- subDaemon_ADBB0();
+ killPriestWalkerMach();
deleteMeiCheiHotspot();
addMovingMeiHotspot();
player_set_commands_allowed(true);
@@ -1886,7 +2280,7 @@ void Room204::daemon() {
case 688:
_field2C = 1;
- subDaemon_ADBB0();
+ killPriestWalkerMach();
kernel_timing_trigger(5, 689, nullptr);
break;
@@ -2136,12 +2530,10 @@ void Room204::addLookMalletHotspot() {
_G(currentSceneDef).hotspots = hotspot_add(_G(currentSceneDef).hotspots, spot, true);
}
-void Room204::subDaemon_ADB7C() {
- warning("STUB - subDaemon_ADB7C");
-}
-
-void Room204::game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS) {
- warning("STUB - game_set_scale");
+void Room204::killMcMach() {
+ sendWSMessage_60000(_mcMach);
+ _mcMach = nullptr;
+ kernel_timing_trigger(1, 712, nullptr);
}
void Room204::initPriestWalker() {
@@ -2157,12 +2549,39 @@ void Room204::initPriestWalker() {
_field138 = 1;
}
-void Room204::subDaemon_21781() {
- warning("STUB - subDaemon_21781");
+void Room204::setWalkerDestX() {
+ player_update_info(_G(my_walker), &_G(player_info));
+ ws_get_walker_info(_mcMach, &_fieldFC_infoX, &_field100_infoY, &_G(player_info).scale, &_G(player_info).depth, &_G(player_info).facing);
+
+ if (_field104) {
+ return;
+ }
+
+ if (_G(player_info).x > 0 && _G(player_info).x <= 639) {
+ _fieldE4_walkerDestX = 555;
+ _fieldDC = 1;
+ }
+
+ if (_G(player_info).x >= 640 && _G(player_info).x <= 959) {
+ _fieldE4_walkerDestX = 800;
+ _fieldDC = 1;
+ }
+
+ if (_G(player_info).x >= 960 && _G(player_info).x <= 1279) {
+ _fieldE4_walkerDestX = 1245;
+ _fieldDC = 0;
+ }
+
+ if (_G(player_info).x >= 1280) {
+ _fieldE4_walkerDestX = 1494;
+ _fieldDC = 0;
+ }
}
-void Room204::subDaemon_ADBB0() {
- warning("STUB - subDaemon_ADBB0");
+void Room204::killPriestWalkerMach() {
+ sendWSMessage_60000(_priestWalkerMach);
+ _priestWalkerMach = nullptr;
+ kernel_timing_trigger(1, 713, nullptr);
}
void Room204::deleteMeiCheiHotspot() {
@@ -2174,6 +2593,17 @@ void Room204::deleteMeiCheiHotspot() {
}
}
+void Room204::subParser_1F42C() {
+ warning("STUB - subParser_1F42C");
+}
+
+void Room204::subParser_1F71D() {
+ warning("STUB - subParser_1F71D");
+}
+
+void Room204::game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS) {
+ warning("STUB - game_set_scale");
+}
} // namespace Rooms
} // namespace Riddle
diff --git a/engines/m4/riddle/rooms/section2/room204.h b/engines/m4/riddle/rooms/section2/room204.h
index 41841a2cb67..269c8d52dd9 100644
--- a/engines/m4/riddle/rooms/section2/room204.h
+++ b/engines/m4/riddle/rooms/section2/room204.h
@@ -44,15 +44,18 @@ private:
void addMovingMeiHotspot();
void deleteMalletHotspot();
void deleteMeiCheiHotspot();
- void game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS);
void initWalkerSeries();
void initPriestWalker();
+ void killMcMach();
+ void killPriestWalkerMach();
+ void setWalkerDestX();
+
+ void subParser_1F42C();
+ void subParser_1F71D();
+ void game_set_scale(int32 frontY, int32 backY, int32 frontS, int32 backS);
- void subDaemon_ADB7C();
- void subDaemon_21781();
- void subDaemon_ADBB0();
-
int32 _dword1A189C = 0;
+ int32 _dword1A1898 = 0;
int32 _field4 = 0;
int32 _field10 = 0;
@@ -61,6 +64,9 @@ private:
int32 _field24_triggerNum = 0;
int32 _field28_triggerNum = 0;
int32 _field2C = 0;
+ int32 _field34_x = 0;
+ int32 _field38_y = 0;
+ int32 _field3C_facing = 0;
int32 _field40 = 0;
int32 _field44_triggerNum = 0;
int32 _field48_triggerNum = 0;
@@ -100,6 +106,7 @@ private:
int32 _field144_triggerNum = 0;
int32 _field164 = 0;
int32 _field168 = 0;
+ int32 _field16C = 0;
int32 _field170 = 0;
int32 _field174 = 0;
int32 _field180 = 0;
@@ -113,6 +120,7 @@ private:
int32 _acolyteSaysHaltSeries;
int32 _courtyardGongSeries = 0;
int32 _malletSpriteSeries = 0;
+ int32 _meiReadsTabletsSeries = 0;
int32 _meiShowsRipHerPassesSeries = 0;
int32 _meiTalksPos3Series = 0;
int32 _meiTrekRtHandOutPos2Series = 0;
More information about the Scummvm-git-logs
mailing list