public override void AI()
 {
     if (projectile.timeLeft == 10)
     {
         for (int k = 0; k < Main.maxNPCs; k++)
         {
             NPC i = Main.npc[k];
             if (i.active && !i.boss && !i.dontTakeDamage && !i.friendly && Collision.CanHit(i.Center, 0, 0, projectile.Center, 0, 0))
             {
                 if (Vector2.Distance(i.Center, projectile.Center) < 200f)
                 {
                     i.immune[projectile.owner] = 0;
                     i.AddBuff(ModContent.BuffType <Buffs.DragonRot>(), 1800);
                 }
             }
         }
         Main.PlaySound(SoundID.Item62, projectile.position);
         projectile.Size      = new Vector2(400);
         projectile.position -= new Vector2(50);
         float RandRotate = Main.rand.NextFloat(0, 9);
         for (int i = 0; i < 40; i++)
         {
             Projectile.NewProjectile(projectile.Center, new Vector2(0, 10f).RotatedBy(MathHelper.ToRadians(9) * i).RotatedBy(MathHelper.ToRadians(RandRotate)), ModContent.ProjectileType <DraconicFireball>(), projectile.damage / 2, projectile.knockBack, projectile.owner);
         }
         for (int k = 0; k < 50; k++)
         {
             KeyUtils.NewDustCircular(out int Flame, projectile.Center, Vector2.Zero, ModContent.DustType <Dusts.DraconicFlame>(), 20, perfect: true);
             Main.dust[Flame].scale *= 3.75f;
         }
     }
     else if (projectile.timeLeft > 10)
     {
         KeyUtils.NewDustCircular(out int Flame, projectile.Center, Vector2.Zero, ModContent.DustType <Dusts.DraconicFlame>(), Main.rand.NextFloat(2.5f, 5f));
         Main.dust[Flame].scale *= .75f;
         if (Main.rand.NextBool())
         {
             Main.dust[Flame].velocity *= 1.5f;
         }
         for (int k = 0; k < Main.rand.Next(5, 10); k++)
         {
             if (!Main.rand.NextBool(3))
             {
                 KeyUtils.NewDustConverge(out Flame, projectile.Center, Vector2.Zero, 150, ModContent.DustType <Dusts.DraconicFlame>(), scale: 2f);
             }
             else
             {
                 KeyUtils.NewDustConverge(out int Debris, projectile.Center, Vector2.Zero, Main.rand.NextFloat(150f, 300f), ModContent.DustType <Dusts.DraconicFlame>(), scale: Main.rand.NextFloat(1.5f, 2.5f));
             }
         }
         for (int k = 0; k < Main.maxNPCs; k++)
         {
             NPC i = Main.npc[k];
             if (i.active && !i.boss && !i.dontTakeDamage && !i.friendly && Collision.CanHit(i.Center, 0, 0, projectile.Center, 0, 0))
             {
                 if (Vector2.Distance(i.Center, projectile.Center) < 300f && i.knockBackResist > 0)
                 {
                     Vector2 vTo = KeyUtils.VectorTo(i.Center, projectile.Center);
                     KeyUtils.AdjustMagnitude(ref vTo, 30f * (i.knockBackResist < .5f ? .5f : i.knockBackResist));
                     i.velocity = (10 * i.velocity + vTo) / 11f;
                     KeyUtils.AdjustMagnitude(ref i.velocity, 30f * (i.knockBackResist < .5f ? .5f : i.knockBackResist));
                 }
                 if (Vector2.Distance(i.Center, projectile.Center) < 150f)
                 {
                     i.AddBuff(ModContent.BuffType <Buffs.DragonRot>(), 10);
                 }
             }
         }
     }
 }