8    {
    9        landingPoint = 
default(
Point);
 
   11        int num = 1;
   12        int num2 = -1;
   13        int num3 = 1;
   14        int num4 = 0;
   15        int num5 = 5000;
   16        Vector2 vector = 
new Vector2((
float)player.width * 0.5f, player.height);
 
   17        int num6 = 40;
   18        bool flag = 
WorldGen.SolidOrSlopedTile(Main.tile[point.
X, point.
Y]);
 
   19        int num7 = 0;
   20        int num8 = 400;
   21        while (num4 < num5 && num7 < num8)
   22        {
   23            num4++;
   24            Tile tile = Main.tile[point.
X, point.
Y];
 
   25            Tile tile2 = Main.tile[point.
X, point.Y + num3];
 
   26            bool flag2 = 
WorldGen.SolidOrSlopedTile(tile) || tile.liquid > 0;
 
   27            bool flag3 = 
WorldGen.SolidOrSlopedTile(tile2) || tile2.liquid > 0;
 
   28            if (
IsInSolidTilesExtended(
new Vector2(point.
X * 16 + 8, point.
Y * 16 + 15) - vector, player.velocity, player.width, player.height, (
int)player.gravDir))
 
   29            {
   30                if (flag)
   31                {
   32                    point.Y += num;
   33                }
   34                else
   35                {
   36                    point.Y += num2;
   37                }
   38                continue;
   39            }
   40            if (flag2)
   41            {
   42                if (flag)
   43                {
   44                    point.Y += num;
   45                }
   46                else
   47                {
   48                    point.Y += num2;
   49                }
   50                continue;
   51            }
   52            flag = false;
   53            if (!
IsInSolidTilesExtended(
new Vector2(point.
X * 16 + 8, point.
Y * 16 + 15 + 16) - vector, player.velocity, player.width, player.height, (
int)player.gravDir) && !flag3 && (
double)point.
Y < Main.worldSurface)
 
   54            {
   55                point.Y += num;
   56                continue;
   57            }
   58            if (tile2.liquid > 0)
   59            {
   60                point.X += crawlOffsetX;
   61                num7++;
   62                continue;
   63            }
   65            {
   66                point.X += crawlOffsetX;
   67                num7++;
   68                continue;
   69            }
   71            {
   72                point.X += crawlOffsetX;
   73                num7++;
   74                continue;
   75            }
   77            {
   78                break;
   79            }
   80            point.Y += num;
   81        }
   82        if (num4 == num5 || num7 >= num8)
   83        {
   84            return false;
   85        }
   87        {
   88            return false;
   89        }
   90        landingPoint = point;
   91        return true;
   92    }
static bool TileIsDangerous(int x, int y)
 
static bool IsInSolidTilesExtended(Vector2 testPosition, Vector2 playerVelocity, int width, int height, int gravDir)