[Scummvm-git-logs] scummvm master -> 0dedb1a34f9fe9de4ad249a3d9d86f9abb6fffbf

antoniou79 a.antoniou79 at gmail.com
Fri Dec 11 15:54:54 UTC 2020


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:
0dedb1a34f BLADERUNNER: Animation descriptions for Grigorian and transient


Commit: 0dedb1a34f9fe9de4ad249a3d9d86f9abb6fffbf
    https://github.com/scummvm/scummvm/commit/0dedb1a34f9fe9de4ad249a3d9d86f9abb6fffbf
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2020-12-11T17:35:18+02:00

Commit Message:
BLADERUNNER: Animation descriptions for Grigorian and transient

Also usage checks and comments for potential bugs. And a small bugfix for Grigorian's cross arms animation

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/grigorian.cpp
    engines/bladerunner/script/ai/klein.cpp
    engines/bladerunner/script/ai/officer_leary.cpp
    engines/bladerunner/script/ai/runciter.cpp
    engines/bladerunner/script/ai/sergeant_walls.cpp
    engines/bladerunner/script/ai/steele.cpp
    engines/bladerunner/script/ai/transient.cpp
    engines/bladerunner/script/kia_script.cpp


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index c7c8e74b89..1f62239931 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -2015,7 +2015,43 @@ enum GameModelAnimations {
 	kModelAnimationCrazylegsHandsUpLowersHands   = 468,
 	kModelAnimationCrazylegsHangsUpMobile        = 469,
 	// 470 - 486: Grigorian animations
+	kModelAnimationGrigorianWalking                  = 470, // UNUSED
+	kModelAnimationGrigorianSitIdle                  = 471, // UNUSED
+	kModelAnimationGrigorianSitIdleNailBiting        = 472, // UNUSED
+	kModelAnimationGrigorianSitDismissTalk           = 473, // UNUSED
+	kModelAnimationGrigorianSitHeadacheTalk          = 474, // UNUSED
+	kModelAnimationGrigorianSitProtestTalk           = 475, // UNUSED
+	kModelAnimationGrigorianSitToStandingUp          = 476, // UNUSED
+	kModelAnimationGrigorianSitFromStandingUp        = 477, // UNUSED
+	kModelAnimationGrigorianStandIdle                = 478, // maybe calm talk too?
+	kModelAnimationGrigorianStandAnnoyedTalk         = 479,
+	kModelAnimationGrigorianStandArmsCrossedTalk     = 480,
+	kModelAnimationGrigorianStandProtestTalk         = 481,
+	kModelAnimationGrigorianStandProtestMoreTalk     = 482,
+	kModelAnimationGrigorianStandProtestEvenMoreTalk = 483,
+	kModelAnimationGrigorianStandInsistentTalk       = 484,
+	kModelAnimationGrigorianStandDismissOrAccuseTalk = 485,
+	kModelAnimationGrigorianStandBegOrMockingTalk    = 486,
 	// 487 - 505: Transient/Homeless animations
+	kModelAnimationTransientWalking                  = 487,
+	kModelAnimationTransientRunning                  = 488, // UNUSED
+	kModelAnimationTransientShotDeadCollapseInPlace  = 489,
+	kModelAnimationTransientShotInTheBackDropsDead   = 490, // UNUSED
+	kModelAnimationTransientLayingIdle               = 491,
+	kModelAnimationTransientLayingCalmTalk           = 492,
+	kModelAnimationTransientLayingMoreCalmTalk       = 493,
+	kModelAnimationTransientLayingThisAndThatTalk    = 494,
+	kModelAnimationTransientLayingShotDead           = 495,
+	kModelAnimationTransientLayingGestureGiveOrTake  = 496,
+	kModelAnimationTransientIdle                     = 497,
+	kModelAnimationTransientIdleToSearchingTrash     = 498, // UNUSED
+	kModelAnimationTransientPickingNodeAndWiping     = 499,
+	kModelAnimationTransientGestureGive              = 500, // or probably idle, but it doesn't look like idle
+	kModelAnimationTransientScratchBackOfHeadTalk    = 501,
+	kModelAnimationTransientDescriptiveTalk          = 502,
+	kModelAnimationTransientPointingAtTalk           = 503, // Could be used when he points to where Zuben ran to
+	kModelAnimationTransientSearchingTrash           = 504,
+	kModelAnimationTransientSearchingTrashToIdle     = 505,
 	// 506 - 525: Bullet Bob animations
 	// 526 - 544: Runciter animations
 	// 545 - 554: Insect Dealer animations
diff --git a/engines/bladerunner/script/ai/grigorian.cpp b/engines/bladerunner/script/ai/grigorian.cpp
index 8996daed38..f563cefaba 100644
--- a/engines/bladerunner/script/ai/grigorian.cpp
+++ b/engines/bladerunner/script/ai/grigorian.cpp
@@ -103,101 +103,111 @@ bool AIScriptGrigorian::UpdateAnimation(int *animation, int *frame) {
 	switch (_animationState) {
 	case 0:
 		if (var_45CA10 == 0) {
-			*animation = 478;
-			if (var_45CA14) {
+			*animation = kModelAnimationGrigorianStandIdle;
+			if (var_45CA14 > 0) {
 				--var_45CA14;
 			} else {
 				++_animationFrame;
 				if (_animationFrame == 5 || _animationFrame == 13) {
 					var_45CA14 = Random_Query(2, 4);
 				}
-				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(478)) {
+				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandIdle)) {
 					_animationFrame = 0;
 					var_45CA10 = Random_Query(0, 2);
 				}
 			}
 		} else if (var_45CA10 == 1) {
-			*animation = 479;
+			*animation = kModelAnimationGrigorianStandAnnoyedTalk;
 			++_animationFrame;
-			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(479)) {
-				*animation = 478;
+			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandAnnoyedTalk)) {
+				*animation = kModelAnimationGrigorianStandIdle;
 				_animationFrame = 0;
 				var_45CA10 = 0;
 			}
 		} else if (var_45CA10 == 2) {
-			*animation = 480;
-			if (var_45CA14) {
+			*animation = kModelAnimationGrigorianStandArmsCrossedTalk;
+			if (var_45CA14 > 0) {
 				--var_45CA14;
 			} else {
 				++_animationFrame;
 				if (_animationFrame >= 8 && _animationFrame <= 10) {
 					var_45CA14 = Random_Query(2, 4);
 				}
-				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(478)) {
-					*animation = 478;
+#if BLADERUNNER_ORIGINAL_BUGS
+				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandIdle)) {
+					*animation = kModelAnimationGrigorianStandIdle;
 					_animationFrame = 0;
 					var_45CA10 = 0;
 				}
+#else
+				// bugfix set proper current animation here to get frameset number of frames
+				//        (could also use *animation)
+				if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandArmsCrossedTalk)) {
+					*animation = kModelAnimationGrigorianStandIdle;
+					_animationFrame = 0;
+					var_45CA10 = 0;
+				}
+#endif // BLADERUNNER_ORIGINAL_BUGS
 			}
 		}
 		break;
 	case 1:
