BLADERUNNER: Act 4 meet with Rachael polish

This commit is contained in:
Thanasis Antoniou 2019-05-13 22:29:26 +03:00
parent a14dffbf4b
commit 093c18564c
6 changed files with 108 additions and 89 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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

View File

@ -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)

View File

@ -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);

View File

@ -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);