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