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

◆ GetFairyTreasureCoords()

bool Terraria.NPC.GetFairyTreasureCoords ( out Point treasureCoords)
inlineprivate

Definition at line 41935 of file NPC.cs.

41936 {
41937 treasureCoords = default(Point);
41938 Point point = base.Center.ToTileCoordinates();
41939 Rectangle value = new Rectangle(point.X, point.Y, 1, 1);
41940 value.Inflate(75, 50);
41941 int num = 40;
41942 Rectangle value2 = new Rectangle(0, 0, Main.maxTilesX, Main.maxTilesY);
41943 value2.Inflate(-num, -num);
41945 int num2 = -1;
41946 float num3 = -1f;
41947 for (int i = value.Left; i <= value.Right; i++)
41948 {
41949 for (int j = value.Top; j <= value.Bottom; j++)
41950 {
41951 Tile tile = Main.tile[i, j];
41952 if (tile == null || !tile.active() || !TileID.Sets.FriendlyFairyCanLureTo[tile.type] || !SceneMetrics.IsValidForOreFinder(tile))
41953 {
41954 continue;
41955 }
41956 short num4 = Main.tileOreFinderPriority[tile.type];
41957 if (TileID.Sets.Ore[tile.type])
41958 {
41959 int num5 = 3;
41960 int num6 = 3;
41961 int num7 = 40;
41962 int num8 = 0;
41963 for (int k = i - num5; k <= i + num5; k++)
41964 {
41965 for (int l = j - num6; l <= j + num6; l++)
41966 {
41967 if (Main.tile[k, l].active() && Main.tile[k, l].type == tile.type)
41968 {
41969 num8++;
41970 }
41971 }
41972 }
41973 if (num8 < num7)
41974 {
41975 num4 = -1;
41976 }
41977 }
41978 if (num2 <= num4)
41979 {
41980 float num9 = Distance(new Vector2(i * 16 + 8, j * 16 + 8));
41981 if (num2 != num4 || !(num9 >= num3))
41982 {
41983 num2 = num4;
41984 num3 = num9;
41985 treasureCoords.X = i;
41986 treasureCoords.Y = j;
41987 }
41988 }
41989 }
41990 }
41991 return num2 != -1;
41992 }
float Distance(Vector2 Other)
Definition Entity.cs:187
static bool[] FriendlyFairyCanLureTo
Definition TileID.cs:303
static bool[] Ore
Definition TileID.cs:295
float value
Definition NPC.cs:523
static Rectangle Intersect(Rectangle value1, Rectangle value2)
Definition Rectangle.cs:143

References Terraria.Tile.active(), Terraria.Entity.Distance(), Terraria.ID.TileID.Sets.FriendlyFairyCanLureTo, Microsoft.Xna.Framework.Rectangle.Intersect(), Terraria.SceneMetrics.IsValidForOreFinder(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.ID.TileID.Sets.Ore, Terraria.Main.tile, Terraria.Main.tileOreFinderPriority, Terraria.Tile.type, Terraria.NPC.value, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Point.X, and Microsoft.Xna.Framework.Point.Y.

Referenced by Terraria.NPC.AI_112_FairyCritter().