[Scummvm-git-logs] scummvm master -> a22a341777af186355018dc67d45f2d89f4cc6c8

dreammaster noreply at scummvm.org
Sun Nov 3 02:35:56 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:
a22a341777 M4: RIDDLE: More room 203 daemon


Commit: a22a341777af186355018dc67d45f2d89f4cc6c8
    https://github.com/scummvm/scummvm/commit/a22a341777af186355018dc67d45f2d89f4cc6c8
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-11-02T19:35:42-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 17a480e5f68..15d969eaf70 100644
--- a/engines/m4/riddle/rooms/section2/room203.cpp
+++ b/engines/m4/riddle/rooms/section2/room203.cpp
@@ -326,6 +326,8 @@ void Room203::init() {
 }
 
 void Room203::daemon() {
+	int frame;
+
 	if (keyCheck() && _gkShould == 0 && _G(game_buff_ptr)->x1 >= 380) {
 		_gkShould = 1;
 		_G(kernel).call_daemon_every_loop = false;
@@ -1097,8 +1099,137 @@ void Room203::daemon() {
 		}
 		break;
 
+	case 130:
+		switch (_oldLadyMode) {
+		case 30:
+			break;
+
+		case 5666:
+			if (_trigger3 != -1) {
+				kernel_trigger_dispatchx(kernel_trigger_create(_trigger3));
+				_trigger3 = -1;
+			} else if (_oldLadyShould == 5100) {
+				if (imath_ranged_rand(1, 80) < 20)
+					_oldLadyShould = 5101;
+
+				kernel_timing_trigger(30, 131);
+			}
+			break;
+
+		case 5668:
+			if (_trigger3 != -1) {
+				kernel_trigger_dispatchx(kernel_trigger_create(_trigger3));
+				_trigger3 = -1;
+			} else {
+				// Original has a whole switch statement, but all cases lead
+				// to the same trigger
+				kernel_trigger_dispatchx(kernel_trigger_create(131));
+			}
+			break;
+
+		case 5669:
+			if (_trigger3 != -1) {
+				kernel_trigger_dispatchx(kernel_trigger_create(_trigger3));
+				_trigger3 = -1;
+			} else {
+				switch (_oldLadyShould) {
+				case 5200:
+					if (imath_ranged_rand(1, 80) < 20)
+						_oldLadyShould = 5201;
+					break;
+
+				case 5202:
+					_oldLadyShould = 5200;
+					break;
+
+				default:
+					break;
+				}
+
+				kernel_timing_trigger(30, 131);
+			}
+			break;
+
+		default:
+			kernel_trigger_dispatchx(kernel_trigger_create(131));
+			break;
+		}
+		break;
+
+	case 131:
+#ifdef TODO
+		switch (_oldLadyMode) {
+		case 5100:
+			sendWSMessage_10000(1, _oldLady, _oldLadyFrame, 1, 1, 130, _oldLadyFrame, 1, 1, 0);
+			break;
+
+		case 5101:
+			sendWSMessage_10000(1, _oldLady, _oldLadyFeedingBirds, 1, 26, 131,
+				_oldLadyFeedingBirds, 26, 26, 0);
+			_oldLadyShould = 5102;
+			break;
+
+		case 5102:
+			sendWSMessage_10000(1, _oldLady, _oldLadyFeedingBirds, 26, 1, 131,
+				_oldLadyFrame, 1, 1, 0);
+			_oldLadyShould = 5100;
+			break;
+		default:
+			break;
+		}
+#endif
+		break;
+
+	case 140:
+		switch (_officialMode) {
+		case 2001:
+			switch (_officialShould) {
+			case 2010:
+				if (_trigger4 != -1) {
+					kernel_trigger_dispatchx(_trigger4);
+					_trigger4 = -1;
+				} else {
+					kernel_timing_trigger(2, 141);
+				}
+				break;
+
+			case 2020:
+			case 2040:
+				kernel_timing_trigger(2, 141);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 2002:
+			switch (_officialShould) {
+			case 2011:
+			case 2013:
+			case 2014:
+			case 2015:
+			case 2016:
+			case 2017:
+				kernel_trigger_dispatchx(kernel_trigger_create(141));
+				break;
+
+			case 2012:
+				kernel_timing_trigger(1, 141);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
 	case 150:
-		if (_unkMode == 1001 && _oldLadyMode2 == 1030 && _trigger5 != -1) {
+		if (_ripleyMode == 1001 && _ripleyShould == 1030 && _trigger5 != -1) {
 			kernel_trigger_dispatchx(_trigger5);
 			_trigger5 = -1;
 
@@ -1115,18 +1246,252 @@ void Room203::daemon() {
 		kernel_timing_trigger(3, 151);
 		break;
 
+	case 151:
+		switch (_ripleyMode) {
+		case 1001:
+			switch (_ripleyShould) {
+			case 1010:
+				conv_load("conv203d", 10, 10, 152);
+				conv_export_value_curr(_G(flags)[V054], 0);
+				conv_export_value_curr(0, 1);
+				conv_export_value_curr(0, 2);
+				conv_export_value_curr(_G(flags)[V073], 3);
+				conv_export_value_curr(_G(flags)[V043], 5);
+				conv_play();
+				_ripleyShould = 1030;
+				kernel_trigger_dispatchx(kernel_trigger_create(150));
+				break;
+
+			case 1020:
+			case 1030:
+				sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 11, 11, 150,
+					_ripHandsBehBack, 11, 11, 0);
+				break;
+
+			case 1040:
+				_ripleyShould = 1060;
+				sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 11, 1, 151,
+					_ripHandsBehBack, 1, 1, 0);
+				break;
+
+			case 1060:
+				terminateMachineAndNull(_ripley);
+				terminateMachineAndNull(_ripsh1);
+				series_unload(_ripHandsBehBack);
+				_peasantMode = 4058;
+				ws_unhide_walker();
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 1002:
+			switch (_ripleyShould) {
+			case 1110:
+				ws_hide_walker();
+				player_set_commands_allowed(false);
+				_oldLady1 = series_load("old lady");
+				_ripKneeling = series_load("rip kneels down to old lady");
+				_ripKneelingTalk = series_load("rip kneeling talks to old lady");
+
+				_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 640, -53, 100, 0x400, 0,
+					triggerMachineByHashCallback, "rip in conv");
+				sendWSMessage_10000(1, _ripley, _ripKneeling, 1, 31, 150, _ripKneeling, 31, 31, 0);
+				_ripleyShould = 1112;
+				_oldLadyMode = 5568;
+				_oldLadyShould = 5301;
+				kernel_trigger_dispatchx(kernel_trigger_create(130));
+				break;
+
+			case 1112:
+				sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, 4, 150,
+					_ripKneelingTalk, 4, 4, 0);
+				_ripleyShould = 1113;
+				break;
+
+			case 1113:
+				conv_load("conv203e", 10, 10, 152);
+				conv_export_value_curr(_G(flags)[V051], 0);
+				conv_play();
+				_ripleyShould = 1130;
+				kernel_trigger_dispatchx(kernel_trigger_create(150));
+				break;
+
+			case 1120:
+				frame = imath_ranged_rand(5, 9);
+				sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 1, frame, 150,
+					_ripKneelingTalk, frame, frame, 0);
+				break;
+
+			case 1121:
+				_oldLadyProtectsHelmet = series_load("old lady protect helmet");
+				_ripPointsAtHelmet = series_load("rip points at helmet");
+				_ripleyShould = 1122;
+
+				sendWSMessage_10000(1, _ripley, _ripPointsAtHelmet, 1, 5, 151,
+					_ripPointsAtHelmet, 5, 5, 0);
+				_oldLadyShould = 5308;
+				break;
+
+			case 1122:
+				_ripleyShould = 1123;
+				digi_play(_digiName2, 1, 255, 151);
+				break;
+
+			case 1123:
+				_ripleyShould = 1124;
+				sendWSMessage_10000(1, _ripley, _ripPointsAtHelmet, 5, 1, 151,
+					_ripKneelingTalk, 4, 4, 0);
+				break;
+
+			case 1124:
+				_ripleyShould = 1125;
+				sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 1, 16, 151,
+					_oldLadyProtectsHelmet, 16, 16, 0);
+				break;
+
+			case 1125:
+				_ripleyShould = 1126;
+				sendWSMessage_10000(1, _oldLady, _oldLadyProtectsHelmet, 16, 1, 151,
+					_oldLady1, 6, 6, 0);
+				break;
+
+			case 1126:
+				_ripleyShould = 1127;
+				series_stream("old woman cries for mommie", 5, 0, 151);
+				break;
+
+			case 1127:
+				_ripleyShould = 1128;
+				digi_preload("203r56");
+				kernel_timing_trigger(30, 666);
+				series_stream("rip blinks", 10, 0, 151);
+				break;
+
+			case 1128:
+				series_unload(_ripPointsAtHelmet);
+				series_unload(_oldLadyProtectsHelmet);
+				_oldLadyShould = 5302;
+				kernel_trigger_dispatchx(kernel_trigger_create(130));
+				_ripleyShould = 1130;
+				kernel_timing_trigger(1, 150);
+				conv_resume();
+				break;
+
+			case 1130:
+				sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 4, 4, 150,
+					_ripKneelingTalk, 4, 4, 0);
+				break;
+
+			case 1140:
+				_ripleyShould = 1142;
+				sendWSMessage_10000(1, _ripley, _ripKneelingTalk, 4, 1, 151,
+					_ripKneelingTalk, 1, 1, 0);
+				break;
+
+			case 1142:
+				_ripleyShould = 1143;
+				sendWSMessage_10000(1, _ripley, _ripKneeling, 31, 1, 151, _ripKneeling, 1, 1, 0);
+				break;
+
+			case 1143:
+				terminateMachineAndNull(_ripley);
+				series_unload(_ripKneelingTalk);
+				series_unload(_ripKneeling);
+				_oldLadyShould = 5306;
+				ws_unhide_walker();
+				player_set_commands_allowed(true);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 1003:
+			switch (_ripleyShould) {
+			case 1210:
+				ws_hide_walker();
+				player_set_commands_allowed(false);
+				_ripHandTalk = series_load("rip trek hand talk pos3");
+				_ripTalker = series_load("rip trek talker pos3");
+				_officialThroughThere = series_load("official through there");
+
+				player_update_info();
+				_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+					_G(player_info).x, _G(player_info).y, _G(player_info).scale,
+					0x100, 0, triggerMachineByHashCallback, "rip talks official");
+				_ripsh1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+					_G(player_info).x, _G(player_info).y, _G(player_info).scale,
+					0x100, 0, triggerMachineByHashCallback, "rip talks official SHADOW");
+				sendWSMessage_10000(1, _ripley, _ripTalker, 1, 1, -1, _ripTalker, 1, 1, 0);
+				sendWSMessage_10000(1, _ripsh1, _shadow3, 1, 1, 150, _shadow3, 1, 1, 0);
+				_ripleyShould = 1211;
+				_officialMode = 2002;
+				_officialShould = 2011;
+				kernel_trigger_dispatchx(kernel_trigger_create(140));
+				break;
+
+			case 1211:
+				conv_load("conv203c", 10, 10, 152);
+				conv_export_value_curr(_G(flags)[V070], 0);
+				conv_export_pointer_curr(&_G(flags)[V071], 1);
+				conv_play();
+				_ripleyShould = 1230;
+				kernel_trigger_dispatchx(kernel_trigger_create(150));
+				break;
+
+			case 1220:
+				frame = imath_ranged_rand(1, 5);
+				sendWSMessage_10000(1, _ripley, _ripTalker, 1, frame, 150,
+					_ripTalker, frame, frame, 0);
+				break;
+
+			case 1221:
+				sendWSMessage_10000(1, _ripley, _ripHandTalk, 1, 16, 150,
+					_ripHandTalk, 1, 1, 0);
+				_ripleyShould = 1230;
+				break;
+
+			case 1230:
+				sendWSMessage_10000(1, _ripley, _ripTalker, 1, 1, 150, _ripTalker, 1, 1, 0);
+				break;
+
+			case 1240:
+				terminateMachineAndNull(_ripley);
+				terminateMachineAndNull(_ripsh1);
+				series_unload(_officialThroughThere);
+				series_unload(_ripTalker);
+				series_unload(_ripHandTalk);
+				_officialShould = 2017;
+				ws_unhide_walker();
+				player_set_commands_allowed(true);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
 	case 152:
 		_val2 = 0;
 
-		switch (_unkMode) {
+		switch (_ripleyMode) {
 		case 1001:
-			_oldLadyMode2 = 1040;
+			_ripleyShould = 1040;
 			break;
 		case 1002:
-			_oldLadyMode2 = (_unkShould == 1121) ? 1121 : 5303;
+			_ripleyShould = (_unkShould == 1121) ? 1121 : 5303;
 			break;
 		case 1003:
-			_oldLadyMode2 = 1240;
+			_ripleyShould = 1240;
 			break;
 		default:
 			break;
@@ -1412,6 +1777,14 @@ void Room203::daemon() {
 		sendWSMessage_10000(_mei, 417, 240, 2, -1, 1);
 		break;
 
+	case 9013:
+		if (g_engine->game_camera_panning()) {
+			kernel_timing_trigger(30, 9013);
+		} else {
+			sendWSMessage_10000(1, _sg, _203sg01, 1, 84, 9014, _203sg01, 84, 84, 0);
+		}
+		break;
+
 	case 9014:
 		digi_play("203_s09", 2);
 		sendWSMessage_10000(1, _sg, _203sg01, 85, 130, 9020, _203sg01, 130, 130, 0);
@@ -1587,6 +1960,34 @@ void Room203::peasantWalk() {
 	}
 }
 
+void Room203::pre_parser() {
+	// TODO
+}
+
+void Room203::parser() {
+#ifdef TODO
+	ws_hide_walker();
+	player_set_commands_allowed(false);
+	player_update_info();
+	_ripsh1 = series_place_sprite("ripsh1", 0, _G(player_info).x, _G(player_info).y,
+		_G(player_info).scale, 0x500);
+	_peskyBegLoop = series_load("pesky beg loop");
+	_ripHandsBehBack = series_load("rip trek hands beh back pos1");
+
+	_ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0,
+		_G(player_info).x, _G(player_info).y, _G(player_info).scale, 0x400, 0,
+		triggerMachineByHashCallback, "rip in conv");
+	_ripleyMode = 1001;
+	_ripleyShould = 1010;
+	sendWSMessage_10000(1, _ripley, _ripHandsBehBack, 1, 11, 150,
+		_ripHandsBehBack, 11, 11, 0);
+
+	_G(kernel).trigger_mode = KT_PARSE;
+	_peasantMode2 = _peasantMode;
+	_peasantMode = 4055;
+#endif
+}
+
 } // 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 6cdaf73c9ef..85ab1336241 100644
--- a/engines/m4/riddle/rooms/section2/room203.h
+++ b/engines/m4/riddle/rooms/section2/room203.h
@@ -42,6 +42,7 @@ private:
 	int _val11 = 0;
 	const char *_digiName1 = nullptr;
 	int _digiTrigger1 = 0;
+	const char *_digiName2 = nullptr;
 	int _trigger1 = -1;
 	int _trigger2 = -1;
 	int _trigger3 = -1;
@@ -59,6 +60,10 @@ private:
 	int _ripGivesPhoto = 0;
 	int _ripClimbsAndBacksDown = 0;
 	int _ripPointsAtHelmet = 0;
+	int _ripHandsBehBack = 0;
+	int _ripHandTalk = 0;
+	int _ripTalker = 0;
+	machine *_ripsh1 = nullptr;
 	machine *_mei = nullptr;
 	int _meiTalkToRip = 0;
 	int _meiTurnAndTalk = 0;
@@ -75,7 +80,7 @@ private:
 	int _oldLadyNoHelmet = 0;
 	int _oldLadyFeedingBirds = 0;
 	int _oldLadyMode = 0, _oldLadyShould = 0;
-	int _oldLadyMode2 = 0;
+	int _ripleyShould = 0;
 	int _oldLady1 = 0;
 	int _oldLadyPointsToPhoto = 0;
 	int _oldLadyPhotoPopup = 0;
@@ -94,6 +99,7 @@ private:
 	int _officialTurn11_3 = 0;
 	int _officialTurn3_7 = 0;
 	int _officialMoveAlong = 0;
+	int _officialThroughThere = 0;
 	machine *_peasant = nullptr;
 	machine *_peasantShadow = nullptr;
 	int _peasantSeries = 0;
@@ -101,7 +107,9 @@ private:
 	int _peasantRocks = 0;
 	int _peasantRocksShadow = 0;
 	int _peskyYellsThief = 0;
+	int _peskyBegLoop = 0;
 	int _peasantMode = 0, _peasantShould = 0;
+	int _peasantMode2 = 0;
 	int _peasantX = 0;
 	int _peasantY = 0;
 	int _peasantScale = 0;
@@ -113,7 +121,7 @@ private:
 	int _203sg01 = 0;
 	machine *_g1 = nullptr;
 	machine *_g2 = nullptr;
-	int _unkMode = 0;
+	int _ripleyMode = 0;
 	int _unkShould = 0;
 
 	int _ctr1 = 0;
@@ -133,6 +141,8 @@ public:
 
 	void init() override;
 	void daemon() override;
+	void pre_parser() override;
+	void parser() override;
 };
 
 } // namespace Rooms




More information about the Scummvm-git-logs mailing list