aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/bladerunner/actor.cpp4
-rw-r--r--engines/bladerunner/actor.h1
-rw-r--r--engines/bladerunner/actor_combat.cpp5
-rw-r--r--engines/bladerunner/debugger.cpp4
-rw-r--r--engines/bladerunner/script/ai/bullet_bob.cpp2
-rw-r--r--engines/bladerunner/script/ai/chew.cpp2
-rw-r--r--engines/bladerunner/script/ai/crazylegs.cpp2
-rw-r--r--engines/bladerunner/script/ai/free_slot_a.cpp91
-rw-r--r--engines/bladerunner/script/ai/free_slot_b.cpp91
-rw-r--r--engines/bladerunner/script/ai/general_doll.cpp2
-rw-r--r--engines/bladerunner/script/ai/guzza.cpp2
-rw-r--r--engines/bladerunner/script/ai/izo.cpp28
-rw-r--r--engines/bladerunner/script/ai/lucy.cpp2
-rw-r--r--engines/bladerunner/script/ai/luther.cpp2
-rw-r--r--engines/bladerunner/script/ai/mccoy.cpp4
-rw-r--r--engines/bladerunner/script/ai/mutant1.cpp2
-rw-r--r--engines/bladerunner/script/ai/mutant2.cpp2
-rw-r--r--engines/bladerunner/script/ai/mutant3.cpp2
-rw-r--r--engines/bladerunner/script/ai/sadik.cpp2
-rw-r--r--engines/bladerunner/script/ai/taffy_patron.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug13.cpp17
-rw-r--r--engines/bladerunner/set.cpp53
-rw-r--r--engines/bladerunner/set.h1
23 files changed, 215 insertions, 108 deletions
diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp
index fa8a5d9643..f0153f8618 100644
--- a/engines/bladerunner/actor.cpp
+++ b/engines/bladerunner/actor.cpp
@@ -1122,6 +1122,10 @@ int Actor::getAnimationMode() const {
return _animationMode;
}
+int Actor::getAnimationId() const {
+ return _animationId;
+}
+
void Actor::setGoal(int goalNumber) {
int oldGoalNumber = _goalNumber;
_goalNumber = goalNumber;
diff --git a/engines/bladerunner/actor.h b/engines/bladerunner/actor.h
index 1177e655a2..186468be2a 100644
--- a/engines/bladerunner/actor.h
+++ b/engines/bladerunner/actor.h
@@ -134,6 +134,7 @@ public:
Vector3 getXYZ() const;
int getFacing() const;
int getAnimationMode() const;
+ int getAnimationId() const;
Vector3 getPosition() const { return _position; }
diff --git a/engines/bladerunner/actor_combat.cpp b/engines/bladerunner/actor_combat.cpp
index 47c575f7c1..400e3e704e 100644
--- a/engines/bladerunner/actor_combat.cpp
+++ b/engines/bladerunner/actor_combat.cpp
@@ -273,6 +273,11 @@ void ActorCombat::hitAttempt() {
if (enemyHp <= 0) {
if (!enemy->isRetired()) {
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ // make sure the dead enemy won't pick a pending movement track and re-spawn
+ enemy->_movementTrack->flush();
+#endif
if (enemy->inCombat()) {
enemy->changeAnimationMode(kAnimationModeCombatDie, false);
} else {
diff --git a/engines/bladerunner/debugger.cpp b/engines/bladerunner/debugger.cpp
index 153d8fa306..3558659dce 100644
--- a/engines/bladerunner/debugger.cpp
+++ b/engines/bladerunner/debugger.cpp
@@ -1560,7 +1560,7 @@ bool Debugger::cmdList(int argc, const char **argv) {
SceneObjects::SceneObject *sceneObject = &_vm->_sceneObjects->_sceneObjects[_vm->_sceneObjects->_sceneObjectsSortedByDistance[i]];
if (sceneObject->type == kSceneObjectTypeActor) {
- debugPrintf("%d: %s (Clk: %s, Trg: %s, Prs: %s, Obs: %s, Mvg: %s), Goal: %d, Pos(%02.2f,%02.2f,%02.2f)\n",
+ debugPrintf("%d: %s (Clk: %s, Trg: %s, Prs: %s, Obs: %s, Mvg: %s), Goal: %d, Animation: %d:%d\n Pos(%02.2f,%02.2f,%02.2f)\n",
sceneObject->id - kSceneObjectOffsetActors,
_vm->_textActorNames->getText(sceneObject->id - kSceneObjectOffsetActors),
sceneObject->isClickable? "T" : "F",
@@ -1569,6 +1569,8 @@ bool Debugger::cmdList(int argc, const char **argv) {
sceneObject->isObstacle? "T" : "F",
sceneObject->isMoving? "T" : "F",
_vm->_actors[sceneObject->id - kSceneObjectOffsetActors]->getGoal(),
+ _vm->_actors[sceneObject->id - kSceneObjectOffsetActors]->getAnimationMode(),
+ _vm->_actors[sceneObject->id - kSceneObjectOffsetActors]->getAnimationId(),
_vm->_actors[sceneObject->id - kSceneObjectOffsetActors]->getPosition().x,
_vm->_actors[sceneObject->id - kSceneObjectOffsetActors]->getPosition().y,
_vm->_actors[sceneObject->id - kSceneObjectOffsetActors]->getPosition().z);
diff --git a/engines/bladerunner/script/ai/bullet_bob.cpp b/engines/bladerunner/script/ai/bullet_bob.cpp
index f49462492a..ee5410a263 100644
--- a/engines/bladerunner/script/ai/bullet_bob.cpp
+++ b/engines/bladerunner/script/ai/bullet_bob.cpp
@@ -531,7 +531,7 @@ bool AIScriptBulletBob::ChangeAnimationMode(int mode) {
}
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 4;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/chew.cpp b/engines/bladerunner/script/ai/chew.cpp
index 65403920b7..fb60c3607c 100644
--- a/engines/bladerunner/script/ai/chew.cpp
+++ b/engines/bladerunner/script/ai/chew.cpp
@@ -457,7 +457,7 @@ bool AIScriptChew::ChangeAnimationMode(int mode) {
}
break;
- case 48:
+ case kAnimationModeDie:
_animationFrame = 0;
_animationState = 11;
break;
diff --git a/engines/bladerunner/script/ai/crazylegs.cpp b/engines/bladerunner/script/ai/crazylegs.cpp
index c2031fc0ab..b4ed739844 100644
--- a/engines/bladerunner/script/ai/crazylegs.cpp
+++ b/engines/bladerunner/script/ai/crazylegs.cpp
@@ -36,7 +36,7 @@ void AIScriptCrazylegs::Initialize() {
_flag = false;
- World_Waypoint_Set(360, 41, -103.0f, 40.63f, -53.0f);
+ World_Waypoint_Set(360, kSetHF05, -103.0f, 40.63f, -53.0f);
Actor_Put_In_Set(kActorCrazylegs, kSetHF05);
Actor_Set_At_XYZ(kActorCrazylegs, -33.0f, 40.63f, 16.0f, 845);
}
diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp
index 5491f2eef7..9281e3a32e 100644
--- a/engines/bladerunner/script/ai/free_slot_a.cpp
+++ b/engines/bladerunner/script/ai/free_slot_a.cpp
@@ -44,8 +44,8 @@ void AIScriptFreeSlotA::Initialize() {
_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);
+ World_Waypoint_Set(525, kSetKP02, -780.0f, -615.49f, 2611.0f);
+ World_Waypoint_Set(526, kSetKP02, -780.0f, -615.49f, 2759.0f);
}
bool AIScriptFreeSlotA::Update() {
@@ -97,7 +97,7 @@ bool AIScriptFreeSlotA::Update() {
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);
+ Actor_Set_Goal_Number(kActorFreeSlotA, 0);
}
break;
@@ -118,7 +118,7 @@ bool AIScriptFreeSlotA::Update() {
} else if (Actor_Query_Goal_Number(kActorFreeSlotA) == 405
&& Actor_Query_Which_Set_In(kActorMcCoy) == kSceneKP05
) {
- Actor_Set_Targetable(kActorFreeSlotA, 1);
+ Actor_Set_Targetable(kActorFreeSlotA, true);
Actor_Set_Goal_Number(kActorFreeSlotA, 406);
}
return true;
@@ -213,7 +213,6 @@ bool AIScriptFreeSlotA::ShotAtAndHit() {
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAUG15Die);
return true;
}
-
return false;
}
@@ -236,14 +235,14 @@ bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
case kGoalFreeSlotAUG15WalkOut:
Actor_Force_Stop_Walking(kActorMcCoy);
AI_Movement_Track_Flush(kActorFreeSlotA);
- World_Waypoint_Set(444, 87, -48.75f, 44.66f, 87.57f);
+ World_Waypoint_Set(444, kSetUG15, -48.75f, 44.66f, 87.57f);
AI_Movement_Track_Append(kActorFreeSlotA, 444, 1);
AI_Movement_Track_Repeat(kActorFreeSlotA);
break;
case kGoalFreeSlotAUG15RunToOtherSide:
AI_Movement_Track_Flush(kActorFreeSlotA);
- World_Waypoint_Set(444, 87, -237.0f, 48.07f, 208.0f);
+ World_Waypoint_Set(444, kSetUG15, -237.0f, 48.07f, 208.0f);
AI_Movement_Track_Append(kActorFreeSlotA, 444, 1);
AI_Movement_Track_Repeat(kActorFreeSlotA);
Actor_Set_Targetable(kActorFreeSlotA, true);
@@ -251,7 +250,7 @@ bool AIScriptFreeSlotA::GoalChanged(int currentGoalNumber, int newGoalNumber) {
case kGoalFreeSlotAUG15RunBack:
AI_Movement_Track_Flush(kActorFreeSlotA);
- World_Waypoint_Set(444, 87, 3.52f, 52.28f, 90.68f);
+ World_Waypoint_Set(444, kSetUG15, 3.52f, 52.28f, 90.68f);
AI_Movement_Track_Append(kActorFreeSlotA, 444, 0);
AI_Movement_Track_Repeat(kActorFreeSlotA);
break;
@@ -407,9 +406,10 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
break;
case 5:
+ // a bug? This is an animation for Maggie (exploding)
*animation = 874;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) { // bug? shuld not be '-1'
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) {
Actor_Change_Animation_Mode(kActorFreeSlotA, kAnimationModeIdle);
}
break;
@@ -430,10 +430,11 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
case 7:
*animation = 859;
_animationFrame++;
- if (_animationFrame == 0) {
+ if (_animationFrame == 1) {
Ambient_Sounds_Play_Sound(kSfxRATTY5, 99, 0, 0, 25);
}
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(859) - 1) { // bug? shuld not be '-1'
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(859) - 1) {
+ // -1 in the clause is ok here since the next _animationState is 8 which will maintain the last frame (Slice_Animation_Query_Number_Of_Frames(859) - 1)
_animationFrame = Slice_Animation_Query_Number_Of_Frames(859) - 1;
_animationState = 8;
Actor_Set_Goal_Number(kActorFreeSlotA, kGoalFreeSlotAGone);
@@ -444,7 +445,6 @@ bool AIScriptFreeSlotA::UpdateAnimation(int *animation, int *frame) {
*animation = 859;
_animationFrame = Slice_Animation_Query_Number_Of_Frames(859) - 1;
break;
-
default:
break;
}
@@ -502,7 +502,7 @@ bool AIScriptFreeSlotA::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 7;
_animationFrame = 0;
break;
@@ -558,9 +558,9 @@ void AIScriptFreeSlotA::goToRandomUGxx() {
break;
case 2:
- World_Waypoint_Set(463, 74, 144.98f, -50.13f, -175.75f);
- World_Waypoint_Set(464, 74, 105.6f, -50.13f, -578.46f);
- World_Waypoint_Set(465, 74, 62.0f, -50.13f, -574.0f);
+ World_Waypoint_Set(463, kSetUG01, 144.98f, -50.13f, -175.75f);
+ World_Waypoint_Set(464, kSetUG01, 105.6f, -50.13f, -578.46f);
+ World_Waypoint_Set(465, kSetUG01, 62.0f, -50.13f, -574.0f);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 1);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 1);
AI_Movement_Track_Append(kActorFreeSlotA, 465, 5);
@@ -576,9 +576,9 @@ void AIScriptFreeSlotA::goToRandomUGxx() {
break;
case 4:
- World_Waypoint_Set(463, 77, -22.7f, 6.39f, 33.12f);
- World_Waypoint_Set(464, 77, -6.70f, -1.74f, -362.88f);
- World_Waypoint_Set(465, 77, 164.0f, 11.87f, -1013.0f);
+ World_Waypoint_Set(463, kSetUG04, -22.7f, 6.39f, 33.12f);
+ World_Waypoint_Set(464, kSetUG04, -6.70f, -1.74f, -362.88f);
+ World_Waypoint_Set(465, kSetUG04, 164.0f, 11.87f, -1013.0f);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 2);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 0);
AI_Movement_Track_Append(kActorFreeSlotA, 465, 0);
@@ -600,64 +600,75 @@ void AIScriptFreeSlotA::goToRandomUGxx() {
if (Actor_Query_In_Set(kActorClovis, kSetUG07)) {
AI_Movement_Track_Append(kActorFreeSlotA, 39, 10);
} else {
- World_Waypoint_Set(463, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(464, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(465, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(463, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(464, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(465, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 5);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 1);
}
break;
case 8:
- World_Waypoint_Set(463, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(464, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(465, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(463, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(464, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(465, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 5);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 1);
break;
case 9:
- World_Waypoint_Set(463, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(464, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(465, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(463, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(464, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(465, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 5);
AI_Movement_Track_Append(kActorFreeSlotA, 465, 1);
break;
case 10:
- World_Waypoint_Set(463, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(464, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(465, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(463, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(464, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(465, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotA, 465, 5);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 1);
break;
case 11:
- World_Waypoint_Set(463, 82, 91.0f, 156.94f, -498.0f);
- World_Waypoint_Set(464, 82, -149.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(463, kSetUG09, 91.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(464, kSetUG09, -149.0f, 156.94f, -498.0f);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 5);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 1);
break;
case 12:
- World_Waypoint_Set(463, 82, 91.0f, 156.94f, -498.0f);
- World_Waypoint_Set(464, 82, -149.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(463, kSetUG09, 91.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(464, kSetUG09, -149.0f, 156.94f, -498.0f);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 5);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 1);
break;
case 13:
- World_Waypoint_Set(463, 82, -152.51f, 277.31f, 311.98f);
- World_Waypoint_Set(464, 82, -124.51f, 275.08f, 319.98f);
+#if BLADERUNNER_ORIGINAL_BUGS
+ // this makes the rat appear on the pipe (top left) but this is buggy
+ // since it appears floating there
+ World_Waypoint_Set(463, kSetUG09, -152.51f, 277.31f, 311.98f);
+ World_Waypoint_Set(464, kSetUG09, -124.51f, 275.08f, 319.98f);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 1);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 8);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 1);
+#else
+ // replacing with something more normal
+ World_Waypoint_Set(463, kSetUG09, 91.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(464, kSetUG09, -29.60f, 156.94f, -498.0f);
+ AI_Movement_Track_Append(kActorFreeSlotA, 463, 4);
+ AI_Movement_Track_Append(kActorFreeSlotA, 464, 1);
+ AI_Movement_Track_Append(kActorFreeSlotA, 463, 1);
+#endif
break;
case 14:
- World_Waypoint_Set(463, 84, -360.67f, 21.39f, 517.55f);
- World_Waypoint_Set(464, 84, -250.67f, 21.39f, 477.55f);
- World_Waypoint_Set(465, 84, -248.67f, 21.39f, -1454.45f);
+ World_Waypoint_Set(463, kSetUG12, -360.67f, 21.39f, 517.55f);
+ World_Waypoint_Set(464, kSetUG12, -250.67f, 21.39f, 477.55f);
+ World_Waypoint_Set(465, kSetUG12, -248.67f, 21.39f, -1454.45f);
AI_Movement_Track_Append(kActorFreeSlotA, 463, 1);
AI_Movement_Track_Append(kActorFreeSlotA, 464, 8);
AI_Movement_Track_Append(kActorFreeSlotA, 465, 1);
diff --git a/engines/bladerunner/script/ai/free_slot_b.cpp b/engines/bladerunner/script/ai/free_slot_b.cpp
index e7bdfc7f11..cbaecb0ac3 100644
--- a/engines/bladerunner/script/ai/free_slot_b.cpp
+++ b/engines/bladerunner/script/ai/free_slot_b.cpp
@@ -38,9 +38,9 @@ void AIScriptFreeSlotB::Initialize() {
_var1 = 0;
_var2 = 1;
- World_Waypoint_Set(527, 45, -468.46f, -616.58f, 2840.60f);
- World_Waypoint_Set(528, 45, -1024.46f, -615.49f, 2928.60f);
- World_Waypoint_Set(529, 45, -1024.46f, -615.49f, 2788.60f);
+ World_Waypoint_Set(527, kSetKP02, -468.46f, -616.58f, 2840.60f);
+ World_Waypoint_Set(528, kSetKP02, -1024.46f, -615.49f, 2928.60f);
+ World_Waypoint_Set(529, kSetKP02, -1024.46f, -615.49f, 2788.60f);
}
bool AIScriptFreeSlotB::Update() {
@@ -52,7 +52,7 @@ bool AIScriptFreeSlotB::Update() {
switch (Actor_Query_Goal_Number(kActorFreeSlotB)) {
case 300:
Actor_Set_Goal_Number(kActorFreeSlotB, 301);
- Actor_Set_Targetable(kActorFreeSlotB, 1);
+ Actor_Set_Targetable(kActorFreeSlotB, true);
break;
case 301:
@@ -97,7 +97,7 @@ bool AIScriptFreeSlotB::Update() {
return false;
}
Actor_Set_Goal_Number(kActorFreeSlotB, 406);
- Actor_Set_Targetable(kActorFreeSlotB, 1);
+ Actor_Set_Targetable(kActorFreeSlotB, true);
return true;
}
}
@@ -194,7 +194,7 @@ bool AIScriptFreeSlotB::GoalChanged(int currentGoalNumber, int newGoalNumber) {
break;
case 302:
- Actor_Set_Targetable(kActorFreeSlotB, 1);
+ Actor_Set_Targetable(kActorFreeSlotB, true);
Non_Player_Actor_Combat_Mode_On(kActorFreeSlotB, 0, 0, 0, 8, 4, 7, 8, 25, 0, 75, 5, 300, 0);
break;
@@ -292,6 +292,7 @@ bool AIScriptFreeSlotB::UpdateAnimation(int *animation, int *frame) {
break;
case 5:
+ // a bug? This is an animation for Maggie (exploding)
*animation = 874;
_animationFrame++;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(874) - 1) {
@@ -319,10 +320,17 @@ bool AIScriptFreeSlotB::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame == 1) {
Ambient_Sounds_Play_Sound(kSfxRATTY5, 99, 0, 0, 25);
}
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(859)) {
- _animationFrame = Slice_Animation_Query_Number_Of_Frames(859);
+#if BLADERUNNER_ORIGINAL_BUGS
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(859) - 1) {
+ _animationFrame = Slice_Animation_Query_Number_Of_Frames(859) - 1;
}
_animationState = 8;
+#else
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(859) - 1) {
+ _animationFrame = Slice_Animation_Query_Number_Of_Frames(859) - 1;
+ _animationState = 8;
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
break;
case 8:
@@ -387,7 +395,7 @@ bool AIScriptFreeSlotB::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 7;
_animationFrame = 0;
break;
@@ -427,9 +435,9 @@ void AIScriptFreeSlotB::processGoal301() {
break;
case 2:
- World_Waypoint_Set(466, 74, 144.98f, -50.13f, -175.75f);
- World_Waypoint_Set(547, 74, 105.6f, -50.13f, -578.46f);
- World_Waypoint_Set(548, 74, 62.0f, -50.13f, -574.0f);
+ World_Waypoint_Set(466, kSetUG01, 144.98f, -50.13f, -175.75f);
+ World_Waypoint_Set(547, kSetUG01, 105.6f, -50.13f, -578.46f);
+ World_Waypoint_Set(548, kSetUG01, 62.0f, -50.13f, -574.0f);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 1);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 1);
AI_Movement_Track_Append(kActorFreeSlotB, 548, 5);
@@ -445,9 +453,9 @@ void AIScriptFreeSlotB::processGoal301() {
break;
case 4:
- World_Waypoint_Set(466, 77, -22.70f, 6.39f, 33.12f);
- World_Waypoint_Set(547, 77, -6.70f, -1.74f, -362.88f);
- World_Waypoint_Set(548, 77, 164.0f, 11.87f, -1013.0f);
+ World_Waypoint_Set(466, kSetUG04, -22.70f, 6.39f, 33.12f);
+ World_Waypoint_Set(547, kSetUG04, -6.70f, -1.74f, -362.88f);
+ World_Waypoint_Set(548, kSetUG04, 164.0f, 11.87f, -1013.0f);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 2);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 0);
AI_Movement_Track_Append(kActorFreeSlotB, 548, 0);
@@ -469,64 +477,75 @@ void AIScriptFreeSlotB::processGoal301() {
if (Actor_Query_In_Set(kActorClovis, kSetUG07)) {
AI_Movement_Track_Append(kActorFreeSlotB, 39, 10);
} else {
- World_Waypoint_Set(466, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(547, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(548, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(466, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(547, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(548, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 5);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 1);
}
break;
case 8:
- World_Waypoint_Set(466, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(547, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(548, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(466, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(547, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(548, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 5);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 1);
break;
case 9:
- World_Waypoint_Set(466, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(547, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(548, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(466, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(547, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(548, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 5);
AI_Movement_Track_Append(kActorFreeSlotB, 548, 1);
break;
case 10:
- World_Waypoint_Set(466, 80, -88.78f, -12.21f, -184.08f);
- World_Waypoint_Set(547, 80, 250.0f, -12.21f, -342.0f);
- World_Waypoint_Set(548, 80, -164.78f, -12.21f, -832.08f);
+ World_Waypoint_Set(466, kSetUG07, -88.78f, -12.21f, -184.08f);
+ World_Waypoint_Set(547, kSetUG07, 250.0f, -12.21f, -342.0f);
+ World_Waypoint_Set(548, kSetUG07, -164.78f, -12.21f, -832.08f);
AI_Movement_Track_Append(kActorFreeSlotB, 548, 5);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 1);
break;
case 11:
- World_Waypoint_Set(466, 82, 91.0f, 156.94f, -498.0f);
- World_Waypoint_Set(547, 82, -149.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(466, kSetUG09, 91.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(547, kSetUG09, -149.0f, 156.94f, -498.0f);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 5);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 1);
break;
case 12:
- World_Waypoint_Set(466, 82, 91.0f, 156.94f, -498.0f);
- World_Waypoint_Set(547, 82, -149.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(466, kSetUG09, 91.0f, 156.94f, -498.0f);
+ World_Waypoint_Set(547, kSetUG09, -149.0f, 156.94f, -498.0f);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 5);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 1);
break;
case 13:
- World_Waypoint_Set(466, 82, -152.51f, 277.31f, 311.98f);
- World_Waypoint_Set(547, 82, -124.51f, 275.08f, 319.98f);
+#if BLADERUNNER_ORIGINAL_BUGS
+ // this makes the rat appear on the pipe (top left)
+ // but this is buggy since it will appear floating there
+ World_Waypoint_Set(466, kSetUG09, -152.51f, 277.31f, 311.98f);
+ World_Waypoint_Set(547, kSetUG09, -124.51f, 275.08f, 319.98f);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 1);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 8);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 1);
+#else
+ // replacing with something more normal
+ World_Waypoint_Set(466, kSetUG09, -152.51f, 156.94f, -498.0f);
+ World_Waypoint_Set(547, kSetUG09, -32.60f, 156.94f, -498.0f);
+ AI_Movement_Track_Append(kActorFreeSlotB, 466, 4);
+ AI_Movement_Track_Append(kActorFreeSlotB, 547, 1);
+ AI_Movement_Track_Append(kActorFreeSlotB, 466, 1);
+#endif // BLADERUNNER_ORIGINAL_BUGS
break;
case 14:
- World_Waypoint_Set(466, 84, -360.67f, 21.39f, 517.55f);
- World_Waypoint_Set(547, 84, -250.67f, 21.39f, 477.55f);
- World_Waypoint_Set(548, 84, -248.67f, 21.39f, -1454.45f);
+ World_Waypoint_Set(466, kSetUG12, -360.67f, 21.39f, 517.55f);
+ World_Waypoint_Set(547, kSetUG12, -250.67f, 21.39f, 477.55f);
+ World_Waypoint_Set(548, kSetUG12, -248.67f, 21.39f, -1454.45f);
AI_Movement_Track_Append(kActorFreeSlotB, 466, 1);
AI_Movement_Track_Append(kActorFreeSlotB, 547, 8);
AI_Movement_Track_Append(kActorFreeSlotB, 548, 1);
diff --git a/engines/bladerunner/script/ai/general_doll.cpp b/engines/bladerunner/script/ai/general_doll.cpp
index eb82c54ba2..f5739fee89 100644
--- a/engines/bladerunner/script/ai/general_doll.cpp
+++ b/engines/bladerunner/script/ai/general_doll.cpp
@@ -366,7 +366,7 @@ bool AIScriptGeneralDoll::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 4;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/guzza.cpp b/engines/bladerunner/script/ai/guzza.cpp
index d76ee3ee73..5c36beea1b 100644
--- a/engines/bladerunner/script/ai/guzza.cpp
+++ b/engines/bladerunner/script/ai/guzza.cpp
@@ -953,7 +953,7 @@ bool AIScriptGuzza::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 28;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/izo.cpp b/engines/bladerunner/script/ai/izo.cpp
index 13615d62e5..2fed274f50 100644
--- a/engines/bladerunner/script/ai/izo.cpp
+++ b/engines/bladerunner/script/ai/izo.cpp
@@ -47,7 +47,7 @@ void AIScriptIzo::Initialize() {
Actor_Set_Goal_Number(kActorIzo, 0);
Actor_Put_In_Set(kActorIzo, kSetHC01_HC02_HC03_HC04);
Actor_Set_At_XYZ(kActorIzo, 591.0f, 0.14f, 25.0f, 540);
- World_Waypoint_Set(349, 70, -14.7f, -4.01f, 224.5f);
+ World_Waypoint_Set(349, kSetRC03, -14.7f, -4.01f, 224.5f);
}
bool AIScriptIzo::Update() {
@@ -984,7 +984,7 @@ bool AIScriptIzo::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 19;
_animationFrame = 0;
break;
@@ -1080,10 +1080,10 @@ void AIScriptIzo::dialogueWithIzo() {
void AIScriptIzo::modifyWaypoints() {
switch (Random_Query(1, 10) - 1) {
case 0:
- World_Waypoint_Set(484, 54, -212.58f, 23.38f, -1859.45f);
- World_Waypoint_Set(485, 54, 355.49f, 31.66f, -859.81f);
- World_Waypoint_Set(486, 11, -323.89f, -24.0f, 35.58f);
- World_Waypoint_Set(487, 11, -211.89f, -24.0f, 35.58f);
+ World_Waypoint_Set(484, kSetNR01, -212.58f, 23.38f, -1859.45f);
+ World_Waypoint_Set(485, kSetNR01, 355.49f, 31.66f, -859.81f);
+ World_Waypoint_Set(486, kSetNR02, -323.89f, -24.0f, 35.58f);
+ World_Waypoint_Set(487, kSetNR02, -211.89f, -24.0f, 35.58f);
AI_Movement_Track_Append(kActorIzo, 484, 1);
AI_Movement_Track_Append(kActorIzo, 485, 10);
AI_Movement_Track_Append(kActorIzo, 486, 1);
@@ -1094,25 +1094,25 @@ void AIScriptIzo::modifyWaypoints() {
break;
case 1:
- World_Waypoint_Set(484, 13, -1335.0f, 0.0f, -542.0f);
- World_Waypoint_Set(485, 13, -1027.0f, 0.0f, -542.0f);
+ World_Waypoint_Set(484, kSetNR05_NR08, -1335.0f, 0.0f, -542.0f);
+ World_Waypoint_Set(485, kSetNR05_NR08, -1027.0f, 0.0f, -542.0f);
AI_Movement_Track_Append(kActorIzo, 484, 1);
AI_Movement_Track_Append(kActorIzo, 485, 20);
AI_Movement_Track_Append(kActorIzo, 484, 1);
break;
case 2:
- World_Waypoint_Set(484, 37, -352.16f, 8.0f, -379.24f);
- World_Waypoint_Set(485, 37, 108.2f, 8.0f, -934.80f);
+ World_Waypoint_Set(484, kSetHF01, -352.16f, 8.0f, -379.24f);
+ World_Waypoint_Set(485, kSetHF01, 108.2f, 8.0f, -934.80f);
AI_Movement_Track_Append(kActorIzo, 484, 1);
AI_Movement_Track_Append(kActorIzo, 485, 1);
break;
case 3:
- World_Waypoint_Set(484, 39, 589.59f, 47.76f, -1153.76f);
- World_Waypoint_Set(485, 39, 481.59f, 47.76f, -429.76f);
- World_Waypoint_Set(486, 38, 524.0f, 47.76f, -562.0f);
- World_Waypoint_Set(487, 38, -10.0f, 47.76f, -327.0f);
+ World_Waypoint_Set(484, kSetHF03, 589.59f, 47.76f, -1153.76f);
+ World_Waypoint_Set(485, kSetHF03, 481.59f, 47.76f, -429.76f);
+ World_Waypoint_Set(486, kSetHF02, 524.0f, 47.76f, -562.0f);
+ World_Waypoint_Set(487, kSetHF02, -10.0f, 47.76f, -327.0f);
AI_Movement_Track_Append(kActorIzo, 484, 1);
AI_Movement_Track_Append(kActorIzo, 485, 1);
AI_Movement_Track_Append(kActorIzo, 486, 1);
diff --git a/engines/bladerunner/script/ai/lucy.cpp b/engines/bladerunner/script/ai/lucy.cpp
index e4b92ab4a9..c6b26a533e 100644
--- a/engines/bladerunner/script/ai/lucy.cpp
+++ b/engines/bladerunner/script/ai/lucy.cpp
@@ -817,7 +817,7 @@ bool AIScriptLucy::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 7;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/luther.cpp b/engines/bladerunner/script/ai/luther.cpp
index 4ad0e5639d..2298f40b02 100644
--- a/engines/bladerunner/script/ai/luther.cpp
+++ b/engines/bladerunner/script/ai/luther.cpp
@@ -447,7 +447,7 @@ bool AIScriptLuther::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 12;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/mccoy.cpp b/engines/bladerunner/script/ai/mccoy.cpp
index cafca8a1a7..432c75f7d9 100644
--- a/engines/bladerunner/script/ai/mccoy.cpp
+++ b/engines/bladerunner/script/ai/mccoy.cpp
@@ -1092,7 +1092,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
}
break;
- case 48:
+ case kAnimationModeDie:
*animation = 33;
_animationFrame++;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
@@ -1102,7 +1102,7 @@ bool AIScriptMcCoy::UpdateAnimation(int *animation, int *frame) {
}
break;
- case 49:
+ case kAnimationModeCombatDie:
*animation = 34;
_animationFrame++;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation)) {
diff --git a/engines/bladerunner/script/ai/mutant1.cpp b/engines/bladerunner/script/ai/mutant1.cpp
index 51c9c705cd..fcc46cdbc2 100644
--- a/engines/bladerunner/script/ai/mutant1.cpp
+++ b/engines/bladerunner/script/ai/mutant1.cpp
@@ -580,7 +580,7 @@ bool AIScriptMutant1::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 8;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/mutant2.cpp b/engines/bladerunner/script/ai/mutant2.cpp
index e1e851a381..6f7f4924a4 100644
--- a/engines/bladerunner/script/ai/mutant2.cpp
+++ b/engines/bladerunner/script/ai/mutant2.cpp
@@ -525,7 +525,7 @@ bool AIScriptMutant2::ChangeAnimationMode(int mode) {
_var1 = 1;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 6;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/mutant3.cpp b/engines/bladerunner/script/ai/mutant3.cpp
index b612cba7bd..393cf01a2c 100644
--- a/engines/bladerunner/script/ai/mutant3.cpp
+++ b/engines/bladerunner/script/ai/mutant3.cpp
@@ -586,7 +586,7 @@ bool AIScriptMutant3::ChangeAnimationMode(int mode) {
}
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 6;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/ai/sadik.cpp b/engines/bladerunner/script/ai/sadik.cpp
index c4a2b99fa8..4dc36f85b9 100644
--- a/engines/bladerunner/script/ai/sadik.cpp
+++ b/engines/bladerunner/script/ai/sadik.cpp
@@ -330,7 +330,7 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) {
case kGoalSadikUG18Move:
Actor_Set_Targetable(kActorSadik, true);
- World_Waypoint_Set(436, 89, -356.11f, 0.0f, 652.42f);
+ World_Waypoint_Set(436, kSetUG18, -356.11f, 0.0f, 652.42f);
AI_Movement_Track_Flush(kActorSadik);
AI_Movement_Track_Append_Run(kActorSadik, 436, 0);
AI_Movement_Track_Repeat(kActorSadik);
diff --git a/engines/bladerunner/script/ai/taffy_patron.cpp b/engines/bladerunner/script/ai/taffy_patron.cpp
index 0bf6861d12..975aa1df91 100644
--- a/engines/bladerunner/script/ai/taffy_patron.cpp
+++ b/engines/bladerunner/script/ai/taffy_patron.cpp
@@ -154,7 +154,7 @@ bool AIScriptTaffyPatron::ChangeAnimationMode(int mode) {
_animationFrame = 0;
break;
- case 48:
+ case kAnimationModeDie:
_animationState = 2;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/scene/ug13.cpp b/engines/bladerunner/script/scene/ug13.cpp
index f2e43c88e3..ee1d364e4a 100644
--- a/engines/bladerunner/script/scene/ug13.cpp
+++ b/engines/bladerunner/script/scene/ug13.cpp
@@ -82,9 +82,18 @@ void SceneScriptUG13::SceneLoaded() {
Unobstacle_Object("BOX FOR ARCHWAY 02", true);
Unobstacle_Object("STAIR_RAIL", true);
Unobstacle_Object("DISC_LEFT", true);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ if (Game_Flag_Query(kFlagUG08ElevatorUp)) {
+ Obstacle_Object("ELEVBLOCK", true);
+ } else {
+ Unobstacle_Object("ELEVBLOCK", true);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
Clickable_Object("BASKET");
Clickable_Object("BOLLARD");
Unclickable_Object("BASKET");
+
if ( Global_Variable_Query(kVariableChapter) >= 3
&& !Actor_Clue_Query(kActorMcCoy, kClueOriginalRequisitionForm)
&& Game_Flag_Query(kFlagCT04HomelessKilledByMcCoy)
@@ -115,12 +124,20 @@ bool SceneScriptUG13::ClickedOn3DObject(const char *objectName, bool a2) {
Scene_Loop_Start_Special(kSceneLoopModeOnce, 0, false);
Game_Flag_Reset(kFlagUG08ElevatorUp);
Game_Flag_Set(kFlagUG13CallElevator);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Unobstacle_Object("ELEVBLOCK", true);
+#endif // BLADERUNNER_ORIGINAL_BUGS
return true;
} else {
Scene_Loop_Set_Default(4);
Scene_Loop_Start_Special(kSceneLoopModeOnce, 3, false);
Game_Flag_Set(kFlagUG08ElevatorUp);
Scene_Exit_Remove(0);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Obstacle_Object("ELEVBLOCK", true);
+#endif // BLADERUNNER_ORIGINAL_BUGS
return true;
}
}
diff --git a/engines/bladerunner/set.cpp b/engines/bladerunner/set.cpp
index 1e441f68db..6d898bdc80 100644
--- a/engines/bladerunner/set.cpp
+++ b/engines/bladerunner/set.cpp
@@ -90,6 +90,7 @@ bool Set::open(const Common::String &name) {
_objects[i].isTarget = 0;
s->skip(4);
}
+ patchInAdditionalObjectsInSet();
_walkboxCount = s->readUint32LE();
assert(_walkboxCount <= 95);
@@ -424,12 +425,58 @@ void Set::load(SaveFileReadStream &f) {
* TODO If we have many such cases, perhaps we could use a lookup table
* using sceneId, objectId (or name) as keys
*/
-void Set::overrideSceneObjectInfo(int objectId) const { // For bugfixes with respect to clickable/targetable box positioning/bounding box
- if (_vm->_scene->getSceneId() == kSceneBB06) { /// Sebastian's room with doll
- if (_objects[objectId].name == "BOX31") { // dollhouse box in BB06
+void Set::overrideSceneObjectInfo(int objectId) const {
+ switch (_vm->_scene->getSceneId()) {
+ case kSceneBB06:
+ // Sebastian's room with doll
+ if (objectId == 3 && _objects[objectId].name == "BOX31") {
+ // dollhouse box in BB06
_objects[objectId].bbox.setXYZ(-161.47f, 30.0f, 53.75f, -110.53f, 69.81f, 90.90f);
}
+ break;
+ case kSceneUG09:
+ // block passage to buggy pipe
+ if (objectId == 7 && _objects[objectId].name == "BOXS FOR ARCHWAY 01") {
+ _objects[objectId].bbox.setXYZ(-168.99f, 151.38f, -139.10f, -105.95f, 239.59f, 362.70);
+ }
+ break;
+ default:
+ return;
}
}
+/**
+* Used for adding objects in a Set mainly to fix a few "McCoy walking to places he should not" issues
+* This is called in Set::open()
+* Note:
+* - ScummVM (post fix) save games will have the extra objects information
+* - Original save games will not have the extra objects if the save game room scene was an affected scene
+* but they will get them if the player exits and re-enters. The code anticipates not finding an object in a scene
+* so this should not be an issue.
+*/
+void Set::patchInAdditionalObjectsInSet() {
+ Common::String custObjName;
+ int objectId = _objectCount;
+ BoundingBox bbox;
+ switch (_vm->_scene->getSceneId()) {
+ case kSceneUG13:
+ // Underground homeless place
+ // block passage to empty elevator chute
+ bbox = BoundingBox(-80.00f, 35.78f, -951.75f, 74.36f, 364.36f, -810.56f);
+ custObjName = "ELEVBLOCK";
+ break;
+ default:
+ return;
+ }
+
+ _objectCount++;
+ _objects[objectId].name = custObjName.c_str();
+ _objects[objectId].bbox = bbox;
+ _objects[objectId].isObstacle = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un)Obstacle_Object()
+ _objects[objectId].isClickable = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un)Clickable_Object()
+ _objects[objectId].isHotMouse = 0;
+ _objects[objectId].unknown1 = 0;
+ _objects[objectId].isTarget = 0; // init as false - Can be changed in Scene script eg. SceneLoaded() with (Un_)Combat_Target_Object
+}
+
} // End of namespace BladeRunner
diff --git a/engines/bladerunner/set.h b/engines/bladerunner/set.h
index 661d38eec1..b2aca931eb 100644
--- a/engines/bladerunner/set.h
+++ b/engines/bladerunner/set.h
@@ -108,6 +108,7 @@ public:
private:
static bool isXZInWalkbox(float x, float z, const Walkbox &walkbox);
void overrideSceneObjectInfo(int objectId) const;
+ void patchInAdditionalObjectsInSet();
};
} // End of namespace BladeRunner