public static Position GetPrimaryLockedTileOrThrow(this IZone zone, Character character, bool centerOfTile = true) { var player = zone.GetPlayerOrThrow(character); var tl = player.GetPrimaryLock().ThrowIfNotType <TerrainLock>(ErrorCodes.PrimaryLockTargetNotFound); var position = tl.Location; if (centerOfTile) { position = position.Center; } return(position); }