BLADERUNNER: Introduce small delay to two targets

These both are infamous for how fast they shoot after becoming visible on screen

The delay was 0 in the original. Now it's random between 400 and 800ms, so they are still fast, but not unfair
This commit is contained in:
antoniou79 2021-06-28 22:49:31 +03:00
parent cde2670450
commit a52f2d8a75
2 changed files with 135 additions and 183 deletions

View File

@ -33,11 +33,10 @@ static const int *getPoliceMazePS10TrackData1() { // Enemy linked series (kIte
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target1, 0, // remove target-able here
kPMTITargetSet, kItemPS10Target2, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target1,
kPMTIObstacleReset, kItemPS10Target2,
kPMTIFacing, 989,
@ -45,10 +44,9 @@ static const int *getPoliceMazePS10TrackData1() { // Enemy linked series (kIte
kPMTITargetSet, kItemPS10Target1, 1,
kPMTITargetSet, kItemPS10Target2, 1,
kPMTIEnemyReset, kItemPS10Target1,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTIEnemyReset, kItemPS10Target2, // both targets should clear their enemy flag here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIWaitRandom, 3000, 5000,
kPMTIObstacleSet, kItemPS10Target1,
kPMTIPlaySound, kSfxUPTARG3, 100,
@ -56,10 +54,9 @@ static const int *getPoliceMazePS10TrackData1() { // Enemy linked series (kIte
kPMTIWait, 1000,
kPMTIRotate, 740, 80,
kPMTIEnemySet, kItemPS10Target1, // rotate - reveal
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTIEnemySet, kItemPS10Target2, // both targets should set their enemy flag here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIWait, 0,
kPMTIRotate, 488, 80,
kPMTIWait, 1000,
@ -68,10 +65,9 @@ static const int *getPoliceMazePS10TrackData1() { // Enemy linked series (kIte
kPMTIRotate, 740, 80,
kPMTIPausedReset, kItemPS10Target2, // kItemPS10Target2 continues the route of this item
kPMTIObstacleReset, kItemPS10Target1, // kItemPS10Target1 becomes invisible
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target1, 0, // remove target-able here - only for Target1 item
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleSet, kItemPS10Target2, // kItemPS10Target2 becomes visible in kItemPS10Target1's place
kPMTIPausedSet, kItemPS10Target1,
kPMTIPosition, 0,
@ -88,10 +84,9 @@ static const int *getPoliceMazePS10TrackData2() { // Enemy linked series (kIte
kPMTIMove, 69,
kPMTIWait, 500,
kPMTIObstacleReset, kItemPS10Target2,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target2, 0, // remove target-able here - only for Target2 item
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset, kItemPS10Target5,
kPMTIPausedSet, kItemPS10Target2,
kPMTIPosition, 0,
@ -104,10 +99,9 @@ static const int *getPoliceMazePS10TrackData3() { // Enemy (kItemPS10Target3)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target3, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target3,
kPMTIFacing, 993,
kPMTIPosition, 0,
@ -131,11 +125,10 @@ static const int *getPoliceMazePS10TrackData3() { // Enemy (kItemPS10Target3)
kPMTIPlaySound, kSfxTARGUP6, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS10Target3,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target3, 0, // remove target-able here
// kPMTIPausedSet, kItemPS10Target3, // intended: Original kItemPS10Target3 does not get paused - it loops on its own
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIRestart
};
return trackData;
@ -145,10 +138,9 @@ static const int *getPoliceMazePS10TrackData4() { // Innocent (kItemPS10Target
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target4, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target4,
kPMTIFacing, 993,
kPMTIPosition, 0,
@ -163,10 +155,9 @@ static const int *getPoliceMazePS10TrackData4() { // Innocent (kItemPS10Target
kPMTIMove, 0,
kPMTILeave,
kPMTIObstacleReset, kItemPS10Target4,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target4, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset, kItemPS10Target8,
kPMTIPausedSet, kItemPS10Target4,
kPMTIRestart
@ -178,10 +169,9 @@ static const int *getPoliceMazePS10TrackData5() { // Innocent (kItemPS10Target
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target5, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target5,
kPMTIFacing, 0,
kPMTIPosition, 0,
@ -199,10 +189,9 @@ static const int *getPoliceMazePS10TrackData5() { // Innocent (kItemPS10Target
kPMTIMove, 0,
kPMTILeave,
kPMTIObstacleReset, kItemPS10Target5,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target5, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset, kItemPS10Target1,
kPMTIPausedSet, kItemPS10Target5,
kPMTIRestart
@ -215,10 +204,9 @@ static const int *getPoliceMazePS10TrackData6() { // Enemy (kItemPS10Target6)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target6, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target6,
kPMTIFacing, 999,
kPMTIPosition, 0,
@ -242,10 +230,9 @@ static const int *getPoliceMazePS10TrackData6() { // Enemy (kItemPS10Target6)
kPMTIPlaySound, kSfxTARGUP6, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS10Target6,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target6, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset, kItemPS10Target7,
kPMTIPausedReset, kItemPS10Target9,
kPMTIPausedSet, kItemPS10Target6,
@ -258,10 +245,9 @@ static const int *getPoliceMazePS10TrackData7() { // Innocent (kItemPS10Target
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target7, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target7,
kPMTIFacing, 264,
kPMTIPosition, 0,
@ -275,10 +261,9 @@ static const int *getPoliceMazePS10TrackData7() { // Innocent (kItemPS10Target
kPMTIMove, 0,
kPMTILeave,
kPMTIObstacleReset, kItemPS10Target7,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target7, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedSet, kItemPS10Target7,
kPMTIRestart
};
@ -289,10 +274,9 @@ static const int *getPoliceMazePS10TrackData8() { // Enemy (kItemPS10Target8)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target8, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target8,
kPMTIFacing, 993,
kPMTIPosition, 0,
@ -306,14 +290,17 @@ static const int *getPoliceMazePS10TrackData8() { // Enemy (kItemPS10Target8)
kPMTIEnemySet, kItemPS10Target8, // rotate - reveal
kPMTIRotate, 491, 80,
kPMTIMove, 20,
kPMTIWait, 0, // this results in shooting too fast - TODO maybe introduce a small wait here (50 or 150)
#if BLADERUNNER_ORIGINAL_BUGS
kPMTIWait, 0, // this results in shooting too fast
#else
kPMTIWaitRandom, 400, 800, // introduce a small wait here (400 - 800)
#endif
kPMTIShoot, kSfxSMCAL3, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS10Target8,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target8, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset, kItemPS10Target4,
kPMTIPausedSet, kItemPS10Target8,
kPMTIRestart
@ -325,10 +312,9 @@ static const int *getPoliceMazePS10TrackData9() { // Special (kItemPS10Target9
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS10TargetCounter, kPoliceMazePS10TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target9, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS10Target9,
kPMTIFacing, 738,
kPMTIPosition, 0,
@ -376,10 +362,9 @@ static const int *getPoliceMazePS10TrackData9() { // Special (kItemPS10Target9
kPMTIPlaySound, kSfxTARGUP4, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS10Target9,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS10Target9, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedSet, kItemPS10Target9,
kPMTIRestart
};
@ -416,13 +401,12 @@ void SceneScriptPS10::InitializeScene() {
Ambient_Sounds_Add_Sound(kSfxBBMOVE1, 5, 100, 17, 27, -100, 100, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(kSfxBBMOVE2, 5, 100, 17, 27, -100, 100, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(kSfxBBMOVE3, 5, 100, 17, 27, -100, 100, -101, -101, 0, 0);
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
if (!Game_Flag_Query(kFlagPS11toPS10)) {
// Moved here from PS15
Sound_Play(kSfxLABBUZZ1, 90, 0, 0, 50);
}
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
}
void SceneScriptPS10::SceneLoaded() {
@ -520,14 +504,13 @@ bool SceneScriptPS10::ClickedOnItem(int itemId, bool combatMode) {
switch (itemId) {
case kItemPS10Target1: // fall through // treated the same as kItemPS10Target2 (In the original code they are the same target in different tracks)
case kItemPS10Target2:
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
if (Item_Query_Visible(kItemPS10Target1)) { // without this check, target2 seems to get the spinning while the visible target1 stays put
Item_Spin_In_World(kItemPS10Target1);
} else {
Item_Spin_In_World(kItemPS10Target2);
}
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
Item_Flag_As_Non_Target(kItemPS10Target1);
Item_Flag_As_Non_Target(kItemPS10Target2);
break;
@ -539,10 +522,9 @@ bool SceneScriptPS10::ClickedOnItem(int itemId, bool combatMode) {
case kItemPS10Target8: // fall through
case kItemPS10Target9: // fall through
default:
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
Item_Spin_In_World(itemId);
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
Item_Flag_As_Non_Target(itemId);
break;
}

View File

@ -48,10 +48,9 @@ static const int *getPoliceMazePS11TrackData9() { // Enemy (kItemPS11Target1)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target1, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target1,
kPMTIFacing, 50,
kPMTIPosition, 0,
@ -71,10 +70,9 @@ static const int *getPoliceMazePS11TrackData9() { // Enemy (kItemPS11Target1)
kPMTIMove, 0,
kPMTIWait, 500,
kPMTIObstacleReset, kItemPS11Target1,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target1, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target7, kItemPS11Target2,
kPMTIPausedSet, kItemPS11Target1,
kPMTIRestart
@ -86,11 +84,10 @@ static const int *getPoliceMazePS11TrackData10() { // Enemy (kItemPS11Target2,
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target2, 0, // remove target-able here
kPMTITargetSet, kItemPS11Target3, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target2,
kPMTIObstacleReset, kItemPS11Target3,
kPMTITargetSet, kItemPS11Target2, 1,
@ -99,20 +96,18 @@ static const int *getPoliceMazePS11TrackData10() { // Enemy (kItemPS11Target2,
kPMTIPosition, 0,
kPMTIWaitRandom, 3000, 6000,
kPMTIEnemyReset, kItemPS11Target2,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTIEnemyReset, kItemPS11Target3, // both targets should clear their enemy flag here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleSet, kItemPS11Target2,
kPMTIPlaySound, kSfxTARGUP5, 33,
kPMTIMove, 14,
kPMTIWait, 500,
kPMTIPausedReset, kItemPS11Target3,
kPMTIObstacleReset, kItemPS11Target2,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target2, 0, // remove target-able here - only for kItemPS11Target2 item
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleSet, kItemPS11Target3,
kPMTIPausedSet, kItemPS11Target2,
kPMTIPosition, 0,
@ -137,10 +132,9 @@ static const int *getPoliceMazePS11TrackData11() { // Enemy (kItemPS11Target2,
kPMTIShoot, kSfxLGCAL1, 33,
kPMTIMove, 79,
kPMTIObstacleReset, kItemPS11Target3,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target3, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target7, kItemPS11Target1,
kPMTIPausedSet, kItemPS11Target3,
kPMTIPosition, 0,
@ -154,10 +148,9 @@ static const int *getPoliceMazePS11TrackData12() { // Innocent (kItemPS11Target
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target4, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target4,
kPMTIFacing, 725,
kPMTIPosition, 0,
@ -180,11 +173,10 @@ static const int *getPoliceMazePS11TrackData12() { // Innocent (kItemPS11Target
kPMTIRotate, 725, 80,
kPMTIMove, 99,
kPMTIObstacleReset, kItemPS11Target4,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTILeave, // Do the leave instruction here, before becoming un-target-able
kPMTITargetSet, kItemPS11Target4, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset, kItemPS11Target16,
kPMTIPausedSet, kItemPS11Target4,
kPMTIPosition, 0,
@ -197,10 +189,9 @@ static const int *getPoliceMazePS11TrackData13() { // Enemy (kItemPS11Target5)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target5, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target5,
kPMTIFacing, 340,
kPMTIPosition, 0,
@ -231,10 +222,9 @@ static const int *getPoliceMazePS11TrackData13() { // Enemy (kItemPS11Target5)
kPMTIPlaySound, kSfxTARGUP6, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS11Target5,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target5, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target6, kItemPS11Target10,
kPMTIPausedSet, kItemPS11Target5,
kPMTIRestart
@ -246,10 +236,9 @@ static const int *getPoliceMazePS11TrackData14() { // Enemy (kItemPS11Target6)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target6, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target6,
kPMTITargetSet, kItemPS11Target6, 1,
kPMTIEnemyReset, kItemPS11Target6,
@ -277,10 +266,9 @@ static const int *getPoliceMazePS11TrackData14() { // Enemy (kItemPS11Target6)
kPMTIPlaySound, kSfxTARGUP6, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS11Target6,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target6, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target10, kItemPS11Target5,
kPMTIPausedSet, kItemPS11Target6,
kPMTIRestart
@ -292,11 +280,10 @@ static const int *getPoliceMazePS11TrackData15() { // Special (kItemPS11Target7
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target7, 0, // remove target-able here - redundant, but consistent with the original kPMTIObstacleReset (redundant) instructions that follow
kPMTITargetSet, kItemPS11Target8, 0, // remove target-able here - redundant, but consistent with the original kPMTIObstacleReset (redundant) instructions that follow
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target7,
kPMTIObstacleReset, kItemPS11Target8,
kPMTITargetSet, kItemPS11Target7, 1,
@ -307,19 +294,17 @@ static const int *getPoliceMazePS11TrackData15() { // Special (kItemPS11Target7
kPMTIObstacleSet, kItemPS11Target7,
kPMTIPlaySound, kSfxTARGUP1, 33,
kPMTIEnemyReset, kItemPS11Target7,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTIEnemyReset, kItemPS11Target8, // both targets should clear their enemy flag here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIMove, 14,
kPMTILeave, // intended: special: credit for "first" innocent escaping
kPMTIWait, 1000,
kPMTIPausedReset, kItemPS11Target8,
kPMTIObstacleReset, kItemPS11Target7,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target7, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleSet, kItemPS11Target8,
kPMTIPausedSet, kItemPS11Target7,
kPMTIPosition, 0,
@ -344,10 +329,9 @@ static const int *getPoliceMazePS11TrackData16() { // Innocent (kItemPS11Target
kPMTIMove, 79,
kPMTILeave, // credit for "second" / final innocent
kPMTIObstacleReset, kItemPS11Target8,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target8, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target2, kItemPS11Target1,
kPMTIPausedSet, kItemPS11Target8,
kPMTIPosition, 0,
@ -361,11 +345,10 @@ static const int *getPoliceMazePS11TrackData17() { // Special (kItemPS11Target9
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target9, 0, // remove target-able here
kPMTIObstacleReset, kItemPS11Target9,
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIFacing, 310,
kPMTIPosition, 0,
#if BLADERUNNER_ORIGINAL_BUGS
@ -374,14 +357,17 @@ static const int *getPoliceMazePS11TrackData17() { // Special (kItemPS11Target9
#endif // BLADERUNNER_ORIGINAL_BUGS
kPMTIEnemySet, kItemPS11Target9,
kPMTIWaitRandom, 4000, 8000,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleSet, kItemPS11Target9, // make visible after the wait period, not before
kPMTITargetSet, kItemPS11Target9, 1, // set Target-able after the wait period, not before
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPlaySound, kSfxTARGUP4, 33,
kPMTIMove, 10,
kPMTIWait, 0, // this results in shooting too fast - TODO maybe introduce a small wait here (50 or 150)
#if BLADERUNNER_ORIGINAL_BUGS
kPMTIWait, 0, // this results in shooting too fast
#else
kPMTIWaitRandom, 400, 800, // introduce a small wait here (400 - 800)
#endif
kPMTIShoot, kSfxSMCAL3, 33,
kPMTIMove, 0,
kPMTITargetSet, kItemPS11Target9, 1, // intended: special: "second" enemy (re-using the target of the track)
@ -390,15 +376,18 @@ static const int *getPoliceMazePS11TrackData17() { // Special (kItemPS11Target9
kPMTITargetSet, kItemPS11Target9, 1, // intended: special: "third" enemy (re-using the target of the track)
kPMTIEnemySet, kItemPS11Target9, // intended: special: "third" enemy (re-using the target of the track)
kPMTIMove, 10,
kPMTIWait, 0, // this results in shooting too fast - TODO maybe introduce a small wait here (50 or 150)
#if BLADERUNNER_ORIGINAL_BUGS
kPMTIWait, 0, // this results in shooting too fast
#else
kPMTIWaitRandom, 400, 800, // introduce a small wait here (400 - 800)
#endif
kPMTIShoot, kSfxSMCAL3, 33,
kPMTIMove, 24,
kPMTIWait, 1000,
kPMTIObstacleReset, kItemPS11Target9,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target9, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target15, kItemPS11Target14,
kPMTIPausedSet, kItemPS11Target9,
kPMTIPosition, 0,
@ -411,11 +400,10 @@ static const int *getPoliceMazePS11TrackData18() { // Special (kItemPS11Target1
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target10, 0, // remove target-able here
kPMTITargetSet, kItemPS11Target11, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target10,
kPMTIObstacleReset, kItemPS11Target11,
kPMTIFacing, 900,
@ -423,10 +411,9 @@ static const int *getPoliceMazePS11TrackData18() { // Special (kItemPS11Target1
kPMTITargetSet, kItemPS11Target10, 1,
kPMTITargetSet, kItemPS11Target11, 1,
kPMTIEnemyReset, kItemPS11Target10,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTIEnemyReset, kItemPS11Target11, // both targets should clear their enemy flag here
#endif
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIWaitRandom, 4000, 6000,
kPMTIObstacleSet, kItemPS11Target10,
kPMTIMove, 5,
@ -440,20 +427,18 @@ static const int *getPoliceMazePS11TrackData18() { // Special (kItemPS11Target1
#endif // BLADERUNNER_ORIGINAL_BUGS
kPMTIRotate, 700, 80,
kPMTIEnemySet, kItemPS11Target10, // Now the target is an enemy. (special) Rotate reveal
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTIEnemySet, kItemPS11Target11, // both targets should set their enemy flag here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIWait, 0,
kPMTIRotate, 512, 200,
kPMTIWait, 1000,
kPMTIShoot, kSfxLGCAL1, 33,
kPMTIPausedReset, kItemPS11Target11,
kPMTIObstacleReset, kItemPS11Target10,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target10, 0, // remove target-able here only for kItemPS11Target10
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleSet, kItemPS11Target11,
kPMTIPausedSet, kItemPS11Target10,
kPMTIPosition, 0,
@ -478,10 +463,9 @@ static const int *getPoliceMazePS11TrackData19() { // Special (kItemPS11Target1
kPMTIMove, kItemPS11Target11,
kPMTIWait, 500,
kPMTIObstacleReset, kItemPS11Target11,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target11, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target5, kItemPS11Target6,
kPMTIPausedSet, kItemPS11Target11,
kPMTIPosition, 0,
@ -494,10 +478,9 @@ static const int *getPoliceMazePS11TrackData20() { // Enemy (kItemPS11Target12)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target12, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target12,
kPMTIFacing, 280,
kPMTIPosition, 0,
@ -511,10 +494,9 @@ static const int *getPoliceMazePS11TrackData20() { // Enemy (kItemPS11Target12)
kPMTIShoot, kSfxSMCAL3, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS11Target12,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target12, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target13, kItemPS11Target4,
kPMTIPausedSet, kItemPS11Target12,
kPMTIPosition, 0,
@ -527,10 +509,9 @@ static const int *getPoliceMazePS11TrackData21() { // Innocent (kItemPS11Target
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target13, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target13,
kPMTIFacing, 280,
kPMTIPosition, 0,
@ -545,11 +526,10 @@ static const int *getPoliceMazePS11TrackData21() { // Innocent (kItemPS11Target
kPMTIWait, 1000,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS11Target13,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTILeave, // Do the leave instruction here instead
kPMTITargetSet, kItemPS11Target13, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target12, kItemPS11Target4,
kPMTIPausedSet, kItemPS11Target13,
kPMTIPosition, 0,
@ -562,10 +542,9 @@ static const int *getPoliceMazePS11TrackData22() { // Enemy (kItemPS11Target14)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target14, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target14,
kPMTIFacing, 255,
kPMTIPosition, 0,
@ -583,10 +562,9 @@ static const int *getPoliceMazePS11TrackData22() { // Enemy (kItemPS11Target14)
kPMTIShoot, kSfxLGCAL1, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS11Target14,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target14, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target15, kItemPS11Target9,
kPMTIPausedSet, kItemPS11Target14,
kPMTIPosition, 0,
@ -599,10 +577,9 @@ static const int *getPoliceMazePS11TrackData23() { // Innocent (kItemPS11Target
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target15, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target15,
kPMTIFacing, 310,
kPMTIPosition, 0,
@ -616,10 +593,9 @@ static const int *getPoliceMazePS11TrackData23() { // Innocent (kItemPS11Target
kPMTIMove, 0,
kPMTILeave,
kPMTIObstacleReset, kItemPS11Target15,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target15, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target14, kItemPS11Target9,
kPMTIPausedSet, kItemPS11Target15,
kPMTIPosition, 0,
@ -632,10 +608,9 @@ static const int *getPoliceMazePS11TrackData27() { // Enemy (kItemPS11Target16)
static int trackData[] = {
kPMTIActivate, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
kPMTIVariableInc, kVariablePoliceMazePS11TargetCounter, kPoliceMazePS11TargetCount,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target16, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIObstacleReset, kItemPS11Target16,
kPMTIFacing, 346,
kPMTIPosition, 0,
@ -648,10 +623,9 @@ static const int *getPoliceMazePS11TrackData27() { // Enemy (kItemPS11Target16)
kPMTIShoot, kSfxLGCAL1, 33,
kPMTIMove, 0,
kPMTIObstacleReset, kItemPS11Target16,
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
kPMTITargetSet, kItemPS11Target16, 0, // remove target-able here
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
kPMTIPausedReset1of2, kItemPS11Target13, kItemPS11Target12,
kPMTIPausedSet, kItemPS11Target16,
kPMTIPosition, 0,
@ -775,40 +749,37 @@ bool SceneScriptPS11::ClickedOnItem(int itemId, bool combatMode) {
switch (itemId) {
case kItemPS11Target2: // fall through
case kItemPS11Target3:
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
if (Item_Query_Visible(kItemPS11Target2)) { // without this check, the wrong target might get the spinning while the visible stays put
Item_Spin_In_World(kItemPS11Target2);
} else {
Item_Spin_In_World(kItemPS11Target3);
}
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
Item_Flag_As_Non_Target(kItemPS11Target2);
Item_Flag_As_Non_Target(kItemPS11Target3);
break;
case kItemPS11Target7: // fall through
case kItemPS11Target8:
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
if (Item_Query_Visible(kItemPS11Target7)) { // without this check, the wrong target might get the spinning while the visible stays put
Item_Spin_In_World(kItemPS11Target7);
} else {
Item_Spin_In_World(kItemPS11Target8);
}
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
Item_Flag_As_Non_Target(kItemPS11Target7);
Item_Flag_As_Non_Target(kItemPS11Target8);
break;
case kItemPS11Target10: // fall through
case kItemPS11Target11:
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
if (Item_Query_Visible(kItemPS11Target10)) { // without this check, the wrong target might get the spinning while the visible stays put
Item_Spin_In_World(kItemPS11Target10);
} else {
Item_Spin_In_World(kItemPS11Target11);
}
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
Item_Flag_As_Non_Target(kItemPS11Target10);
Item_Flag_As_Non_Target(kItemPS11Target11);
break;
@ -823,10 +794,9 @@ bool SceneScriptPS11::ClickedOnItem(int itemId, bool combatMode) {
case kItemPS11Target15: // fall through
case kItemPS11Target16: // fall through
default:
#if BLADERUNNER_ORIGINAL_BUGS
#else
#if !BLADERUNNER_ORIGINAL_BUGS
Item_Spin_In_World(itemId);
#endif // BLADERUNNER_ORIGINAL_BUGS
#endif // !BLADERUNNER_ORIGINAL_BUGS
Item_Flag_As_Non_Target(itemId);
break;
}