Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RequestMagicConchTeleportPosition()

static bool Terraria.GameContent.TeleportHelpers.RequestMagicConchTeleportPosition ( Player player,
int crawlOffsetX,
int startX,
out Point landingPoint )
inlinestatic

Definition at line 7 of file TeleportHelpers.cs.

8 {
9 landingPoint = default(Point);
10 Point point = new Point(startX, 50);
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 }
64 if (TileIsDangerous(point.X, point.Y))
65 {
66 point.X += crawlOffsetX;
67 num7++;
68 continue;
69 }
70 if (TileIsDangerous(point.X, point.Y + num3))
71 {
72 point.X += crawlOffsetX;
73 num7++;
74 continue;
75 }
76 if (point.Y >= num6)
77 {
78 break;
79 }
80 point.Y += num;
81 }
82 if (num4 == num5 || num7 >= num8)
83 {
84 return false;
85 }
86 if (!WorldGen.InWorld(point.X, point.Y, 40))
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)

References Terraria.Player.gravDir, Terraria.Entity.height, Terraria.WorldGen.InWorld(), Terraria.GameContent.TeleportHelpers.IsInSolidTilesExtended(), Terraria.Tile.liquid, Terraria.WorldGen.SolidOrSlopedTile(), Terraria.Main.tile, Terraria.GameContent.TeleportHelpers.TileIsDangerous(), Terraria.Entity.velocity, Terraria.Entity.width, Terraria.Main.worldSurface, Microsoft.Xna.Framework.Point.X, and Microsoft.Xna.Framework.Point.Y.

Referenced by Terraria.Player.MagicConch().