Terraria.Projectile.ghostHurt C# (CSharp) Method

ghostHurt() public method

public ghostHurt ( int dmg, Vector2 Position ) : void
dmg int
Position Vector2
return void
        public void ghostHurt(int dmg, Vector2 Position)
        {
            if (!magic)
                return;
            int Damage = damage / 2;
            if (dmg / 2 <= 1)
                return;
            int num1 = 1000;
            if (Main.player[Main.myPlayer].ghostDmg > num1)
                return;
            Main.player[Main.myPlayer].ghostDmg += Damage;
            int[] numArray = new int[200];
            int maxValue1 = 0;
            int maxValue2 = 0;
            for (int index = 0; index < 200; ++index)
            {
                if (Main.npc[index].CanBeChasedBy(this, false))
                {
                    float num2 = Math.Abs(Main.npc[index].position.X + (Main.npc[index].width / 2) - position.X + (width / 2)) + Math.Abs(Main.npc[index].position.Y + (Main.npc[index].height / 2) - position.Y + (height / 2));
                    if (num2 < 800.0)
                    {
                        if (Collision.CanHit(position, 1, 1, Main.npc[index].position, Main.npc[index].width, Main.npc[index].height) && num2 > 50.0)
                        {
                            numArray[maxValue2] = index;
                            ++maxValue2;
                        }
                        else if (maxValue2 == 0)
                        {
                            numArray[maxValue1] = index;
                            ++maxValue1;
                        }
                    }
                }
            }
            if (maxValue1 == 0 && maxValue2 == 0)
                return;
            int ai0 = maxValue2 <= 0 ? numArray[Main.rand.Next(maxValue1)] : numArray[Main.rand.Next(maxValue2)];
            float num4 = 4f;
            float num5 = Main.rand.Next(-100, 101);
            float num6 = Main.rand.Next(-100, 101);
            float num7 = (float)Math.Sqrt(num5 * num5 + num6 * num6);
            float num8 = num4 / num7;
            float SpeedX = num5 * num8;
            float SpeedY = num6 * num8;
            NewProjectile(Position.X, Position.Y, SpeedX, SpeedY, 356, Damage, 0.0f, owner, ai0, 0.0f);
        }