-		*animation = 479;
+		*animation = kModelAnimationGrigorianStandAnnoyedTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(479)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandAnnoyedTalk)) {
 			_animationFrame = 0;
 		}
 		break;
 	case 2:
-		*animation = 481;
+		*animation = kModelAnimationGrigorianStandProtestTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(481)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandProtestTalk)) {
 			_animationFrame = 0;
 		}
 		break;
 	case 3:
-		*animation = 482;
+		*animation = kModelAnimationGrigorianStandProtestMoreTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(482)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandProtestMoreTalk)) {
 			_animationState = 2;
 			_animationFrame = 0;
-			*animation = 481;
+			*animation = kModelAnimationGrigorianStandProtestTalk;
 		}
 		break;
 	case 4:
-		*animation = 483;
+		*animation = kModelAnimationGrigorianStandProtestEvenMoreTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(483)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandProtestEvenMoreTalk)) {
 			_animationState = 2;
 			_animationFrame = 0;
-			*animation = 481;
+			*animation = kModelAnimationGrigorianStandProtestTalk;
 		}
 		break;
 	case 5:
-		*animation = 484;
+		*animation = kModelAnimationGrigorianStandInsistentTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(484)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandInsistentTalk)) {
 			_animationState = 2;
 			_animationFrame = 0;
-			*animation = 481;
+			*animation = kModelAnimationGrigorianStandProtestTalk;
 		}
 		break;
 	case 6:
-		*animation = 485;
+		*animation = kModelAnimationGrigorianStandDismissOrAccuseTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(485)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandDismissOrAccuseTalk)) {
 			_animationState = 2;
 			_animationFrame = 0;
-			*animation = 481;
+			*animation = kModelAnimationGrigorianStandProtestTalk;
 		}
 		break;
 	case 7:
-		*animation = 486;
+		*animation = kModelAnimationGrigorianStandBegOrMockingTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(486)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationGrigorianStandBegOrMockingTalk)) {
 			_animationState = 2;
 			_animationFrame = 0;
-			*animation = 481;
+			*animation = kModelAnimationGrigorianStandProtestTalk;
 		}
 		break;
 	default:
@@ -215,6 +225,7 @@ bool AIScriptGrigorian::ChangeAnimationMode(int mode) {
 		_animationFrame = 0;
 		break;
 	case kAnimationModeWalk:
+		// TODO A bug? This animation state is not for walking. It is for kModelAnimationGrigorianStandAnnoyedTalk.
 		if (_animationState != 1) {
 			_animationState = 1;
 			_animationFrame = 0;
diff --git a/engines/bladerunner/script/ai/klein.cpp b/engines/bladerunner/script/ai/klein.cpp
index b9baac115c..0c5caa68f9 100644
--- a/engines/bladerunner/script/ai/klein.cpp
+++ b/engines/bladerunner/script/ai/klein.cpp
@@ -470,7 +470,8 @@ bool AIScriptKlein::UpdateAnimation(int *animation, int *frame) {
 		_animationState = _animationStateNext;
 		break;
 	default:
-		*animation = 399; // TODO: A bug? This belongs to Zuben
+		// TODO: A bug? 399 is a Zuben animation
+		*animation = 399;
 		break;
 	}
 	*frame = _animationFrame;
diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index b1f39397fd..a4d55b0d73 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -1063,6 +1063,7 @@ bool AIScriptOfficerLeary::UpdateAnimation(int *animation, int *frame) {
 		*frame = _animationFrame;
 		return true;
 	default:
+		// TODO A bug? This is an animation of Zuben
 		*animation = 399;
 		*frame = _animationFrame;
 		return true;
diff --git a/engines/bladerunner/script/ai/runciter.cpp b/engines/bladerunner/script/ai/runciter.cpp
index 2318b234c5..d83b4c27ba 100644
--- a/engines/bladerunner/script/ai/runciter.cpp
+++ b/engines/bladerunner/script/ai/runciter.cpp
@@ -498,6 +498,7 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	default:
+		// TODO: A bug? 399 is a Zuben animation
 		*animation = 399;
 		_animationFrame = 0;
 		*frame = _animationFrame;
diff --git a/engines/bladerunner/script/ai/sergeant_walls.cpp b/engines/bladerunner/script/ai/sergeant_walls.cpp
index a44f9af9ce..68cbd5440a 100644
--- a/engines/bladerunner/script/ai/sergeant_walls.cpp
+++ b/engines/bladerunner/script/ai/sergeant_walls.cpp
@@ -185,6 +185,7 @@ bool AIScriptSergeantWalls::UpdateAnimation(int *animation, int *frame) {
 		}
 		break;
 	default:
+		// TODO: A bug? 399 is a Zuben animation
 		*animation = 399;
 		break;
 	}
diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp
index 60fe314a38..603bbbbddc 100644
--- a/engines/bladerunner/script/ai/steele.cpp
+++ b/engines/bladerunner/script/ai/steele.cpp
@@ -1998,8 +1998,7 @@ bool AIScriptSteele::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	default:
-		// TODO is this an error?
-		//      406 is a Zuben animation
+		// TODO A bug? 406 is a Zuben animation
 		*animation = 406;
 		_animationFrame = 0;
 		break;
diff --git a/engines/bladerunner/script/ai/transient.cpp b/engines/bladerunner/script/ai/transient.cpp
index 1c8430f3d6..9ac76a2c76 100644
--- a/engines/bladerunner/script/ai/transient.cpp
+++ b/engines/bladerunner/script/ai/transient.cpp
@@ -225,137 +225,137 @@ bool AIScriptTransient::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 bool AIScriptTransient::UpdateAnimation(int *animation, int *frame) {
 	switch (_animationState) {
 	case 0:
-		*animation = 499;
+		*animation = kModelAnimationTransientPickingNodeAndWiping;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(499)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientPickingNodeAndWiping)) {
 			_animationFrame = 0;
 		} else {
-			*animation = 497;
-			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(497)) {
+			*animation = kModelAnimationTransientIdle;
+			if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientIdle)) {
 				_animationFrame = 0;
 			}
 		}
 		break;
 	case 1:
