diff --git a/src/control/Replay.h b/src/control/Replay.h
index 5dd8b651..98e02577 100644
--- a/src/control/Replay.h
+++ b/src/control/Replay.h
@@ -46,7 +46,7 @@ enum {
 
 struct CStoredDetailedAnimationState
 {
-	uint8 aAnimId[NUM_MAIN_ANIMS_IN_REPLAY];
+	uint16 aAnimId[NUM_MAIN_ANIMS_IN_REPLAY];
 	uint8 aCurTime[NUM_MAIN_ANIMS_IN_REPLAY];
 	uint8 aSpeed[NUM_MAIN_ANIMS_IN_REPLAY];
 	uint8 aBlendAmount[NUM_MAIN_ANIMS_IN_REPLAY];
@@ -54,7 +54,7 @@ struct CStoredDetailedAnimationState
 	uint8 aFunctionCallbackID[NUM_MAIN_ANIMS_IN_REPLAY];
 	uint16 aFlags[NUM_MAIN_ANIMS_IN_REPLAY];
 	uint8 aGroupId[NUM_MAIN_ANIMS_IN_REPLAY];
-	uint8 aAnimId2[NUM_PARTIAL_ANIMS_IN_REPLAY];
+	uint16 aAnimId2[NUM_PARTIAL_ANIMS_IN_REPLAY];
 	uint8 aCurTime2[NUM_PARTIAL_ANIMS_IN_REPLAY];
 	uint8 aSpeed2[NUM_PARTIAL_ANIMS_IN_REPLAY];
 	uint8 aBlendAmount2[NUM_PARTIAL_ANIMS_IN_REPLAY];
diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp
index 64d4d4c5..fff8628c 100644
--- a/src/control/Script5.cpp
+++ b/src/control/Script5.cpp
@@ -81,7 +81,7 @@ void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
 	CVector pos = pPlayerInfo->GetPos();
 	if (!decided) {
 		result = false;
-		if (Abs(pos.x - X) < dX && Abs(pos.y - Y) < dY && (b3D || Abs(pos.z - Z) < dZ)) {
+		if (Abs(pos.x - X) < dX && Abs(pos.y - Y) < dY && (!b3D || Abs(pos.z - Z) < dZ)) {
 			switch (command) {
 			case COMMAND_LOCATE_PLAYER_ANY_MEANS_2D:
 			case COMMAND_LOCATE_PLAYER_ANY_MEANS_3D:
@@ -107,8 +107,8 @@ void CRunningScript::LocatePlayerCommand(int32 command, uint32* pIp)
 			}
 		}
 	}
-	UpdateCompareFlag(result && Abs(pos.x - X) < 80.0f && Abs(pos.y - Y) > 80.0f);
-	if (debug)
+	UpdateCompareFlag(result);
+	if (debug && Abs(pos.x - X) < 80.0f && Abs(pos.y - Y) < 80.0f)
 		CTheScripts::HighlightImportantArea(id, X - dX, Y - dY, X + dX, Y + dY, b3D ? Z : MAP_Z_LOW_LIMIT);
 	/*
 	if (CTheScripts::DbgFlag) {