mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-05 17:57:14 +00:00
BLADERUNNER: Don't restart dialogue with offended Larry
This commit is contained in:
parent
f8b5033680
commit
7fba5444ee
@ -2284,6 +2284,16 @@ enum GoalLeon {
|
||||
kGoalLeonGone = 8
|
||||
};
|
||||
|
||||
enum GoalCrazyLegs {
|
||||
kGoalCrazyLegsDefault = 0,
|
||||
kGoalCrazyLegsShotAndHit = 1,
|
||||
kGoalCrazyLegsLeavesShowroom = 2, // set either after McCoy re-holsters his gun, or if McCoy tells him to lie to Steele
|
||||
// goal 10 seems unused
|
||||
// goal 10 updates to 11 (also unused)
|
||||
kGoalCrazyLegsMcCoyDrewHisGun = 210, // When McCoy draws gun and Ch < 5
|
||||
kGoalCrazyLegsIsArrested = 699
|
||||
};
|
||||
|
||||
enum GoalFreeSlotA { // Rat
|
||||
kGoalFreeSlotAUG15Wait = 300,
|
||||
kGoalFreeSlotAUG15WalkOut = 301,
|
||||
|
@ -77,34 +77,34 @@ void AIScriptCrazylegs::OtherAgentExitedThisScene(int otherActorId) {
|
||||
}
|
||||
|
||||
void AIScriptCrazylegs::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
|
||||
if (Actor_Query_Goal_Number(kActorCrazylegs) != 2 && !otherActorId) {
|
||||
if (Actor_Query_Goal_Number(kActorCrazylegs) != kGoalCrazyLegsLeavesShowroom && otherActorId == kActorMcCoy) {
|
||||
if (combatMode && Global_Variable_Query(kVariableChapter) < 5) {
|
||||
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, 1);
|
||||
Actor_Face_Actor(kActorMcCoy, kActorCrazylegs, 1);
|
||||
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, true);
|
||||
Actor_Face_Actor(kActorMcCoy, kActorCrazylegs, true);
|
||||
Actor_Says(kActorCrazylegs, 430, 3);
|
||||
Actor_Says_With_Pause(kActorCrazylegs, 440, 0.0, 3);
|
||||
Actor_Says(kActorMcCoy, 1870, -1);
|
||||
Actor_Says(kActorCrazylegs, 450, 3);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, 210);
|
||||
} else if (Actor_Query_Goal_Number(kActorCrazylegs) == 210) {
|
||||
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, 1);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, kGoalCrazyLegsMcCoyDrewHisGun);
|
||||
} else if (Actor_Query_Goal_Number(kActorCrazylegs) == kGoalCrazyLegsMcCoyDrewHisGun) {
|
||||
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, true);
|
||||
Actor_Says(kActorCrazylegs, 460, 3);
|
||||
Actor_Says(kActorCrazylegs, 470, 3);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, 2);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, kGoalCrazyLegsLeavesShowroom);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AIScriptCrazylegs::ShotAtAndMissed() {
|
||||
if (Actor_Query_Goal_Number(kActorCrazylegs) == 2)
|
||||
if (Actor_Query_Goal_Number(kActorCrazylegs) == kGoalCrazyLegsLeavesShowroom)
|
||||
return;
|
||||
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, 2);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, kGoalCrazyLegsLeavesShowroom);
|
||||
}
|
||||
|
||||
bool AIScriptCrazylegs::ShotAtAndHit() {
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, 1);
|
||||
Actor_Says(kActorMcCoy, 1875, 4);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, kGoalCrazyLegsShotAndHit);
|
||||
Actor_Says(kActorMcCoy, 1875, 4); // I wouldn't drag that bucket of bolts if you paid me.
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -117,17 +117,17 @@ int AIScriptCrazylegs::GetFriendlinessModifierIfGetsClue(int otherActorId, int c
|
||||
}
|
||||
|
||||
bool AIScriptCrazylegs::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
||||
if (newGoalNumber == 0) {
|
||||
if (newGoalNumber == kGoalCrazyLegsDefault) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (newGoalNumber == 1) {
|
||||
if (newGoalNumber == kGoalCrazyLegsShotAndHit) {
|
||||
AI_Movement_Track_Flush(kActorCrazylegs);
|
||||
Actor_Set_Targetable(kActorCrazylegs, 0);
|
||||
Actor_Set_Targetable(kActorCrazylegs, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (newGoalNumber == 2) {
|
||||
if (newGoalNumber == kGoalCrazyLegsLeavesShowroom) {
|
||||
AI_Movement_Track_Flush(kActorCrazylegs);
|
||||
AI_Movement_Track_Append(kActorCrazylegs, 360, 0);
|
||||
AI_Movement_Track_Append(kActorCrazylegs, 40, 0);
|
||||
|
@ -157,7 +157,7 @@ bool SceneScriptHF01::ClickedOnActor(int actorId) {
|
||||
|| Actor_Clue_Query(kActorMcCoy, kCluePhoneCallLucy1)
|
||||
)
|
||||
&& !Game_Flag_Query(kFlagCrazylegsArrested)
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != 2
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != kGoalCrazyLegsLeavesShowroom
|
||||
&& Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
|
||||
&& !Game_Flag_Query(kFlagHF01TalkToLovedOne)
|
||||
) {
|
||||
@ -340,7 +340,7 @@ void SceneScriptHF01::PlayerWalkedIn() {
|
||||
}
|
||||
|
||||
if (!Game_Flag_Query(kFlagCrazylegsArrested)
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != 2
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != kGoalCrazyLegsLeavesShowroom
|
||||
) {
|
||||
if (Actor_Clue_Query(kActorMcCoy, kCluePhoneCallLucy1)
|
||||
&& Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsLucy
|
||||
|
@ -80,8 +80,8 @@ bool SceneScriptHF05::ClickedOn3DObject(const char *objectName, bool a2) {
|
||||
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 95.0f, 40.63f, 308.0f, 0, true, false, 0)) {
|
||||
Actor_Face_Object(kActorMcCoy, "TOP CON", true);
|
||||
if (Actor_Query_In_Set(kActorCrazylegs, kSetHF05)
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != 1
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != 2
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != kGoalCrazyLegsShotAndHit
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != kGoalCrazyLegsLeavesShowroom
|
||||
) {
|
||||
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, true);
|
||||
Actor_Says(kActorCrazylegs, 480, 13);
|
||||
@ -152,11 +152,26 @@ bool SceneScriptHF05::ClickedOn3DObject(const char *objectName, bool a2) {
|
||||
|
||||
bool SceneScriptHF05::ClickedOnActor(int actorId) {
|
||||
if (actorId == kActorCrazylegs) {
|
||||
#if BLADERUNNER_ORIGINAL_BUGS
|
||||
if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorCrazylegs, 60, true, false)) {
|
||||
Actor_Face_Actor(kActorMcCoy, kActorCrazylegs, true);
|
||||
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, true);
|
||||
dialogueWithCrazylegs1();
|
||||
}
|
||||
#else
|
||||
// Don't (re)start a dialogue with CrayLegs if he is leaving or insulted by McCoy drawing his gun
|
||||
if (Actor_Query_Goal_Number(kActorCrazylegs) != kGoalCrazyLegsLeavesShowroom
|
||||
&& Actor_Query_Goal_Number(kActorCrazylegs) != kGoalCrazyLegsMcCoyDrewHisGun) {
|
||||
if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorCrazylegs, 60, true, false)) {
|
||||
Actor_Face_Actor(kActorMcCoy, kActorCrazylegs, true);
|
||||
Actor_Face_Actor(kActorCrazylegs, kActorMcCoy, true);
|
||||
dialogueWithCrazylegs1();
|
||||
}
|
||||
} else {
|
||||
Actor_Face_Actor(kActorMcCoy, kActorCrazylegs, true);
|
||||
Actor_Says(kActorMcCoy, 5560, 15); // Hey
|
||||
}
|
||||
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -347,8 +362,8 @@ void SceneScriptHF05::PlayerWalkedIn() {
|
||||
}
|
||||
|
||||
void SceneScriptHF05::PlayerWalkedOut() {
|
||||
if (Actor_Query_Goal_Number(kActorCrazylegs) == 210) {
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, 2);
|
||||
if (Actor_Query_Goal_Number(kActorCrazylegs) == kGoalCrazyLegsMcCoyDrewHisGun) {
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, kGoalCrazyLegsLeavesShowroom);
|
||||
}
|
||||
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
|
||||
Ambient_Sounds_Remove_All_Looping_Sounds(1);
|
||||
@ -544,7 +559,7 @@ void SceneScriptHF05::dialogueWithCrazylegs2() { // cut feature? it is impossibl
|
||||
Game_Flag_Set(kFlagCrazylegsArrested);
|
||||
Actor_Put_In_Set(kActorCrazylegs, kSetPS09);
|
||||
Actor_Set_At_XYZ(kActorCrazylegs, -315.15f, 0.0f, 241.06f, 583);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, 699);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, kGoalCrazyLegsIsArrested);
|
||||
Game_Flag_Set(kFlagCrazylegsArrestedTalk);
|
||||
if (Game_Flag_Query(kFlagSpinnerAtNR01)) {
|
||||
Set_Enter(kSetNR01, kSceneNR01);
|
||||
@ -659,9 +674,9 @@ void SceneScriptHF05::talkWithCrazylegs3(int affectionTowardsActor) {
|
||||
} else {
|
||||
Actor_Says(kActorLucy, 380, kAnimationModeTalk);
|
||||
}
|
||||
Actor_Says(kActorMcCoy, 1740, 14);
|
||||
Actor_Says(kActorCrazylegs, 120, 12);
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, 2);
|
||||
Actor_Says(kActorMcCoy, 1740, 14); // You tell her we're headed South.
|
||||
Actor_Says(kActorCrazylegs, 120, 12); // Ten Four.
|
||||
Actor_Set_Goal_Number(kActorCrazylegs, kGoalCrazyLegsLeavesShowroom);
|
||||
if (affectionTowardsActor == kActorDektora) {
|
||||
Actor_Says(kActorDektora, 100, kAnimationModeTalk);
|
||||
} else {
|
||||
|
@ -370,7 +370,7 @@ void SceneScriptMA04::phoneCallWithDektora() {
|
||||
Actor_Says(kActorDektora, 340, 3);
|
||||
Actor_Says(kActorDektora, 350, 3);
|
||||
if (Game_Flag_Query(kFlagCrazylegsArrested)
|
||||
|| Actor_Query_Goal_Number(kActorCrazylegs) == 2
|
||||
|| Actor_Query_Goal_Number(kActorCrazylegs) == kGoalCrazyLegsLeavesShowroom
|
||||
) {
|
||||
answer = 1170; // CLOVIS
|
||||
} else {
|
||||
@ -425,7 +425,7 @@ void SceneScriptMA04::phoneCallWithLucy() {
|
||||
Actor_Says(kActorMcCoy, 2560, 17);
|
||||
Actor_Says(kActorLucy, 580, 3);
|
||||
if (Game_Flag_Query(kFlagCrazylegsArrested)
|
||||
|| Actor_Query_Goal_Number(kActorCrazylegs) == 2
|
||||
|| Actor_Query_Goal_Number(kActorCrazylegs) == kGoalCrazyLegsLeavesShowroom
|
||||
) {
|
||||
Actor_Says(kActorLucy, 630, 3);
|
||||
Actor_Says_With_Pause(kActorMcCoy, 2575, 0.0f, 15);
|
||||
|
Loading…
x
Reference in New Issue
Block a user