diff options
| -rw-r--r-- | engines/bladerunner/game_constants.h | 12 | ||||
| -rw-r--r-- | engines/bladerunner/script/ai/mccoy.cpp | 40 | ||||
| -rw-r--r-- | engines/bladerunner/script/ai/rachael.cpp | 130 | ||||
| -rw-r--r-- | engines/bladerunner/script/ai_script.h | 2 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ma06.cpp | 7 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ug04.cpp | 6 | 
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);  | 