-		*animation = 487;
+		*animation = kModelAnimationTransientWalking;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(487)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientWalking)) {
 			_animationFrame = 0;
 		}
 		break;
 	case 2:
-		*animation = 500;
+		*animation = kModelAnimationTransientGestureGive;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(500)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientGestureGive)) {
 			_animationFrame = 0;
 		}
 		break;
 	case 3:
-		*animation = 501;
+		*animation = kModelAnimationTransientScratchBackOfHeadTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(501)) {
-			*animation = 500;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientScratchBackOfHeadTalk)) {
+			*animation = kModelAnimationTransientGestureGive;
 			_animationState = 2;
 			_animationFrame = 0;
 		}
 		break;
 	case 4:
-		*animation = 502;
+		*animation = kModelAnimationTransientDescriptiveTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(502)) {
-			*animation = 500;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientDescriptiveTalk)) {
+			*animation = kModelAnimationTransientGestureGive;
 			_animationState = 2;
 			_animationFrame = 0;
 		}
 		break;
 	case 5:
-		*animation = 503;
+		*animation = kModelAnimationTransientPointingAtTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(503)) {
-			*animation = 500;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientPointingAtTalk)) {
+			*animation = kModelAnimationTransientGestureGive;
 			_animationState = 2;
 			_animationFrame = 0;
 		}
 		break;
 	case 6:
-		*animation = 491;
+		*animation = kModelAnimationTransientLayingIdle;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(491)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingIdle)) {
 			_animationFrame = 0;
 		}
 		break;
 	case 7:
-		*animation = 492;
+		*animation = kModelAnimationTransientLayingCalmTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(492)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingCalmTalk)) {
 			_animationState = 6;
 			_animationFrame = 0;
 		}
 		break;
 	case 8:
-		*animation = 493;
+		*animation = kModelAnimationTransientLayingMoreCalmTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(493)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingMoreCalmTalk)) {
 			_animationState = 6;
 			_animationFrame = 0;
 		}
 		break;
 	case 9:
-		*animation = 494;
+		*animation = kModelAnimationTransientLayingThisAndThatTalk;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(494)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingThisAndThatTalk)) {
 			_animationState = 6;
 			_animationFrame = 0;
 		}
 		break;
 	case 10:
-		*animation = 496;
+		*animation = kModelAnimationTransientLayingGestureGiveOrTake;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(496)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingGestureGiveOrTake)) {
 			_animationState = 6;
 			_animationFrame = 0;
 		}
 		break;
 	case 11:
-		*animation = 495;
+		*animation = kModelAnimationTransientLayingShotDead;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(495)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingShotDead)) {
 			Actor_Set_Frame_Rate_FPS(kActorTransient, 8);
 			_animationState = 12;
-			_animationFrame = Slice_Animation_Query_Number_Of_Frames(495) - 1;
+			_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingShotDead) - 1;
 		}
 		break;
 	case 12:
