aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/game_constants.h12
-rw-r--r--engines/bladerunner/script/ai/mccoy.cpp40
-rw-r--r--engines/bladerunner/script/ai/rachael.cpp130
-rw-r--r--engines/bladerunner/script/ai_script.h2
-rw-r--r--engines/bladerunner/script/scene/ma06.cpp7
-rw-r--r--engines/bladerunner/script/scene/ug04.cpp6
6 files changed, 108 insertions, 89 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index a88693bd64..1670b19fe3 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1752,6 +1752,18 @@ enum GameModelAnimations {
kModelAnimationFemaleTargetWithGunActive = 449,
kModelAnimationFemaleTargetWithGunDead = 450, // 449+1
+ kModelAnimationRachaelWalking = 822,
+ kModelAnimationRachaelIdle = 823,
+ kModelAnimationRachaelIdleOscilate = 824, // unused
+ kModelAnimationRachaelTalkSoftNod = 825,
+ kModelAnimationRachaelTalkNodToLeft = 826,
+ kModelAnimationRachaelTalkSuggestWithNodToLeft = 827,
+ kModelAnimationRachaelTalkIndiffWithNodToLeft = 828,
+ kModelAnimationRachaelTalkOfferPointing = 829,
+ kModelAnimationRachaelTalkHaltMovement = 830,
+ kModelAnimationRachaelTalkHandOnChest = 831,
+ kModelAnimationRachaelTalkHandWaveToRight = 832,
+
kModelAnimationBadge = 931,
kModelAnimationBomb = 932,
kModelAnimationCandy = 933,
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index f5c6342fab..1fd268451f 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -48,7 +48,7 @@ void AIScriptMcCoy::Initialize() {
_animationLoopFrameMin = 0;
_animationLoopFrameMax = 3;
_animationStateNextSpecial = 3;
- _animationNextSpecial = 20;
+ _animationNextSpecial = kModelAnimationMcCoyProtestingTalk;
_nextSoundId = -1;
_NR10SteeleShooting = false;
_fallSpeed = 0;
@@ -623,7 +623,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
_animationState = _animationStateNextSpecial;
*animation = _animationNextSpecial;
_animationStateNextSpecial = 4;
- _animationNextSpecial = 20;
+ _animationNextSpecial = kModelAnimationMcCoyProtestingTalk;
} else if (_animationFrame <= 4 && Game_Flag_Query(kFlagMcCoyAnimation1)) {
Game_Flag_Reset(kFlagMcCoyAnimation1);
*animation = kModelAnimationMcCoyIdle;
@@ -1472,11 +1472,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 3;
- _animationNext = 20;
+ _animationNext = kModelAnimationMcCoyProtestingTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 4;
- _animationNextSpecial = 20;
+ _animationNextSpecial = kModelAnimationMcCoyProtestingTalk;
}
break;
@@ -1564,11 +1564,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 5;
- _animationNext = 21;
+ _animationNext = kModelAnimationMcCoyScratchHeadTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 5;
- _animationNextSpecial = 21;
+ _animationNextSpecial = kModelAnimationMcCoyScratchHeadTalk;
}
break;
@@ -1577,11 +1577,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 6;
- _animationNext = 27;
+ _animationNext = kModelAnimationMcCoyScratchEarLongerTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 6;
- _animationNextSpecial = 27;
+ _animationNextSpecial = kModelAnimationMcCoyScratchEarLongerTalk;
}
break;
@@ -1590,11 +1590,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 7;
- _animationNext = 22;
+ _animationNext = kModelAnimationMcCoyPointingTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 7;
- _animationNextSpecial = 22;
+ _animationNextSpecial = kModelAnimationMcCoyPointingTalk;
}
break;
@@ -1602,11 +1602,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 8;
- _animationNext = 23;
+ _animationNext = kModelAnimationMcCoyUpsetTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 8;
- _animationNextSpecial = 23;
+ _animationNextSpecial = kModelAnimationMcCoyUpsetTalk;
}
break;
@@ -1614,11 +1614,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 9;
- _animationNext = 24;
+ _animationNext = kModelAnimationMcCoyDismissiveTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 9;
- _animationNextSpecial = 24;
+ _animationNextSpecial = kModelAnimationMcCoyDismissiveTalk;
}
break;
@@ -1626,11 +1626,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 10;
- _animationNext = 25;
+ _animationNext = kModelAnimationMcCoyScratchEarTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 10;
- _animationNextSpecial = 25;
+ _animationNextSpecial = kModelAnimationMcCoyScratchEarTalk;
}
break;
@@ -1638,11 +1638,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 11;
- _animationNext = 26;
+ _animationNext = kModelAnimationMcCoyHandsOnWaistTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 11;
- _animationNextSpecial = 26;
+ _animationNextSpecial = kModelAnimationMcCoyHandsOnWaistTalk;
}
break;
@@ -1650,11 +1650,11 @@ bool AIScriptMcCoy::ChangeAnimationMode(int mode) {
if (_animationState < 3 || _animationState > 12) {
_animationState = 13;
_animationStateNext = 12;
- _animationNext = 27;
+ _animationNext = kModelAnimationMcCoyScratchEarLongerTalk;
} else {
Game_Flag_Reset(kFlagMcCoyAnimation1);
_animationStateNextSpecial = 12;
- _animationNextSpecial = 27;
+ _animationNextSpecial = kModelAnimationMcCoyScratchEarLongerTalk;
}
break;
diff --git a/engines/bladerunner/script/ai/rachael.cpp b/engines/bladerunner/script/ai/rachael.cpp
index 63879b7f20..000d3d2556 100644
--- a/engines/bladerunner/script/ai/rachael.cpp
+++ b/engines/bladerunner/script/ai/rachael.cpp
@@ -162,6 +162,10 @@ bool AIScriptRachael::GoalChanged(int currentGoalNumber, int newGoalNumber) {
}
break;
+ case kGoalRachaelIsInsideElevatorStartTalkAct4:
+ dialogue_act4();
+ break;
+
case kGoalRachaelIsOutWalksToPoliceHQAct4:
// added goal for restored content
// fall through
@@ -195,101 +199,101 @@ bool AIScriptRachael::GoalChanged(int currentGoalNumber, int newGoalNumber) {
bool AIScriptRachael::UpdateAnimation(int *animation, int *frame) {
switch (_animationState) {
case 0:
- *animation = 823;
+ *animation = kModelAnimationRachaelIdle;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(823) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelIdle) - 1) {
_animationFrame = 0;
}
break;
case 1:
- *animation = 822;
+ *animation = kModelAnimationRachaelWalking;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(822) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelWalking) - 1) {
_animationFrame = 0;
}
break;
case 2:
if (!_animationFrame && _flag) {
- *animation = 823;
+ *animation = kModelAnimationRachaelIdle;
_animationState = 0;
} else {
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(825) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkSoftNod) - 1) {
_animationFrame = 0;
}
}
break;
case 3:
- *animation = 826;
+ *animation = kModelAnimationRachaelTalkNodToLeft;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(826) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkNodToLeft) - 1) {
_animationFrame = 0;
_animationState = 2;
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
}
break;
case 4:
- *animation = 827;
+ *animation = kModelAnimationRachaelTalkSuggestWithNodToLeft;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(827) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkSuggestWithNodToLeft) - 1) {
_animationFrame = 0;
_animationState = 2;
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
}
break;
case 5:
- *animation = 828;
+ *animation = kModelAnimationRachaelTalkIndiffWithNodToLeft;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(828) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkIndiffWithNodToLeft) - 1) {
_animationFrame = 0;
_animationState = 2;
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
}
break;
case 6:
- *animation = 829;
+ *animation = kModelAnimationRachaelTalkOfferPointing;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(829) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkOfferPointing) - 1) {
_animationFrame = 0;
_animationState = 2;
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
}
break;
case 7:
- *animation = 830;
+ *animation = kModelAnimationRachaelTalkHaltMovement;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(830) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkHaltMovement) - 1) {
_animationFrame = 0;
_animationState = 2;
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
}
break;
case 8:
- *animation = 831;
+ *animation = kModelAnimationRachaelTalkHandOnChest;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(831) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkHandOnChest) - 1) {
_animationFrame = 0;
_animationState = 2;
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
}
break;
case 9:
- *animation = 832;
+ *animation = kModelAnimationRachaelTalkHandWaveToRight;
_animationFrame++;
- if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(832) - 1) {
+ if (_animationFrame > Slice_Animation_Query_Number_Of_Frames(kModelAnimationRachaelTalkHandWaveToRight) - 1) {
_animationFrame = 0;
_animationState = 2;
- *animation = 825;
+ *animation = kModelAnimationRachaelTalkSoftNod;
}
break;
@@ -304,10 +308,10 @@ bool AIScriptRachael::UpdateAnimation(int *animation, int *frame) {
bool AIScriptRachael::ChangeAnimationMode(int mode) {
switch (mode) {
case kAnimationModeIdle:
- if (_animationState >= 2 && _animationState <= 9) {
+ if (_animationState >= 2 && _animationState <= 9) { // talking states
_flag = 1;
} else {
- _animationState = 0;
+ _animationState = 0; // idle state
_animationFrame = 0;
}
break;
@@ -531,46 +535,46 @@ void AIScriptRachael::dialogue_agenda2() {
}
// Not used in the game
-void AIScriptRachael::dialogue_agenda3() {
- Actor_Says(kActorMcCoy, 2865, 3); // Lobby
+void AIScriptRachael::dialogue_act4() {
+ Actor_Says(kActorMcCoy, 2865, 17); // Lobby
if (_vm->_cutContent) {
- Game_Flag_Set(kFlagMA06toMA07);
- Ambient_Sounds_Add_Looping_Sound(kSfxSPINUP1, 75, 0, 1);
+ Game_Flag_Set(kFlagMA06toMA07); // to Ground Floor / Lobby
Delay(500);
+ AI_Movement_Track_Pause(kActorRachael);
Actor_Face_Actor(kActorRachael, kActorMcCoy, true);
}
- Actor_Says(kActorRachael, 320, 3); // McCoy
- Actor_Says(kActorRachael, 330, 3); // RachaelRememberMe
+ Actor_Says(kActorRachael, 320, 12); // McCoy
+ Actor_Says(kActorRachael, 330, 17); // RachaelRememberMe
if (_vm->_cutContent) {
Actor_Face_Actor(kActorMcCoy, kActorRachael, true);
}
- Actor_Says(kActorMcCoy, 2870, 3); // Jesus DontKnowWhatIRememberAnyMore
- Actor_Says(kActorRachael, 340, 3); // NowYouLookInTrouble
- Actor_Says(kActorMcCoy, 2875, 3); // Saw me here before
- Actor_Says(kActorRachael, 350, 3); // YesWhatHappened
- Actor_Says(kActorMcCoy, 2880, 3); // Suddenly
- Actor_Says(kActorMcCoy, 2885, 3); // MyAnimalMaggiePrizedPosessionDisappeared
- Actor_Says(kActorRachael, 360, 3); // ImSorry
- Actor_Says(kActorRachael, 370, 3); // IKnowTheFeeling
- Actor_Says(kActorMcCoy, 2890, 3); // You do?
- Actor_Says(kActorRachael, 380, 3); // EverythingWeBelieve
- Actor_Says(kActorRachael, 390, 3); // WhatIsReality
- Actor_Says(kActorRachael, 400, 3); // MaybeAllSomeoneElsesFantasy
- Actor_Says(kActorMcCoy, 2895, 3); // That would make us a fantasy
- Actor_Says(kActorRachael, 410, 3); // ThatsRightAndInTheBlinkOfAnEyeGoesAway
- Actor_Says(kActorMcCoy, 2900, 3); // But just yesterday
- Actor_Says(kActorRachael, 420, 3); // YesterdayTwoMonthsAgo
- Actor_Says(kActorMcCoy, 2905, 3); // ButIfWeBothRemembered
- Actor_Says(kActorRachael, 430, 3); // CopiesOnlyCopies
- Actor_Says(kActorRachael, 440, 3); // OnlyThingWeCanTrustIsNow
- Actor_Says(kActorMcCoy, 2910, 3); // NotLosingMyMindEscapedReplicant
- Actor_Says(kActorMcCoy, 2920, 3); // SomeoneSettingMeUpUsingMe
- Actor_Says(kActorRachael, 450, 3); // NothingWrongWithAcceptingWhatYouAre
- Actor_Says(kActorMcCoy, 2925, 3); // NotAReplicantGoddamnit
- Actor_Says(kActorMcCoy, 2930, 3); // MaybeYouCanHelpMeYouAreTyrellsNiece
- Actor_Says(kActorRachael, 460, 3); // Why not take that V-K test
- Actor_Says(kActorMcCoy, 2935, 3); // YeahGoodIdeaMaybeIllDoThat
- Actor_Says(kActorRachael, 470, 3); // Hope you get the answers looking for McCoy.
+ Actor_Says(kActorMcCoy, 2870, 13); // Jesus DontKnowWhatIRememberAnyMore
+ Actor_Says(kActorRachael, 340, 12); // NowYouLookInTrouble
+ Actor_Says(kActorMcCoy, 2875, 15); // Saw me here before
+ Actor_Says(kActorRachael, 350, 3); // YesWhatHappened
+ Actor_Says(kActorMcCoy, 2880, 16); // Suddenly
+ Actor_Says(kActorMcCoy, 2885, 12); // MyAnimalMaggiePrizedPosessionDisappeared
+ Actor_Says(kActorRachael, 360, 3); // ImSorry
+ Actor_Says(kActorRachael, 370, 3); // IKnowTheFeeling
+ Actor_Says(kActorMcCoy, 2890, 18); // You do?
+ Actor_Says(kActorRachael, 380, 18); // EverythingWeBelieve
+ Actor_Says(kActorRachael, 390, 12); // WhatIsReality
+ Actor_Says(kActorRachael, 400, 13); // MaybeAllSomeoneElsesFantasy
+ Actor_Says(kActorMcCoy, 2895, 14); // That would make us a fantasy
+ Actor_Says(kActorRachael, 410, 15); // ThatsRightAndInTheBlinkOfAnEyeGoesAway
+ Actor_Says(kActorMcCoy, 2900, 16); // But just yesterday
+ Actor_Says(kActorRachael, 420, 14); // YesterdayTwoMonthsAgo
+ Actor_Says(kActorMcCoy, 2905, 13); // ButIfWeBothRemembered
+ Actor_Says(kActorRachael, 430, 16); // CopiesOnlyCopies
+ Actor_Says(kActorRachael, 440, 12); // OnlyThingWeCanTrustIsNow
+ Actor_Says(kActorMcCoy, 2910, 14); // NotLosingMyMindEscapedReplicant
+ Actor_Says(kActorMcCoy, 2920, 17); // SomeoneSettingMeUpUsingMe
+ Actor_Says(kActorRachael, 450, 3); // NothingWrongWithAcceptingWhatYouAre
+ Actor_Says(kActorMcCoy, 2925, 15); // NotAReplicantGoddamnit
+ Actor_Says(kActorMcCoy, 2930, 14); // MaybeYouCanHelpMeYouAreTyrellsNiece
+ Actor_Says(kActorRachael, 460, 13); // Why not take that V-K test
+ Actor_Says(kActorMcCoy, 2935, 19); // YeahGoodIdeaMaybeIllDoThat
+ Actor_Says(kActorRachael, 470, 18); // Hope you get the answers looking for McCoy.
}
} // End of namespace BladeRunner
diff --git a/engines/bladerunner/script/ai_script.h b/engines/bladerunner/script/ai_script.h
index 463d063b41..2fb282077a 100644
--- a/engines/bladerunner/script/ai_script.h
+++ b/engines/bladerunner/script/ai_script.h
@@ -420,7 +420,7 @@ DECLARE_SCRIPT(Rachael)
void dialogue_start();
void dialogue_agenda1();
void dialogue_agenda2();
- void dialogue_agenda3();
+ void dialogue_act4();
END_SCRIPT
DECLARE_SCRIPT(GeneralDoll)
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index 380c6ad7bb..7155beda1e 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -158,6 +158,9 @@ void SceneScriptMA06::PlayerWalkedIn() {
Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideElevatorStartTalkAct4);
//
Delay(500);
+ Game_Flag_Reset(kFlagMA01toMA06);
+ Game_Flag_Reset(kFlagMA02toMA06);
+ Game_Flag_Reset(kFlagMA07toMA06);
Ambient_Sounds_Adjust_Looping_Sound(kSfxSPINUP1, 0, 0, 1);
Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 0, 0, 1);
Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3, 0, 0, 1);
@@ -165,10 +168,6 @@ void SceneScriptMA06::PlayerWalkedIn() {
Ambient_Sounds_Remove_Looping_Sound(kSfxAPRTFAN1, 1); // stop other ambient
Ambient_Sounds_Remove_Looping_Sound(kSfxELEAMB3, 1); // stop other ambient
- Game_Flag_Reset(kFlagMA01toMA06);
- Game_Flag_Reset(kFlagMA02toMA06);
- Game_Flag_Reset(kFlagMA07toMA06);
-
// Player_Gains_Control();
Set_Enter(kSetMA07, kSceneMA07);
Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
diff --git a/engines/bladerunner/script/scene/ug04.cpp b/engines/bladerunner/script/scene/ug04.cpp
index 766f0b9457..a0db3143fb 100644
--- a/engines/bladerunner/script/scene/ug04.cpp
+++ b/engines/bladerunner/script/scene/ug04.cpp
@@ -74,7 +74,11 @@ void SceneScriptUG04::InitializeScene() {
}
void SceneScriptUG04::SceneLoaded() {
- Obstacle_Object("NAV", true);
+#if BLADERUNNER_ORIGINAL_BUGS
+ Obstacle_Object("NAV", true); // a bug? this object does not exist in the scene
+#else
+ Obstacle_Object("VAN", true);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Unobstacle_Object("RUBBLE", true);
Unobstacle_Object("FLOOR DEBRIS WADS", true);
Unobstacle_Object("FLOOR DEBRIS WADS01", true);