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

◆ AI_130_FlameBurstTower_FindTarget()

int Terraria.Projectile.AI_130_FlameBurstTower_FindTarget ( float shot_range,
float angleRatioMax,
Vector2 shootingSpot,
bool canChangeDirection = true )
inlineprivate

Definition at line 57654 of file Projectile.cs.

57655 {
57656 int num = -1;
57658 if (ownerMinionAttackTargetNPC != null && ownerMinionAttackTargetNPC.CanBeChasedBy(this))
57659 {
57660 for (int i = 0; i < 1; i++)
57661 {
57662 if (!ownerMinionAttackTargetNPC.CanBeChasedBy(this))
57663 {
57664 continue;
57665 }
57667 if (!(num2 > shot_range))
57668 {
57669 Vector2 vector = (ownerMinionAttackTargetNPC.Center - shootingSpot).SafeNormalize(Vector2.UnitY);
57670 if (!(Math.Abs(vector.X) < Math.Abs(vector.Y) * angleRatioMax) && (canChangeDirection || !((float)direction * vector.X < 0f)) && (num == -1 || num2 < Vector2.Distance(shootingSpot, Main.npc[num].Center)) && Collision.CanHitLine(shootingSpot, 0, 0, ownerMinionAttackTargetNPC.Center, 0, 0))
57671 {
57672 num = ownerMinionAttackTargetNPC.whoAmI;
57673 }
57674 }
57675 }
57676 if (num != -1)
57677 {
57678 return num;
57679 }
57680 }
57681 for (int j = 0; j < 200; j++)
57682 {
57683 NPC nPC = Main.npc[j];
57684 if (!nPC.CanBeChasedBy(this))
57685 {
57686 continue;
57687 }
57688 float num3 = Vector2.Distance(shootingSpot, nPC.Center);
57689 if (!(num3 > shot_range))
57690 {
57691 Vector2 vector2 = (nPC.Center - shootingSpot).SafeNormalize(Vector2.UnitY);
57692 if (!(Math.Abs(vector2.X) < Math.Abs(vector2.Y) * angleRatioMax) && (canChangeDirection || !((float)direction * vector2.X < 0f)) && (num == -1 || num3 < Vector2.Distance(shootingSpot, Main.npc[num].Center)) && Collision.CanHitLine(shootingSpot, 0, 0, nPC.Center, 0, 0))
57693 {
57694 num = j;
57695 }
57696 }
57697 }
57698 return num;
57699 }
static double Abs(double value)
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References System.Math.Abs(), Terraria.Collision.CanHitLine(), Microsoft.Xna.Framework.Vector2.Distance(), Terraria.Main.npc, and Microsoft.Xna.Framework.Vector2.UnitY.