[Scummvm-git-logs] scummvm master -> 43af0a3bb0d422135dc17fca7645f028dd69181c

antoniou79 antoniou at cti.gr
Fri Aug 16 18:22:24 CEST 2019


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
94858f738e BLADERUNNER: Added cut generic walker models
43af0a3bb0 BLADERUNNER: Restored buzzer to annoy Dino (WIP)


Commit: 94858f738e199895d2551fd89b87460eb14ed4d2
    https://github.com/scummvm/scummvm/commit/94858f738e199895d2551fd89b87460eb14ed4d2
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2019-08-16T19:20:13+03:00

Commit Message:
BLADERUNNER: Added cut generic walker models

Changed paths:
    engines/bladerunner/game_constants.h
    engines/bladerunner/script/ai/free_slot_a.cpp
    engines/bladerunner/script/ai/free_slot_b.cpp
    engines/bladerunner/script/ai/generic_walker_a.cpp
    engines/bladerunner/script/ai/generic_walker_b.cpp
    engines/bladerunner/script/ai/generic_walker_c.cpp
    engines/bladerunner/script/init_script.cpp


diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 94e437e..ea64fdf 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1194,20 +1194,20 @@ enum Variables {
 	// variables 26 - 28 are not used
 	kVariableLutherLanceShot               = 29,
 	// variables 30 - 31 are not used
-	kVariableGenericWalkerAModel           = 32,
-	kVariableGenericWalkerBModel           = 33,
-	kVariableGenericWalkerCModel           = 34,
+	kVariableGenericWalkerAModel           = 32, // values: 0 1 2 3 4 5 (6 7 8 9 for restored content)
+	kVariableGenericWalkerBModel           = 33, // values: 0 1 2 3 4 5 (6 7 8 9 for restored content)
+	kVariableGenericWalkerCModel           = 34, // values: 0 1 2 3 4 5 (6 7 8 9 for restored content)
 	kVariableGenericWalkerConfig           = 35, // Re-purposed. Original: has no real use
 	kVariableBB10ShelvesAvailable          = 36,
 	kVariableWalkLoopActor                 = 37,
 	kVariableWalkLoopRun                   = 38,
 	kVariableDR06MannequinHeadOpened       = 39,
-	kVariableHollowayArrest                = 40, // 1 dektora, 2 gordo, 3 lucy
+	kVariableHollowayArrest                = 40, // values: 1 dektora, 2 gordo, 3 lucy
 	kVariableGordosJoke                    = 41,
 	kVariableMcCoyDrinks                   = 42, // is never checked
 	kVariableHanoiNR05Warnings             = 43,
 	kVariableHanoiNR04Warnings             = 44,
-	kVariableAffectionTowards              = 45, // 0 none, 1 steele, 2 dektora, 3 lucy
+	kVariableAffectionTowards              = 45, // values: 0 none, 1 steele, 2 dektora, 3 lucy
 	kVariableGunPulledInFrontOfSebastian   = 46,
 	kVariableNR01GetUpCounter              = 47,
 	kVariableDNAEvidence                   = 48,
@@ -1689,7 +1689,7 @@ enum GameItems {
 };
 
 enum GameModelAnimations {
-	// McCoy animations
+	//   0 -  53: McCoy animations
 	kModelAnimationMcCoyWithGunIdle              =   0,
 	kModelAnimationMcCoyWithGunGotHitRight       =   1,
 	kModelAnimationMcCoyWithGunGotHitLeft        =   2,
@@ -1744,7 +1744,9 @@ enum GameModelAnimations {
 	kModelAnimationMcCoyCrouchedIdle             =  51,
 	kModelAnimationMcCoyCrouchedGetsUp           =  52,
 	kModelAnimationMcCoyDrinkingBooze            =  53,
-	// Dektora animations
+	//  54 -  92: Steele animations
+	//  93 - 133: Gordo animations
+	// 134 - 171: Dektora animations
 	kModelAnimationDektoraCombatIdle             = 134,
 	kModelAnimationDektoraCombatWalkingA         = 135,
 	kModelAnimationDektoraCombatWalkingB         = 136,
@@ -1762,7 +1764,7 @@ enum GameModelAnimations {
 	kModelAnimationDektoraBackDodgeMove          = 148,
 	kModelAnimationDektoraFallsDead              = 149,
 	kModelAnimationDektoraSittingIdle            = 150,
-	kModelAnimationDektoraSittingShootingGun     = 151, // unused?
+	kModelAnimationDektoraSittingShootingGun     = 151, // UNUSED?
 	kModelAnimationDektoraSittingSubtleTalking   = 152,
 	kModelAnimationDektoraSittingIntenseTalking  = 153,
 	kModelAnimationDektoraSittingPullingGunOut   = 154,
@@ -1775,7 +1777,7 @@ enum GameModelAnimations {
 	kModelAnimationDektoraStandingTalkGestureC   = 161, // move both hands
 	kModelAnimationDektoraStandingTalkGestureD   = 162, // appreciative
 	kModelAnimationDektoraInFlamesA              = 163,
-	kModelAnimationDektoraInFlamesGotHit         = 164, // unused?
+	kModelAnimationDektoraInFlamesGotHit         = 164, // UNUSED?
 	kModelAnimationDektoraInFlamesStartFalling   = 165,
 	kModelAnimationDektoraInFlamesB              = 166,
 	kModelAnimationDektoraInFlamesEndFalling     = 167,
@@ -1783,7 +1785,16 @@ enum GameModelAnimations {
 	kModelAnimationDektoraDancingB               = 169,
 	kModelAnimationDektoraDancingC               = 170,
 	kModelAnimationDektoraDancingFinale          = 171,
-	//
+	// 172 - 207: Guzza animations
+	// 208 - 252: Clovis animations
+	// 253 - 276: Lucy animations
+	// 277 - 311: Izo animations
+	// 312 - 345: Sadik animations
+	// 316 - 359: Twins/Luther animations
+	// 360 - 387: EarlyQ animations
+	// 388 - 421: Zuben animations
+	// 422 - 437: Generic walker A/B/C animations (with/without umbrella, walking/still)
+	// 438 - 439: Dancer model animations (unused?)
 	kModelAnimationBulletBobsTrackingGun         = 440,
 	kModelAnimationMaleTargetEmptyHandsActive    = 441,
 	kModelAnimationMaleTargetEmptyHandsDead      = 442, // 441+1
@@ -1795,10 +1806,40 @@ enum GameModelAnimations {
 	kModelAnimationFemaleTargetWithBabyDead      = 448, // 447+1
 	kModelAnimationFemaleTargetWithGunActive     = 449,
 	kModelAnimationFemaleTargetWithGunDead       = 450, // 449+1
-	// Rachael Animations
+	//       451: T-Pose Security Guard (unused?)
+	// 452 - 469: CrazyLegs animations
+	// 470 - 486: Grigorian animations
+	// 487 - 505: Transient/Homeless animations
+	// 506 - 525: Bullet Bob animations
+	// 526 - 544: Runciter animations
+	// 545 - 554: Insect Dealer animations
+	// 555 - 565: Tyrell Guard animations
+	// 566 - 570: Mia animations
+	// 571 - 604: Officer Leary animations
+	// 605 - 641: Officer Grayford animations
+	// 642 - 660: Hanoi animations
+	// 661 - 670: Desk Clerk (Yukon) animations
+	// 671 - 681: Howie Lee animations
+	// 682 - 687: Fish Dealer animations
+	// 688 - 697: Dino Klein animations
+	// 698 - 704: Murray animations
+	// 705 - 715: Hawker's Barkeep animations
+	// 716 - 721: Holloway animations
+	// 722 - 731: Sergeant Walls animations
+	// 732 - 743: Moraji animations
+	// 744 - 750: Photographer animations
+	//       751: Rajif animations
+	// 752 - 757: EarlyQ Bartender animations
+	// 758 - 764: Shoeshine Man animations (UNUSED)
+	// 765 - 772: Tyrell animations
+	// 773 - 787: Chew animations
+	// 788 - 804: Gaff animations
+	// 805 - 808: Bear "Bryant" (Sebastian's toy) animations
+	// 809 - 821: Sebastian animations
+	// 822 - 832: Rachael animations
 	kModelAnimationRachaelWalking                  = 822,
 	kModelAnimationRachaelIdle                     = 823,
-	kModelAnimationRachaelIdleOscilate             = 824, // unused
+	kModelAnimationRachaelIdleOscilate             = 824, // UNUSED
 	kModelAnimationRachaelTalkSoftNod              = 825,
 	kModelAnimationRachaelTalkNodToLeft            = 826,
 	kModelAnimationRachaelTalkSuggestWithNodToLeft = 827,
@@ -1807,15 +1848,21 @@ enum GameModelAnimations {
 	kModelAnimationRachaelTalkHaltMovement         = 830,
 	kModelAnimationRachaelTalkHandOnChest          = 831,
 	kModelAnimationRachaelTalkHandWaveToRight      = 832,
-
+	// 833 - 837: "General" (Sebastian's toy) animations
+	// 838 - 845: Mama Isabella animations
+	// 846 - 856: Leon animations
+	// 857 - 862: Rat (Free Slot A/B) animations
+	// 863 - 876: Maggie animations
+	// 877 - 884: Hysteria Patron1 (dancer) animations
 	kModelAnimationHysteriaPatron1DanceStandingUpSemiSitAndUp = 877,
 	kModelAnimationHysteriaPatron1DanceStandingUpLeftMotion   = 878,
-	kModelAnimationHysteriaPatron1DanceStandingUpStowingMoney = 879, // original unused
+	kModelAnimationHysteriaPatron1DanceStandingUpStowingMoney = 879, // original UNUSED
 	kModelAnimationHysteriaPatron1DanceSplitsDuckAndDown      = 880,
 	kModelAnimationHysteriaPatron1DanceSplitsSemiUpAndDown    = 881,
 	kModelAnimationHysteriaPatron1DanceSplitsBackAndForth     = 882,
 	kModelAnimationHysteriaPatron1DanceStandingUpToSplits     = 883,
 	kModelAnimationHysteriaPatron1DanceSplitsToStandingUp     = 884,
+	// 885 - 892: Hysteria Patron2 (dancer) animations
 	kModelAnimationHysteriaPatron2DanceHandsBellyMotion       = 885, // most used
 	kModelAnimationHysteriaPatron2DanceHandsUpLeftMotion      = 886,
 	kModelAnimationHysteriaPatron2DanceHandsUpSitAndUp        = 887,
@@ -1824,7 +1871,11 @@ enum GameModelAnimations {
 	kModelAnimationHysteriaPatron2DanceHandsDownLeanBackForth = 890,
 	kModelAnimationHysteriaPatron2DanceHandsUpToHandsDown     = 891,
 	kModelAnimationHysteriaPatron2DanceHandsDownToHandsUp     = 892,
-
+	// 893 - 900: Mutant 1 animations
+	// 901 - 907: Mutant 2 animations
+	// 908 - 917: Mutant 3 animations
+	// 918 - 919: Taffy Patron (Gordo's hostage) animations
+	// 920 - 930: Hasan animations
 	kModelAnimationBadge                       = 931,
 	kModelAnimationBomb                        = 932,
 	kModelAnimationCandy                       = 933,
@@ -1843,7 +1894,7 @@ enum GameModelAnimations {
 	kModelAnimationFolderInKIA                 = 946,
 	kModelAnimationGoldfish                    = 947,
 	kModelAnimationFolder                      = 948,
-//	kModelAnimationLetter                      = 949, // unused?
+//	kModelAnimationLetter                      = 949, // UNUSED?
 	kModelAnimationGarterSnake                 = 950,
 	kModelAnimationLichenDogWrapper            = 951,
 	kModelAnimationLicensePlate                = 952,
@@ -1862,7 +1913,7 @@ enum GameModelAnimations {
 	kModelAnimationWeaponsOrderForm            = 965,
 	kModelAnimationShellCasings                = 966,
 	kModelAnimationSlug                        = 967,
-//	kModelAnimationKnife                       = 968, // unused - 3 frames - a knife? - spins badly
+//	kModelAnimationKnife                       = 968, // UNUSED - 3 frames - a knife? - spins badly
 	kModelAnimationStrangeScale                = 969,
 	kModelAnimationHysteriaToken               = 970,
 	kModelAnimationToyDog                      = 971,
@@ -1883,12 +1934,12 @@ enum GameModelAnimations {
 	kModelAnimationSpinnerKeys                 = 986,
 	kModelAnimationBriefcase                   = 987,
 	kModelAnimationDNAEvidence01OutOf6         = 988,
-//	kModelAnimationDNAEvidence02OutOf6         = 989, // unused - actual 2 parts of DNA
+//	kModelAnimationDNAEvidence02OutOf6         = 989, // UNUSED - actual 2 parts of DNA
 	kModelAnimationDNAEvidence03OutOf6         = 990, // used for two parts found
 	kModelAnimationDNAEvidence04OutOf6         = 991, // used for three parts found
-//	kModelAnimationDNAEvidence05OutOf6         = 992, // unused - actual 5 parts of DNA
+//	kModelAnimationDNAEvidence05OutOf6         = 992, // UNUSED - actual 5 parts of DNA
 	kModelAnimationDNAEvidenceComplete         = 993,
-//	kModelAnimationAmmoType00                  = 994, // unused - simple bullet
+//	kModelAnimationAmmoType00                  = 994, // UNUSED - simple bullet
 	kModelAnimationAmmoType01                  = 995, // from Bullet Bob's
 	kModelAnimationAmmoType02                  = 996  // from Izo stash (Act 4)
 };
diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp
index eaee3e1..441100b 100644
--- a/engines/bladerunner/script/ai/free_slot_a.cpp
+++ b/engines/bladerunner/script/ai/free_slot_a.cpp
@@ -466,7 +466,8 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 5:
-		// a bug? This is an animation for Maggie (exploding)
+		// This is an animation for Maggie (exploding) but is also used for generic death states (rats, generic walkers)
+		// probably for debug purposes
 		*animation = 874;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) {
diff --git a/engines/bladerunner/script/ai/free_slot_b.cpp b/engines/bladerunner/script/ai/free_slot_b.cpp
index 1124d28..c3014b8 100644
--- a/engines/bladerunner/script/ai/free_slot_b.cpp
+++ b/engines/bladerunner/script/ai/free_slot_b.cpp
@@ -329,7 +329,8 @@ bool AIScriptFreeSlotB::UpdateAnimation(int *animation, int *frame) {
 		break;
 
 	case 5:
-		// a bug? This is an animation for Maggie (exploding)
+		// This is an animation for Maggie (exploding) but is also used for generic death states (rats, generic walkers)
+		// probably for debug purposes
 		*animation = 874;
 		_animationFrame++;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) {
diff --git a/engines/bladerunner/script/ai/generic_walker_a.cpp b/engines/bladerunner/script/ai/generic_walker_a.cpp
index 6cb3639..d1e0d04 100644
--- a/engines/bladerunner/script/ai/generic_walker_a.cpp
+++ b/engines/bladerunner/script/ai/generic_walker_a.cpp
@@ -140,7 +140,7 @@ void AIScriptGenericWalkerA::ClickedByPlayer() {
 			Actor_Says(kActorMcCoy, 1085, 3);
 			break;
 		case 9:
-			Actor_Says(kActorMcCoy, 365, 3);
+			Actor_Says(kActorMcCoy, 365, 3); // Re-used line, same as case 1
 			break;
 		case 10:
 			Actor_Says(kActorMcCoy, 7415, 3);
@@ -220,45 +220,77 @@ bool AIScriptGenericWalkerA::UpdateAnimation(int *animation, int *frame) {
 	case kGenericWalkerAStatesIdle:
 		switch (Global_Variable_Query(kVariableGenericWalkerAModel)) {
 		case 0:
-			*animation = 426;
+			*animation = 426; // Hatted Person with umbrella still
 			break;
 		case 1:
-			*animation = 430;
+			*animation = 430; // Hooded person with umbrella still
 			break;
 		case 2:
-			*animation = 437;
+			*animation = 437; // Hatted lady with wooden umbrella still (different from 436 model!)
 			break;
 		case 3:
-			*animation = 431;
+			*animation = 431; // Person with glasses and beard still
 			break;
 		case 4:
-			*animation = 427;
+			*animation = 427; // Hatted Person without umbrella still
 			break;
 		case 5:
-			*animation = 433;
+			*animation = 433; // Punk person with glasses still
+			break;
+		case 6:
+			*animation = 434; // Hatted child walking // frame 11 could be used for still
+			_animationFrame = 11;
+			break;
+		case 7:
+			*animation = 435; // Child walking // frame 5 could be used for still
+			_animationFrame = 5;
+			break;
+		case 8:
+			*animation = 422; // Hatted person walking fast // frame 1 could be used for still
+			_animationFrame = 1;
+			break;
+		case 9:
+			*animation = 423; // Hatted person walking lowered face // frame 6 could be used for still
+			_animationFrame = 6;
 			break;
 		}
-		_animationFrame = 0;
+		if (!_vm->_cutContent
+		    || Global_Variable_Query(kVariableGenericWalkerAModel) < 6
+		) {
+			_animationFrame = 0;
+		}
 		break;
 	case kGenericWalkerAStatesWalk:
 		switch (Global_Variable_Query(kVariableGenericWalkerAModel)) {
 		case 0:
-			*animation = 424;
+			*animation = 424; // Hatted person with umbrella walking
 			break;
 		case 1:
-			*animation = 428;
+			*animation = 428; // Hooded person with umbrella walking
 			break;
 		case 2:
-			*animation = 436;
+			*animation = 436; // Hatted person with wooden umbrella walking
 			break;
 		case 3:
-			*animation = 429;
+			*animation = 429; // Person with glasses and beard walking
 			break;
 		case 4:
-			*animation = 425;
+			*animation = 425; // Hatted Person without umbrella - walking small steps
 			break;
 		case 5:
-			*animation = 432;
+			*animation = 432; // Punk person with glasses walking
+			break;
+		case 6:
+			*animation = 434; // Hatted child walking
+			break;
+		case 7:
+			*animation = 435; // Child walking
+			break;
+		case 8:
+			*animation = 422; // Hatted person walking fast
+			break;
+		case 9:
+			*animation = 423; // Hatted person walking lowered face
 			break;
 		}
 		++_animationFrame;
@@ -267,6 +299,8 @@ bool AIScriptGenericWalkerA::UpdateAnimation(int *animation, int *frame) {
 		}
 		break;
 	case kGenericWalkerAStatesDie:
+		// This is an animation for Maggie (exploding) but is also used for generic death states (rats, generic walkers)
+		// probably for debug purposes
 		*animation = 874;
 		++_animationFrame;
 		if (++_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874))
@@ -373,10 +407,15 @@ bool AIScriptGenericWalkerA::prepareWalker() {
 	int model = 0;
 	do {
 		if (isInside) {
-			model = Random_Query(3, 5);
+			model = Random_Query(3, 5); // 0, 1, 2 models have umbrellas so they should be in outdoors locations
 		} else {
-			model = Random_Query(0, 5);
+			if (_vm->_cutContent) {
+				model = Random_Query(0, 9);
+			} else {
+				model = Random_Query(0, 5);
+			}
 		}
+		// this while loop ensures choosing a different model for Walker A than the Walker B or Walker C
 	} while (model == Global_Variable_Query(kVariableGenericWalkerBModel) || model == Global_Variable_Query(kVariableGenericWalkerCModel));
 
 	Global_Variable_Set(kVariableGenericWalkerAModel, model);
diff --git a/engines/bladerunner/script/ai/generic_walker_b.cpp b/engines/bladerunner/script/ai/generic_walker_b.cpp
index 8bd17fa..4f8d4d3 100644
--- a/engines/bladerunner/script/ai/generic_walker_b.cpp
+++ b/engines/bladerunner/script/ai/generic_walker_b.cpp
@@ -115,7 +115,7 @@ void AIScriptGenericWalkerB::ClickedByPlayer() {
 		Actor_Says(kActorMcCoy, 1085, 3);
 		break;
 	case 9:
-		Actor_Says(kActorMcCoy, 365, 3);
+		Actor_Says(kActorMcCoy, 365, 3); // Re-used line, same as case 1
 		break;
 	case 10:
 		Actor_Says(kActorMcCoy, 7415, 3);
@@ -201,8 +201,28 @@ bool AIScriptGenericWalkerB::UpdateAnimation(int *animation, int *frame) {
 		case 5:
 			*animation = 433;
 			break;
+		case 6:
+			*animation = 434; // Hatted child walking // frame 11 could be used for still
+			_animationFrame = 11;
+			break;
+		case 7:
+			*animation = 435; // Child walking // frame 5 could be used for still
+			_animationFrame = 5;
+			break;
+		case 8:
+			*animation = 422; // Hatted person walking fast // frame 1 could be used for still
+			_animationFrame = 1;
+			break;
+		case 9:
+			*animation = 423; // Hatted person walking lowered face // frame 6 could be used for still
+			_animationFrame = 6;
+			break;
+		}
+		if (!_vm->_cutContent
+		    || Global_Variable_Query(kVariableGenericWalkerAModel) < 6
+		) {
+			_animationFrame = 0;
 		}
-		_animationFrame = 0;
 		break;
 	case kGenericWalkerBStatesWalk:
 		switch (Global_Variable_Query(kVariableGenericWalkerBModel)) {
@@ -224,6 +244,18 @@ bool AIScriptGenericWalkerB::UpdateAnimation(int *animation, int *frame) {
 		case 5:
 			*animation = 432;
 			break;
+		case 6:
+			*animation = 434; // Hatted child walking
+			break;
+		case 7:
+			*animation = 435; // Child walking
+			break;
+		case 8:
+			*animation = 422; // Hatted person walking fast
+			break;
+		case 9:
+			*animation = 423; // Hatted person walking lowered face
+			break;
 		}
 		++_animationFrame;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
@@ -231,6 +263,8 @@ bool AIScriptGenericWalkerB::UpdateAnimation(int *animation, int *frame) {
 		}
 		break;
 	case kGenericWalkerBStatesDie:
+		// This is an animation for Maggie (exploding) but is also used for generic death states (rats, generic walkers)
+		// probably for debug purposes
 		*animation = 874;
 		++_animationFrame;
 		if (++_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874))
@@ -326,10 +360,15 @@ bool AIScriptGenericWalkerB::prepareWalker() {
 	int model = 0;
 	do {
 		if (isInside) {
-			model = Random_Query(3, 5);
+			model = Random_Query(3, 5); // 0, 1, 2 models have umbrellas so they should be in outdoors locations
 		} else {
-			model = Random_Query(0, 5);
+			if (_vm->_cutContent) {
+				model = Random_Query(0, 9);
+			} else {
+				model = Random_Query(0, 5);
+			}
 		}
+		// this while loop ensures choosing a different model for Walker B than the Walker A or Walker C
 	} while (model == Global_Variable_Query(kVariableGenericWalkerAModel) || model == Global_Variable_Query(kVariableGenericWalkerCModel));
 
 	Global_Variable_Set(kVariableGenericWalkerBModel, model);
diff --git a/engines/bladerunner/script/ai/generic_walker_c.cpp b/engines/bladerunner/script/ai/generic_walker_c.cpp
index 159c57a..b92cf71 100644
--- a/engines/bladerunner/script/ai/generic_walker_c.cpp
+++ b/engines/bladerunner/script/ai/generic_walker_c.cpp
@@ -116,7 +116,7 @@ void AIScriptGenericWalkerC::ClickedByPlayer() {
 		Actor_Says(kActorMcCoy, 1085, 3);
 		break;
 	case 9:
-		Actor_Says(kActorMcCoy, 365, 3);
+		Actor_Says(kActorMcCoy, 365, 3); // Re-used line, same as case 1
 		break;
 	case 10:
 		Actor_Says(kActorMcCoy, 7415, 3);
@@ -202,8 +202,28 @@ bool AIScriptGenericWalkerC::UpdateAnimation(int *animation, int *frame) {
 		case 5:
 			*animation = 433;
 			break;
+		case 6:
+			*animation = 434; // Hatted child walking // frame 11 could be used for still
+			_animationFrame = 11;
+			break;
+		case 7:
+			*animation = 435; // Child walking // frame 5 could be used for still
+			_animationFrame = 5;
+			break;
+		case 8:
+			*animation = 422; // Hatted person walking fast // frame 1 could be used for still
+			_animationFrame = 1;
+			break;
+		case 9:
+			*animation = 423; // Hatted person walking lowered face // frame 6 could be used for still
+			_animationFrame = 6;
+			break;
+		}
+		if (!_vm->_cutContent
+		    || Global_Variable_Query(kVariableGenericWalkerAModel) < 6
+		) {
+			_animationFrame = 0;
 		}
-		_animationFrame = 0;
 		break;
 	case kGenericWalkerCStatesWalk:
 		switch (Global_Variable_Query(kVariableGenericWalkerCModel)) {
@@ -225,6 +245,18 @@ bool AIScriptGenericWalkerC::UpdateAnimation(int *animation, int *frame) {
 		case 5:
 			*animation = 432;
 			break;
+		case 6:
+			*animation = 434; // Hatted child walking
+			break;
+		case 7:
+			*animation = 435; // Child walking
+			break;
+		case 8:
+			*animation = 422; // Hatted person walking fast
+			break;
+		case 9:
+			*animation = 423; // Hatted person walking lowered face
+			break;
 		}
 		++_animationFrame;
 		if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
@@ -232,6 +264,8 @@ bool AIScriptGenericWalkerC::UpdateAnimation(int *animation, int *frame) {
 		}
 		break;
 	case kGenericWalkerCStatesDie:
+		// This is an animation for Maggie (exploding) but is also used for generic death states (rats, generic walkers)
+		// probably for debug purposes
 		*animation = 874;
 		++_animationFrame;
 		if (++_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874))
@@ -327,11 +361,15 @@ bool AIScriptGenericWalkerC::prepareWalker() {
 	int model = 0;
 	do {
 		if (isInside) {
-			model = Random_Query(3, 5);
+			model = Random_Query(3, 5); // 0, 1, 2 models have umbrellas so they should be in outdoors locations
 		} else {
-			model = Random_Query(0, 5);
+			if (_vm->_cutContent) {
+				model = Random_Query(0, 9);
+			} else {
+				model = Random_Query(0, 5);
+			}
 		}
-	// Here is probably bug in original code, because it not using kVariableGenericWalkerBModel but kVariableGenericWalkerCModel
+		// this while loop ensures choosing a different model for Walker C than the Walker A or Walker B
 	} while (model == Global_Variable_Query(kVariableGenericWalkerAModel) || model == Global_Variable_Query(kVariableGenericWalkerBModel));
 
 
diff --git a/engines/bladerunner/script/init_script.cpp b/engines/bladerunner/script/init_script.cpp
index 12cbe93..c62466a 100644
--- a/engines/bladerunner/script/init_script.cpp
+++ b/engines/bladerunner/script/init_script.cpp
@@ -1880,7 +1880,7 @@ void InitScript::Init_World_Waypoints() {
 	World_Waypoint_Set(196, kSetBB05, 39.41f, -60.31f, 308.35f);
 	World_Waypoint_Set(197, kSetBB05, 99.41f, -60.31f, 220.35f);
 	World_Waypoint_Set(198, kSetBB05, 267.41f, -60.31f, 180.35f);
-	// 199 - UNUSED?
+	// 199 - UNUSED
 	World_Waypoint_Set(200, kSetBB06_BB07, -44.46f, -0.04f, 177.4f);
 	World_Waypoint_Set(201, kSetBB06_BB07, 137.0f, -0.04f, 17.0f);
 	World_Waypoint_Set(202, kSetRC03, -610.0f, -4.01f, 237.11f);
@@ -2092,7 +2092,7 @@ void InitScript::Init_World_Waypoints() {
 	World_Waypoint_Set(407, kSetUG10, 0.0f, 81.02f, -512.0f);
 	World_Waypoint_Set(408, kSetUG10, 0.0f, 1.15f, 400.0f);
 	World_Waypoint_Set(409, kSetUG04, -48.0f, -1.74f, -983.0f);
-	// 410 - UNUSED?
+	// 410 - UNUSED
 	World_Waypoint_Set(411, kSetUG05, 80.0f, -16.72f, -4.0f);
 	World_Waypoint_Set(412, kSetUG05, -48.0f, -11.0f, -352.0f);
 	World_Waypoint_Set(413, kSetUG06, -109.0f, 0.0f, 285.0f);
@@ -2206,7 +2206,7 @@ void InitScript::Init_World_Waypoints() {
 	World_Waypoint_Set(521, kSetHF04, 482.02f, -0.31f, -661.24f);
 	World_Waypoint_Set(522, kSetHF04, 1183.98f, -0.31f, -176.25f);
 	World_Waypoint_Set(523, kSetHF04, -45.0f, -0.34f, -351.0f);
-	// 524 - UNUSED?
+	// 524 - UNUSED
 	// 525 - kSetKP02 - Free Slot A (Rat) AI script
 	// 526 - kSetKP02 - Free Slot A (Rat) AI script
 	// 527 - kSetKP02 - Free Slot B (Rat) AI script
@@ -2234,7 +2234,7 @@ void InitScript::Init_World_Waypoints() {
 	World_Waypoint_Set(549, kSetNR04, -15.0f, 0.0f, 338.0f);
 	World_Waypoint_Set(550, kSetKP05_KP06, -785.31f, 0.0f, -237.05f);
 	World_Waypoint_Set(551, kSetKP05_KP06, -737.31f, 0.0f, -145.05f);
-	// 552 - UNUSED?
+	// 552 - UNUSED
 	// 553 - kSetRC03 - Izo AI script
 }
 


Commit: 43af0a3bb0d422135dc17fca7645f028dd69181c
    https://github.com/scummvm/scummvm/commit/43af0a3bb0d422135dc17fca7645f028dd69181c
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2019-08-16T19:20:13+03:00

Commit Message:
BLADERUNNER: Restored buzzer to annoy Dino (WIP)

Changed paths:
    engines/bladerunner/script/ai/klein.cpp
    engines/bladerunner/script/scene/ps07.cpp
    engines/bladerunner/set.cpp


diff --git a/engines/bladerunner/script/ai/klein.cpp b/engines/bladerunner/script/ai/klein.cpp
index 066bbad..66d8801 100644
--- a/engines/bladerunner/script/ai/klein.cpp
+++ b/engines/bladerunner/script/ai/klein.cpp
@@ -232,7 +232,15 @@ bool AIScriptKlein::GoalChanged(int currentGoalNumber, int newGoalNumber) {
 		AI_Movement_Track_Append(kActorKlein, 32, 5);  // kSetPS07
 		AI_Movement_Track_Repeat(kActorKlein);
 		break;
-	// TODO: missing kGoalKleinIsAnnoyedByMcCoyFinal case
+	case kGoalKleinIsAnnoyedByMcCoyFinal:
+		// Note: Original was missing the kGoalKleinIsAnnoyedByMcCoyFinal case
+		//       so we just "break" for the original behavior
+		if (_vm->_cutContent) {
+			AI_Movement_Track_Flush(kActorKlein);
+			AI_Movement_Track_Append(kActorKlein, 74, Random_Query(10, 20)); // kSetPS07
+			AI_Movement_Track_Repeat(kActorKlein);
+		}
+		break;
 	case kGoalKleinAwayAtEndOfActOne:
 		AI_Movement_Track_Flush(kActorKlein);
 		Actor_Put_In_Set(kActorKlein, kSetFreeSlotC);
diff --git a/engines/bladerunner/script/scene/ps07.cpp b/engines/bladerunner/script/scene/ps07.cpp
index 6ded562..7182545 100644
--- a/engines/bladerunner/script/scene/ps07.cpp
+++ b/engines/bladerunner/script/scene/ps07.cpp
@@ -43,8 +43,14 @@ void SceneScriptPS07::InitializeScene() {
 }
 
 void SceneScriptPS07::SceneLoaded() {
-	Obstacle_Object("RICE BOX01", true);
+	Obstacle_Object("RICE BOX01", true); // garbage can
 	Unobstacle_Object("RICE BOX01", true);
+	if (_vm->_cutContent) {
+		Unobstacle_Object("L.MOUSE", true);
+		Unobstacle_Object("L.MOUSE2", true);
+		Clickable_Object("L.MOUSE");
+		Clickable_Object("L.MOUSE2");
+	}
 }
 
 bool SceneScriptPS07::MouseClick(int x, int y) {
diff --git a/engines/bladerunner/set.cpp b/engines/bladerunner/set.cpp
index fe9c208..8c0dc6c 100644
--- a/engines/bladerunner/set.cpp
+++ b/engines/bladerunner/set.cpp
@@ -486,6 +486,12 @@ void Set::overrideSceneObjectInfo(int objectId) const {
 			_objects[objectId].bbox.setXYZ(695.63f, 42.65f, -628.10f, 706.71f, 69.22f, -614.47f);
 		}
 		break;
+	case kScenePS07:
+		// Make the mid-wall thinner to enable access to clickable object (buzzer)
+		if (objectId == 1 && _objects[objectId].name == "BOX01") {
+			_objects[objectId].bbox.setXYZ(526.91f, 0.0f, -582.62f, 531.50f, 48.43f, -511.72f);
+		}
+		break;
 	case kSceneNR05:
 		if (objectId == 10 && _objects[objectId].name == "BOX08") {
 			_objects[objectId].bbox.setXYZ(-748.75f, 0.0f, -257.39f, -685.37f, 32.01f, -211.47f);
@@ -580,6 +586,16 @@ void Set::patchInAdditionalObjectsInSet() {
 		setupNewObjectInSet(custObjName, bbox);
 		break;
 
+	case kScenePS07:
+		// add missing buzzer button to annoy Klein
+		bbox = BoundingBox(530.16f, 48.44f, -570.13f, 550.41f, 50.46f, -558.77f);
+		custObjName = "L.MOUSE";
+		setupNewObjectInSet(custObjName, bbox);
+		bbox = BoundingBox(541.18f, 28.95f, -566.66f, 555.18f, 44.46f, -548.79f);
+		custObjName = "L.MOUSE2";
+		setupNewObjectInSet(custObjName, bbox);
+		break;
+
 	case kSceneNR05:
 		bbox = BoundingBox(-690.0f, 0.0f, -155.0f, -640.0f, 33.47f, -100.0f);
 		custObjName = "CUSTLFTBLOCK";





More information about the Scummvm-git-logs mailing list