diff options
| -rw-r--r-- | engines/bladerunner/script/scene/ps05.cpp | 29 | ||||
| -rw-r--r-- | engines/bladerunner/set.cpp | 6 | 
2 files changed, 34 insertions, 1 deletions
diff --git a/engines/bladerunner/script/scene/ps05.cpp b/engines/bladerunner/script/scene/ps05.cpp index 6adff84ac8..8bb579c995 100644 --- a/engines/bladerunner/script/scene/ps05.cpp +++ b/engines/bladerunner/script/scene/ps05.cpp @@ -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(); diff --git a/engines/bladerunner/set.cpp b/engines/bladerunner/set.cpp index e03466b837..5427858688 100644 --- a/engines/bladerunner/set.cpp +++ b/engines/bladerunner/set.cpp @@ -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  | 
