[Scummvm-git-logs] scummvm master -> 4c0eb1fb26c7a6e7797549afd4bbbf2bc52bdfa2

dreammaster noreply at scummvm.org
Thu Oct 31 02: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:
4c0eb1fb26 M4: RIDDLE: Finished room 203 init


Commit: 4c0eb1fb26c7a6e7797549afd4bbbf2bc52bdfa2
    https://github.com/scummvm/scummvm/commit/4c0eb1fb26c7a6e7797549afd4bbbf2bc52bdfa2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-10-30T19:20:19-07:00

Commit Message:
M4: RIDDLE: Finished room 203 init

Changed paths:
    engines/m4/riddle/rooms/section2/room203.cpp
    engines/m4/riddle/rooms/section2/room203.h


diff --git a/engines/m4/riddle/rooms/section2/room203.cpp b/engines/m4/riddle/rooms/section2/room203.cpp
index fd24b98e064..a80a56c4f60 100644
--- a/engines/m4/riddle/rooms/section2/room203.cpp
+++ b/engines/m4/riddle/rooms/section2/room203.cpp
@@ -38,6 +38,16 @@ const char *OFFICIAL_SHADOW_NAMES[] = {
 	"203of09s", "203of04s", "203of12s"
 };
 
+const int16 SNORMAL1_DIRS[] = { 200, -1 };
+const char *SNORMAL1_NAMES[] = { "203s01" };
+const int16 SSHADOW1_DIRS[] = { 210, -1 };
+const char *SSHADOW1_NAMES[] = { "203ssh01" };
+
+const int16 SNORMAL2_DIRS[] = { 240, -1 };
+const char *SNORMAL2_NAMES[] = { "203s02" };
+const int16 SSHADOW2_DIRS[] = { 250, -1 };
+const char *SSHADOW2_NAMES[] = { "203ssh02" };
+
 
 void Room203::init() {
 	if (_G(game).previous_room != KERNEL_RESTORING_GAME)
@@ -168,6 +178,7 @@ void Room203::init() {
 		kernel_timing_trigger(1, 130);
 		ws_demand_location(348, 273, 1);
 		ws_walk(231, 331, nullptr, 303, 4);
+		break;
 
 	case 207:
 		MoveScreenDelta(_G(game_buff_ptr), -780, 0);
@@ -227,7 +238,78 @@ void Room203::init() {
 		break;
 
 	default:
-		// TODO
+		player_set_commands_allowed(false);
+		ws_demand_location(-40, 352, 3);
+
+		if (keyCheck()) {
+			_G(kernel).call_daemon_every_loop = true;
+			_gkShould = 0;
+
+			series_unload(3);
+			series_unload(4);
+			series_unload(13);
+			series_unload(14);
+
+			setupPigeons();
+			_ripHeadTurn = series_load("rip trek head turn pos3");
+			_203sg01 = series_load("203sg01");
+
+			series_load("mei chen trek walk pos1", 220);
+			series_load("mei chen trek walk pos2", 221);
+			series_load("mei chen trek walk pos3", 222);
+			series_load("mctsh1", 230);
+			series_load("mctsh2", 231);
+			series_load("mctsh3", 232);
+
+			ws_walk_load_walker_series(SNORMAL1_DIRS, SNORMAL1_NAMES);
+			ws_walk_load_shadow_series(SSHADOW1_DIRS, SSHADOW1_NAMES);
+			ws_walk_load_walker_series(SNORMAL2_DIRS, SNORMAL2_NAMES);
+			ws_walk_load_shadow_series(SSHADOW2_DIRS, SSHADOW2_NAMES);
+
+			_mei = triggerMachineByHash_3000(8, 4, *S2_MEI_NORMAL_DIRS, *S2_MEI_SHADOW_DIRS,
+				-95, 352, 3, triggerMachineByHashCallback3000, "mc");
+			ws_walk(196, 335, nullptr, 9000, 3);
+			sendWSMessage_10000(_mei, 173, 344, 3, -1, 1);
+			_G(player).disable_hyperwalk = true;
+
+		} else {
+			setupGk();
+
+			if (player_been_here(203)) {
+				_peasantMode = 4052;
+				_peasantShould = 4170;
+				_peasantX = 418;
+				_peasantY = 385;
+				_peasantLayer = 0x800;
+				_peasantScale = 75;
+
+				if (_G(flags)[V061]) {
+					hotspot_set_active("PEASANT", false);
+					hotspot_set_active("SOLDIER'S HELMET", false);
+				} else {
+					setupPeasant();
+				}
+
+				setupOldLady();
+				setupPigeons();
+				setupOfficial();
+				kernel_timing_trigger(1, 130);
+				ws_walk(115, 353, nullptr, 371, 3);
+
+			} else {
+				_ripLooksAtHeads = series_load("rip looks at heads pos2");
+				ws_walk_load_shadow_series(S2_MEI_SHADOW_DIRS, S2_MEI_SHADOW_NAMES);
+				ws_walk_load_walker_series(S2_MEI_NORMAL_DIRS, S2_MEI_NORMAL_NAMES);
+				_mei = triggerMachineByHash_3000(8, 4, *S2_MEI_NORMAL_DIRS, *S2_MEI_SHADOW_DIRS,
+					-40, 352, 3, triggerMachineByHashCallback3000, "mc");
+
+				if (_G(kittyScreaming))
+					kernel_timing_trigger(1, 31);
+				else
+					kernel_timing_trigger(60, 1);
+			}
+		}
+
 		break;
 	}
 
@@ -235,6 +317,13 @@ void Room203::init() {
 }
 
 void Room203::daemon() {
+	if (keyCheck() && _gkShould == 0 && _G(game_buff_ptr)->x1 >= 380) {
+		_gkShould = 1;
+		_G(kernel).call_daemon_every_loop = false;
+		digi_play("950_s13", 1, 255, -1, 950);
+	}
+
+
 }
 
 void Room203::setupHelmetHotspot() {
diff --git a/engines/m4/riddle/rooms/section2/room203.h b/engines/m4/riddle/rooms/section2/room203.h
index df6f75d8f83..0c8aed9c2fc 100644
--- a/engines/m4/riddle/rooms/section2/room203.h
+++ b/engines/m4/riddle/rooms/section2/room203.h
@@ -22,13 +22,13 @@
 #ifndef M4_RIDDLE_ROOMS_SECTION2_ROOM203_H
 #define M4_RIDDLE_ROOMS_SECTION2_ROOM203_H
 
-#include "m4/riddle/rooms/room.h"
+#include "m4/riddle/rooms/section2/section2_room.h"
 
 namespace M4 {
 namespace Riddle {
 namespace Rooms {
 
-class Room203 : public Room {
+class Room203 : public Section2Room {
 private:
 	int _val1 = 0;
 	int _val2 = 0;
@@ -47,6 +47,10 @@ private:
 	int _trigger4 = -1;
 	int _trigger5 = -1;
 	int _shadow3 = 0;
+	int _ripHeadTurn = 0;
+	int _ripLooksAtHeads = 0;
+	int _203sg01 = 0;
+	machine *_mei = nullptr;
 	machine *_gk = nullptr;
 	int _gkFrame = 0;
 	int _gkMode = 0, _gkShould = 0;
@@ -89,7 +93,7 @@ private:
 	void setupPeasant();
 
 public:
-	Room203() : Room() {}
+	Room203() : Section2Room() {}
 	~Room203() override {}
 
 	void init() override;




More information about the Scummvm-git-logs mailing list