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

◆ AI_047_MagnetSphere_TryAttacking()

void Terraria.Projectile.AI_047_MagnetSphere_TryAttacking ( )
inlineprivate

Definition at line 33832 of file Projectile.cs.

33833 {
33834 int[] array = new int[20];
33835 int num = 0;
33836 float num2 = 300f;
33837 bool flag = false;
33838 float num3 = 0f;
33839 float num4 = 0f;
33840 for (int i = 0; i < 200; i++)
33841 {
33842 if (!Main.npc[i].CanBeChasedBy(this))
33843 {
33844 continue;
33845 }
33846 float num5 = Main.npc[i].position.X + (float)(Main.npc[i].width / 2);
33847 float num6 = Main.npc[i].position.Y + (float)(Main.npc[i].height / 2);
33848 if (Math.Abs(position.X + (float)(width / 2) - num5) + Math.Abs(position.Y + (float)(height / 2) - num6) < num2 && Collision.CanHit(base.Center, 1, 1, Main.npc[i].Center, 1, 1))
33849 {
33850 if (num < 20)
33851 {
33852 array[num] = i;
33853 num++;
33854 num3 = num5;
33855 num4 = num6;
33856 }
33857 flag = true;
33858 }
33859 }
33860 if (timeLeft < 30)
33861 {
33862 flag = false;
33863 }
33864 if (flag)
33865 {
33866 int num7 = Main.rand.Next(num);
33867 num7 = array[num7];
33868 num3 = Main.npc[num7].position.X + (float)(Main.npc[num7].width / 2);
33869 num4 = Main.npc[num7].position.Y + (float)(Main.npc[num7].height / 2);
33870 localAI[0] += 1f;
33871 if (localAI[0] > 8f)
33872 {
33873 localAI[0] = 0f;
33874 Vector2 vector = new Vector2(position.X + (float)width * 0.5f, position.Y + (float)height * 0.5f);
33875 vector += velocity * 4f;
33876 float num8 = num3 - vector.X;
33877 float num9 = num4 - vector.Y;
33878 float num10 = (float)Math.Sqrt(num8 * num8 + num9 * num9);
33879 num10 = 6f / num10;
33880 num8 *= num10;
33881 num9 *= num10;
33883 }
33884 }
33885 }
static double Sqrt(double d)
static double Abs(double value)
Vector2 velocity
Definition Entity.cs:16
Vector2 position
Definition Entity.cs:14
IEntitySource GetProjectileSource_FromThis()
static int NewProjectile(IEntitySource spawnSource, Vector2 position, Vector2 velocity, int Type, int Damage, float KnockBack, int Owner=-1, float ai0=0f, float ai1=0f, float ai2=0f)

References System.Math.Abs(), System.array, Terraria.Collision.CanHit(), Terraria.Main.npc, Terraria.Main.rand, System.Math.Sqrt(), Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.