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

◆ AI_123_Deerclops_TryMakingSpike_FindBestY()

int Terraria.NPC.AI_123_Deerclops_TryMakingSpike_FindBestY ( ref Point sourceTileCoords,
int x )
inlineprivate

Definition at line 37703 of file NPC.cs.

37704 {
37705 int num = sourceTileCoords.Y;
37707 if (!targetData.Invalid)
37708 {
37709 Rectangle hitbox = targetData.Hitbox;
37710 Vector2 vector = new Vector2(hitbox.Center.X, hitbox.Bottom);
37711 int num2 = (int)(vector.Y / 16f);
37712 int num3 = Math.Sign(num2 - num);
37713 int num4 = num2 + num3 * 15;
37714 int? num5 = null;
37715 float num6 = float.PositiveInfinity;
37716 for (int i = num; i != num4; i += num3)
37717 {
37718 if (WorldGen.ActiveAndWalkableTile(x, i))
37719 {
37720 float num7 = new Point(x, i).ToWorldCoordinates().Distance(vector);
37721 if (!num5.HasValue || !(num7 >= num6))
37722 {
37723 num5 = i;
37724 num6 = num7;
37725 }
37726 }
37727 }
37728 if (num5.HasValue)
37729 {
37730 num = num5.Value;
37731 }
37732 }
37733 for (int j = 0; j < 20; j++)
37734 {
37735 if (num < 10)
37736 {
37737 break;
37738 }
37739 if (!WorldGen.SolidTile(x, num))
37740 {
37741 break;
37742 }
37743 num--;
37744 }
37745 for (int k = 0; k < 20; k++)
37746 {
37747 if (num > Main.maxTilesY - 10)
37748 {
37749 break;
37750 }
37751 if (WorldGen.ActiveAndWalkableTile(x, num))
37752 {
37753 break;
37754 }
37755 num++;
37756 }
37757 return num;
37758 }
static int Sign(decimal value)
Definition Math.cs:1202
NPCAimedTarget GetTargetData(bool ignorePlayerTankPets=true)
Definition NPC.cs:864

References Terraria.WorldGen.ActiveAndWalkableTile(), Terraria.NPC.GetTargetData(), Terraria.Main.maxTilesY, Microsoft.Xna.Framework.Graphics.Point, System.Math.Sign(), Terraria.WorldGen.SolidTile(), and Microsoft.Xna.Framework.Graphics.Vector2.

Referenced by Terraria.NPC.AI_123_Deerclops_TryMakingSpike().