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

dreammaster noreply at scummvm.org
Sun Nov 3 23:44:26 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:
bb5e5efb62 M4: RIDDLE: Finished room 203 daemon


Commit: bb5e5efb622418867d9040bbce81dc04c6ac4a43
    https://github.com/scummvm/scummvm/commit/bb5e5efb622418867d9040bbce81dc04c6ac4a43
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-11-03T15:44:21-08:00

Commit Message:
M4: RIDDLE: Finished 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 15d969eaf70..7a036ed768d 100644
--- a/engines/m4/riddle/rooms/section2/room203.cpp
+++ b/engines/m4/riddle/rooms/section2/room203.cpp
@@ -63,11 +63,12 @@ void Room203::init() {
 	hotspot_set_active("SOLDIER'S HELMET", false);
 	setupHelmetHotspot();
 
-	_val2 = _val4 = _val5 = 0;
-	_val6 = _val7 = _val8 = 0;
+	_val4 = _val5 = 0;
+	_val6 = _val8 = 0;
 	_ripley80000 = 0;
-	_digiName1 = nullptr;
+	_digiName1 = _digiName3 = nullptr;
 	_showWalker = false;
+	_flag2 = false;
 	_trigger1 = _trigger2 = _trigger3 = -1;
 	_trigger4 = _trigger5 = -1;
 
@@ -702,6 +703,10 @@ void Room203::daemon() {
 		digi_play("203r22", 1, 255, 80);
 		break;
 
+	case 80:
+		digi_unload("203r22");
+		break;
+
 	case 81:
 		series_set_frame_rate(_stream1, 5);
 		ws_OverrideCrunchTime(_stream1);
@@ -728,7 +733,7 @@ void Room203::daemon() {
 		setupHelmetHotspot();
 		kernel_timing_trigger(1, 130);
 		ws_unhide_walker();
-		_val2 = 0;
+		_flag2 = false;
 		player_set_commands_allowed(true);
 		break;
 
@@ -1043,6 +1048,512 @@ void Room203::daemon() {
 		}
 		break;
 
+	case 121:
+		switch (_peasantMode) {
+		case 4050:
+			switch (_peasantShould) {
+			case 4091:
+				sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120,
+					_peasantRocks, 5, 5, 0);
+				break;
+
+			case 4094:
+				_peasantSeries = series_load("pesky peasant reach for helmet");
+				_peasantSeriesShadow = series_load("shadow pp reach for helmet");
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow pesky from squat to pos3");
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim1();
+				_peasantShould = 4095;
+				break;
+
+			case 4095:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS,
+					763, 325, 3, triggerMachineByHashCallback3000, "pp_walking");
+				sendWSMessage_10000(_peasant, 1200, 332, 2, 120, 1);
+				_peasantMode = 4054;
+				_peasantShould = 4148;
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4051:
+			switch (_peasantShould) {
+			case 4110:
+				sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120,
+					_peasantRocks, 5, 5, 0);
+				break;
+
+			case 4113:
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow pesky from squat to pos3");
+				_peasantSquat3 = series_load("peasant 3 to squat");
+				_peasantSquat9 = series_load("shadow pesky from 9 to squat");
+
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim1();
+				_peasantShould = 4114;
+				break;
+
+			case 4114:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS,
+					763, 325, 3, triggerMachineByHashCallback3000, "pp_walk");
+				sendWSMessage_10000(_peasant, 932, 325, 3, 121, 1);
+				_peasantShould = 4115;
+				break;
+
+			case 4115:
+				sendWSMessage_60000(_peasant);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim2();
+				_peasantShould = 4116;
+				break;
+
+			case 4116:
+				_peasantMode = 4053;
+				_peasantShould = 4160;
+				setupPeasantHotspot(_peasantMode);
+				series_unload(_peasantSquat9);
+				series_unload(_peasantSquat3);
+				series_unload(_peasantFromSquat3);
+				series_unload(_peasantSquatTo9);
+
+				if (!_flag2)
+					player_set_commands_allowed(true);
+
+				kernel_timing_trigger(1, 120);
+				break;
+
+			case 4117:
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow peskey from squat to pos3");
+				_peasantSquat3 = series_load("peasant 3 to squat");
+				_peasantSquat9 = series_load("shadow pesky from 9 to squat");
+
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				_peasantShould = 4118;
+				break;
+
+			case 4118:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS,
+					727, 325, 9, triggerMachineByHashCallback3000, "pp_walking");
+				sendWSMessage_10000(_peasant, 436, 332, 9, 121, 1);
+				_peasantShould = 4119;
+				break;
+
+			case 4119:
+				sendWSMessage_60000(_peasant);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+
+				peasantAnim2();
+				_peasantShould = 4120;
+				break;
+
+			case 4120:
+				_peasantMode = 4052;
+				_peasantShould = 4170;
+				setupPeasantHotspot(_peasantMode);
+				series_unload(_peasantSquat9);
+				series_unload(_peasantSquat3);
+				series_unload(_peasantFromSquat3);
+				series_unload(_peasantSquatTo9);
+				player_set_commands_allowed(true);
+				kernel_timing_trigger(1, 120);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4052:
+			switch (_peasantShould) {
+			case 4170:
+				sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120,
+					_peasantRocks, 5, 5, 0);
+				break;
+
+			case 4175:
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow pesky from squat to pos3");
+				_peasantSquat3 = series_load("peasant 3 to squat");
+				_peasantSquat9 = series_load("shadow pesky from 9 to squat");
+
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 418, 332, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim1();
+				_peasantShould = 4176;
+				break;
+
+			case 4176:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS, 436, 332, 3,
+					triggerMachineByHashCallback3000, "pp_walking");
+				sendWSMessage_10000(_peasant, 727, 325, 3, 121, 1);
+				_peasantShould = 4177;
+				break;
+
+			case 4177:
+				sendWSMessage_60000(_peasant);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim2();
+				_peasantShould = 4178;
+				break;
+
+			case 4178:
+				series_unload(_peasantSquat9);
+				series_unload(_peasantSquat3);
+				series_unload(_peasantFromSquat3);
+				series_unload(_peasantSquatTo9);
+				_peasantMode = 4051;
+				_peasantShould = 4110;
+				setupPeasantHotspot(_peasantMode);
+				player_set_commands_allowed(true);
+				kernel_timing_trigger(1, 120);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4053:
+			switch (_peasantShould) {
+			case 4160:
+				sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120,
+					_peasantRocks, 5, 5, 0);
+				break;
+
+			case 4162:
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow pesky from squat to pos3");
+				_peasantSquat3 = series_load("peasant 3 to squat");
+				_peasantSquat9 = series_load("shadow pesky from 9 to squat");
+
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim1();
+				_peasantShould = 4163;
+				break;
+
+			case 4163:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS, 932, 325, 9,
+					triggerMachineByHashCallback3000, "pp_walking");
+				sendWSMessage_10000(_peasant, 763, 325, 9, 121, 1);
+				_peasantShould = 4164;
+				break;
+
+			case 4164:
+				sendWSMessage_60000(_peasant);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 745, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim2();
+				_peasantShould = 4165;
+				break;
+
+			case 4165:
+				_peasantMode = 4051;
+				_peasantShould = 4110;
+				setupPeasantHotspot(_peasantMode);
+				series_unload(_peasantSquat9);
+				series_unload(_peasantSquat3);
+				series_unload(_peasantFromSquat3);
+				series_unload(_peasantSquatTo9);
+				player_set_commands_allowed(true);
+				kernel_timing_trigger(1, 120);
+				break;
+
+			case 4166:
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow pesky from squat to pos3");
+				_peasantSquat3 = series_load("peasant 3 to squat");
+				_peasantSquat9 = series_load("shadow pesky from 9 to squat");
+
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim1();
+				_peasantShould = 4167;
+				break;
+
+			case 4167:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS, 968, 325, 3,
+					triggerMachineByHashCallback3000, "pp_walking");
+				sendWSMessage_10000(_peasant, 1082, 322, 3, 121, 1);
+				_peasantShould = 4168;
+				break;
+
+			case 4168:
+				sendWSMessage_60000(_peasant);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim2();
+				_peasantShould = 4169;
+				break;
+
+			case 4169:
+				_peasantMode = 4054;
+				_peasantShould = 4140;
+				setupPeasantHotspot(_peasantMode);
+				series_unload(_peasantSquat9);
+				series_unload(_peasantSquat3);
+				series_unload(_peasantFromSquat3);
+				series_unload(_peasantSquatTo9);
+
+				if (!_G(flags)[V061] && !_flag2)
+					player_set_commands_allowed(true);
+
+				kernel_timing_trigger(1, 120);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4054:
+			switch (_peasantShould) {
+			case 4140:
+				sendWSMessage_10000(1, _peasant, _peasantRocks, 1, 5, 120,
+					_peasantRocks, 5, 5, 0);
+				break;
+
+			case 4142:
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow pesky from squat to pos3");
+				_peasantSquat3 = series_load("peasant 3 to squat");
+				_peasantSquat9 = series_load("shadow pesky from 9 to squat");
+
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim1();
+				_peasantShould = 4143;
+				break;
+
+			case 4143:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS, 1082, 322, 9,
+					triggerMachineByHashCallback3000, "pp_walking");
+				sendWSMessage_10000(_peasant, 968, 325, 9, 121, 1);
+				_peasantShould = 4144;
+				break;
+
+			case 4144:
+				sendWSMessage_60000(_peasant);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 950, 325, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim2();
+				_peasantShould = 4145;
+				break;
+
+			case 4145:
+				_peasantMode = 4053;
+				_peasantShould = 4160;
+				setupPeasantHotspot(_peasantMode);
+
+				series_unload(_peasantSquat9);
+				series_unload(_peasantSquat3);
+				series_unload(_peasantFromSquat3);
+				series_unload(_peasantSquatTo9);
+
+				if (!_flag2)
+					player_set_commands_allowed(true);
+				kernel_timing_trigger(1, 120);
+				break;
+
+			case 4146:
+				_peasantSeries = series_load("pesky peasant reach for helmet");
+				_peasantSeriesShadow = series_load("shadow pp reach for helmet");
+				_peasantSquatTo9 = series_load("peasant squat to 9");
+				_peasantFromSquat3 = series_load("shadow pesky from squat to pos3");
+
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1100, 322, 75, 0x800, true,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+				peasantAnim1();
+				_peasantShould = 4147;
+				break;
+
+			case 4147:
+				terminateMachineAndNull(_peasant);
+				terminateMachineAndNull(_peasantShadow);
+				_peasant = triggerMachineByHash_3000(8, 6,
+					*PEASANT_NORMAL_DIRS, *PEASANT_SHADOW_DIRS, 1118, 322, 3,
+					triggerMachineByHashCallback3000, "pp_walking");
+				sendWSMessage_10000(_peasant, 1200, 332, 2, 121, 1);
+				_peasantShould = 4148;
+				break;
+
+			case 4148:
+				sendWSMessage_60000(_peasant);
+				_peasant = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1240, 332, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant");
+				_peasantShadow = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 1240, 332, 75, 0x800, false,
+					triggerMachineByHashCallback, "pesky peasant shadow");
+
+				sendWSMessage_10000(1, _peasant, _peasantSeries, 1, 36, 121,
+					_peasantSeries, 36, 23, 2);
+				sendWSMessage_10000(1, _peasantShadow, _peasantSeriesShadow, 1, 36, -1,
+					_peasantSeriesShadow, 36, 23, 2);
+				_peasantShould = 4149;
+				break;
+
+			case 4149:
+				series_unload(_peasantSquatTo9);
+				series_unload(_peasantFromSquat3);
+				player_set_commands_allowed(true);
+				_peasantMode = 4054;
+				_peasantShould = 4150;
+				setupPeasantHotspot(_peasantMode);
+				kernel_timing_trigger(1, 120);
+				break;
+
+			case 4150:
+				sendWSMessage_10000(1, _peasant, _peasantSeries, 23, 36, 121,
+					_peasantSeries, 36, 36, 0);
+				sendWSMessage_10000(1, _peasantShadow, _peasantSeriesShadow, 23, 36, -1,
+					_peasantSeriesShadow, 36, 36, 0);
+				_peasantShould = 4151;
+				break;
+
+			case 4151:
+				sendWSMessage_10000(1, _peasant, _peasantSeries, 36, 23, 120,
+					_peasantSeries, 23, 23, 0);
+				sendWSMessage_10000(1, _peasantShadow, _peasantSeriesShadow, 36, 23, -1,
+					_peasantSeriesShadow, 23, 23, 0);
+				_peasantShould = 4150;
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 4055:
+			sendWSMessage_10000(1, _peasant, _peskyBegLoop, 1, 16, 120,
+				_peskyBegLoop, 16, 16, 0);
+			_peasantMode = 4057;
+			break;
+
+		case 4056:
+			frame = imath_ranged_rand(17, 19);
+			sendWSMessage_10000(1, _peasant, _peskyBegLoop, frame, frame, 120,
+				_peskyBegLoop, frame, frame, 0);
+			break;
+
+		case 4057:
+			sendWSMessage_10000(1, _peasant, _peskyBegLoop, 16, 16, 120,
+				_peskyBegLoop, 16, 16, 0);
+			break;
+
+		case 4058:
+			sendWSMessage_10000(1, _peasant, _peskyBegLoop, 16, 1, 121,
+				_peasantRocks, 1, 1, 0);
+			_peasantMode = 4059;
+			break;
+
+		case 4059:
+			series_unload(_peskyBegLoop);
+
+			switch (_peasantMode2) {
+			case 4052:
+				_peasantMode = 4052;
+				_peasantShould = 4170;
+				break;
+			case 4053:
+				_peasantMode = 4053;
+				_peasantShould = 4160;
+				break;
+			case 4054:
+				_peasantMode = 4054;
+				_peasantShould = 4140;
+				break;
+			default:
+				_peasantMode = 4051;
+				_peasantShould = 4110;
+				break;
+			}
+
+			kernel_timing_trigger(1, 120);
+			player_set_commands_allowed(true);
+			break;
+
+		default:
+			break;
+		}
+		break;
+
 	case 125:
 		kernel_trigger_dispatchx(kernel_trigger_create(126));
 		break;
@@ -1157,27 +1668,104 @@ void Room203::daemon() {
 		break;
 
 	case 131:
-#ifdef TODO
 		switch (_oldLadyMode) {
-		case 5100:
-			sendWSMessage_10000(1, _oldLady, _oldLadyFrame, 1, 1, 130, _oldLadyFrame, 1, 1, 0);
+		case 5666:
+			switch (_oldLadyShould) {
+			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;
+			}
 			break;
 
-		case 5101:
-			sendWSMessage_10000(1, _oldLady, _oldLadyFeedingBirds, 1, 26, 131,
-				_oldLadyFeedingBirds, 26, 26, 0);
-			_oldLadyShould = 5102;
+		case 5668:
+			switch (_oldLadyShould) {
+			case 5301:
+				sendWSMessage_10000(1, _oldLady, _oldLady1, 1, 6, 130, _oldLady1, 6, 6, 0);
+				_oldLadyShould = 5302;
+				break;
+
+			case 5302:
+				sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, 130, _oldLady1, 6, 6, 0);
+				break;
+
+			case 5303:
+				sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, 131, _oldLady1, 6, 6, 0);
+				_oldLadyShould = 5304;
+				break;
+
+			case 5304:
+				sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, 131, _oldLady1, 6, 6, 0);
+				_oldLadyShould = 5305;
+				break;
+
+			case 5305:
+				_ripleyShould = 1140;
+				_oldLadyShould = 5302;
+				kernel_trigger_dispatchx(kernel_trigger_create(130));
+				break;
+
+			case 5306:
+				sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 1, 131, _oldLadyFrame, 1, 1, 0);
+				_oldLadyShould = 5307;
+				break;
+
+			case 5307:
+				series_unload(_oldLady1);
+				_oldLadyMode = 5666;
+				_oldLadyShould = 5100;
+				kernel_timing_trigger(120, 130);
+				break;
+
+			case 5308:
+				sendWSMessage_10000(1, _oldLady, _oldLady1, 6, 6, -1, _oldLady1, 6, 6, 0);
+				break;
+
+			default:
+				break;
+			}
 			break;
 
