[Scummvm-git-logs] scummvm master -> 49c5069324e1c45a399f4dcf2a32ce53be840377
peterkohaut
peterkohaut at users.noreply.github.com
Tue Feb 5 22:02:47 CET 2019
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6222fa443d BLADERUNNER: Gaff scripts cleanup
92774be0ae BLADERUNNER: Cleanup Steele scripts for ending
cafc76dcfe BLADERUNNER: Cleanup of Maggie script
49c5069324 BLADERUNNER: Added debugger command "friend"
Commit: 6222fa443de8557e5af05e4dffbf53df9e54d8eb
https://github.com/scummvm/scummvm/commit/6222fa443de8557e5af05e4dffbf53df9e54d8eb
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-05T21:54:50+01:00
Commit Message:
BLADERUNNER: Gaff scripts cleanup
Changed paths:
engines/bladerunner/game_constants.h
engines/bladerunner/script/ai/gaff.cpp
engines/bladerunner/script/scene/kp01.cpp
engines/bladerunner/script/scene/kp06.cpp
engines/bladerunner/script/scene/ma02.cpp
engines/bladerunner/script/scene/ma07.cpp
engines/bladerunner/script/scene/rc01.cpp
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index bef9b23..2f872f6 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1084,13 +1084,13 @@ enum Flags {
kFlagCT11DogWrapperTaken = 645,
kFlagSteeleDead = 646, // is never checked
kFlagMA04McCoySleeping = 647,
-
+ kFlagMA07GaffTalk = 648,
kFlagMA04PhoneMessageFromClovis = 649,
kFlagMA04PhoneMessageFromLucy = 650,
kFlagNR08McCoyWatchingShow = 651,
kFlagCrazylegsArrestedTalk = 652,
kFlagMcCoyIsHelpingReplicants = 653,
-
+ kFlagMA02Chapter5Started = 654,
kFlagMA02RajifTalk = 655,
kFlagUG02RagiationGooglesTaken = 656,
@@ -1335,9 +1335,9 @@ enum Scenes {
kSceneKP01 = 41, // Kipple - Rubble
kSceneKP02 = 42, // Kipple - Entry / Gate
kSceneKP03 = 43, // Kipple - Bomb
- kSceneKP04 = 44,
+ kSceneKP04 = 44, // Kipple - Huge pillar
kSceneKP05 = 45, // Kipple - Moonbus - Far
- kSceneKP06 = 46,
+ kSceneKP06 = 46, // Kipple - Moonbus - Near
kSceneKP07 = 47, // Kipple - Moonbus - Inside
kSceneMA01 = 48, // McCoy's Apartment - Roof
kSceneMA02 = 49, // McCoy's Apartment - Living room
@@ -1389,8 +1389,8 @@ enum Scenes {
kSceneUG10 = 95, // Underground - Moving bridge
kSceneUG12 = 96, // Underground - Gate
kSceneUG13 = 97, // Underground - Homeless' living room
- kSceneUG14 = 98,
- kSceneUG15 = 99,
+ kSceneUG14 = 98, // Underground - Crossroad
+ kSceneUG15 = 99, // Underground - Bridge with rat
kSceneUG16 = 100, // Underground - Under DR06
kSceneUG17 = 101, // Underground - Under TB03
kSceneUG18 = 102, // Underground - Pit
@@ -2176,7 +2176,13 @@ enum GoalGaff {
kGoalGaffCT12FlyAway = 10,
kGoalGaffStartWalkingAround = 100,
kGoalGaffWalkAround = 101,
- kGoalGaffRepeatWalkingAround = 102
+ kGoalGaffRepeatWalkingAround = 102,
+ kGoalGaffStartChapter4 = 299,
+ kGoalGaffMA07Wait = 300,
+ kGoalGaffMA07TalkToMcCoy = 301,
+ kGoalGaffMA07Left = 302,
+ kGoalGaffMA07ShootMcCoy = 303, // cannot be triggered
+ kGoalGaffGone = 499
};
enum GoalLeon {
diff --git a/engines/bladerunner/script/ai/gaff.cpp b/engines/bladerunner/script/ai/gaff.cpp
index 43d9e9b..57bdd8a 100644
--- a/engines/bladerunner/script/ai/gaff.cpp
+++ b/engines/bladerunner/script/ai/gaff.cpp
@@ -47,9 +47,9 @@ bool AIScriptGaff::Update() {
}
if (Global_Variable_Query(kVariableChapter) == 4
- && Actor_Query_Goal_Number(kActorGaff) < 299
+ && Actor_Query_Goal_Number(kActorGaff) < kGoalGaffStartChapter4
) {
- Actor_Set_Goal_Number(kActorGaff, 299);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffStartChapter4);
}
return false;
@@ -59,7 +59,7 @@ bool AIScriptGaff::Update() {
void AIScriptGaff::TimerExpired(int timer) {
if (timer == 0) {
AI_Countdown_Timer_Reset(kActorGaff, 0);
- Actor_Set_Goal_Number(kActorGaff, 301);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffMA07TalkToMcCoy);
}
//return false;
}
@@ -164,14 +164,15 @@ void AIScriptGaff::OtherAgentExitedThisScene(int otherActorId) {
}
void AIScriptGaff::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
+ // It is impossible to triger this as player has no control at this moment
if (otherActorId == kActorMcCoy
&& combatMode == 1
&& Global_Variable_Query(kVariableChapter) == 4
&& Actor_Query_In_Set(kActorMcCoy, kSetMA07)
- && Actor_Query_Goal_Number(kActorGaff) == 300
+ && Actor_Query_Goal_Number(kActorGaff) == kGoalGaffMA07Wait
) {
AI_Countdown_Timer_Reset(kActorGaff, 0);
- Actor_Set_Goal_Number(kActorGaff, 303);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffMA07ShootMcCoy);
}
// return false;
}
@@ -274,15 +275,15 @@ bool AIScriptGaff::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Set_At_Waypoint(kActorGaff, 35, 0);
return true;
- case 300:
+ case kGoalGaffMA07Wait:
Player_Loses_Control();
Actor_Put_In_Set(kActorGaff, kSetMA07);
Actor_Set_At_XYZ(kActorGaff, -102.54f, -172.43f, 463.18f, 1015);
- Actor_Set_Goal_Number(kActorGaff, 301);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffMA07TalkToMcCoy);
return true;
- case 301:
- Game_Flag_Set(648);
+ case kGoalGaffMA07TalkToMcCoy:
+ Game_Flag_Set(kFlagMA07GaffTalk);
Actor_Face_Actor(kActorGaff, kActorMcCoy, true);
Actor_Says(kActorGaff, 110, 12);
Actor_Face_Actor(kActorMcCoy, kActorGaff, true);
@@ -306,21 +307,21 @@ bool AIScriptGaff::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Delay(4000);
Player_Gains_Control();
Actor_Start_Speech_Sample(kActorGaff, 210);
- Actor_Set_Goal_Number(kActorGaff, 302);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffMA07Left);
return true;
- case 302:
+ case kGoalGaffMA07Left:
return true;
- case 303:
+ case kGoalGaffMA07ShootMcCoy:
Actor_Face_Actor(kActorGaff, kActorMcCoy, true);
Actor_Change_Animation_Mode(kActorGaff, kAnimationModeCombatAttack);
Sound_Play(27, 100, 0, 0, 50);
Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
- Actor_Retired_Here(kActorMcCoy, 12, 12, 1, -1);
+ Actor_Retired_Here(kActorMcCoy, 12, 12, true, -1);
return true;
- case 499:
+ case kGoalGaffGone:
AI_Movement_Track_Flush(kActorGaff);
Actor_Put_In_Set(kActorGaff, kSetKP05_KP06);
Actor_Set_At_XYZ(kActorGaff, -782.15f, 8.26f, -263.64f, 52);
@@ -334,7 +335,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 0:
*animation = 794;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(794)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
}
break;
@@ -342,7 +343,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 1:
*animation = 788;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(788)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
}
break;
@@ -350,7 +351,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 2:
*animation = 798;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(798)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationFrame = 0;
}
break;
@@ -358,7 +359,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 3:
*animation = 799;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(799)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationState = 2;
_animationFrame = 0;
*animation = 798;
@@ -368,7 +369,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 4:
*animation = 800;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(800)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationState = 2;
_animationFrame = 0;
*animation = 798;
@@ -378,7 +379,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 5:
*animation = 801;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(801)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationState = 2;
_animationFrame = 0;
*animation = 798;
@@ -388,7 +389,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 6:
*animation = 800;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(800)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationState = 2;
_animationFrame = 0;
*animation = 798;
@@ -398,7 +399,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 7:
*animation = 801;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(801)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
_animationState = 2;
_animationFrame = 0;
*animation = 798;
@@ -408,7 +409,7 @@ bool AIScriptGaff::UpdateAnimation(int *animation, int *frame) {
case 8:
*animation = 802;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(35)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(35) - 1) { // Bug in the game?
Actor_Set_Invisible(kActorGaff, true);
*animation = 794;
_animationFrame = 0;
diff --git a/engines/bladerunner/script/scene/kp01.cpp b/engines/bladerunner/script/scene/kp01.cpp
index 8fbccd5..52f7bfb 100644
--- a/engines/bladerunner/script/scene/kp01.cpp
+++ b/engines/bladerunner/script/scene/kp01.cpp
@@ -166,7 +166,7 @@ void SceneScriptKP01::PlayerWalkedIn() {
if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
&& !Game_Flag_Query(714)
&& Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP01Wait
- && Actor_Query_Goal_Number(kActorSteele) != 599
+ && Actor_Query_Goal_Number(kActorSteele) != kGoalSteeleGone
) {
Player_Loses_Control();
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP01TalkToMcCoy);
diff --git a/engines/bladerunner/script/scene/kp06.cpp b/engines/bladerunner/script/scene/kp06.cpp
index 0cd53df..ab1dbed 100644
--- a/engines/bladerunner/script/scene/kp06.cpp
+++ b/engines/bladerunner/script/scene/kp06.cpp
@@ -119,7 +119,7 @@ bool SceneScriptKP06::ClickedOnExit(int exitId) {
} else if (Actor_Query_Goal_Number(kActorSteele) == 433) {
Actor_Set_Goal_Number(kActorSteele, 499);
} else {
- Actor_Set_Goal_Number(kActorGaff, 499);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffGone);
}
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
@@ -187,7 +187,7 @@ void SceneScriptKP06::PlayerWalkedIn() {
//return true;
return;
} else {
- Actor_Set_Goal_Number(kActorGaff, 499);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffGone);
Actor_Face_Actor(kActorGaff, kActorMcCoy, true);
Actor_Says(kActorGaff, 220, 13);
Actor_Face_Actor(kActorMcCoy, kActorGaff, true);
diff --git a/engines/bladerunner/script/scene/ma02.cpp b/engines/bladerunner/script/scene/ma02.cpp
index b3e9386..b749b18 100644
--- a/engines/bladerunner/script/scene/ma02.cpp
+++ b/engines/bladerunner/script/scene/ma02.cpp
@@ -186,7 +186,7 @@ void SceneScriptMA02::PlayerWalkedIn() {
}
if ( Global_Variable_Query(kVariableChapter) == 5
- && !Game_Flag_Query(654)
+ && !Game_Flag_Query(kFlagMA02Chapter5Started)
) {
if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
Actor_Says(kActorMcCoy, 2390, kAnimationModeIdle);
@@ -194,7 +194,7 @@ void SceneScriptMA02::PlayerWalkedIn() {
} else {
Actor_Says(kActorMcCoy, 2385, kAnimationModeTalk);
}
- Game_Flag_Set(654);
+ Game_Flag_Set(kFlagMA02Chapter5Started);
Autosave_Game(3);
}
diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp
index 2b5c0f4..3f5c467 100644
--- a/engines/bladerunner/script/scene/ma07.cpp
+++ b/engines/bladerunner/script/scene/ma07.cpp
@@ -121,7 +121,9 @@ void SceneScriptMA07::SceneFrameAdvanced(int frame) {
}
void SceneScriptMA07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
- if (actorId == kActorGaff && newGoal == 302) {
+ if (actorId == kActorGaff
+ && newGoal == kGoalGaffMA07Left
+ ) {
Scene_Exits_Enable();
}
}
@@ -140,12 +142,12 @@ void SceneScriptMA07::PlayerWalkedIn() {
Game_Flag_Reset(kFlagMA06toMA07);
}
- if (!Game_Flag_Query(648)
+ if (!Game_Flag_Query(kFlagMA07GaffTalk)
&& Game_Flag_Query(kFlagUG18GuzzaScene)
&& Global_Variable_Query(kVariableChapter) == 4
) {
Scene_Exits_Disable();
- Actor_Set_Goal_Number(kActorGaff, 300);
+ Actor_Set_Goal_Number(kActorGaff, kGoalGaffMA07Wait);
}
if (Game_Flag_Query(kFlagMcCoyFreedOfAccusations)) {
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index 15c4d5e..37241cf 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -51,31 +51,7 @@ void SceneScriptRC01::InitializeScene() {
//TODO: not part of game, remove
Game_Flag_Set(kFlagIntroPlayed); // force skip intro
Game_Flag_Set(kFlagRC02toRC01); // no landing
- // Game_Flag_Set(kFlagRC01PoliceDone);
- // Game_Flag_Set(kFlagKIAPrivacyAddon);
- // Game_Flag_Set(kFlagZubenRetired);
- // Game_Flag_Set(kFlagSpinnerAtMA01);
- // Set_Enter(kSetMA02_MA04, kSceneMA04);
-
- Spinner_Set_Selectable_Destination_Flag(0, true);
- Spinner_Set_Selectable_Destination_Flag(1, true);
- Spinner_Set_Selectable_Destination_Flag(2, true);
- Spinner_Set_Selectable_Destination_Flag(3, true);
- Spinner_Set_Selectable_Destination_Flag(4, true);
- Spinner_Set_Selectable_Destination_Flag(5, true);
- Spinner_Set_Selectable_Destination_Flag(6, true);
- Spinner_Set_Selectable_Destination_Flag(7, true);
- Spinner_Set_Selectable_Destination_Flag(8, true);
- Spinner_Set_Selectable_Destination_Flag(9, true);
-
- // ESPER_Flag_To_Activate();
- // Voight_Kampff_Activate(kActorLucy, 50);
-
- // Global_Variable_Set(kVariableChapter, 2);
- // Chapter_Enter(2, kSetRC03, kSceneRC03);
-
// Set_Enter(kSetPS10_PS11_PS12_PS13, 73);
-
#endif
if (!Game_Flag_Query(kFlagIntroPlayed)) {
Commit: 92774be0aed37273be7579a1cdd81d8ccf9a112c
https://github.com/scummvm/scummvm/commit/92774be0aed37273be7579a1cdd81d8ccf9a112c
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-05T21:54:50+01:00
Commit Message:
BLADERUNNER: Cleanup Steele scripts for ending
Changed paths:
engines/bladerunner/game_constants.h
engines/bladerunner/script/ai/clovis.cpp
engines/bladerunner/script/ai/maggie.cpp
engines/bladerunner/script/ai/steele.cpp
engines/bladerunner/script/scene/kp03.cpp
engines/bladerunner/script/scene/kp05.cpp
engines/bladerunner/script/scene/kp06.cpp
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 2f872f6..0d8d46d 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1813,9 +1813,14 @@ enum GoalSteele {
kGoalSteeleImmediatelyStartChapter4 = 285,
kGoalSteeleNR01StartChapter4 = 290,
kGoalSteeleHF01StartChapter4 = 291,
+ // chapter 4
+ kGoalSteeleStartChapter4 = 300,
// chapter 5
+ kGoalSteeleStartChapter5 = 400,
// kGoalSteeleKP03WillShootMcCoy = 410,
kGoalSteeleKP03Walk = 411,
+ kGoalSteeleKP03StopWalking = 412,
+ kGoalSteeleKP03Leave = 413,
kGoalSteeleKP03Exploded = 415,
kGoalSteeleKP03Dying = 416,
kGoalSteeleKP03ShootMcCoy = 418,
@@ -1824,7 +1829,11 @@ enum GoalSteele {
kGoalSteeleKP01TalkToMcCoy = 421,
kGoalSteeleKP01Leave = 422,
kGoalSteeleKP01Left = 423,
-
+ kGoalSteeleKP05Enter = 430,
+ kGoalSteeleKP05Leave = 431,
+ kGoalSteeleKP06Enter = 432,
+ kGoalSteeleKP06Leave = 433,
+ kGoalSteeleWaitingForEnd = 499,
kGoalSteeleGone = 599
};
diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp
index 26d545e..1ab80ab 100644
--- a/engines/bladerunner/script/ai/clovis.cpp
+++ b/engines/bladerunner/script/ai/clovis.cpp
@@ -149,7 +149,9 @@ void AIScriptClovis::OtherAgentExitedThisScene(int otherActorId) {
}
void AIScriptClovis::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
- if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants) && Actor_Query_In_Set(kActorMcCoy, kSetKP07)) {
+ if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
+ && Actor_Query_In_Set(kActorMcCoy, kSetKP07)
+ ) {
Game_Flag_Set(697);
Game_Flag_Set(714);
// return true;
diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp
index 4feb740..2667918 100644
--- a/engines/bladerunner/script/ai/maggie.cpp
+++ b/engines/bladerunner/script/ai/maggie.cpp
@@ -327,7 +327,7 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Says(kActorMcCoy, 2235, 12);
if (Actor_Query_Is_In_Current_Set(kActorSteele)) {
Actor_Says(kActorSteele, 1530, 58);
- Actor_Set_Goal_Number(kActorSteele, 431);
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP05Leave);
}
Delay(2000);
Actor_Says(kActorMcCoy, 2390, 13);
diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp
index 2b2e1f2..9435195 100644
--- a/engines/bladerunner/script/ai/steele.cpp
+++ b/engines/bladerunner/script/ai/steele.cpp
@@ -158,17 +158,17 @@ bool AIScriptSteele::Update() {
break;
case 4:
- if (Actor_Query_Goal_Number(kActorSteele) < 300) {
- Actor_Set_Goal_Number(kActorSteele, 300);
+ if (Actor_Query_Goal_Number(kActorSteele) < kGoalSteeleStartChapter4) {
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleStartChapter4);
}
break;
case 5:
if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
- && Actor_Query_Goal_Number(kActorSteele) < 400
+ && Actor_Query_Goal_Number(kActorSteele) < kGoalSteeleStartChapter5
) {
- Actor_Set_Goal_Number(kActorSteele, 400);
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleStartChapter5);
return true;
}
@@ -313,7 +313,7 @@ void AIScriptSteele::CompletedMovementTrack() {
Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP01Left);
break;
- case 432:
+ case kGoalSteeleKP06Enter:
Player_Set_Combat_Mode(kActorMcCoy);
Actor_Face_Actor(kActorMcCoy, kActorSteele, true);
Actor_Says(kActorMcCoy, 2265, 11);
@@ -324,7 +324,7 @@ void AIScriptSteele::CompletedMovementTrack() {
Actor_Says(kActorMcCoy, 2280, 15);
Actor_Says(kActorSteele, 660, 60);
Actor_Says(kActorSteele, 670, 59);
- Actor_Set_Goal_Number(kActorSteele, 433);
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP06Leave);
Player_Set_Combat_Mode(kActorSteele);
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -731.0f, 8.26f, -657.0f, 0, false, false, 0);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
@@ -332,9 +332,6 @@ void AIScriptSteele::CompletedMovementTrack() {
Game_Flag_Set(kFlagKP06toKP07);
Set_Enter(kSetKP07, kSceneKP07);
break;
-
- default:
- break;
}
return; //true;
}
@@ -1297,7 +1294,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Chapter_Enter(4, kSetUG06, kSceneUG06);
return true;
- case 300:
+ case kGoalSteeleStartChapter4:
if (Query_Score(kActorMcCoy) > Query_Score(kActorSteele) && Query_Score(kActorMcCoy) < 75) {
Set_Score(kActorSteele, Random_Query(2, 5) + Query_Score(kActorMcCoy));
}
@@ -1312,7 +1309,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Set_At_Waypoint(kActorSteele, 35, 0);
return true;
- case 400:
+ case kGoalSteeleStartChapter5:
case 401:
case kGoalSteeleKP01Left:
return true;
@@ -1335,11 +1332,11 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Async_Actor_Walk_To_XYZ(kActorSteele, -109.0f, -36.55f, 26.0f, 0, false);
return true;
- case 412:
+ case kGoalSteeleKP03StopWalking:
Actor_Force_Stop_Walking(kActorSteele);
return true;
- case 413:
+ case kGoalSteeleKP03Leave:
Async_Actor_Walk_To_XYZ(kActorSteele, 1.0, -36.55f, 111.0f, 0, false);
return true;
@@ -1410,26 +1407,26 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) {
AI_Movement_Track_Repeat(kActorSteele);
return true;
- case 430:
+ case kGoalSteeleKP05Enter:
Actor_Put_In_Set(kActorSteele, kSetKP05_KP06);
Actor_Set_At_XYZ(kActorSteele, -1110.0f, 0.0f, 952.0f, 155);
- Actor_Change_Animation_Mode(kActorSteele, 4);
+ Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatIdle);
return true;
- case 431:
+ case kGoalSteeleKP05Leave:
AI_Movement_Track_Flush(kActorSteele);
AI_Movement_Track_Append_Run(kActorSteele, 541, 0);
AI_Movement_Track_Repeat(kActorSteele);
return true;
- case 432:
+ case kGoalSteeleKP06Enter:
Actor_Set_At_Waypoint(kActorSteele, 542, 0);
AI_Movement_Track_Flush(kActorSteele);
AI_Movement_Track_Append_Run(kActorSteele, 543, 0);
AI_Movement_Track_Repeat(kActorSteele);
return true;
- case 433:
+ case kGoalSteeleKP06Leave:
AI_Movement_Track_Flush(kActorSteele);
AI_Movement_Track_Append_Run(kActorSteele, 542, 0);
AI_Movement_Track_Repeat(kActorSteele);
diff --git a/engines/bladerunner/script/scene/kp03.cpp b/engines/bladerunner/script/scene/kp03.cpp
index fe2746c..9f22323 100644
--- a/engines/bladerunner/script/scene/kp03.cpp
+++ b/engines/bladerunner/script/scene/kp03.cpp
@@ -291,7 +291,7 @@ void SceneScriptKP03::DialogueQueueFlushed(int a1) {
void SceneScriptKP03::saveSteele() {
Player_Loses_Control();
Actor_Says(kActorMcCoy, 2180, 14);
- Actor_Set_Goal_Number(kActorSteele, 412);
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03StopWalking);
Actor_Says(kActorSteele, 480, 60);
Actor_Face_Object(kActorMcCoy, "BRACK MID", true);
Actor_Says(kActorMcCoy, 2185, 14);
@@ -306,11 +306,11 @@ void SceneScriptKP03::saveSteele() {
Game_Flag_Reset(kFlagKP03BombActive);
Scene_Loop_Set_Default(kKP03MainLoopBombNoWire);
Scene_Loop_Start_Special(kSceneLoopModeOnce, kKP03MainLoopBombNoWire, false);
- Actor_Set_Goal_Number(kActorSteele, 413);
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03Leave);
Actor_Says(kActorMcCoy, 2195, 14);
Ambient_Sounds_Play_Sound(151, 40, -60, -60, 0);
Loop_Actor_Walk_To_XYZ(kActorMcCoy, 1.0f, -36.55f, 111.0f, 0, false, false, 0);
- Actor_Set_Goal_Number(kActorSteele, 430);
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP05Enter);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Game_Flag_Reset(kFlagKP01toKP03);
diff --git a/engines/bladerunner/script/scene/kp05.cpp b/engines/bladerunner/script/scene/kp05.cpp
index ff3bb08..2a30cd4 100644
--- a/engines/bladerunner/script/scene/kp05.cpp
+++ b/engines/bladerunner/script/scene/kp05.cpp
@@ -55,7 +55,10 @@ void SceneScriptKP05::SceneLoaded() {
Unobstacle_Object("OBSTACLEBOX20", true);
Clickable_Object("BRIDGE02");
Unclickable_Object("BRIDGE02");
- if (!Actor_Clue_Query(kActorMcCoy, kCluePowerSource) && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
+
+ if (!Actor_Clue_Query(kActorMcCoy, kCluePowerSource)
+ && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
+ ) {
Item_Add_To_World(118, 960, 9, -1095.0f, 0.0f, 770.0f, 256, 24, 24, false, true, false, true);
}
}
diff --git a/engines/bladerunner/script/scene/kp06.cpp b/engines/bladerunner/script/scene/kp06.cpp
index ab1dbed..5087e33 100644
--- a/engines/bladerunner/script/scene/kp06.cpp
+++ b/engines/bladerunner/script/scene/kp06.cpp
@@ -75,12 +75,14 @@ bool SceneScriptKP06::ClickedOn3DObject(const char *objectName, bool a2) {
}
bool SceneScriptKP06::ClickedOnActor(int actorId) {
- if (actorId == kActorSadik && !Game_Flag_Query(714)) {
+ if ( actorId == kActorSadik
+ && !Game_Flag_Query(714)
+ ) {
if (Actor_Clue_Query(kActorSadik, kCluePowerSource)) {
Actor_Face_Actor(kActorMcCoy, kActorSadik, true);
Actor_Says(kActorMcCoy, 8610, 15);
Actor_Says(kActorSadik, 290, kAnimationModeTalk);
- } else if (Actor_Clue_Query(kActorMcCoy, kCluePowerSource) ) {
+ } else if (Actor_Clue_Query(kActorMcCoy, kCluePowerSource)) {
Actor_Says(kActorSadik, 280, kAnimationModeTalk);
Actor_Says(kActorSadik, 290, kAnimationModeTalk);
Actor_Clue_Acquire(kActorSadik, kCluePowerSource, true, kActorMcCoy);
@@ -110,14 +112,16 @@ bool SceneScriptKP06::ClickedOnExit(int exitId) {
}
if (exitId == 1) {
- if (Actor_Clue_Query(kActorSadik, kCluePowerSource) || Actor_Query_Goal_Number(kActorSadik) != 416) {
+ if (Actor_Clue_Query(kActorSadik, kCluePowerSource)
+ || Actor_Query_Goal_Number(kActorSadik) != 416
+ ) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -731.0f, 8.26f, -657.0f, 0, 1, false, 0)) {
if (Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)) {
if (!Game_Flag_Query(714)) {
Player_Set_Combat_Mode(false);
}
- } else if (Actor_Query_Goal_Number(kActorSteele) == 433) {
- Actor_Set_Goal_Number(kActorSteele, 499);
+ } else if (Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP06Leave) {
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleWaitingForEnd);
} else {
Actor_Set_Goal_Number(kActorGaff, kGoalGaffGone);
}
@@ -156,11 +160,12 @@ void SceneScriptKP06::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
void SceneScriptKP06::PlayerWalkedIn() {
if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
- && Game_Flag_Query(kFlagKP07toKP06)
+ && Game_Flag_Query(kFlagKP07toKP06)
) {
Game_Flag_Reset(kFlagKP07toKP06);
- if (Actor_Query_Goal_Number(kActorSteele) == 499) {
+ // Ending - leave with Steele
+ if (Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleWaitingForEnd) {
Actor_Face_Actor(kActorSteele, kActorMcCoy, true);
Actor_Says(kActorSteele, 2530, 13);
Actor_Face_Actor(kActorMcCoy, kActorSteele, true);
@@ -184,9 +189,7 @@ void SceneScriptKP06::PlayerWalkedIn() {
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Outtake_Play(kOuttakeEnd6, false, -1);
Game_Over();
- //return true;
- return;
- } else {
+ } else { // Ending - talk with Gaff and leaving alone
Actor_Set_Goal_Number(kActorGaff, kGoalGaffGone);
Actor_Face_Actor(kActorGaff, kActorMcCoy, true);
Actor_Says(kActorGaff, 220, 13);
@@ -215,28 +218,26 @@ void SceneScriptKP06::PlayerWalkedIn() {
Delay(3000);
Outtake_Play(kOuttakeEnd7, false, -1);
Game_Over();
- //return true;
- return;
- }
- } else {
- if (Actor_Query_Goal_Number(kActorSadik) == 414) {
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, -809.0f, 8.26f, -619.0f, 0, 0, false, 0);
- Actor_Face_Actor(kActorMcCoy, kActorSadik, true);
- Actor_Set_Goal_Number(kActorSadik, 415);
}
- if (Actor_Query_Goal_Number(kActorSteele) == 431) {
- Actor_Set_Goal_Number(kActorSteele, 432);
- }
- //return false;
- return;
+ return; // true;
+ }
+
+ if (Actor_Query_Goal_Number(kActorSadik) == 414) {
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -809.0f, 8.26f, -619.0f, 0, 0, false, 0);
+ Actor_Face_Actor(kActorMcCoy, kActorSadik, true);
+ Actor_Set_Goal_Number(kActorSadik, 415);
+ }
+
+ if (Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP05Leave) {
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP06Enter);
}
}
void SceneScriptKP06::PlayerWalkedOut() {
if (Game_Flag_Query(kFlagKP06toKP07)
- && Actor_Query_Goal_Number(kActorSteele) == 433
+ && Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleKP06Leave
) {
- Actor_Set_Goal_Number(kActorSteele, 499);
+ Actor_Set_Goal_Number(kActorSteele, kGoalSteeleWaitingForEnd);
}
}
Commit: cafc76dcfe9adbd92ac77feca78417c81c4c7c83
https://github.com/scummvm/scummvm/commit/cafc76dcfe9adbd92ac77feca78417c81c4c7c83
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-05T21:59:45+01:00
Commit Message:
BLADERUNNER: Cleanup of Maggie script
Changed paths:
engines/bladerunner/game_constants.h
engines/bladerunner/script/ai/maggie.cpp
engines/bladerunner/script/ai/sadik.cpp
engines/bladerunner/script/ai_script.h
engines/bladerunner/script/scene/kp05.cpp
engines/bladerunner/script/scene/ma02.cpp
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 0d8d46d..06c6ae9 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -2221,6 +2221,22 @@ enum GoalFreeSlotA { // Rat
kGoalFreeSlotAGone = 599
};
+enum GoalMaggie {
+ kGoalMaggieMA02Default = 0,
+ kGoalMaggieMA02WalkToEntrance = 1,
+ kGoalMaggieMA02GetFed = 3,
+ kGoalMaggieMA02WalkToMcCoy = 7,
+ kGoalMaggieMA02Wait = 8,
+ kGoalMaggieMA02SitDown = 10, // not used
+ kGoalMaggieMA02Sleep = 11, // not used
+ kGoalMaggieKP05Wait = 411,
+ kGoalMaggieKP05McCoyEntred = 412,
+ kGoalMaggieKP05WalkToMcCoy = 413,
+ kGoalMaggieKP05WillExplode = 414,
+ kGoalMaggieKP05Explode = 415,
+ kGoalMaggieDead = 599
+};
+
} // End of namespace BladeRunner
#endif
diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp
index 2667918..9928835 100644
--- a/engines/bladerunner/script/ai/maggie.cpp
+++ b/engines/bladerunner/script/ai/maggie.cpp
@@ -63,7 +63,7 @@ void AIScriptMaggie::Initialize() {
var_45F400 = 0;
var_45F404 = 0;
var_45F408 = 0;
- Actor_Set_Goal_Number(kActorMaggie, 0);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Default);
}
bool AIScriptMaggie::Update() {
@@ -76,12 +76,12 @@ bool AIScriptMaggie::Update() {
Actor_Set_At_Waypoint(kActorMaggie, 39, 0);
}
- if (goal == 414) {
- Actor_Set_Goal_Number(kActorMaggie, 415);
- } else if (goal == 413
+ if (goal == kGoalMaggieKP05WillExplode) {
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05Explode);
+ } else if (goal == kGoalMaggieKP05WalkToMcCoy
&& Actor_Query_Inch_Distance_From_Actor(kActorMcCoy, kActorMaggie) < 60
) {
- Actor_Set_Goal_Number(kActorMaggie, 415);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05Explode);
}
if (Global_Variable_Query(kVariableChapter) == 5) {
@@ -94,25 +94,25 @@ bool AIScriptMaggie::Update() {
}
void AIScriptMaggie::TimerExpired(int timer) {
- if (timer != 0) {
- return;
- }
- int goal = Actor_Query_Goal_Number(kActorMaggie);
- if (goal == 8) {
- AI_Countdown_Timer_Reset(kActorMaggie, 0);
- if (Random_Query(0, 4)) {
- AI_Movement_Track_Flush(kActorMaggie);
- AI_Movement_Track_Append(kActorMaggie, sub_44B260(), 0);
- AI_Movement_Track_Repeat(kActorMaggie);
- } else {
- Actor_Change_Animation_Mode(kActorMaggie, 54);
+ if (timer == 0) {
+ int goal = Actor_Query_Goal_Number(kActorMaggie);
+ if (goal == kGoalMaggieMA02Wait) {
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ if (Random_Query(0, 4)) {
+ AI_Movement_Track_Flush(kActorMaggie);
+ AI_Movement_Track_Append(kActorMaggie, randomWaypointMA02(), 0);
+ AI_Movement_Track_Repeat(kActorMaggie);
+ } else {
+ Actor_Change_Animation_Mode(kActorMaggie, 54);
+ }
+ return; //true
+ }
+
+ if (goal == kGoalMaggieMA02SitDown) {
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ Actor_Change_Animation_Mode(kActorMaggie, 55);
+ return; //true
}
- return; //true
- }
- if (goal == 10) {
- AI_Countdown_Timer_Reset(kActorMaggie, 0);
- Actor_Change_Animation_Mode(kActorMaggie, 55);
- return; //true
}
return; //false
}
@@ -120,28 +120,30 @@ void AIScriptMaggie::TimerExpired(int timer) {
void AIScriptMaggie::CompletedMovementTrack() {
int goal = Actor_Query_Goal_Number(kActorMaggie);
if (goal == 0 || goal > 9) {
- if (goal == 413) {
- Actor_Set_Goal_Number(kActorMaggie, 414);
+ if (goal == kGoalMaggieKP05WalkToMcCoy) {
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05WillExplode);
return; //true
}
} else {
- if (goal == 1) {
- Actor_Set_Goal_Number(kActorMaggie, 7);
+ if (goal == kGoalMaggieMA02WalkToEntrance) {
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02WalkToMcCoy);
return; //true
}
- if (goal == 8) {
+
+ if (goal == kGoalMaggieMA02Wait) {
Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
AI_Countdown_Timer_Reset(kActorMaggie, 0);
AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(1, 5));
return; //true
}
+
if (goal == 9) {
Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
Actor_Change_Animation_Mode(kActorMaggie, 54);
return; //true
}
}
- Actor_Set_Goal_Number(kActorMaggie, 8);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Wait);
return; //true
}
@@ -152,7 +154,7 @@ void AIScriptMaggie::ClickedByPlayer() {
if (!Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
&& Global_Variable_Query(kVariableChapter) == 5
) {
- if (Actor_Query_Goal_Number(kActorMaggie) == 413) {
+ if (Actor_Query_Goal_Number(kActorMaggie) == kGoalMaggieKP05WalkToMcCoy) {
Actor_Set_Targetable(kActorMaggie, true);
AI_Movement_Track_Flush(kActorMaggie);
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
@@ -165,14 +167,13 @@ void AIScriptMaggie::ClickedByPlayer() {
return; // false
}
- float mccoy_x, mccoy_y, mccoy_z;
-
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
+
+ float mccoy_x, mccoy_y, mccoy_z;
Actor_Query_XYZ(kActorMcCoy, &mccoy_x, &mccoy_y, &mccoy_z);
- float distance = sub_44B200(kActorMaggie, mccoy_x, mccoy_y, mccoy_z);
- if (distance > 60.0f) {
+ if (distanceToActor(kActorMaggie, mccoy_x, mccoy_y, mccoy_z) > 60.0f) {
Actor_Says(0, 2430, 18);
- Actor_Set_Goal_Number(kActorMaggie, 7);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02WalkToMcCoy);
return; // true
}
@@ -185,7 +186,7 @@ void AIScriptMaggie::ClickedByPlayer() {
}
int goal = Actor_Query_Goal_Number(kActorMaggie);
- if (goal == 8) {
+ if (goal == kGoalMaggieMA02Wait) {
if (Random_Query(0, 1)) {
Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
Actor_Change_Animation_Mode(kActorMaggie, 57);
@@ -208,7 +209,7 @@ void AIScriptMaggie::ClickedByPlayer() {
return; // true
}
- Actor_Set_Goal_Number(kActorMaggie, 8);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Wait);
return; // true
}
@@ -224,7 +225,7 @@ void AIScriptMaggie::OtherAgentExitedThisScene(int otherActorId) {
&& Global_Variable_Query(kVariableChapter) < 4
) {
AI_Movement_Track_Flush(kActorMaggie);
- Actor_Set_Goal_Number(kActorMaggie, 0);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Default);
}
}
@@ -236,7 +237,7 @@ void AIScriptMaggie::ShotAtAndMissed() {
bool AIScriptMaggie::ShotAtAndHit() {
AI_Movement_Track_Flush(kActorMaggie);
- Actor_Set_Goal_Number(kActorMaggie, 414);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05WillExplode);
Actor_Set_Targetable(kActorMaggie, false);
return false;
}
@@ -249,23 +250,49 @@ int AIScriptMaggie::GetFriendlinessModifierIfGetsClue(int otherActorId, int clue
}
bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
- if (currentGoalNumber == 599) {
+ if (currentGoalNumber == kGoalMaggieDead) {
return true;
}
switch (newGoalNumber) {
- case 11:
- Actor_Change_Animation_Mode(kActorMaggie, 55);
- _animationState = kMaggieStateSleeping;
- _animationFrame = 0;
+ case kGoalMaggieMA02Default:
+ Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04);
+ Actor_Set_At_Waypoint(kActorMaggie, 265, 780);
return true;
- case 10:
- Actor_Change_Animation_Mode(kActorMaggie, 54);
- _animationState = kMaggieStateLayingIdle;
- _animationFrame = 0;
+
+ case kGoalMaggieMA02WalkToEntrance:
+ Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04);
+ Actor_Set_At_Waypoint(kActorMaggie, randomWaypointMA02(), 512);
+ AI_Movement_Track_Flush(kActorMaggie);
+ AI_Movement_Track_Append(kActorMaggie, 264, 0);
+ AI_Movement_Track_Repeat(kActorMaggie);
+ return true;
+
+ case kGoalMaggieMA02GetFed:
+ Player_Loses_Control();
+ AI_Movement_Track_Flush(kActorMaggie);
+ Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 48, false, false);
+ Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, false);
+ Actor_Says(kActorMcCoy, 2400, kAnimationModeFeeding);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Wait);
+ Player_Gains_Control();
+ return true;
+
+ case kGoalMaggieMA02WalkToMcCoy:
AI_Countdown_Timer_Reset(kActorMaggie, 0);
- AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(2, 9));
+ AI_Movement_Track_Flush(kActorMaggie);
+ Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 30, false, false);
+ Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
+ Actor_Change_Animation_Mode(kActorMaggie, 56);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Wait);
return true;
+
+ case kGoalMaggieMA02Wait:
+ AI_Countdown_Timer_Reset(kActorMaggie, 0);
+ AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(3, 9));
+ return true;
+
case 9:
if (Random_Query(0, 2) <= 0) {
Actor_Face_Actor(kActorMaggie, kActorMcCoy, false);
@@ -273,53 +300,66 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
} else {
AI_Movement_Track_Flush(kActorMaggie);
if (Actor_Query_Which_Set_In(kActorMaggie) == kSetMA02_MA04) {
- AI_Movement_Track_Append(kActorMaggie, sub_44B260(), 486);
+ AI_Movement_Track_Append(kActorMaggie, randomWaypointMA02(), 486);
}
AI_Movement_Track_Repeat(kActorMaggie);
}
return true;
- case 8:
+
+ case kGoalMaggieMA02SitDown:
+ Actor_Change_Animation_Mode(kActorMaggie, 54);
+ _animationState = kMaggieStateLayingIdle;
+ _animationFrame = 0;
AI_Countdown_Timer_Reset(kActorMaggie, 0);
- AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(3, 9));
+ AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(2, 9));
return true;
- case 7:
- AI_Countdown_Timer_Reset(kActorMaggie, 0);
+
+ case kGoalMaggieMA02Sleep:
+ Actor_Change_Animation_Mode(kActorMaggie, 55);
+ _animationState = kMaggieStateSleeping;
+ _animationFrame = 0;
+ return true;
+
+ case 400:
+ Actor_Set_Goal_Number(kActorMaggie, 410);
+ break;
+
+ case kGoalMaggieKP05Wait:
AI_Movement_Track_Flush(kActorMaggie);
- Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 30, false, false);
+ Game_Flag_Set(kFlagMaggieHasBomb);
+ Actor_Put_In_Set(kActorMaggie, kSetKP05_KP06);
+ Actor_Set_At_XYZ(kActorMaggie, -672.0, 0.0, -428.0, 653);
+ Actor_Change_Animation_Mode(kActorMaggie, kAnimationModeIdle);
+ break;
+
+ case kGoalMaggieKP05McCoyEntred:
+ Scene_Exits_Disable();
+ Loop_Actor_Walk_To_XYZ(kActorMaggie, -734.0, 0.0, -432.0, 0, false, false, 0);
Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
Actor_Change_Animation_Mode(kActorMaggie, 56);
- Actor_Set_Goal_Number(kActorMaggie, 8);
- return true;
- case 3:
- Player_Loses_Control();
- AI_Movement_Track_Flush(kActorMaggie);
- Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 48, false, false);
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
- Actor_Face_Actor(kActorMaggie, kActorMcCoy, false);
- Actor_Says(kActorMcCoy, 2400, kAnimationModeFeeding);
- Actor_Set_Goal_Number(kActorMaggie, 8);
- Player_Gains_Control();
- return true;
- case 1:
- Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04);
- Actor_Set_At_Waypoint(kActorMaggie, sub_44B260(), 512);
+ Actor_Says(kActorMcCoy, 2225, kAnimationModeTalk);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05WalkToMcCoy);
+ break;
+
+ case kGoalMaggieKP05WalkToMcCoy:
+ if (Actor_Query_Is_In_Current_Set(kActorSteele)) {
+ Actor_Says(kActorSteele, 3270, 59);
+ }
AI_Movement_Track_Flush(kActorMaggie);
- AI_Movement_Track_Append(kActorMaggie, 264, 0);
+ AI_Movement_Track_Append(kActorMaggie, 540, 0);
AI_Movement_Track_Repeat(kActorMaggie);
- return true;
- case 0:
- Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04);
- Actor_Set_At_Waypoint(kActorMaggie, 265, 780);
- return true;
- case 415:
+ break;
+
+ case kGoalMaggieKP05Explode:
AI_Movement_Track_Flush(kActorMaggie);
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
Sound_Play(494, 50, 0, 0, 100);
- Actor_Set_Goal_Number(kActorMaggie, 599);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieDead);
Actor_Change_Animation_Mode(kActorMaggie, 51);
if (Actor_Query_Inch_Distance_From_Actor(kActorMcCoy, kActorMaggie) < 144) {
Player_Loses_Control();
- Actor_Change_Animation_Mode(kActorMcCoy, 48);
+ Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
Actor_Retired_Here(kActorMcCoy, 6, 6, 1, -1);
} else {
Delay(3000);
@@ -338,33 +378,7 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) {
}
}
break;
- case 413:
- if (Actor_Query_Is_In_Current_Set(kActorSteele)) {
- Actor_Says(kActorSteele, 3270, 59);
- }
- AI_Movement_Track_Flush(kActorMaggie);
- AI_Movement_Track_Append(kActorMaggie, 540, 0);
- AI_Movement_Track_Repeat(kActorMaggie);
- break;
- case 412:
- Scene_Exits_Disable();
- Loop_Actor_Walk_To_XYZ(kActorMaggie, -734.0, 0.0, -432.0, 0, false, false, 0);
- Actor_Face_Actor(kActorMaggie, kActorMcCoy, true);
- Actor_Change_Animation_Mode(kActorMaggie, 56);
- Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
- Actor_Says(kActorMcCoy, 2225, kAnimationModeTalk);
- Actor_Set_Goal_Number(kActorMaggie, 413);
- break;
- case 411:
- AI_Movement_Track_Flush(kActorMaggie);
- Game_Flag_Set(kFlagMaggieHasBomb);
- Actor_Put_In_Set(kActorMaggie, kSetKP05_KP06);
- Actor_Set_At_XYZ(kActorMaggie, -672.0, 0.0, -428.0, 653);
- Actor_Change_Animation_Mode(kActorMaggie, kAnimationModeIdle);
- break;
- case 400:
- Actor_Set_Goal_Number(kActorMaggie, 410);
- break;
+
}
return false;
}
@@ -376,10 +390,12 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
*animation = 871;
_animationFrame = 0;
break;
+
case kMaggieStateDeadExploded:
*animation = 874;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(874) - 1;
break;
+
case kMaggieStateExploding:
*animation = 874;
_animationFrame++;
@@ -390,6 +406,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
Actor_Set_At_Waypoint(kActorMaggie, 41, 0);
}
break;
+
case kMaggieStateBombJumping:
*animation = 873;
_animationFrame++;
@@ -397,9 +414,10 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationState = kMaggieStateBombIdle;
_animationFrame = 0;
*animation = 875;
- Actor_Set_Goal_Number(kActorMaggie, 414);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05WillExplode);
}
break;
+
case kMaggieStateBombWalk:
*animation = 872;
_animationFrame++;
@@ -407,6 +425,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
}
break;
+
case kMaggieStateBombIdle:
*animation = 875;
_animationFrame++;
@@ -414,6 +433,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
}
break;
+
case kMaggieStateWakingUp:
*animation = 876;
_animationFrame--;
@@ -423,30 +443,33 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationState = kMaggieStateLayingIdle;
_animationFrame = 0;
*animation = 867;
- goal = Actor_Query_Goal_Number(66);
- if (goal == 3) {
+ goal = Actor_Query_Goal_Number(kActorMaggie);
+ if (goal == kGoalMaggieMA02GetFed) {
_animationState = kMaggieStateStandingUp;
_animationFrame = 0;
*animation = 868;
- } else if (goal == 7) {
- Actor_Set_Goal_Number(kActorMaggie, 10);
- Actor_Set_Goal_Number(kActorMaggie, 7);
+ } else if (goal == kGoalMaggieMA02WalkToMcCoy) {
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02SitDown);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02WalkToMcCoy);
} else {
- Actor_Set_Goal_Number(kActorMaggie, 10);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02SitDown);
}
break;
+
case kMaggieStateSleeping:
*animation = 876;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(876) - 1;
break;
+
case kMaggieStateGoingToSleep:
*animation = 876;
_animationFrame++;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(876) - 1) {
_animationState = kMaggieStateSleeping;
- Actor_Set_Goal_Number(kActorMaggie, 11);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Sleep);
}
break;
+
case kMaggieStateStandingUp:
*animation = 868;
_animationFrame++;
@@ -454,14 +477,15 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
*animation = 864;
_animationState = kMaggieStateIdle;
_animationFrame = 0;
- if (Actor_Query_Goal_Number(kActorMaggie) == 10) {
- Actor_Set_Goal_Number(kActorMaggie, 8);
- } else if (Actor_Query_Goal_Number(kActorMaggie) == 7) {
- Actor_Set_Goal_Number(kActorMaggie, 12);
- Actor_Set_Goal_Number(kActorMaggie, 7);
+ if (Actor_Query_Goal_Number(kActorMaggie) == kGoalMaggieMA02SitDown) {
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02Wait);
+ } else if (Actor_Query_Goal_Number(kActorMaggie) == kGoalMaggieMA02WalkToMcCoy) {
+ Actor_Set_Goal_Number(kActorMaggie, 12); // this is never used
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02WalkToMcCoy);
}
}
break;
+
case kMaggieStateLayingIdle:
*animation = 867;
_animationFrame++;
@@ -469,6 +493,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
}
break;
+
case kMaggieStateLayingDown:
*animation = 866;
_animationFrame++;
@@ -477,10 +502,11 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
*animation = 867;
if (Actor_Query_Goal_Number(kActorMaggie) == 9) {
- Actor_Set_Goal_Number(kActorMaggie, 10);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02SitDown);
}
}
break;
+
case kMaggieStateHappyB:
*animation = 865;
_animationFrame++;
@@ -493,6 +519,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
}
}
break;
+
case kMaggieStateHappyA:
*animation = 870;
if (_animationFrame == 1) {
@@ -509,6 +536,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
}
break;
+
case kMaggieStateJumping:
*animation = 869;
_animationFrame++;
@@ -519,6 +547,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
}
break;
+
case kMaggieStateWalking:
*animation = 863;
_animationFrame++;
@@ -526,6 +555,7 @@ bool AIScriptMaggie::UpdateAnimation(int *animation, int *frame) {
_animationFrame = 0;
}
break;
+
case kMaggieStateIdle:
*animation = 864;
_animationFrame++;
@@ -581,31 +611,22 @@ bool AIScriptMaggie::ChangeAnimationMode(int mode) {
}
switch (mode) {
- case 88:
- _animationState = kMaggieStateDead;
+ case 51:
+ _animationState = kMaggieStateExploding;
_animationFrame = 0;
+ Sound_Play(272, 50, 0, 0, 50);
break;
- case 57:
- if (_animationState != kMaggieStateHappyB) {
- _animationFrame = 0;
- _animationState = kMaggieStateHappyB;
- }
- var_45F3F8 = Random_Query(2, 6);
- Sound_Play(276, 50, 0, 0, 50);
- break;
- case 56:
- if (_animationState != 3) {
+
+ case kAnimationModeFeeding:
+ if (Game_Flag_Query(kFlagMaggieHasBomb)) {
+ _animationState = kMaggieStateBombJumping;
_animationFrame = 0;
- _animationState = kMaggieStateHappyA;
- }
- var_45F3FC = Random_Query(2, 6);
- break;
- case 55:
- if (_animationState == kMaggieStateLayingIdle) {
- _animationState = kMaggieStateGoingToSleep;
+ } else {
+ _animationState = kMaggieStateJumping;
_animationFrame = 0;
}
break;
+
case 54:
if (_animationState <= kMaggieStateSleeping) {
if (_animationState > 0) {
@@ -619,20 +640,36 @@ bool AIScriptMaggie::ChangeAnimationMode(int mode) {
}
}
break;
- case kAnimationModeFeeding:
- if (Game_Flag_Query(kFlagMaggieHasBomb)) {
- _animationState = kMaggieStateBombJumping;
+
+ case 55:
+ if (_animationState == kMaggieStateLayingIdle) {
+ _animationState = kMaggieStateGoingToSleep;
_animationFrame = 0;
- } else {
- _animationState = kMaggieStateJumping;
+ }
+ break;
+
+ case 56:
+ if (_animationState != 3) {
_animationFrame = 0;
+ _animationState = kMaggieStateHappyA;
}
+ var_45F3FC = Random_Query(2, 6);
break;
- case 51:
- _animationState = kMaggieStateExploding;
+
+ case 57:
+ if (_animationState != kMaggieStateHappyB) {
+ _animationFrame = 0;
+ _animationState = kMaggieStateHappyB;
+ }
+ var_45F3F8 = Random_Query(2, 6);
+ Sound_Play(276, 50, 0, 0, 50);
+ break;
+
+ case 88:
+ _animationState = kMaggieStateDead;
_animationFrame = 0;
- Sound_Play(272, 50, 0, 0, 50);
break;
+
}
return true;
}
@@ -658,21 +695,23 @@ bool AIScriptMaggie::ReachedMovementTrackWaypoint(int waypointId) {
void AIScriptMaggie::FledCombat() {
}
-int AIScriptMaggie::sub_44B260() {
- int random = Random_Query(0, 3);
- if (random == 0) {
+int AIScriptMaggie::randomWaypointMA02() {
+ switch (Random_Query(0, 3)) {
+ case 0:
return 264;
- }
- if (random == 1) {
+
+ case 1:
return 265;
- }
- if (random == 2) {
+
+ case 2:
return 266;
+
+ default:
+ return 267;
}
- return 267;
}
-float AIScriptMaggie::sub_44B200(int actorId, float x, float y, float z) {
+float AIScriptMaggie::distanceToActor(int actorId, float x, float y, float z) {
float actorX, actorY, actorZ;
Actor_Query_XYZ(actorId, &actorX, &actorY, &actorZ);
return sqrt(static_cast<float>((z - actorZ) * (z - actorZ) + (y - actorY) * (y - actorY) + (x - actorX) * (x - actorX)));
diff --git a/engines/bladerunner/script/ai/sadik.cpp b/engines/bladerunner/script/ai/sadik.cpp
index df9ad65..0d6e40b 100644
--- a/engines/bladerunner/script/ai/sadik.cpp
+++ b/engines/bladerunner/script/ai/sadik.cpp
@@ -358,7 +358,7 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Put_In_Set(kActorSadik, kSetKP05_KP06);
Actor_Set_At_XYZ(kActorSadik, -1134.0f, 0.0f, 73.45f, 398);
Actor_Set_Goal_Number(kActorClovis, 513);
- Actor_Set_Goal_Number(kActorMaggie, 411);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05Wait);
return true;
case 412:
diff --git a/engines/bladerunner/script/ai_script.h b/engines/bladerunner/script/ai_script.h
index 73cc4c5..5c5a774 100644
--- a/engines/bladerunner/script/ai_script.h
+++ b/engines/bladerunner/script/ai_script.h
@@ -480,8 +480,8 @@ DECLARE_SCRIPT(Maggie)
int var_45F404;
int var_45F408;
- int sub_44B260();
- float sub_44B200(int actorId, float x, float y, float z);
+ int randomWaypointMA02();
+ float distanceToActor(int actorId, float x, float y, float z);
END_SCRIPT
DECLARE_SCRIPT(GenericWalkerA)
diff --git a/engines/bladerunner/script/scene/kp05.cpp b/engines/bladerunner/script/scene/kp05.cpp
index 2a30cd4..69de280 100644
--- a/engines/bladerunner/script/scene/kp05.cpp
+++ b/engines/bladerunner/script/scene/kp05.cpp
@@ -142,8 +142,8 @@ void SceneScriptKP05::PlayerWalkedIn() {
Game_Flag_Query(kFlagKP03toKP05); // bug in game?
}
- if (Actor_Query_Goal_Number(kActorMaggie) == 411) {
- Actor_Set_Goal_Number(kActorMaggie, 412);
+ if (Actor_Query_Goal_Number(kActorMaggie) == kGoalMaggieKP05Wait) {
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieKP05McCoyEntred);
}
if (Actor_Query_Goal_Number(kActorSteele) == 450) {
diff --git a/engines/bladerunner/script/scene/ma02.cpp b/engines/bladerunner/script/scene/ma02.cpp
index b749b18..5b3d9b0 100644
--- a/engines/bladerunner/script/scene/ma02.cpp
+++ b/engines/bladerunner/script/scene/ma02.cpp
@@ -46,7 +46,7 @@ void SceneScriptMA02::InitializeScene() {
&& Global_Variable_Query(kVariableChapter) == 5
&& Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
) {
- Actor_Set_Goal_Number(kActorMaggie, 599);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieDead);
Actor_Change_Animation_Mode(kActorMaggie, 88);
Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04);
Actor_Set_At_XYZ(kActorMaggie, -35.51f, -144.12f, 428.0f, 0);
@@ -93,12 +93,16 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) {
ESPER_Flag_To_Activate();
return true;
}
+
if (Object_Query_Click("BAR-MAIN", objectName)) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -29.0f, -140.4f, 298.0f, 36, true, false, 0)) {
Actor_Face_Object(kActorMcCoy, "BAR-MAIN", true);
if (Global_Variable_Query(kVariableChapter) < 4) {
- Actor_Set_Goal_Number(kActorMaggie, 3);
- } else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02GetFed);
+ } else if ( Global_Variable_Query(kVariableChapter) == 5
+ && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants)
+ && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)
+ ) {
Overlay_Remove("MA02OVER");
Item_Pickup_Spin_Effect(985, 480, 240);
Actor_Voice_Over(1150, kActorVoiceOver);
@@ -119,7 +123,7 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) {
bool SceneScriptMA02::ClickedOnActor(int actorId) {
if (actorId == kActorMaggie
- && Actor_Query_Goal_Number(kActorMaggie) == 599
+ && Actor_Query_Goal_Number(kActorMaggie) == kGoalMaggieDead
) {
if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorMaggie, 30, true, false)) {
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
@@ -202,7 +206,8 @@ void SceneScriptMA02::PlayerWalkedIn() {
&& !Game_Flag_Query(kFlagMA04ToMA02)
&& Actor_Query_Goal_Number(kActorMaggie) != 2
) {
- Actor_Set_Goal_Number(kActorMaggie, 1);
+ Actor_Set_Goal_Number(kActorMaggie, kGoalMaggieMA02WalkToEntrance);
+
if (!Game_Flag_Query(kFlagMA02MaggieIntroduced)) {
Game_Flag_Set(kFlagMA02MaggieIntroduced);
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
Commit: 49c5069324e1c45a399f4dcf2a32ce53be840377
https://github.com/scummvm/scummvm/commit/49c5069324e1c45a399f4dcf2a32ce53be840377
Author: Peter Kohaut (peter.kohaut at gmail.com)
Date: 2019-02-05T22:02:02+01:00
Commit Message:
BLADERUNNER: Added debugger command "friend"
It can be used for querying and changing friendliness between actors.
Changed paths:
engines/bladerunner/debugger.cpp
engines/bladerunner/debugger.h
diff --git a/engines/bladerunner/debugger.cpp b/engines/bladerunner/debugger.cpp
index db31c76..49abdfc 100644
--- a/engines/bladerunner/debugger.cpp
+++ b/engines/bladerunner/debugger.cpp
@@ -84,6 +84,7 @@ Debugger::Debugger(BladeRunnerEngine *vm) : GUI::Debugger() {
registerCmd("var", WRAP_METHOD(Debugger, cmdVariable));
registerCmd("clue", WRAP_METHOD(Debugger, cmdClue));
registerCmd("timer", WRAP_METHOD(Debugger, cmdTimer));
+ registerCmd("friend", WRAP_METHOD(Debugger, cmdFriend));
registerCmd("load", WRAP_METHOD(Debugger, cmdLoad));
registerCmd("save", WRAP_METHOD(Debugger, cmdSave));
}
@@ -623,6 +624,47 @@ bool Debugger::cmdTimer(int argc, const char **argv) {
return true;
}
+bool Debugger::cmdFriend(int argc, const char **argv) {
+ if (argc != 3 && argc != 4) {
+ debugPrintf("Get or changes friendliness for an actor towards another actor.\n");
+ debugPrintf("Usage: %s <actorId> <otherActorId> [<value>]\n", argv[0]);
+ return true;
+ }
+
+ int actorId = atoi(argv[1]);
+
+ Actor *actor = nullptr;
+ if (actorId >= 0 && actorId < (int)_vm->_gameInfo->getActorCount()) {
+ actor = _vm->_actors[actorId];
+ }
+
+ if (actor == nullptr) {
+ debugPrintf("Unknown actor %i\n", actorId);
+ return true;
+ }
+
+ int otherActorId = atoi(argv[2]);
+
+ if (otherActorId < 0 && otherActorId >= (int)_vm->_gameInfo->getActorCount()) {
+ debugPrintf("Unknown actor %i\n", otherActorId);
+ }
+
+ if (argc == 4) {
+ int value = atoi(argv[3]);
+
+ if (value < 0 || value > 100) {
+ debugPrintf("Value must be [0..100]");
+ return true;
+ }
+
+ actor->setFriendlinessToOther(otherActorId, value);
+ }
+
+ debugPrintf("actorFriendliness(%i, %i) = %i\n", actorId, otherActorId, actor->getFriendlinessToOther(otherActorId));
+
+ return true;
+}
+
bool Debugger::cmdLoad(int argc, const char **argv) {
if (argc != 2) {
debugPrintf("Loads a save game from original format.\n");
diff --git a/engines/bladerunner/debugger.h b/engines/bladerunner/debugger.h
index 9b3d169..6fe535a 100644
--- a/engines/bladerunner/debugger.h
+++ b/engines/bladerunner/debugger.h
@@ -70,6 +70,7 @@ public:
bool cmdVariable(int argc, const char **argv);
bool cmdClue(int argc, const char **argv);
bool cmdTimer(int argc, const char **argv);
+ bool cmdFriend(int argc, const char **argv);
bool cmdLoad(int argc, const char **argv);
bool cmdSave(int argc, const char **argv);
More information about the Scummvm-git-logs
mailing list