-		*animation = 495;
-		_animationFrame = Slice_Animation_Query_Number_Of_Frames(495) - 1;
+		*animation = kModelAnimationTransientLayingShotDead;
+		_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingShotDead) - 1;
 		break;
 	case 14:
-		*animation = 489;
+		*animation = kModelAnimationTransientShotDeadCollapseInPlace;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(489)) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientShotDeadCollapseInPlace)) {
 			Actor_Set_Goal_Number(kActorTransient, 3);
 			_animationState = 15;
-			_animationFrame = Slice_Animation_Query_Number_Of_Frames(489) - 1;
+			_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientShotDeadCollapseInPlace) - 1;
 			Actor_Set_Targetable(kActorTransient, false);
 			Actor_Retired_Here(kActorTransient, 120, 24, 1, -1);
 		}
 		break;
 	case 15:
-		*animation = 489;
-		_animationFrame = Slice_Animation_Query_Number_Of_Frames(489) - 1;
+		*animation = kModelAnimationTransientShotDeadCollapseInPlace;
+		_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientShotDeadCollapseInPlace) - 1;
 		break;
 	case 16:
-		*animation = 504;
+		*animation = kModelAnimationTransientSearchingTrash;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(504) - 1) {
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientSearchingTrash) - 1) {
 			_animationFrame = 0;
 		}
 		break;
 	case 17:
-		*animation = 505;
+		*animation = kModelAnimationTransientSearchingTrashToIdle;
 		++_animationFrame;
-		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(505) - 1) {
-			*animation = 497;
+		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientSearchingTrashToIdle) - 1) {
+			*animation = kModelAnimationTransientIdle;
 			_animationFrame = 0;
 			_animationState = 0;
 			Actor_Change_Animation_Mode(kActorTransient, kAnimationModeIdle);
@@ -366,20 +366,21 @@ bool AIScriptTransient::UpdateAnimation(int *animation, int *frame) {
 		}
 		break;
 	case 18:
-		*animation = 491;
+		*animation = kModelAnimationTransientLayingIdle;
 		++_animationFrame;
 		if (_animationFrame - 1 == 4) {
 			_animationState = 19;
 		}
 		break;
 	case 19:
-		*animation = 491;
+		*animation = kModelAnimationTransientLayingIdle;
 		--_animationFrame;
 		if (_animationFrame + 1 == 4) {
 			_animationState = 18;
 		}
 		break;
 	default:
+		// TODO: A bug? 399 is a Zuben animation
 		*animation = 399;
 		break;
 	}
@@ -489,7 +490,7 @@ bool AIScriptTransient::ChangeAnimationMode(int mode) {
 		break;
 	case 89:
 		_animationState = 12;
-		_animationFrame = Slice_Animation_Query_Number_Of_Frames(495) - 1;
+		_animationFrame = Slice_Animation_Query_Number_Of_Frames(kModelAnimationTransientLayingShotDead) - 1;
 		break;
 	}
 
diff --git a/engines/bladerunner/script/kia_script.cpp b/engines/bladerunner/script/kia_script.cpp
index 3bdd2be4de..7155502ce4 100644
--- a/engines/bladerunner/script/kia_script.cpp
+++ b/engines/bladerunner/script/kia_script.cpp
@@ -826,6 +826,9 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
 		KIA_Play_Actor_Dialogue(kActorSteele, 3390);
 		KIA_Play_Actor_Dialogue(kActorSteele, 3400);
 		KIA_Play_Actor_Dialogue(kActorSteele, 3410);
+		// TODO this line of Grigorian is supposedly interrupted by Steele's following line
+		//      maybe implement a way to not wait before the next line is played, similar to Actor_Says_With_Pause()
+		//       (look into tick() for kia.cpp)
 		KIA_Play_Actor_Dialogue(kActorGrigorian, 1260);
 		KIA_Play_Actor_Dialogue(kActorSteele, 3420);
 		KIA_Play_Actor_Dialogue(kActorSteele, 3430);




More information about the Scummvm-git-logs mailing list