-		case 5102:
-			sendWSMessage_10000(1, _oldLady, _oldLadyFeedingBirds, 26, 1, 131,
-				_oldLadyFrame, 1, 1, 0);
-			_oldLadyShould = 5100;
+		case 5669:
+			switch (_oldLadyShould) {
+			case 5200:
+				sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 1, 1, 130,
+					_oldLadyNoHelmet, 1, 1, 0);
+				break;
+
+			case 5201:
+				sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 1, 36, 131,
+					_oldLadyNoHelmet, 36, 36, 0);
+				_oldLadyShould = 5202;
+				break;
+
+			case 5202:
+				sendWSMessage_10000(1, _oldLady, _oldLadyNoHelmet, 36, 1, 130,
+					_oldLadyFrame, 2, 2, 0);
+				break;
+
+			default:
+				break;
+			}
 			break;
+
 		default:
 			break;
 		}
-#endif
 		break;
 
 	case 140:
@@ -1228,6 +1816,178 @@ void Room203::daemon() {
 		}
 		break;
 
+	case 141:
+		switch (_officialMode) {
+		case 2001:
+			switch (_officialShould) {
+			case 2010:
+				sendWSMessage_10000(1, _official, _officialStander, 1, 1, -1,
+					_officialStander, 1, 1, 0);
+				break;
+
+			case 2020:
+				ws_hide_walker();
+				_ripHandTalk = series_load("rip trek hand talk pos3");
+
+				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, _ripHandTalk, 1, 16, -1, _ripHandTalk, 1, 1, 0);
+				sendWSMessage_10000(1, _ripsh1, _shadow3, 1, 1, -1, _shadow3, 1, 1, 0);
+
+				_officialShould = 2023;
+				digi_play("03_02p01", 1, 255, 141);
+				break;
+
+			case 2023:
+				_officialHalt = series_load("official halt");
+				sendWSMessage_10000(1, _official, _officialHalt, 1, 15, 141,
+					_officialHalt, 15, 15, 0);
+				digi_play("03_02n01", 1);
+				break;
+
+			case 2024:
+				sendWSMessage_10000(1, _official, _officialHalt, 15, 1, 141,
+					_officialStander, 1, 1, 0);
+				_officialShould = 2025;
+				break;
+
+			case 2025:
+				series_unload(_officialHalt);
+				series_unload(_ripHandTalk);
+				_ripArmsX = series_load("rip trek arms x pos3");
+				_officialThroughThere = series_load("official through there");
+				sendWSMessage_10000(1, _ripley, _ripArmsX, 1, 15, -1, _ripArmsX, 15, 15, 0);
+
+				_officialShould = 2026;
+				digi_play("03_06p02", 1, 255, 141);
+				break;
+
+			case 2026:
+				sendWSMessage_10000(1, _official, _officialThroughThere, 1, 14, 141,
+					_officialThroughThere, 14, 14, 0);
+				_officialShould = 2027;
+				digi_play("03_06n02", 1);
+				break;
+
+			case 2027:
+				sendWSMessage_10000(1, _official, _officialThroughThere, 14, 1, 141,
+					_officialStander, 1, 1, 0);
+				_officialShould = 2028;
+				break;
+
+			case 2028:
+				series_unload(_officialThroughThere);
+				_ripHeadDownTalkOff = series_load("rip head down talk off td33");
+				sendWSMessage_10000(1, _ripley, _ripHeadDownTalkOff, 1, 5, -1,
+					_ripHeadDownTalkOff, 3, 5, 1);
+				_officialShould = 2029;
+				digi_play("03_07p03", 1, 255, 141);
+				break;
+
+			case 2029:
+				sendWSMessage_10000(1, _ripley, _ripHeadDownTalkOff, 5, 1, 141,
+					_ripArmsX, 15, 15, 0);
+				_officialShould = 2030;
+				break;
+
+			case 2030:
+				sendWSMessage_10000(1, _ripley, _ripArmsX, 15, 1, 141, _ripArmsX, 1, 1, 0);
+				_officialShould = 2031;
+				break;
+
+			case 2031:
+				series_unload(_ripArmsX);
+				terminateMachineAndNull(_ripley);
+				terminateMachineAndNull(_ripsh1);
+				ws_unhide_walker();
+				_officialShould = 2010;
+				kernel_trigger_dispatchx(kernel_trigger_create(140));
+				player_set_commands_allowed(true);
+				break;
+
+			case 2040:
+				_officialHalt = series_load("official halt");
+
+				if (_digiName3) {
+					digi_play(_digiName3, 1, 255, _digiTrigger3);
+					_digiName3 = nullptr;
+				}
+
+				sendWSMessage_10000(1, _official, _officialHalt, 1, 15, 141,
+					_officialHalt, 15, 15, 0);
+				_officialShould = 2042;
+				break;
+
+			case 2042:
+				sendWSMessage_10000(1, _official, _officialHalt, 15, 1, 141,
+					_officialStander, 1, 1, 0);
+				_officialShould = 2043;
+				break;
+
+			case 2043:
+				series_unload(_officialHalt);
+				_officialShould = 2010;
+				kernel_trigger_dispatchx(kernel_trigger_create(140));
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		case 2002:
+			switch (_officialShould) {
+			case 2011:
+			case 2012:
+				sendWSMessage_10000(1, _official, _officialStander, 1, 1, 140,
+					_officialStander, 1, 1, 0);
+				_officialShould = 2012;
+				break;
+
+			case 2013:
+				frame = imath_ranged_rand(1, 5);
+				sendWSMessage_10000(1, _official, _officialStander, 1, frame, 140,
+					_officialStander, frame, frame, 0);
+				break;
+
+			case 2014:
+				sendWSMessage_10000(1, _official, _officialThroughThere, 1, 14, 141,
+					_officialThroughThere, 14, 14, 0);
+				_officialShould = 2015;
+				break;
+
+			case 2015:
+				sendWSMessage_10000(1, _official, _officialThroughThere, 14, 1, 140,
+					_officialStander, 1, 1, 0);
+				_officialShould = 2016;
+				break;
+
+			case 2016:
+				_officialShould = 2012;
+				kernel_trigger_dispatchx(kernel_trigger_create(140));
+				conv_resume();
+				break;
+
+			case 2017:
+				sendWSMessage_10000(1, _official, _officialStander, 1, 1, -1,
+					_officialStander, 1, 1, 0);
+				break;
+
+			default:
+				break;
+			}
+			break;
+
+		default:
+			break;
+		}
+		break;
+
 	case 150:
 		if (_ripleyMode == 1001 && _ripleyShould == 1030 && _trigger5 != -1) {
 			kernel_trigger_dispatchx(_trigger5);
@@ -1481,7 +2241,7 @@ void Room203::daemon() {
 		break;
 
 	case 152:
-		_val2 = 0;
+		_flag2 = false;
 
 		switch (_ripleyMode) {
 		case 1001:
@@ -1816,12 +2576,41 @@ void Room203::daemon() {
 	}
 }
 
+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
+}
+
+
 void Room203::setupHelmetHotspot() {
 	for (HotSpotRec *hs = _G(currentSceneDef).hotspots; hs; hs = hs->next) {
 		if (!strcmp(hs->vocab, "SOLDIER'S HELMET")) {
 			hs->active = _G(flags)[V060] ?
 				!inv_player_has("SOLDIER'S HELMET") && hs->lr_x > 1200 :
-				hs->lr_x < 1200;
+			hs->lr_x < 1200;
 			break;
 		}
 	}
@@ -1938,7 +2727,7 @@ void Room203::peasantWalk() {
 	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) {
+			_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);
@@ -1950,7 +2739,7 @@ void Room203::peasantWalk() {
 	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) {
+			_G(player_info).x > 373 && _G(player_info).x < 763) {
 			ws_walk(_G(player_info).x, 350, nullptr, -1, 0);
 		}
 		break;
@@ -1960,32 +2749,18 @@ void Room203::peasantWalk() {
 	}
 }
 
-void Room203::pre_parser() {
-	// TODO
+void Room203::peasantAnim1() {
+	sendWSMessage_10000(1, _peasant, _peasantSquatTo9, 1, 11, 121,
+		_peasantSquatTo9, 11, 11, 0);
+	sendWSMessage_10000(1, _peasantShadow, _peasantFromSquat3, 1, 11, -1,
+		_peasantFromSquat3, 11, 11, 0);
 }
 
-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
+void Room203::peasantAnim2() {
+	sendWSMessage_10000(1, _peasant, _peasantSquat3, 6, 18, -1,
+		_peasantRocks, 1, 1, 0);
+	sendWSMessage_10000(1, _peasantShadow, _peasantSquat9, 6, 18, 121,
+		_peasantRocksShadow, 1, 1, 0);
 }
 
 } // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section2/room203.h b/engines/m4/riddle/rooms/section2/room203.h
index 85ab1336241..cd5ad23b130 100644
--- a/engines/m4/riddle/rooms/section2/room203.h
+++ b/engines/m4/riddle/rooms/section2/room203.h
@@ -31,11 +31,9 @@ namespace Rooms {
 class Room203 : public Section2Room {
 private:
 	int _val1 = 0;
-	int _val2 = 0;
 	int _val4 = 0;
 	int _val5 = 0;
 	int _val6 = 0;
-	int _val7 = 0;
 	int _val8 = 0;
 	bool _showWalker = false;
 	bool _ripley80000 = false;
@@ -43,6 +41,8 @@ private:
 	const char *_digiName1 = nullptr;
 	int _digiTrigger1 = 0;
 	const char *_digiName2 = nullptr;
+	const char *_digiName3 = nullptr;
+	int _digiTrigger3 = -1;
 	int _trigger1 = -1;
 	int _trigger2 = -1;
 	int _trigger3 = -1;
@@ -63,6 +63,8 @@ private:
 	int _ripHandsBehBack = 0;
 	int _ripHandTalk = 0;
 	int _ripTalker = 0;
+	int _ripArmsX = 0;
+	int _ripHeadDownTalkOff = 0;
 	machine *_ripsh1 = nullptr;
 	machine *_mei = nullptr;
 	int _meiTalkToRip = 0;
@@ -100,6 +102,7 @@ private:
 	int _officialTurn3_7 = 0;
 	int _officialMoveAlong = 0;
 	int _officialThroughThere = 0;
+	int _officialHalt = 0;
 	machine *_peasant = nullptr;
 	machine *_peasantShadow = nullptr;
 	int _peasantSeries = 0;
@@ -116,7 +119,10 @@ private:
 	int _peasantLayer = 0;
 	int _peasantSquat9 = 0;
 	int _peasantSquat3 = 0;
+	int _peasantSquatTo9 = 0;
+	int _peasantFromSquat3 = 0;
 	bool _flag1 = false;
+	bool _flag2 = false;
 	machine *_sg = nullptr;
 	int _203sg01 = 0;
 	machine *_g1 = nullptr;
@@ -134,6 +140,8 @@ private:
 	void setupOfficial();
 	void setupPeasant();
 	void peasantWalk();
+	void peasantAnim1();
+	void peasantAnim2();
 
 public:
 	Room203() : Section2Room() {}




More information about the Scummvm-git-logs mailing list