BLADERUNNER: Fixes for PS05

Pathfinding and spawn points fixes
This commit is contained in:
Thanasis Antoniou 2019-05-13 00:04:17 +03:00
parent b6f7ff77d3
commit c52cd1ea4c
2 changed files with 34 additions and 1 deletions

View File

@ -29,8 +29,13 @@ void SceneScriptPS05::InitializeScene() {
Setup_Scene_Information(547.59f, 0.18f, -216.84f, 334);
} else if (Game_Flag_Query(kFlagPS02toPS05)) {
Setup_Scene_Information(635.0f, 0.0f, -598.0f, 475);
} else { // kFlagPS06toPS05 || kFlagPS15toPS05
} else { // kFlagPS06toPS05 || kFlagPS15toPS05, but for some reason kFlagPS06toPS05 is then set in PlayerWalkedIn
#if BLADERUNNER_ORIGINAL_BUGS
Setup_Scene_Information(630.72f, 0.38f, -469.26f, 400);
#else
// exiting from PS15
Setup_Scene_Information(553.24f, 0.37f, -422.97f, 400);
#endif // BLADERUNNER_ORIGINAL_BUGS
}
Scene_Exit_Add_2D_Exit(0, 218, 98, 280, 246, 3);
Scene_Exit_Add_2D_Exit(1, 330, 90, 436, 198, 0);
@ -49,6 +54,10 @@ void SceneScriptPS05::InitializeScene() {
void SceneScriptPS05::SceneLoaded() {
Obstacle_Object("WATER FOUNTAIN", true);
#if BLADERUNNER_ORIGINAL_BUGS
#else
Obstacle_Object("MAINFBLOCK", true);
#endif // BLADERUNNER_ORIGINAL_BUGS
Clickable_Object("WATER FOUNTAIN");
Clickable_Object("ASHTRAY");
Clickable_Object("FIRE EXTINGISHER");
@ -57,6 +66,11 @@ void SceneScriptPS05::SceneLoaded() {
Clickable_Object("WANTED POSTERS");
Unclickable_Object("WATER FOUNTAIN");
Unclickable_Object("CUP");
#if BLADERUNNER_ORIGINAL_BUGS
#else
Unclickable_Object("FIRE EXTINGISHER");
#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptPS05::MouseClick(int x, int y) {
@ -112,12 +126,21 @@ bool SceneScriptPS05::ClickedOnExit(int exitId) {
return true;
}
if (exitId == 2) {
#if BLADERUNNER_ORIGINAL_BUGS
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 742.52f, 0.37f, -457.69f, 0, true, false, false)) {
Game_Flag_Set(kFlagPS05toPS06);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Set_Enter(kSetPS06, kScenePS06);
}
#else
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 715.52f, 0.37f, -457.69f, 0, true, false, false)) {
Game_Flag_Set(kFlagPS05toPS06);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Set_Enter(kSetPS06, kScenePS06);
}
#endif // BLADERUNNER_ORIGINAL_BUGS
return true;
}
return false;
@ -143,7 +166,11 @@ void SceneScriptPS05::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
void SceneScriptPS05::PlayerWalkedIn() {
if (Game_Flag_Query(kFlagPS06toPS05)) {
#if BLADERUNNER_ORIGINAL_BUGS
Actor_Set_At_XYZ(kActorMcCoy, 718.72f, 0.37f, -461.26f, 600);
#else
Actor_Set_At_XYZ(kActorMcCoy, 710.14f, 0.37f, -455.48f, 600);
#endif // BLADERUNNER_ORIGINAL_BUGS
} else if (Game_Flag_Query(kFlagPS02toPS05)) {
selectNextTvNews();
turnOnTV();

View File

@ -480,6 +480,12 @@ void Set::patchInAdditionalObjectsInSet() {
int objectId = _objectCount;
BoundingBox bbox;
switch (_vm->_scene->getSceneId()) {
case kScenePS05:
// block actual passage to ESPER room because
// it causes McCoy to sometimes go behind the wall
bbox = BoundingBox(730.50f, -0.0f, -481.10f, 734.51f, 144.75f, -437.55f);
custObjName = "MAINFBLOCK";
break;
case kSceneUG13:
// Underground homeless place
// block passage to empty elevator chute