BLADERUNNER: Fix for Sebastian's doll in BB06
Targeting clicking bounding box fixed. Animation weirdness minimized. Also restored explosion animation.
This commit is contained in:
parent
390b243ef2
commit
09d3460780
2 changed files with 66 additions and 2 deletions
|
@ -63,17 +63,36 @@ void SceneScriptBB06::InitializeScene() {
|
||||||
Game_Flag_Reset(kFlagBB51toBB06b);
|
Game_Flag_Reset(kFlagBB51toBB06b);
|
||||||
} else {
|
} else {
|
||||||
Scene_Loop_Set_Default(1);
|
Scene_Loop_Set_Default(1);
|
||||||
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
|
#else
|
||||||
|
// bugfix: case of not transitioning from BB51: chess/ egg boiler sub-space
|
||||||
|
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
|
||||||
|
Overlay_Play("BB06OVER", 1, false, false, 0);
|
||||||
|
}
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
|
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
|
||||||
Overlay_Play("BB06OVER", 1, true, false, 0); // TODO: check, it's is playing while the background is still panning so it looks pretty weird
|
Overlay_Play("BB06OVER", 1, true, false, 0); // Original bug: it is playing while the background is still panning so it looks pretty weird
|
||||||
}
|
}
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneScriptBB06::SceneLoaded() {
|
void SceneScriptBB06::SceneLoaded() {
|
||||||
Obstacle_Object("V2CHESSTBL01", true);
|
Obstacle_Object("V2CHESSTBL01", true);
|
||||||
Clickable_Object("BOX31");
|
Clickable_Object("BOX31");
|
||||||
Item_Add_To_World(kItemBB06ControlBox, 931, kSetBB02_BB04_BB06_BB51, -127.0f, 68.42f, 57.0f, 0, 8, 8, true, true, false, true);
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
|
// This Item_Add_To_World call is only ok for the transition from BB51 to BB06,
|
||||||
|
// otherwise the doll item is not placed in the current set
|
||||||
|
Item_Add_To_World(kItemBB06ControlBox, 931, kSetBB06_BB07, -127.0f, 68.42f, 57.0f, 0, 8, 8, true, true, false, true);
|
||||||
|
#else
|
||||||
|
// Add doll item based on which SET version of the "room" we are in
|
||||||
|
Item_Add_To_World(kItemBB06ControlBox, 931, Player_Query_Current_Set(), -117.24f, 46.41f, 76.66f, 256, 28, 16, true, true, false, true);
|
||||||
|
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
|
||||||
|
Item_Flag_As_Non_Target(kItemBB06ControlBox);
|
||||||
|
}
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SceneScriptBB06::MouseClick(int x, int y) {
|
bool SceneScriptBB06::MouseClick(int x, int y) {
|
||||||
|
@ -101,12 +120,24 @@ bool SceneScriptBB06::ClickedOnActor(int actorId) {
|
||||||
|
|
||||||
bool SceneScriptBB06::ClickedOnItem(int itemId, bool a2) {
|
bool SceneScriptBB06::ClickedOnItem(int itemId, bool a2) {
|
||||||
if (itemId == kItemBB06ControlBox) {
|
if (itemId == kItemBB06ControlBox) {
|
||||||
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
if (Player_Query_Combat_Mode()) {
|
if (Player_Query_Combat_Mode()) {
|
||||||
Overlay_Play("BB06OVER", 1, true, true, 0);
|
Overlay_Play("BB06OVER", 1, true, true, 0);
|
||||||
Game_Flag_Set(kFlagBB06AndroidDestroyed);
|
Game_Flag_Set(kFlagBB06AndroidDestroyed);
|
||||||
Item_Remove_From_World(kItemBB06ControlBox);
|
Item_Remove_From_World(kItemBB06ControlBox);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (Player_Query_Combat_Mode()) {
|
||||||
|
Overlay_Play("BB06OVER", 0, false, true, 0); // explosion - don't loop
|
||||||
|
Game_Flag_Set(kFlagBB06AndroidDestroyed);
|
||||||
|
// flag item kItemBB06ControlBox as non-combat-target
|
||||||
|
Item_Flag_As_Non_Target(kItemBB06ControlBox);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
ClickedOn3DObject("BOX31", false); // clone behavior of box31
|
||||||
|
}
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -152,6 +183,15 @@ void SceneScriptBB06::SceneFrameAdvanced(int frame) {
|
||||||
if (frame == 34) {
|
if (frame == 34) {
|
||||||
Ambient_Sounds_Play_Sound(447, 40, -50, -50, 10);
|
Ambient_Sounds_Play_Sound(447, 40, -50, -50, 10);
|
||||||
}
|
}
|
||||||
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
|
#else
|
||||||
|
// last frame of transition is 15, try 13 for better transition - minimize weird effect
|
||||||
|
if (frame == 13) { // executed once during transition FROM bb51 (chess sub space)
|
||||||
|
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
|
||||||
|
Overlay_Play("BB06OVER", 1, false, false, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
if (frame == 16) {
|
if (frame == 16) {
|
||||||
Ambient_Sounds_Play_Sound(448, 20, -50, -50, 10);
|
Ambient_Sounds_Play_Sound(448, 20, -50, -50, 10);
|
||||||
}
|
}
|
||||||
|
@ -177,6 +217,12 @@ void SceneScriptBB06::PlayerWalkedIn() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneScriptBB06::PlayerWalkedOut() {
|
void SceneScriptBB06::PlayerWalkedOut() {
|
||||||
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
|
#else
|
||||||
|
// this might be redundant -- the item is not visible in BB07 even if it was drawn in BB06
|
||||||
|
Item_Remove_From_World(kItemBB06ControlBox); // this removes the item from the set so it won't exist in the next scene
|
||||||
|
// mainly to remove it completely from BB07
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneScriptBB06::DialogueQueueFlushed(int a1) {
|
void SceneScriptBB06::DialogueQueueFlushed(int a1) {
|
||||||
|
|
|
@ -47,6 +47,14 @@ void SceneScriptBB51::InitializeScene() {
|
||||||
|
|
||||||
Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
|
Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
|
||||||
Scene_Loop_Set_Default(1);
|
Scene_Loop_Set_Default(1);
|
||||||
|
|
||||||
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
|
#else
|
||||||
|
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
|
||||||
|
Overlay_Play("BB06OVER", 1, false, false, 0);
|
||||||
|
}
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneScriptBB51::SceneLoaded() {
|
void SceneScriptBB51::SceneLoaded() {
|
||||||
|
@ -111,6 +119,16 @@ bool SceneScriptBB51::ClickedOn2DRegion(int region) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneScriptBB51::SceneFrameAdvanced(int frame) {
|
void SceneScriptBB51::SceneFrameAdvanced(int frame) {
|
||||||
|
#if BLADERUNNER_ORIGINAL_BUGS // Sebastian's Doll Fix
|
||||||
|
#else
|
||||||
|
// Scene Transition loop frames range from 0 to 14
|
||||||
|
// keep destroyedDoll overlay for 2-3 frames - to minimize weird effect
|
||||||
|
if (frame == 2) { // executed once during transition to BB51 (chess sub space)
|
||||||
|
if (Game_Flag_Query(kFlagBB06AndroidDestroyed)) {
|
||||||
|
Overlay_Remove("BB06OVER");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // BLADERUNNER_ORIGINAL_BUGS
|
||||||
}
|
}
|
||||||
|
|
||||||
void SceneScriptBB51::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
|
void SceneScriptBB51::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue