Ejemplo n.º 1
0
 public override void Update(Player player, ref int buffIndex)
 {
     if (ProjCount.GetActiveTitanium() < 8 * Main.ActivePlayersCount)
     {
         Timer++;
         if (Timer > 17)
         {
             Projectile.NewProjectile(player.position, new Vector2(0f, 0f), ModContent.ProjectileType <Projectiles.DefenseKnivesProj.TitaniumDefenseProj>(), 12, 60, player.whoAmI);
             ProjCount.NumActiveTitanium++;
             Timer = 0;
         }
     }
 }
Ejemplo n.º 2
0
        public override void SafeAI()
        {
            Lighting.AddLight(projectile.Center, (255 / 255f), (117 / 255f), (24 / 255f));
            if (!ZenithActive)
            {
                projectile.rotation = projectile.velocity.ToRotation() + MathHelper.ToRadians(SpriteRotation); // projectile faces sprite right
                if (HitTile)
                {
                    projectile.velocity = projectile.velocity * 0.55f;
                    if (HasDoneEffect == false)
                    {
                        HasDoneEffect = true;
                        for (int i = 0; i < 10; i++)
                        {
                            int DustID2 = Dust.NewDust(new Vector2(projectile.position.X, projectile.position.Y), projectile.width - 3, projectile.height - 3, 1, projectile.velocity.X * 0.2f, projectile.velocity.Y * -0.2f, 10, Color.Gray, 1f);
                        }
                    }
                }
            }

            if (Main.rand.Next(1, (int)(200 * (float)Math.Log(10 * ProjCount.GetPumpkinActiveCount()))) == 90)
            {
                for (int i = 0; i < 200; i++)
                {
                    if (Main.npc[i].CanBeChasedBy())
                    {
                        ActiveTargets++;
                        TargetIDs.Add(i);
                        //Main.NewText("ID: " + i);
                    }
                }
                //Main.NewText("ActiveTargets: " + ActiveTargets);
                //Main.NewText("TargetIDs Stored: " + TargetIDs.Count);
                for (int i = 0; i < TargetIDs.Count; i++)
                {
                    //Main.NewText("FinalID: " + TargetIDs[i]);
                    if (!Main.npc[TargetIDs[i]].active)
                    {
                        TargetIDs.RemoveAt(i);
                        i++;
                    }
                    if (Main.rand.Next(1, ActiveTargets) <= 2)
                    {
                        int logicCheckScreenHeight = Main.LogicCheckScreenHeight;
                        int logicCheckScreenWidth  = Main.LogicCheckScreenWidth;
                        int num  = Main.rand.Next(100, 300);
                        int num2 = Main.rand.Next(100, 300);
                        num   = ((Main.rand.Next(2) != 0) ? (num + (logicCheckScreenWidth / 2 - num)) : (num - (logicCheckScreenWidth / 2 + num)));
                        num2  = ((Main.rand.Next(2) != 0) ? (num2 + (logicCheckScreenHeight / 2 - num2)) : (num2 - (logicCheckScreenHeight / 2 + num2)));
                        num  += (int)projectile.position.X;
                        num2 += (int)projectile.position.Y;
                        float   num3   = 40f;
                        Vector2 vector = new Vector2((float)num, (float)num2);
                        float   num4   = Main.npc[TargetIDs[i]].position.X - vector.X;
                        float   num5   = Main.npc[TargetIDs[i]].position.Y - vector.Y;
                        float   num6   = (float)Math.Sqrt((double)(num4 * num4 + num5 * num5));
                        num6  = num3 / num6;
                        num4 *= num6;
                        num5 *= num6;
                        Projectile.NewProjectile((float)num, (float)num2, num4, num5, 321, projectile.damage / 2, projectile.knockBack, projectile.owner, (float)TargetIDs[i], 0f);
                    }
                }
                ActiveTargets = 0;
                TargetIDs.Clear();
            }
            if (HitCount > 4)
            {
                projectile.Kill();
            }
        }