aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantoniou792019-08-16 19:19:10 +0300
committerantoniou792019-08-16 19:20:13 +0300
commit94858f738e199895d2551fd89b87460eb14ed4d2 (patch)
tree53bad8c4325ea66fc71a9ebcd5265b4a7bdf748e
parent878675cbd0487b2064abdd452006fdcfb8d6896d (diff)
downloadscummvm-rg350-94858f738e199895d2551fd89b87460eb14ed4d2.tar.gz
scummvm-rg350-94858f738e199895d2551fd89b87460eb14ed4d2.tar.bz2
scummvm-rg350-94858f738e199895d2551fd89b87460eb14ed4d2.zip
BLADERUNNER: Added cut generic walker models
-rw-r--r--engines/bladerunner/game_constants.h91
-rw-r--r--engines/bladerunner/script/ai/free_slot_a.cpp3
-rw-r--r--engines/bladerunner/script/ai/free_slot_b.cpp3
-rw-r--r--engines/bladerunner/script/ai/generic_walker_a.cpp71
-rw-r--r--engines/bladerunner/script/ai/generic_walker_b.cpp47
-rw-r--r--engines/bladerunner/script/ai/generic_walker_c.cpp48
-rw-r--r--engines/bladerunner/script/init_script.cpp8
7 files changed, 220 insertions, 51 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 94e437e3f4..ea64fdf49e 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 eaee3e1bfb..441100bf7d 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 1124d283ec..c3014b83e3 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 6cb363991e..d1e0d0469e 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 8bd17fa92d..4f8d4d3d60 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 159c57a319..b92cf71622 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 12cbe9349b..c62466acfc 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
}