[Scummvm-git-logs] scummvm master -> 3b956ed36e08304809f13af635c73fa23393e472

dreammaster noreply at scummvm.org
Fri Nov 1 04:30:31 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:
3b956ed36e M4: RIDDLE: More room 203 daemon


Commit: 3b956ed36e08304809f13af635c73fa23393e472
    https://github.com/scummvm/scummvm/commit/3b956ed36e08304809f13af635c73fa23393e472
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-10-31T21:30:23-07:00

Commit Message:
M4: RIDDLE: More room 203 daemon

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 d96edb73e5c..a200e2f9f60 100644
--- a/engines/m4/riddle/rooms/section2/room203.cpp
+++ b/engines/m4/riddle/rooms/section2/room203.cpp
@@ -63,9 +63,10 @@ void Room203::init() {
 	setupHelmetHotspot();
 
 	_val2 = _val4 = _val5 = 0;
-	_val6 = _val7 = _val8 = _val9 = 0;
-	_val10 = 0;
+	_val6 = _val7 = _val8 = 0;
+	_ripley80000 = 0;
 	_digiName1 = nullptr;
+	_showWalker = false;
 	_trigger1 = _trigger2 = _trigger3 = -1;
 	_trigger4 = _trigger5 = -1;
 
@@ -343,6 +344,10 @@ void Room203::daemon() {
 		digi_play("203m01", 1);
 		break;
 
+	case 6:
+		sendWSMessage_120000(_mei, 7);
+		break;
+
 	case 7:
 		_ctr1 = 0;
 		_ripLookAtHeadsTalkMei = series_load("rip look at heads talk mei");
@@ -352,6 +357,15 @@ void Room203::daemon() {
 		digi_play("203r01", 1, 255, 8);
 		break;
 
+	case 8:
+		if (_ctr1 >= 1) {
+			_ctr1 = 0;
+			sendWSMessage_120000(9);
+		} else {
+			++_ctr1;
+		}
+		break;
+
 	case 9:
 		sendWSMessage_150000(_mei, -1);
 		_meiCheekLine = series_load("mc cheek line");
@@ -360,6 +374,15 @@ void Room203::daemon() {
 		digi_play("203m02", 1, 255, 10);
 		break;
 
+	case 11:
+		if (_ctr1 >= 1) {
+			_ctr1 = 0;
+			sendWSMessage_130000(12);
+		} else {
+			++_ctr1;
+		}
+		break;
+
 	case 12:
 		digi_play("203r03", 1, 255, 13);
 		break;
@@ -370,6 +393,12 @@ void Room203::daemon() {
 		digi_play("203m03", 1);
 		break;
 
+	case 14:
+		sendWSMessage_150000(_mei, -1);
+		sendWSMessage_10000(_mei, 271, 337, 2, -1, 1);
+		kernel_timing_trigger(40, 15);
+		break;
+
 	case 17:
 		series_unload(_meiCheekLine);
 		series_unload(_ripLookAtHeadsTalkMei);
@@ -380,6 +409,11 @@ void Room203::daemon() {
 		digi_play("203m04", 1, 255, 19);
 		break;
 
+	case 18:
+	case 25:
+		sendWSMessage_120000(_mei, -1);
+		break;
+
 	case 19:
 		sendWSMessage_120000(_mei, -1);
 		_gkMode = 3001;
@@ -405,6 +439,10 @@ void Room203::daemon() {
 		digi_play("203r04", 1, 255, 24);
 		break;
 
+	case 23:
+		sendWSMessage_120000(-1);
+		break;
+
 	case 24:
 		sendWSMessage_150000(_mei, -1);
 		_meiTalkToRip = series_load("mc talk to rip");
@@ -419,16 +457,35 @@ void Room203::daemon() {
 		digi_play("203r05", 1, 255, 27);
 		break;
 
+	case 27:
+		sendWSMessage_120000(28);
+		sendWSMessage_150000(_mei, -1);
+		sendWSMessage_10000(_mei, -40, 352, 2, 29, 1);
+		break;
+
 	case 28:
 		digi_play("203r05a", 1);
 		break;
 
+	case 29:
+		sendWSMessage_60000(_mei);
+		kernel_timing_trigger(1, 4567);
+		break;
+
 	case 30:
 		sendWSMessage_150000(1968);
 		player_set_commands_allowed(true);
 		_G(player).disable_hyperwalk = false;
 		break;
 
+	case 31:
+		_ripYouSeeToIt = series_load("rip says you see to it");
+		_meiTalkToRip = series_load("mc talk to rip");
+		_meiTurnAndTalk = series_load("mc turn and talk");
+		ws_demand_location(100, 360);
+		kernel_timing_trigger(1, 29);
+		break;
+
 	case 42:
 		sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 16, 43,
 			_ripKneelingTalk, 16, 16, 0);
@@ -560,6 +617,13 @@ void Room203::daemon() {
 		digi_preload("203p02");
 		break;
 
+	case 92:
+		if (_flag1)
+			digi_play("203p02", 1, 255, 93);
+		else
+			digi_unload("203p02");
+		break;
+
 	case 93:
 		kernel_timing_trigger(120, 92);
 		break;
@@ -579,10 +643,24 @@ void Room203::daemon() {
 		digi_play("203r28", 1, 255, 104);
 		break;
 
+	case 105:
+		sendWSMessage_120000(_official, 106);
+		break;
+
 	case 106:
 		sendWSMessage_150000(_official, 107);
 		break;
 
+	case 107:
+		sendWSMessage_120000(108);
+		break;
+
+	case 108:
+		sendWSMessage_150000(-1);
+		ws_walk(-30, 355, nullptr, -1);
+		kernel_timing_trigger(40, 109);
+		break;
+
 	case 109:
 		sendWSMessage_10000(_official, -30, 355, 9, -1, 1);
 		kernel_timing_trigger(60, 110);
@@ -597,10 +675,195 @@ void Room203::daemon() {
 		player_set_commands_allowed(true);
 		break;
 
+	case 120:
+		switch (_peasantMode) {
+		case 4050:
+			switch (_peasantShould) {
+			case 4091:
+			case 4094:
+			case 4095:
+				if (_trigger2 != -1) {
+					kernel_trigger_dispatchx(kernel_trigger_create(_trigger2));
+					_trigger2 = -1;
+				} else {
+					kernel_trigger_dispatchx(kernel_trigger_create(121));
+				}
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4051:
+			if (_peasantShould == 4110) {
+				if (_trigger2 != -1) {
+					kernel_trigger_dispatchx(kernel_trigger_create(_trigger2));
+					_trigger2 = -1;
+				} else {
+					player_update_info();
+
+					if (_G(player_info).x >= 450 && _G(player_info).x <= 8000) {
+						kernel_trigger_dispatchx(kernel_trigger_create(121));
+					} else {
+						player_set_commands_allowed(false);
+						_peasantShould = (_G(player_info).x < 450) ? 4117 : 4113;
+						peasantWalk();
+						kernel_timing_trigger(1, 121);
+					}
+				}
+			}
+			break;
+
+		case 4052:
+			switch (_peasantShould) {
+			case 4170:
+				if (_trigger2 != -1) {
+					kernel_trigger_dispatchx(kernel_trigger_create(_trigger2));
+					_trigger2 = -1;
+				} else {
+					player_update_info();
+
+					if (_G(player_info).x <= 450) {
+						kernel_trigger_dispatchx(kernel_trigger_create(121));
+					} else {
+						player_set_commands_allowed(false);
+						_peasantShould = 4175;
+						peasantWalk();
+						kernel_timing_trigger(1, 121);
+					}
+				}
+				break;
+
+			case 4174:
+			case 4175:
+				kernel_timing_trigger(1, 121);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4053:
+			switch (_peasantShould) {
+			case 4160:
+				if (_trigger2 != -1) {
+					kernel_trigger_dispatchx(kernel_trigger_create(_trigger2));
+					_trigger2 = -1;
+				} else {
+					player_update_info();
+
+					if (_G(player_info).x >= 450 && _G(player_info).x <= 1040) {
+						kernel_trigger_dispatchx(kernel_trigger_create(121));
+					} else {
+						player_set_commands_allowed(false);
+						_peasantShould = (_G(player_info).x < 800) ? 4162 : 4166;
+						peasantWalk();
+						kernel_timing_trigger(1, 121);
+					}
+				}
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4054:
+			switch (_peasantShould) {
+			case 4140:
+				if (_trigger2 != -1) {
+					kernel_trigger_dispatchx(kernel_trigger_create(_trigger2));
+					_trigger2 = -1;
+				} else {
+					player_update_info();
+
+					if (_G(player_info).x < 1040) {
+						player_set_commands_allowed(false);
+						_peasantShould = 4142;
+						peasantWalk();
+						kernel_timing_trigger(1, 121);
+					} else {
+						if (_val5) {
+							_peasantShould = _val5;
+							_val5 = 0;
+						}
+
+						kernel_trigger_dispatchx(kernel_trigger_create(121));
+					}
+				}
+				break;
+
+			case 4146:
+			case 4147:
+			case 4148:
+			case 4149:
+				kernel_timing_trigger(1, 121);
+				break;
+
+			case 4150:
+				kernel_trigger_dispatchx(kernel_trigger_create(121));
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4055:
+		case 4056:
+		case 4058:
+		case 4059:
+			kernel_trigger_dispatchx(kernel_trigger_create(121));
+			break;
+
+		case 4057:
+			if (_trigger2 != -1) {
+				kernel_trigger_dispatchx(kernel_trigger_create(_trigger2));
+				_trigger2 = -1;
+			} else {
+				kernel_trigger_dispatchx(kernel_trigger_create(121));
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
 	case 125:
 		kernel_trigger_dispatchx(kernel_trigger_create(126));
 		break;
 
+	case 126:
+		// TODO
+		switch (_gkMode) {
+		case 3000:
+			break;
+		default:
+			break;
+		}
+		break;
+
+	case 150:
+		if (_unkMode == 1001 && _oldLadyMode2 == 1030 && _trigger5 != -1) {
+			kernel_trigger_dispatchx(_trigger5);
+			_trigger5 = -1;
+
+			if (_showWalker) {
+				ws_unhide_walker();
+				_showWalker = false;
+			}
+			if (_ripley80000) {
+				sendWSMessage_80000(_ripley);
+				_ripley80000 = false;
+			}
+		}
+
+		kernel_timing_trigger(3, 151);
+		break;
+
 	case 152:
 		_val2 = 0;
 
@@ -675,10 +938,21 @@ void Room203::daemon() {
 		kernel_trigger_dispatchx(kernel_trigger_create(125));
 		break;
 
+	case 352:
+		if (_flag1)
+			digi_play("203p02", 1, 255, 93);
+		else
+			digi_unload("203p02");
+		break;
+
 	case 353:
 		kernel_timing_trigger(120, 352);
 		break;
 
+	case 360:
+		sendWSMessage_120000(_official, 363);
+		break;
+
 	case 366:
 		ws_walk(280, 345, nullptr, 103, 9);
 		kernel_timing_trigger(50, 367);
@@ -910,6 +1184,37 @@ void Room203::setupPeasant() {
 		_peasantRocksShadow, 1, 1, 0);
 }
 
+void Room203::peasantWalk() {
+	player_update_info();
+
+	switch (_peasantShould) {
+	case 4113:
+	case 4142:
+	case 4162:
+	case 4166:
+		if (_G(player_info).y > 310 && _G(player_info).y < 330 &&
+				_G(player_info).x > 735 && _G(player_info).x < 1140) {
+			if (_G(player_info).facing == 1 || _G(player_info).facing == 2 ||
+				_G(player_info).facing == 10 || _G(player_info).facing == 11)
+				ws_walk(_G(player_info).x, 294, nullptr, -1, 0);
+			else
+				ws_walk(_G(player_info).x, 350, nullptr, -1, 0);
+		}
+		break;
+
+	case 4117:
+	case 4175:
+		if (_G(player_info).y > 315 && _G(player_info).y < 335 &&
+				_G(player_info).x > 373 && _G(player_info).x < 763) {
+			ws_walk(_G(player_info).x, 350, nullptr, -1, 0);
+		}
+		break;
+
+	default:
+		break;
+	}
+}
+
 } // namespace Rooms
 } // namespace Riddle
 } // namespace M4
diff --git a/engines/m4/riddle/rooms/section2/room203.h b/engines/m4/riddle/rooms/section2/room203.h
index 105dab02986..6b93c674629 100644
--- a/engines/m4/riddle/rooms/section2/room203.h
+++ b/engines/m4/riddle/rooms/section2/room203.h
@@ -38,8 +38,8 @@ private:
 	int _val6 = 0;
 	int _val7 = 0;
 	int _val8 = 0;
-	int _val9 = 0;
-	int _val10 = 0;
+	bool _showWalker = false;
+	bool _ripley80000 = false;
 	int _val11 = 0;
 	int _val12 = 0;
 	int _trigger1 = -1;
@@ -120,6 +120,7 @@ private:
 	void setupPigeons();
 	void setupOfficial();
 	void setupPeasant();
+	void peasantWalk();
 
 public:
 	Room203() : Section2Room() {}




More information about the Scummvm-git-logs mailing list