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;
}
}
}
}
}
}