[Scummvm-git-logs] scummvm master -> 219ae66142ad26da362ec2b83ad936386f5ac313
Strangerke
noreply at scummvm.org
Mon Nov 18 10:20:28 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:
219ae66142 M4: RIDDLE: Room 204 - more work on parser, fix an error pointed out by Digitall
Commit: 219ae66142ad26da362ec2b83ad936386f5ac313
https://github.com/scummvm/scummvm/commit/219ae66142ad26da362ec2b83ad936386f5ac313
Author: Strangerke (arnaud.boutonne at gmail.com)
Date: 2024-11-18T11:20:16+01:00
Commit Message:
M4: RIDDLE: Room 204 - more work on parser, fix an error pointed out by Digitall
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 c98117d8807..c07c7804be1 100644
--- a/engines/m4/riddle/rooms/section2/room204.cpp
+++ b/engines/m4/riddle/rooms/section2/room204.cpp
@@ -327,6 +327,8 @@ void Room204::parser() {
_field180 = 99999;
}
+ break;
+
case 3:
if (_dword1A1898 >= 1) {
_dword1A1898 = 0;
@@ -727,11 +729,275 @@ void Room204::parser() {
}
goto done;
- }
+ } // if (talkFl && player_said("GONG"))
+
+ if (takeFl && player_said("MALLET")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_object_is_here("MALLET")) {
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MALLET", false);
+ inv_give_to_player("MALLET");
+ kernel_examine_inventory_object("PING MALLET", _G(master_palette), 5, 1, 370, 264, 1, nullptr, -1);
+ terminateMachine(_courtyardGongMach);
+ goto done;
+ }
- warning("incomplete");
+ break;
+
+ case 1:
+ terminateMachine(_malletSpriteMach);
+ goto done;
+ break;
+
+ default:
+ break;
+ }
+ }
} // player_been_here(205)
+ if (edi && player_said("MAILLET")) {
+ digi_play("COM102", 1, 255, -1, -1);
+ goto done;
+ }
+
+ if (takeFl && player_said("MALLET") && inv_object_is_here("MALLET")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(30, 1, nullptr);
+ break;
+
+ case 1:
+ if (g_engine->game_camera_panning()) {
+ kernel_timing_trigger(5, 1);
+ } else {
+ ws_walk(_G(my_walker), 510, 325, nullptr, 2, 9, true);
+ }
+
+ break;
+
+ case 2:
+ terminateMachine(_malletSpriteMach);
+ kernel_examine_inventory_object("PING MALLET", _G(master_palette), 5, 1, 370, 264, 3, nullptr, -1);
+ break;
+
+ case 3:
+ _G(flags[V032]) = 1;
+ inv_give_to_player("MALLET");
+ hotspot_set_active(_G(currentSceneDef).hotspots, "MALLET", false);
+ _field16C = 0;
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+
+ goto done;
+ } // takeFl && player_said("MALLET") && inv_object_is_here("MALLET")
+
+ if (player_said("MALLET", "ACOLYTE")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ ws_walk(_G(my_walker), 497, 325, nullptr, 1, 9, true);
+
+ break;
+
+ case 1:
+ _field124 = 3;
+ _field12C_triggerNum = kernel_trigger_create(2);
+
+ break;
+
+ case 2:
+ kernel_timing_trigger(1, 3, nullptr);
+ break;
+
+ case 3:
+ ws_walk(_G(my_walker), 510, 325, nullptr, 4, 9, true);
+ break;
+
+ case 4:
+ _field40 = 0;
+ player_set_commands_allowed(true);
+
+ break;
+
+ default:
+ break;
+
+ }
+
+ goto done;
+ } // player_said("MALLET", "ACOLYTE")
+
+ if (takeFl && player_said("GONG") && inv_object_is_here("GONG")) {
+ digi_play("204r26", 1, 255, -1, -1);
+ goto done;
+ }
+
+ if (takeFl && player_said("SILVER BUTTERFLY")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ if (inv_object_is_here("SILVER BUTTERFLY")) {
+ player_set_commands_allowed(false);
+ kernel_timing_trigger(30, 1, nullptr);
+ goto done;
+ }
+
+ break;
+
+ case 1:
+ if (g_engine->game_camera_panning()) {
+ kernel_timing_trigger(5, 1);
+ } else {
+ g_engine->camera_shift_xy(1280, 0);
+ _ripTrekLowReachPos2Series = series_load("RIP TREK LOW REACH POS2", -1, nullptr);
+ setGlobals1(_ripTrekLowReachPos2Series, 1, 16, 16, 16, 0, 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 2);
+ }
+
+ goto done;
+ break;
+
+ case 2:
+ kernel_examine_inventory_object("PING SILVER BUTTERFLY", _G(master_palette), 5, 1, 387, 250, 3, "204R41", -1);
+
+ goto done;
+ break;
+
+ case 3:
+ inv_give_to_player("SILVER BUTTERFLY");
+ terminateMachine(_silverButterflyCoinMach);
+ sendWSMessage_120000(_G(my_walker), 4);
+
+ goto done;
+ break;
+
+ case 4:
+ sendWSMessage_150000(_G(my_walker), 5);
+ goto done;
+ break;
+
+ case 5:
+ series_unload(_ripTrekLowReachPos2Series);
+ hotspot_set_active(_G(currentSceneDef).hotspots, "SILVER BUTTERFLY", false);
+ player_set_commands_allowed(true);
+
+ goto done;
+ break;
+
+ default:
+ break;
+ }
+ } // takeFl && player_said("SILVER BUTTERFLY")
+
+ if (talkFl && player_said("MEI CHEN")) {
+ switch (_G(kernel).trigger) {
+ case -1:
+ case 666:
+ player_set_commands_allowed(false);
+ ws_get_walker_info(_mcMach, &_G(player_info).x, &_G(player_info).y, &_G(player_info).scale, &_G(player_info).depth, &_G(player_info).facing);
+
+ _fieldF8 = (_fieldDC == 1) ? 10 : 2;
+ DisposePath(_mcMach->walkPath);
+ _mcMach->walkPath = CreateCustomPath(_G(player_info).x + 1, _G(player_info).y, -1);
+ ws_custom_walk(_mcMach, 4, 3, true);
+ break;
+
+ case 3:
+ _ripTrekTwoHandTalkPos2Series = series_load("RIP TREK TWO HAND TALK POS2", -1, nullptr);
+ setGlobals1(_ripTrekTwoHandTalkPos2Series, 1, 5, 5, 5, 0, 6, 8, 6, 8, 1, 9, 19, 19, 19, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_G(my_walker), 4);
+
+ break;
+
+ case 4:
+ sendWSMessage_120000(_G(my_walker), -1);
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ digi_play("204r17", 1, 255, 5, -1);
+ break;
+
+ case 2:
+ digi_play("204r18", 1, 255, 5, -1);
+ break;
+
+ default:
+ digi_play("204r19", 1, 255, 5, -1);
+ break;
+ }
+
+ break;
+
+ case 5:
+ sendWSMessage_130000(_G(my_walker), 6);
+ break;
+
+ case 6:
+ sendWSMessage_150000(_G(my_walker), 7);
+ break;
+
+ case 7:
+ series_unload(_ripTrekTwoHandTalkPos2Series);
+ _meiTrekTalkerPos4Series = series_load("MEI TREK TALKER POS4", -1, nullptr);
+ setGlobals1(_meiTrekTalkerPos4Series, 1, 1, 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ sendWSMessage_110000(_mcMach, 8);
+
+ switch (imath_ranged_rand(1, 3)) {
+ case 1:
+ digi_play("204M16", 1, 255, 8, -1);
+ break;
+
+ case 2:
+ digi_play("204M17", 1, 255, 8, -1);
+ break;
+
+ case 3:
+ digi_play("204M18", 1, 255, 8, -1);
+ break;
+
+ default:
+ break;
+ }
+
+ break;
+
+ case 8:
+ if (_dword1A1898 < 1) {
+ ++_dword1A1898;
+ } else {
+ _dword1A1898 = 0;
+ sendWSMessage_150000(_mcMach, 9);
+ }
+
+ break;
+
+ case 9:
+ series_unload(_meiTrekTalkerPos4Series);
+ DisposePath(_mcMach->walkPath);
+ _mcMach->walkPath = CreateCustomPath(_fieldE4_walkerDestX, 323, -1);
+ ws_custom_walk(_mcMach, _fieldD8_facing, 10, true);
+
+ break;
+
+ case 10:
+ player_set_commands_allowed(true);
+ break;
+
+ default:
+ break;
+ }
+
+ goto done;
+ } // talkFl && player_said("MEI CHEN")
+
+
+
warning("incomplete");
done:
@@ -968,7 +1234,7 @@ void Room204::daemon() {
break;
case 535:
- _fieldD8 = 1;
+ _fieldD8_facing = 1;
_field2C = 1;
kernel_timing_trigger(5, 537, nullptr);
@@ -1285,7 +1551,7 @@ void Room204::daemon() {
case 14:
case 15:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, 1, 5, 571, _field90_series, 5, 5, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTwoHandTalkPos2Series, 1, 5, 571, _ripTrekTwoHandTalkPos2Series, 5, 5, 0);
_field14 = 14;
break;
@@ -1328,18 +1594,18 @@ void Room204::daemon() {
case 14:
switch (_field10) {
case 11:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, 13, 19, 571, _field90_series, 19, 19, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTwoHandTalkPos2Series, 13, 19, 571, _ripTrekTwoHandTalkPos2Series, 19, 19, 0);
_field14 = 11;
break;
case 14:
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, 5, 5, 571, _field90_series, 5, 5, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTwoHandTalkPos2Series, 5, 5, 571, _ripTrekTwoHandTalkPos2Series, 5, 5, 0);
break;
case 15: {
int32 rnd = imath_ranged_rand(6, 12);
- sendWSMessage_10000(1, _ripDeltaMachineStateMach, _field90_series, rnd, rnd, 571, _field90_series, rnd, rnd, 0);
+ sendWSMessage_10000(1, _ripDeltaMachineStateMach, _ripTrekTwoHandTalkPos2Series, rnd, rnd, 571, _ripTrekTwoHandTalkPos2Series, rnd, rnd, 0);
}
break;
@@ -1454,7 +1720,7 @@ void Room204::daemon() {
case 574:
_fieldC0_trigger = -1;
_fieldCC_trigger = -1;
- _fieldD8 = -1;
+ _fieldD8_facing = -1;
_fieldC8_trigger = -1;
_fieldF4 = -1;
ws_get_walker_info(_mcMach, &_field10C_x, &_field110_y, &_field118_scale, &_field11C_depth, &_field114_facing);
@@ -1524,7 +1790,7 @@ void Room204::daemon() {
_fieldCC_trigger = -1;
}
- if (_fieldD8 != 1) {
+ if (_fieldD8_facing != 1) {
kernel_timing_trigger(1, 577, nullptr);
break;
}
@@ -1818,7 +2084,7 @@ void Room204::daemon() {
break;
case 582:
- _fieldD8 = 1;
+ _fieldD8_facing = 1;
kernel_timing_trigger(1, 583, nullptr);
break;
@@ -2290,7 +2556,7 @@ void Room204::daemon() {
case 667:
_field10 = 21;
- _fieldD8 = 1;
+ _fieldD8_facing = 1;
_fieldC8_trigger = kernel_trigger_create(669);
break;
@@ -2413,7 +2679,7 @@ void Room204::daemon() {
break;
case 691:
- _fieldD8 = 1;
+ _fieldD8_facing = 1;
_fieldC8_trigger = kernel_trigger_create(692);
break;
@@ -2461,7 +2727,7 @@ void Room204::daemon() {
break;
case 701:
- _fieldD8 = 1;
+ _fieldD8_facing = 1;
_fieldC8_trigger = kernel_trigger_create(702);
break;
diff --git a/engines/m4/riddle/rooms/section2/room204.h b/engines/m4/riddle/rooms/section2/room204.h
index 269c8d52dd9..334beb3435e 100644
--- a/engines/m4/riddle/rooms/section2/room204.h
+++ b/engines/m4/riddle/rooms/section2/room204.h
@@ -79,13 +79,14 @@ private:
int32 _fieldCC_trigger = 0;
int32 _fieldD0 = 0;
int32 _fieldD4 = 0;
- int32 _fieldD8 = 0;
+ int32 _fieldD8_facing = 0;
int32 _fieldDC = 0;
int32 _fieldE0 = 0;
int32 _fieldE4_walkerDestX = 0;
int32 _fieldEC = 0;
int32 _fieldF0 = 0;
int32 _fieldF4 = 0;
+ int32 _fieldF8 = 0;
int32 _fieldFC_infoX = 0;
int32 _field100_infoY = 0;
int32 _field104 = 0;
@@ -112,8 +113,6 @@ private:
int32 _field180 = 0;
int32 _field184 = 0;
int32 _field188 = 0;
-
- int32 _field90_series = 0;
int32 _204pu99Series = 0;
int32 _acolyteGrabsMalletSeries = 0;
@@ -135,6 +134,7 @@ private:
int32 _ripTrekLowReachPos2Series = 0;
int32 _ripTrekMedReachHandPos1Series = 0;
int32 _ripTrekTalkerPos3Series = 0;
+ int32 _ripTrekTwoHandTalkPos2Series = 0;
machine *_204pu05Mach = nullptr;
machine *_204pu99Mach = nullptr;
More information about the Scummvm-git-logs
mailing list