Terraria.Player.SporeSac C# (CSharp) Method

SporeSac() private method

private SporeSac ( ) : void
return void
        private void SporeSac()
        {
            int Damage = 70;
            float KnockBack = 1.5f;
            if (Main.rand.Next(15) != 0)
                return;
            int num1 = 0;
            for (int index = 0; index < 1000; ++index)
            {
                if (Main.projectile[index].active && Main.projectile[index].owner == this.whoAmI && (Main.projectile[index].type == 567 || Main.projectile[index].type == 568))
                    ++num1;
            }
            if (Main.rand.Next(15) < num1 || num1 >= 10)
                return;
            int num2 = 50;
            int num3 = 24;
            int num4 = 90;
            for (int index1 = 0; index1 < num2; ++index1)
            {
                int num5 = Main.rand.Next(200 - index1 * 2, 400 + index1 * 2);
                Vector2 center = this.Center;
                center.X += (float)Main.rand.Next(-num5, num5 + 1);
                center.Y += (float)Main.rand.Next(-num5, num5 + 1);
                if (!Collision.SolidCollision(center, num3, num3) && !Collision.WetCollision(center, num3, num3))
                {
                    center.X += (float)(num3 / 2);
                    center.Y += (float)(num3 / 2);
                    if (Collision.CanHit(new Vector2(this.Center.X, this.position.Y), 1, 1, center, 1, 1) || Collision.CanHit(new Vector2(this.Center.X, this.position.Y - 50f), 1, 1, center, 1, 1))
                    {
                        int index2 = (int)center.X / 16;
                        int index3 = (int)center.Y / 16;
                        bool flag = false;
                        if (Main.rand.Next(3) == 0 && Main.tile[index2, index3] != null && (int)Main.tile[index2, index3].wall > 0)
                        {
                            flag = true;
                        }
                        else
                        {
                            center.X -= (float)(num4 / 2);
                            center.Y -= (float)(num4 / 2);
                            if (Collision.SolidCollision(center, num4, num4))
                            {
                                center.X += (float)(num4 / 2);
                                center.Y += (float)(num4 / 2);
                                flag = true;
                            }
                        }
                        if (flag)
                        {
                            for (int index4 = 0; index4 < 1000; ++index4)
                            {
                                if (Main.projectile[index4].active && Main.projectile[index4].owner == this.whoAmI && Main.projectile[index4].aiStyle == 105 && (double)(center - Main.projectile[index4].Center).Length() < 48.0)
                                {
                                    flag = false;
                                    break;
                                }
                            }
                            if (flag)
                            {
                                Projectile.NewProjectile(center.X, center.Y, 0.0f, 0.0f, 567 + Main.rand.Next(2), Damage, KnockBack, this.whoAmI, 0.0f, 0.0f);
                                break;
                            }
                        }
                    }
                }
            }
        }
Player