BLADERUNNER: Fixed Rat interaction at UG15
This commit is contained in:
parent
5e5eb39197
commit
1df1eefc3e
14 changed files with 252 additions and 203 deletions
|
@ -982,19 +982,26 @@ void BladeRunnerEngine::actorsUpdate() {
|
|||
int actorCount = (int)_gameInfo->getActorCount();
|
||||
int setId = _scene->getSetId();
|
||||
|
||||
if (setId != kSetUG18 || _gameVars[kVariableChapter] != 4 || !_gameFlags->query(670) || !_aiScripts->isInsideScript()) {
|
||||
for (int i = 0; i < actorCount; i++) {
|
||||
Actor *actor = _actors[i];
|
||||
if (actor->getSetId() == setId || i == _actorUpdateCounter) {
|
||||
_aiScripts->update(i);
|
||||
actor->timersUpdate();
|
||||
}
|
||||
}
|
||||
++_actorUpdateCounter;
|
||||
if (_actorUpdateCounter >= actorCount) {
|
||||
_actorUpdateCounter = 0;
|
||||
// what a "nice" last minute fix...
|
||||
if ( setId == kSetUG18
|
||||
&& _gameVars[kVariableChapter] == 4
|
||||
&& _gameFlags->query(kFlagCallWithGuzza)
|
||||
&& _aiScripts->isInsideScript()
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < actorCount; i++) {
|
||||
Actor *actor = _actors[i];
|
||||
if (actor->getSetId() == setId || i == _actorUpdateCounter) {
|
||||
_aiScripts->update(i);
|
||||
actor->timersUpdate();
|
||||
}
|
||||
}
|
||||
++_actorUpdateCounter;
|
||||
if (_actorUpdateCounter >= actorCount) {
|
||||
_actorUpdateCounter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void BladeRunnerEngine::walkingReset() {
|
||||
|
|
|
@ -90,7 +90,7 @@ enum Actors {
|
|||
kActorNewscaster = 61,
|
||||
kActorLeon = 62,
|
||||
kActorMaleAnnouncer = 63,
|
||||
kActorFreeSlotA = 64,
|
||||
kActorFreeSlotA = 64, // Rat
|
||||
kActorFreeSlotB = 65,
|
||||
kActorMaggie = 66,
|
||||
kActorGenwalkerA = 67,
|
||||
|
@ -1010,6 +1010,7 @@ enum Flags {
|
|||
kFlagUG07Empty = 623,
|
||||
kFlagTB07TyrellMeeting = 625,
|
||||
kFlagNR01McCoyIsDrugged = 627,
|
||||
kFlagRatWalkingAround = 631,
|
||||
kFlagNR01DektoraFall = 632,
|
||||
kFlagNR11DektoraBurning = 633,
|
||||
kFlagNR11BurnedUp = 634,
|
||||
|
@ -1035,11 +1036,15 @@ enum Flags {
|
|||
kFlagDNARowAvailableTalk = 660,
|
||||
kFlagTB07ShadeDown = 661, // is never set
|
||||
kFlagUG19Available = 665,
|
||||
kFlagCallWithGuzza = 670,
|
||||
kFlagMA07toPS14 = 672,
|
||||
kFlagPS14toMA07 = 673,
|
||||
kFlagUG15RatShot = 676,
|
||||
kFlagUG15BridgeWillBreak = 677,
|
||||
kFlagChapter2Intro = 678,
|
||||
kFlagChapter3Intro = 679,
|
||||
kFlagChapter4Intro = 680,
|
||||
kFlagUG15BridgeBroken = 682,
|
||||
kFlagNotUsed686 = 686,
|
||||
kFlagPS05TV0 = 688,
|
||||
kFlagPS05TV1 = 689,
|
||||
|
@ -1065,6 +1070,7 @@ enum Flags {
|
|||
kFlagCT02McCoyCombatReady = 720,
|
||||
kFlagChapter4Starting = 722,
|
||||
kFlagZubenBountyPaid = 723,
|
||||
kFlagUG15BridgeBreaks = 724,
|
||||
kFlagCT11DogWrapperAvailable = 725,
|
||||
kFlagAR02Entered = 726,
|
||||
kFlagPS04WeaponsOrderForm = 727,
|
||||
|
@ -1106,8 +1112,8 @@ enum Variables {
|
|||
kVariableAffectionTowards = 45, // 0 none, 1 steele, 2 dektora, 3 lucy
|
||||
kVariableGunPulledInFrontOfSebastian = 46,
|
||||
kVariableNR01GetUpCounter = 47,
|
||||
kVariableDNAEvidences = 48,
|
||||
|
||||
kVariableDNAEvidence = 48,
|
||||
kVariableCorruptedGuzzaEvidence = 49,
|
||||
kVariableTaffyLewisMusic = 50,
|
||||
kVariableReplicants = 51,
|
||||
kVariableNextTvNews = 52,
|
||||
|
@ -1629,9 +1635,13 @@ enum GoalMcCoy {
|
|||
kGoalMcCoyNR01LayDrugged = 212,
|
||||
kGoalMcCoyNR04Drink = 220,
|
||||
kGoalMcCoyNR04PassOut = 221,
|
||||
|
||||
kGoalMcCoyNR11Shoot = 230,
|
||||
kGoalMcCoyNR10Fall = 231,
|
||||
kGoalMcCoyArrested = 500
|
||||
kGoalMcCoyCallWithGuzza = 350,
|
||||
kGoalMcCoyUG15Fall = 390,
|
||||
kGoalMcCoyUG15Die = 391,
|
||||
kGoalMcCoyArrested = 500,
|
||||
kGoalMcCoyGone = 599
|
||||
};
|
||||
|
||||
enum GoalSteele {
|
||||
|
@ -2017,6 +2027,21 @@ enum GoalLeon {
|
|||
kGoalLeonGone = 8
|
||||
};
|
||||
|
||||
enum GoalFreeSlotA { // Rat
|
||||
kGoalFreeSlotAUG15Wait = 300,
|
||||
kGoalFreeSlotAUG15WalkOut = 301,
|
||||
kGoalFreeSlotAUG15RunToOtherSide = 302,
|
||||
kGoalFreeSlotAUG15RunBack = 303,
|
||||
kGoalFreeSlotAUG15Attack = 304,
|
||||
kGoalFreeSlotAWalkAround = 306,
|
||||
kGoalFreeSlotAWalkAroundRestart = 307,
|
||||
kGoalFreeSlotAAttackMcCoy = 308,
|
||||
kGoalFreeSlotAUG15Die = 305,
|
||||
kGoalFreeSlotAUG15Fall = 309,
|
||||
kGoalFreeSlotAUG15Prepare = 310,
|
||||
kGoalFreeSlotAGone = 599
|
||||
};
|
||||
|
||||
} // End of namespace BladeRunner
|
||||
|
||||
#endif
|
||||
|
|
|
@ -27,9 +27,9 @@ namespace BladeRunner {
|
|||
AIScriptFreeSlotA::AIScriptFreeSlotA(BladeRunnerEngine *vm) : AIScriptBase(vm) {
|
||||
_var1 = 0;
|
||||
_var2 = 1;
|
||||
_var3 = 0.0f;
|
||||
_var4 = 0.0f; // not initialized in original
|
||||
_var5 = 0.0f; // not initialized in original
|
||||
_fallSpeed = 0.0f;
|
||||
_fallHeightCurrent = 0.0f; // not initialized in original
|
||||
_fallHeightTarget = 0.0f; // not initialized in original
|
||||
}
|
||||
|
||||
void AIScriptFreeSlotA::Initialize() {
|
||||
|
@ -40,9 +40,9 @@ void AIScriptFreeSlotA::Initialize() {
|
|||
|
||||
_var1 = 0;
|
||||
_var2 = 1;
|
||||
_var3 = 0.0f;
|
||||
_var4 = 0.0f; // not initialized in original
|
||||
_var5 = 0.0f; // not initialized in original
|
||||
_fallSpeed = 0.0f;
|
||||
_fallHeightCurrent = 0.0f; // not initialized in original
|
||||
_fallHeightTarget = 0.0f; // not initialized in original
|
||||
|
||||
World_Waypoint_Set(525, 45, -780.0f, -615.49f, 2611.0f);
|
||||
World_Waypoint_Set(526, 45, -780.0f, -615.49f, 2759.0f);
|
||||
|
@ -51,68 +51,73 @@ void AIScriptFreeSlotA::Initialize() {
|
|||
bool AIScriptFreeSlotA::Update() {
|
||||
switch (Global_Variable_Query(kVariableChapter)) {
|
||||
case 4:
|
||||
if (Actor_Query_Which_Set_In(kActorMcCoy) == kSceneUG02
|
||||
&& Actor_Query_Which_Set_In(kActorFreeSlotA) == kSceneUG02
|
||||
if (Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG15
|
||||
&& Actor_Query_Which_Set_In(kActorFreeSlotA) == kSetUG15
|
||||
) {
|
||||
int goal = Actor_Query_Goal_Number(kActorFreeSlotA);
|
||||
if ((goal == 302
|
||||
|| goal == 303
|
||||
if ((goal == kGoalFreeSlotAUG15RunToOtherSide
|
||||
|| goal == kGoalFreeSlotAUG15RunBack
|
||||
)
|
||||
&& Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 304);
|
||||
} else if (goal == 309) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Attack);
|
||||
} else if (goal == kGoalFreeSlotAUG15Fall) {
|
||||
float x, y, z;
|
||||
|
||||
Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
|
||||
_var4 += _var3;
|
||||
if (_var5 < _var4) {
|
||||
_var3 -= 0.2f;
|
||||
_fallHeightCurrent += _fallSpeed;
|
||||
if (_fallHeightTarget < _fallHeightCurrent) {
|
||||
_fallSpeed -= 0.2f;
|
||||
} else {
|
||||
_var4 = _var5;
|
||||
_fallHeightCurrent = _fallHeightTarget;
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 0);
|
||||
}
|
||||
Actor_Set_At_XYZ(kActorFreeSlotA, x, _var4, z, Actor_Query_Facing_1024(kActorFreeSlotA));
|
||||
Actor_Set_At_XYZ(kActorFreeSlotA, x, _fallHeightCurrent, z, Actor_Query_Facing_1024(kActorFreeSlotA));
|
||||
}
|
||||
} else {
|
||||
switch (Actor_Query_Goal_Number(kActorFreeSlotA)) {
|
||||
case 306:
|
||||
if (Actor_Query_Which_Set_In(kActorFreeSlotA) == Player_Query_Current_Set()
|
||||
&& Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 308);
|
||||
}
|
||||
break;
|
||||
|
||||
case 308:
|
||||
if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 306);
|
||||
}
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
|
||||
case 599:
|
||||
if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
|
||||
Game_Flag_Reset(631);
|
||||
Game_Flag_Reset(677);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 0);
|
||||
}
|
||||
break;
|
||||
switch (Actor_Query_Goal_Number(kActorFreeSlotA)) {
|
||||
case kGoalFreeSlotAWalkAround:
|
||||
if (Actor_Query_Which_Set_In(kActorFreeSlotA) == Player_Query_Current_Set()
|
||||
&& Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAAttackMcCoy);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!Game_Flag_Query(631)) {
|
||||
Game_Flag_Set(631);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 306);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, 1);
|
||||
}
|
||||
case kGoalFreeSlotAAttackMcCoy:
|
||||
if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAround);
|
||||
}
|
||||
break;
|
||||
|
||||
case kGoalFreeSlotAGone:
|
||||
if (Actor_Query_Which_Set_In(kActorFreeSlotA) != Player_Query_Current_Set()) {
|
||||
Game_Flag_Reset(kFlagRatWalkingAround);
|
||||
Game_Flag_Reset(kFlagUG15BridgeWillBreak);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, false);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!Game_Flag_Query(kFlagRatWalkingAround)) {
|
||||
Game_Flag_Set(kFlagRatWalkingAround);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAround);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, true);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
case 5:
|
||||
if (Actor_Query_Goal_Number(kActorFreeSlotA) < 400) {
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 400);
|
||||
} else if (Actor_Query_Goal_Number(kActorFreeSlotA) == 405 && Actor_Query_Which_Set_In(kActorMcCoy) == kSceneKP05) {
|
||||
} else if (Actor_Query_Goal_Number(kActorFreeSlotA) == 405
|
||||
&& Actor_Query_Which_Set_In(kActorMcCoy) == kSceneKP05
|
||||
) {
|
||||
Actor_Set_Targetable(kActorFreeSlotA, 1);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 406);
|
||||
}
|
||||
|
@ -129,24 +134,24 @@ void AIScriptFreeSlotA::TimerExpired(int timer) {
|
|||
|
||||
void AIScriptFreeSlotA::CompletedMovementTrack() {
|
||||
switch (Actor_Query_Goal_Number(kActorFreeSlotA)) {
|
||||
case 301:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 302);
|
||||
case kGoalFreeSlotAUG15WalkOut:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15RunToOtherSide);
|
||||
break;
|
||||
|
||||
case 302:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 303);
|
||||
case kGoalFreeSlotAUG15RunToOtherSide:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15RunBack);
|
||||
break;
|
||||
|
||||
case 303:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 300);
|
||||
case kGoalFreeSlotAUG15RunBack:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Wait);
|
||||
break;
|
||||
|
||||
case 306:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 307);
|
||||
case kGoalFreeSlotAWalkAround:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAroundRestart);
|
||||
break;
|
||||
|
||||
case 307:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 306);
|
||||
case kGoalFreeSlotAWalkAroundRestart:
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAWalkAround);
|
||||
break;
|
||||
|
||||
case 400:
|
||||
|
@ -169,16 +174,15 @@ void AIScriptFreeSlotA::ReceivedClue(int clueId, int fromActorId) {
|
|||
}
|
||||
|
||||
void AIScriptFreeSlotA::ClickedByPlayer() {
|
||||
if (Actor_Query_Goal_Number(kActorFreeSlotA) != 599) {
|
||||
return; //false;
|
||||
}
|
||||
|
||||
Actor_Face_Actor(kActorMcCoy, kActorFreeSlotA, 1);
|
||||
if (Random_Query(1, 2) == 1) {
|
||||
Actor_Says(kActorMcCoy, 8655, 16);
|
||||
} else {
|
||||
Actor_Says(kActorMcCoy, 8665, 16);
|
||||
if (Actor_Query_Goal_Number(kActorFreeSlotA) == kGoalFreeSlotAGone) {
|
||||
Actor_Face_Actor(kActorMcCoy, kActorFreeSlotA, true);
|
||||
if (Random_Query(1, 2) == 1) {
|
||||
Actor_Says(kActorMcCoy, 8655, 16);
|
||||
} else {
|
||||
Actor_Says(kActorMcCoy, 8665, 16);
|
||||
}
|
||||
}
|
||||
//return false;
|
||||
}
|
||||
|
||||
void AIScriptFreeSlotA::EnteredScene(int sceneId) {
|
||||
|
@ -205,7 +209,7 @@ void AIScriptFreeSlotA::ShotAtAndMissed() {
|
|||
bool AIScriptFreeSlotA::ShotAtAndHit() {
|
||||
if (Actor_Query_In_Set(kActorFreeSlotA, kSetUG15)) {
|
||||
calcHit();
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 305);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Die);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -213,7 +217,7 @@ bool AIScriptFreeSlotA::ShotAtAndHit() {
|
|||
}
|
||||
|
||||
void AIScriptFreeSlotA::Retired(int byActorId) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 599);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAGone);
|
||||
}
|
||||
|
||||
int AIScriptFreeSlotA::GetFriendlinessModifierIfGetsClue(int otherActorId, int clueId) {
|
||||
|
@ -222,13 +226,13 @@ int AIScriptFreeSlotA::GetFriendlinessModifierIfGetsClue(int otherActorId, int c
|
|||
|
||||
bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
||||
switch (newGoalNumber) {
|
||||
case 300:
|
||||
case kGoalFreeSlotAUG15Wait:
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, 0);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, 0);
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeIdle);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, false);
|
||||
break;
|
||||
|
||||
case 301:
|
||||
case kGoalFreeSlotAUG15WalkOut:
|
||||
Actor_Force_Stop_Walking(kActorMcCoy);
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
World_Waypoint_Set(444, 87, -48.75f, 44.66f, 87.57f);
|
||||
|
@ -236,72 +240,74 @@ bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
|||
AI_Movement_Track_Repeat(kActorFreeSlotA);
|
||||
break;
|
||||
|
||||
case 302:
|
||||
case kGoalFreeSlotAUG15RunToOtherSide:
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
World_Waypoint_Set(444, 87, -237.0f, 48.07f, 208.0f);
|
||||
AI_Movement_Track_Append(kActorFreeSlotA, 444, 1);
|
||||
AI_Movement_Track_Repeat(kActorFreeSlotA);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, 1);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, true);
|
||||
break;
|
||||
|
||||
case 303:
|
||||
case kGoalFreeSlotAUG15RunBack:
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
World_Waypoint_Set(444, 87, 3.52f, 52.28f, 90.68f);
|
||||
AI_Movement_Track_Append(kActorFreeSlotA, 444, 0);
|
||||
AI_Movement_Track_Repeat(kActorFreeSlotA);
|
||||
break;
|
||||
|
||||
case 304:
|
||||
case kGoalFreeSlotAUG15Attack:
|
||||
Player_Loses_Control();
|
||||
Actor_Force_Stop_Walking(kActorMcCoy);
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, 1);
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, 6);
|
||||
Actor_Change_Animation_Mode(kActorMcCoy, 48);
|
||||
Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, true);
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeCombatAttack);
|
||||
Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
|
||||
break;
|
||||
|
||||
case 305:
|
||||
case kGoalFreeSlotAUG15Die:
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, 0);
|
||||
Game_Flag_Set(676);
|
||||
Actor_Set_Targetable(kActorFreeSlotA, false);
|
||||
Game_Flag_Set(kFlagUG15RatShot);
|
||||
_animationState = 7;
|
||||
_animationFrame = 0;
|
||||
break;
|
||||
|
||||
case 306:
|
||||
case kGoalFreeSlotAWalkAround:
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
processGoal306();
|
||||
goToRandomUGxx();
|
||||
AI_Movement_Track_Repeat(kActorFreeSlotA);
|
||||
break;
|
||||
|
||||
case 307:
|
||||
case kGoalFreeSlotAWalkAroundRestart:
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
AI_Movement_Track_Append(kActorFreeSlotA, 39, 1);
|
||||
AI_Movement_Track_Repeat(kActorFreeSlotA);
|
||||
break;
|
||||
|
||||
case 308:
|
||||
Actor_Set_Targetable(kActorFreeSlotA, 1);
|
||||
case kGoalFreeSlotAAttackMcCoy:
|
||||
Actor_Set_Targetable(kActorFreeSlotA, true);
|
||||
Non_Player_Actor_Combat_Mode_On(kActorFreeSlotA, 0, 0, 0, 8, 4, 7, 8, 25, 0, 75, 5, 300, 0);
|
||||
break;
|
||||
|
||||
case 309:
|
||||
case kGoalFreeSlotAUG15Fall:
|
||||
Actor_Force_Stop_Walking(kActorFreeSlotA);
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
_var4 = 52.46f;
|
||||
_var3 = -4.0f;
|
||||
_var5 = -10.0f;
|
||||
if (_animationState != 7 && _animationState != 8) {
|
||||
_fallHeightCurrent = 52.46f;
|
||||
_fallSpeed = -4.0f;
|
||||
_fallHeightTarget = -10.0f;
|
||||
if (_animationState != 7
|
||||
&& _animationState != 8
|
||||
) {
|
||||
_animationState = 7;
|
||||
_animationFrame = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 310:
|
||||
case kGoalFreeSlotAUG15Prepare:
|
||||
AI_Movement_Track_Flush(kActorFreeSlotA);
|
||||
Actor_Put_In_Set(kActorFreeSlotA, kSetUG15);
|
||||
Actor_Set_At_XYZ(kActorFreeSlotA, 3.52f, 52.28f, 90.68f, 700);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 300);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Wait);
|
||||
break;
|
||||
|
||||
case 400:
|
||||
|
@ -315,7 +321,7 @@ bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
|||
AI_Movement_Track_Repeat(kActorFreeSlotA);
|
||||
break;
|
||||
|
||||
case 599:
|
||||
case kGoalFreeSlotAGone:
|
||||
Actor_Set_Health(kActorFreeSlotA, 20, 20);
|
||||
Actor_Set_Friendliness_To_Other(kActorFreeSlotA, kActorMcCoy, 40);
|
||||
break;
|
||||
|
@ -395,7 +401,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
|
|||
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(857)) {
|
||||
_animationState = 0;
|
||||
_animationFrame = 0;
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, 4);
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeCombatIdle);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -403,7 +409,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
|
|||
*animation = 874;
|
||||
_animationFrame++;
|
||||
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) { // bug? shuld not be '-1'
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, 0);
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeIdle);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -416,7 +422,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
|
|||
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(860)) {
|
||||
_animationFrame = 0;
|
||||
_animationState = 0;
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, 0);
|
||||
Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeIdle);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -429,7 +435,7 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
|
|||
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(859) - 1) { // bug? shuld not be '-1'
|
||||
_animationFrame = Slice_Animation_Query_Number_Of_Frames(859) - 1;
|
||||
_animationState = 8;
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 599);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAGone);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -523,7 +529,7 @@ bool AIScriptFreeSlotA::ReachedMovementTrackWaypoint(int waypointId) {
|
|||
Actor_Change_Animation_Mode(kActorFreeSlotA, 43);
|
||||
}
|
||||
} else if (Actor_Query_Goal_Number(kActorFreeSlotA) == 302) {
|
||||
Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, 1);
|
||||
Actor_Face_Actor(kActorFreeSlotA, kActorMcCoy, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -538,12 +544,14 @@ void AIScriptFreeSlotA::calcHit() {
|
|||
|
||||
Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
|
||||
|
||||
if (x >= -30.0f && x < -150.0f) {
|
||||
Game_Flag_Set(677);
|
||||
if (x >= -30.0f
|
||||
&& x < -150.0f
|
||||
) {
|
||||
Game_Flag_Set(kFlagUG15BridgeWillBreak);
|
||||
}
|
||||
}
|
||||
|
||||
void AIScriptFreeSlotA::processGoal306() {
|
||||
void AIScriptFreeSlotA::goToRandomUGxx() {
|
||||
switch (Random_Query(1, 14)) {
|
||||
case 1:
|
||||
AI_Movement_Track_Append(kActorFreeSlotA, 450, 1);
|
||||
|
|
|
@ -33,7 +33,7 @@ AIScriptMcCoy::AIScriptMcCoy(BladeRunnerEngine *vm) : AIScriptBase(vm) {
|
|||
dword_45A0E8 = 0;
|
||||
_animationStateNextSpecial = 0;
|
||||
_animationNextSpecial = 0;
|
||||
dword_45A0F8 = 0;
|
||||
_nextSoundId = 0;
|
||||
_NR10SteeleShooting = false;
|
||||
_fallSpeed = 0.0f;
|
||||
_fallHeightCurrent = 0.0f;
|
||||
|
@ -51,16 +51,16 @@ void AIScriptMcCoy::Initialize() {
|
|||
dword_45A0E8 = 3;
|
||||
_animationStateNextSpecial = 3;
|
||||
_animationNextSpecial = 20;
|
||||
dword_45A0F8 = -1;
|
||||
_nextSoundId = -1;
|
||||
_NR10SteeleShooting = false;
|
||||
_fallSpeed = 0;
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyDefault);
|
||||
}
|
||||
|
||||
bool AIScriptMcCoy::Update() {
|
||||
if (dword_45A0F8 != -1) {
|
||||
Sound_Play(dword_45A0F8, 100, 0, 0, 50);
|
||||
dword_45A0F8 = -1;
|
||||
if (_nextSoundId != -1) {
|
||||
Sound_Play(_nextSoundId, 100, 0, 0, 50);
|
||||
_nextSoundId = -1;
|
||||
}
|
||||
|
||||
switch (Actor_Query_Goal_Number(kActorMcCoy)) {
|
||||
|
@ -109,13 +109,13 @@ bool AIScriptMcCoy::Update() {
|
|||
fallDown();
|
||||
break;
|
||||
|
||||
case 309:
|
||||
case kGoalMcCoyUG15Fall:
|
||||
fallDown();
|
||||
break;
|
||||
|
||||
case 391:
|
||||
Actor_Retired_Here(kActorMcCoy, 12, 48, 1, -1);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 599);
|
||||
case kGoalMcCoyUG15Die:
|
||||
Actor_Retired_Here(kActorMcCoy, 12, 48, true, -1);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyGone);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
|
@ -163,21 +163,21 @@ void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
|
|||
case kClueWeaponsOrderForm:
|
||||
case kClueShippingForm:
|
||||
case kCluePoliceIssueWeapons:
|
||||
Global_Variable_Increment(49, 1);
|
||||
Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 1);
|
||||
break;
|
||||
|
||||
case kClueFolder:
|
||||
Global_Variable_Increment(49, 5);
|
||||
Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 5);
|
||||
break;
|
||||
|
||||
case kClueHomelessManKid:
|
||||
case kClueOriginalRequisitionForm:
|
||||
Global_Variable_Increment(49, 3);
|
||||
Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 3);
|
||||
break;
|
||||
|
||||
case kClueScaryChair:
|
||||
case kClueIzosStashRaided:
|
||||
Global_Variable_Increment(49, 2);
|
||||
Global_Variable_Increment(kVariableCorruptedGuzzaEvidence, 2);
|
||||
break;
|
||||
|
||||
case kClueDNATyrell:
|
||||
|
@ -186,11 +186,11 @@ void AIScriptMcCoy::ReceivedClue(int clueId, int fromActorId) {
|
|||
case kClueDNAMoraji:
|
||||
case kClueDNALutherLance:
|
||||
case kClueDNAMarcus:
|
||||
Global_Variable_Increment(kVariableDNAEvidences, 1);
|
||||
Global_Variable_Increment(kVariableDNAEvidence, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
if ( Global_Variable_Query(49) > 6
|
||||
if ( Global_Variable_Query(kVariableCorruptedGuzzaEvidence) > 6
|
||||
&& Global_Variable_Query(kVariableChapter) > 3
|
||||
&& !Actor_Clue_Query(kActorMcCoy, kClueGuzzaFramedMcCoy)
|
||||
) {
|
||||
|
@ -328,7 +328,8 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
|||
return true;
|
||||
|
||||
case 2:
|
||||
sub_405920();
|
||||
_animationFrame = 0;
|
||||
_animationState = 47;
|
||||
return true;
|
||||
|
||||
case kGoalMcCoyBB11GetUp:
|
||||
|
@ -391,7 +392,7 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
|||
Actor_Change_Animation_Mode(kActorMcCoy, 75);
|
||||
return true;
|
||||
|
||||
case 230:
|
||||
case kGoalMcCoyNR11Shoot:
|
||||
_NR10SteeleShooting = Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleNR11Shoot;
|
||||
Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAttack);
|
||||
return true;
|
||||
|
@ -427,7 +428,7 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
|||
_animationFrame = 0;
|
||||
return true;
|
||||
|
||||
case 350:
|
||||
case kGoalMcCoyCallWithGuzza:
|
||||
Sound_Play(123, 50, 0, 0, 50);
|
||||
Delay(1000);
|
||||
Sound_Play(403, 30, 0, 0, 50);
|
||||
|
@ -465,13 +466,15 @@ bool AIScriptMcCoy::GoalChanged(int currentGoalNumber, int newGoalNumber) {
|
|||
Sound_Play(123, 50, 0, 0, 50);
|
||||
return true;
|
||||
|
||||
case 390:
|
||||
case kGoalMcCoyUG15Fall:
|
||||
Actor_Force_Stop_Walking(kActorMcCoy);
|
||||
Player_Loses_Control();
|
||||
_fallHeightCurrent = 48.07f;
|
||||
_fallSpeed = -4.0f;
|
||||
_fallHeightTarget = -20.0f;
|
||||
if (_animationState != 27 && _animationState != 50) {
|
||||
if (_animationState != 27
|
||||
&& _animationState != 50
|
||||
) {
|
||||
_animationState = 50;
|
||||
_animationFrame = Slice_Animation_Query_Number_Of_Frames(18) - 1;
|
||||
}
|
||||
|
@ -1004,7 +1007,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
|
|||
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(5)) {
|
||||
_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
|
||||
_animationState = 50;
|
||||
sub_4054F0();
|
||||
UG15fall();
|
||||
}
|
||||
break;
|
||||
case 27:
|
||||
|
@ -1013,7 +1016,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
|
|||
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(18)) {
|
||||
_animationFrame = Slice_Animation_Query_Number_Of_Frames(*animation) - 1;
|
||||
_animationState = 50;
|
||||
sub_4054F0();
|
||||
UG15fall();
|
||||
if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR04Drink) {
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR04PassOut);
|
||||
}
|
||||
|
@ -1068,16 +1071,16 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
|
|||
*animation = 12;
|
||||
_animationFrame++;
|
||||
if (_animationFrame == 1
|
||||
&& Actor_Query_Goal_Number(kActorMcCoy) == 230
|
||||
&& Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR11Shoot
|
||||
&& _NR10SteeleShooting
|
||||
) {
|
||||
dword_45A0F8 = 27;
|
||||
_nextSoundId = 27;
|
||||
}
|
||||
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(12)) {
|
||||
_animationState = 17;
|
||||
_animationFrame = 0;
|
||||
*animation = 12;
|
||||
if (Actor_Query_Goal_Number(kActorMcCoy) == 230) {
|
||||
if (Actor_Query_Goal_Number(kActorMcCoy) == kGoalMcCoyNR11Shoot) {
|
||||
_animationFrame = 0;
|
||||
_animationState = 21;
|
||||
_NR10SteeleShooting = true;
|
||||
|
@ -1790,24 +1793,29 @@ void AIScriptMcCoy::fallDown() {
|
|||
return Actor_Set_At_XYZ(kActorMcCoy, x, _fallHeightCurrent, z, Actor_Query_Facing_1024(kActorMcCoy));
|
||||
}
|
||||
|
||||
void AIScriptMcCoy::sub_4054F0() {
|
||||
if (Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG15
|
||||
&& Actor_Query_Goal_Number(kActorMcCoy) != 390
|
||||
&& !Game_Flag_Query(682)
|
||||
void AIScriptMcCoy::UG15fall() {
|
||||
if ( Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG15
|
||||
&& Actor_Query_Goal_Number(kActorMcCoy) != kGoalMcCoyUG15Fall
|
||||
&& !Game_Flag_Query(kFlagUG15BridgeBroken)
|
||||
) {
|
||||
float x, y, z;
|
||||
Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
|
||||
if ((z < 220.0f) && (-210.0f < x) && (-70.0f > x)) {
|
||||
Game_Flag_Set(682);
|
||||
Scene_Loop_Set_Default(3);
|
||||
Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 390);
|
||||
if ( 220.0f > z
|
||||
&& -210.0f < x
|
||||
&& -70.0f > x
|
||||
) {
|
||||
Game_Flag_Set(kFlagUG15BridgeBroken);
|
||||
Scene_Loop_Set_Default(3); // kUG15LoopMainLoopBridgeBroken
|
||||
Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true); // kUG15LoopBridgeBreaks
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG15Fall);
|
||||
Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
|
||||
if (-200.0 < x && -62.0f > x) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 309);
|
||||
if (-200.0 < x
|
||||
&& -62.0f > x
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Fall);
|
||||
}
|
||||
} else {
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 391);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG15Die);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1929,11 +1937,6 @@ void AIScriptMcCoy::dodge() {
|
|||
}
|
||||
}
|
||||
|
||||
void AIScriptMcCoy::sub_405920() {
|
||||
_animationFrame = 0;
|
||||
_animationState = 47;
|
||||
}
|
||||
|
||||
void AIScriptMcCoy::sub_405940(float a1) {
|
||||
float x, y, z;
|
||||
int currentAngle = Actor_Query_Facing_1024(kActorMcCoy);
|
||||
|
|
|
@ -104,18 +104,17 @@ DECLARE_SCRIPT(McCoy)
|
|||
int dword_45A0E8;
|
||||
int _animationStateNextSpecial;
|
||||
int _animationNextSpecial;
|
||||
int dword_45A0F8;
|
||||
int _nextSoundId;
|
||||
bool _NR10SteeleShooting;
|
||||
float _fallSpeed;
|
||||
float _fallHeightCurrent;
|
||||
float _fallHeightTarget;
|
||||
|
||||
void fallDown();
|
||||
void sub_4054F0();
|
||||
void UG15fall();
|
||||
void sub_405660();
|
||||
void sub_405800();
|
||||
void dodge();
|
||||
void sub_405920();
|
||||
void sub_405940(float a1);
|
||||
void sub_4059D0(float a1);
|
||||
END_SCRIPT
|
||||
|
@ -459,12 +458,12 @@ END_SCRIPT
|
|||
DECLARE_SCRIPT(FreeSlotA)
|
||||
int _var1;
|
||||
int _var2;
|
||||
float _var3;
|
||||
float _var4;
|
||||
float _var5;
|
||||
float _fallSpeed;
|
||||
float _fallHeightCurrent;
|
||||
float _fallHeightTarget;
|
||||
|
||||
void calcHit();
|
||||
void processGoal306();
|
||||
void goToRandomUGxx();
|
||||
END_SCRIPT
|
||||
|
||||
DECLARE_SCRIPT(FreeSlotB)
|
||||
|
|
|
@ -654,7 +654,7 @@ void KIAScript::SCRIPT_KIA_DLL_Play_Clue_Asset_Script(int notUsed, int clueId) {
|
|||
case kClueDNALutherLance:
|
||||
case kClueDNAMarcus:
|
||||
{
|
||||
int dnaEvidences = Global_Variable_Query(kVariableDNAEvidences);
|
||||
int dnaEvidences = Global_Variable_Query(kVariableDNAEvidence);
|
||||
if (dnaEvidences == 1) {
|
||||
KIA_Play_Slice_Model(988);
|
||||
} else if (dnaEvidences == 2) {
|
||||
|
|
|
@ -117,10 +117,10 @@ bool SceneScriptDR06::ClickedOn3DObject(const char *objectName, bool a2) {
|
|||
Actor_Face_Heading(kActorMcCoy, 329, false);
|
||||
if ( Actor_Clue_Query(kActorMcCoy, kClueFolder)
|
||||
&& Actor_Clue_Query(kActorMcCoy, kClueGuzzaFramedMcCoy)
|
||||
&& !Game_Flag_Query(670)
|
||||
&& !Game_Flag_Query(kFlagCallWithGuzza)
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 350);
|
||||
Game_Flag_Set(670);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyCallWithGuzza);
|
||||
Game_Flag_Set(kFlagCallWithGuzza);
|
||||
} else if (!Game_Flag_Query(kFlagDR06VidphoneChecked)) {
|
||||
Actor_Voice_Over(770, kActorVoiceOver);
|
||||
Actor_Voice_Over(780, kActorVoiceOver);
|
||||
|
|
|
@ -81,10 +81,10 @@ bool SceneScriptNR02::ClickedOn3DObject(const char *objectName, bool a2) {
|
|||
Actor_Face_Heading(kActorMcCoy, 13, false);
|
||||
if ( Actor_Clue_Query(kActorMcCoy, kClueFolder)
|
||||
&& Actor_Clue_Query(kActorMcCoy, kClueGuzzaFramedMcCoy)
|
||||
&& !Game_Flag_Query(670)
|
||||
&& !Game_Flag_Query(kFlagCallWithGuzza)
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 350);
|
||||
Game_Flag_Set(670);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyCallWithGuzza);
|
||||
Game_Flag_Set(kFlagCallWithGuzza);
|
||||
} else {
|
||||
Sound_Play(123, 50, 0, 0, 50);
|
||||
Delay(1000);
|
||||
|
|
|
@ -146,7 +146,7 @@ bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool combatMode)
|
|||
if (!Player_Query_Combat_Mode()) {
|
||||
Player_Set_Combat_Mode(true);
|
||||
}
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 230);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR11Shoot);
|
||||
Scene_Loop_Set_Default(kNR11LoopMainLoopFires);
|
||||
Scene_Loop_Start_Special(kSceneLoopModeOnce, kNR11LoopGunshots, true);
|
||||
} else if (Actor_Query_Goal_Number(kActorDektora) == kGoalDektoraNR11Hiding) {
|
||||
|
@ -162,7 +162,7 @@ bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool combatMode)
|
|||
Delay(500);
|
||||
Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
|
||||
Delay(2000);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 231);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR10Fall);
|
||||
} else {
|
||||
Actor_Says(kActorMcCoy, 3840, 18);
|
||||
Delay(1000);
|
||||
|
@ -298,7 +298,7 @@ void SceneScriptNR11::SceneFrameAdvanced(int frame) {
|
|||
if (!Player_Query_Combat_Mode()) {
|
||||
Player_Set_Combat_Mode(true);
|
||||
}
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 230);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyNR11Shoot);
|
||||
Scene_Loop_Set_Default(kNR11LoopMainLoopFires);
|
||||
Scene_Loop_Start_Special(kSceneLoopModeOnce, kNR11LoopGunshots, true);
|
||||
Game_Flag_Reset(kFlagNR11SteeleShoot);
|
||||
|
|
|
@ -269,7 +269,7 @@ void SceneScriptUG05::sub_402218() {
|
|||
|
||||
if (affectionTowardsActor == kActorLucy) {
|
||||
if (Game_Flag_Query(kFlagLucyIsReplicant)) {
|
||||
if (Global_Variable_Query(kVariableDNAEvidences) > 3) {
|
||||
if (Global_Variable_Query(kVariableDNAEvidence) > 3) {
|
||||
Outtake_Play(kOuttakeEnd1B, false, -1);
|
||||
} else {
|
||||
Outtake_Play(kOuttakeEnd1C, false, -1);
|
||||
|
@ -279,7 +279,7 @@ void SceneScriptUG05::sub_402218() {
|
|||
}
|
||||
} else if (affectionTowardsActor == kActorDektora) {
|
||||
if (Game_Flag_Query(kFlagDektoraIsReplicant)) {
|
||||
if (Global_Variable_Query(kVariableDNAEvidences) > 3) {
|
||||
if (Global_Variable_Query(kVariableDNAEvidence) > 3) {
|
||||
Outtake_Play(kOuttakeEnd1E, false, -1);
|
||||
} else {
|
||||
Outtake_Play(kOuttakeEnd1F, false, -1);
|
||||
|
|
|
@ -24,6 +24,12 @@
|
|||
|
||||
namespace BladeRunner {
|
||||
|
||||
enum UG15Loops {
|
||||
kUG15LoopMainLoop = 0,
|
||||
kUG15LoopBridgeBreaks = 2,
|
||||
kUG15LoopMainLoopBridgeBroken = 3
|
||||
};
|
||||
|
||||
void SceneScriptUG15::InitializeScene() {
|
||||
if (Game_Flag_Query(kFlagUG17toUG15)) {
|
||||
Setup_Scene_Information( -25.0f, 26.31f, -434.0f, 520);
|
||||
|
@ -33,14 +39,15 @@ void SceneScriptUG15::InitializeScene() {
|
|||
Setup_Scene_Information( -18.0f, 48.07f, 62.0f, 650);
|
||||
} else {
|
||||
Setup_Scene_Information(-238.0f, 48.07f, 222.0f, 180);
|
||||
if (Game_Flag_Query(676)
|
||||
if (Game_Flag_Query(kFlagUG15RatShot)
|
||||
&& Random_Query(1, 10) == 10
|
||||
) {
|
||||
Game_Flag_Reset(676);
|
||||
Game_Flag_Reset(kFlagUG15RatShot);
|
||||
}
|
||||
}
|
||||
if (Game_Flag_Query(682)) {
|
||||
Scene_Loop_Set_Default(3);
|
||||
|
||||
if (Game_Flag_Query(kFlagUG15BridgeBroken)) {
|
||||
Scene_Loop_Set_Default(kUG15LoopMainLoopBridgeBroken);
|
||||
}
|
||||
|
||||
if (Game_Flag_Query(kFlagUG17toUG15)
|
||||
|
@ -107,7 +114,6 @@ bool SceneScriptUG15::ClickedOnItem(int itemId, bool a2) {
|
|||
}
|
||||
|
||||
bool SceneScriptUG15::ClickedOnExit(int exitId) {
|
||||
|
||||
if (exitId == 0) {
|
||||
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -25.0f, 26.31f, -434.0f, 0, true, false, 0)) {
|
||||
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
|
||||
|
@ -160,39 +166,40 @@ bool SceneScriptUG15::ClickedOn2DRegion(int region) {
|
|||
}
|
||||
|
||||
void SceneScriptUG15::SceneFrameAdvanced(int frame) {
|
||||
if (Actor_Query_Goal_Number(kActorFreeSlotA) == 300) {
|
||||
if (Actor_Query_Goal_Number(kActorFreeSlotA) == kGoalFreeSlotAUG15Wait) {
|
||||
float x, y, z;
|
||||
Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
|
||||
if (-160.0f <= x
|
||||
&& 220.0f > z
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 301);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15WalkOut);
|
||||
}
|
||||
}
|
||||
|
||||
if (frame == 61) {
|
||||
Ambient_Sounds_Play_Sound(583, 80, 0, 0, 99);
|
||||
}
|
||||
|
||||
if ( Game_Flag_Query(677)
|
||||
&& !Game_Flag_Query(682)
|
||||
if ( Game_Flag_Query(kFlagUG15BridgeWillBreak)
|
||||
&& !Game_Flag_Query(kFlagUG15BridgeBroken)
|
||||
) {
|
||||
float x, y, z;
|
||||
Actor_Query_XYZ(kActorMcCoy, &x, &y, &z);
|
||||
if ( -180.0f <= x
|
||||
&& 220.0f > z
|
||||
&& !Game_Flag_Query(724)
|
||||
&& !Game_Flag_Query(kFlagUG15BridgeBreaks)
|
||||
) {
|
||||
Game_Flag_Set(724);
|
||||
Game_Flag_Set(682);
|
||||
Scene_Loop_Set_Default(3);
|
||||
Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, 390);
|
||||
Game_Flag_Set(kFlagUG15BridgeBreaks);
|
||||
Game_Flag_Set(kFlagUG15BridgeBroken);
|
||||
Scene_Loop_Set_Default(kUG15LoopMainLoopBridgeBroken);
|
||||
Scene_Loop_Start_Special(kSceneLoopModeOnce, kUG15LoopBridgeBreaks, true);
|
||||
Actor_Set_Goal_Number(kActorMcCoy, kGoalMcCoyUG15Fall);
|
||||
Actor_Query_XYZ(kActorFreeSlotA, &x, &y, &z);
|
||||
|
||||
if (-200.0f < x
|
||||
&& -62.0f > x
|
||||
) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 309);
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Fall);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -208,8 +215,8 @@ void SceneScriptUG15::PlayerWalkedIn() {
|
|||
Game_Flag_Reset(kFlagUG16toUG15b);
|
||||
} else if (Game_Flag_Query(kFlagUG13toUG15)) {
|
||||
Game_Flag_Reset(kFlagUG13toUG15);
|
||||
if (!Game_Flag_Query(676)) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, 310);
|
||||
if (!Game_Flag_Query(kFlagUG15RatShot)) {
|
||||
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Prepare);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ bool SceneScriptUG16::ClickedOn3DObject(const char *objectName, bool a2) {
|
|||
|
||||
bool SceneScriptUG16::ClickedOnActor(int actorId) {
|
||||
if (Actor_Query_Goal_Number(kActorLuther) < 490) {
|
||||
sub_401D78();
|
||||
dialogueWithLuther();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -234,7 +234,7 @@ void SceneScriptUG16::PlayerWalkedOut() {
|
|||
void SceneScriptUG16::DialogueQueueFlushed(int a1) {
|
||||
}
|
||||
|
||||
void SceneScriptUG16::sub_401D78() {
|
||||
void SceneScriptUG16::dialogueWithLuther() {
|
||||
Dialogue_Menu_Clear_List();
|
||||
DM_Add_To_List_Never_Repeat_Once_Selected(1400, 5, 6, 2);
|
||||
DM_Add_To_List_Never_Repeat_Once_Selected(1410, 5, 4, 8);
|
||||
|
@ -245,7 +245,7 @@ void SceneScriptUG16::sub_401D78() {
|
|||
DM_Add_To_List_Never_Repeat_Once_Selected(1430, 6, 4, 5);
|
||||
DM_Add_To_List_Never_Repeat_Once_Selected(1440, 6, 4, 5);
|
||||
}
|
||||
if ( Global_Variable_Query(49) > 1
|
||||
if ( Global_Variable_Query(kVariableCorruptedGuzzaEvidence) > 1
|
||||
&& !Actor_Clue_Query(kActorMcCoy, kClueFolder)
|
||||
) {
|
||||
DM_Add_To_List_Never_Repeat_Once_Selected(1450, 6, 4, 5);
|
||||
|
|
|
@ -59,7 +59,7 @@ void SceneScriptUG18::InitializeScene() {
|
|||
|
||||
Scene_Loop_Set_Default(4);
|
||||
|
||||
if ( Game_Flag_Query(670)
|
||||
if ( Game_Flag_Query(kFlagCallWithGuzza)
|
||||
&& !Game_Flag_Query(671)
|
||||
&& Global_Variable_Query(kVariableChapter) == 4
|
||||
) {
|
||||
|
@ -85,7 +85,7 @@ void SceneScriptUG18::SceneLoaded() {
|
|||
Actor_Set_At_Waypoint(kActorSadik, 33, 0);
|
||||
}
|
||||
}
|
||||
if ( Game_Flag_Query(670)
|
||||
if ( Game_Flag_Query(kFlagCallWithGuzza)
|
||||
&& !Game_Flag_Query(671)
|
||||
&& Global_Variable_Query(kVariableChapter) == 4
|
||||
) {
|
||||
|
@ -192,7 +192,7 @@ void SceneScriptUG18::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
|
|||
void SceneScriptUG18::PlayerWalkedIn() {
|
||||
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -488.71f, 0.0f, 123.59f, 0, false, false, 0);
|
||||
|
||||
if ( Game_Flag_Query(670)
|
||||
if ( Game_Flag_Query(kFlagCallWithGuzza)
|
||||
&& !Game_Flag_Query(671)
|
||||
&& Actor_Query_Is_In_Current_Set(kActorGuzza)
|
||||
) {
|
||||
|
|
|
@ -497,7 +497,7 @@ DECLARE_SCRIPT(UG15)
|
|||
END_SCRIPT
|
||||
|
||||
DECLARE_SCRIPT(UG16)
|
||||
void sub_401D78();
|
||||
void dialogueWithLuther();
|
||||
END_SCRIPT
|
||||
|
||||
DECLARE_SCRIPT(UG17)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue