public override void KillSecond(int timeLeft, Player player, OrchidModPlayer modPlayer, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { int nb = 2 + Main.rand.Next(2); for (int i = 0; i < nb; i++) { Vector2 vel = (new Vector2(0f, -(float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(90))); int spawnProj = alchProj.natureFlask.type == ItemType <Alchemist.Weapons.Nature.PoisonVial>() ? ProjectileType <Alchemist.Projectiles.Nature.PoisonVialProjAlt>() : ProjectileType <Alchemist.Projectiles.Water.SeafoamVialProjAlt>(); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, spawnProj, 0, 0f, projectile.owner); } int dmg = getSecondaryDamage(player, modPlayer, alchProj.nbElements); int shoot = ProjectileType <Alchemist.Projectiles.Water.SeafoamVialProj>(); if (alchProj.natureFlask.type == ItemType <Alchemist.Weapons.Nature.PoisonVial>()) { dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, alchProj.natureFlask.type, alchProj.nbElements); shoot = ProjectileType <Alchemist.Projectiles.Nature.PoisonVialProj>(); } nb = alchProj.hasCloud() ? 2 : 1; for (int i = 0; i < nb; i++) { Vector2 vel = (new Vector2(0f, -2.5f).RotatedByRandom(MathHelper.ToRadians(30))); vel *= (float)(1 - (Main.rand.Next(10) / 10)); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, shoot, dmg, 0.5f, projectile.owner); } }
public override void KillSecond(int timeLeft, Player player, OrchidModPlayer modPlayer, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { if (alchProj.fireFlask.type != 0) { int type = ProjectileType <Alchemist.Projectiles.Water.SlimeFlaskProj>(); int dmg = getSecondaryDamage(player, modPlayer, alchProj.nbElements); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, 0f, 0f, type, dmg, 0.5f, projectile.owner); OrchidModProjectile.spawnDustCircle(projectile.Center, 6, 10, 10, true, 1f, 1f, 5f, true, true, false, 0, 0, true); OrchidModProjectile.spawnDustCircle(projectile.Center, 6, 10, 10, true, 1.5f, 1f, 2f, true, true, false, 0, 0, true); Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 45); if (player.HasBuff(BuffType <Alchemist.Buffs.SlimeFlaskBuff>())) { int nb = 2 + Main.rand.Next(3); for (int i = 0; i < nb; i++) { Vector2 vel = (new Vector2(0f, -(float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(80))); int spawnProj = ProjectileType <Alchemist.Projectiles.Fire.EmberVialProjAlt>(); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, spawnProj, 0, 0f, projectile.owner); } int itemType = ItemType <Alchemist.Weapons.Fire.EmberVial>(); int dmgAlt = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, alchProj.nbElements, true); int rand = alchProj.nbElements + Main.rand.Next(2); for (int i = 0; i < rand; i++) { Vector2 vel = (new Vector2(0f, -3f).RotatedByRandom(MathHelper.ToRadians(60))); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, ProjectileType <Alchemist.Projectiles.Fire.EmberVialProj>(), dmgAlt, 0f, projectile.owner); } } } }
public override void Update(Player player, ref int buffIndex) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (modPlayer.timer120 % 60 == 0 && player.velocity.X != 0f) { int projType = ProjectileType <Alchemist.Projectiles.Water.BloodMoonFlaskProj>(); int itemType = ItemType <Alchemist.Weapons.Water.BloodMoonFlask>(); int damage = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, 2, true); Projectile.NewProjectile(player.Center.X, player.Center.Y, 0f, 0f, projType, damage, 1f, player.whoAmI); } }
public override void OnHitNPCSecond(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer, OrchidModAlchemistNPC modTarget, OrchidModGlobalNPC modTargetGlobal, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { int rand = alchProj.nbElements; if (Main.rand.Next(10) < rand) { int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, alchProj.nbElements); int proj = ProjectileType <Alchemist.Projectiles.Reactive.AlchemistHive>(); Vector2 perturbedSpeed = new Vector2(0f, -5f).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, perturbedSpeed.X, perturbedSpeed.Y, proj, dmg, 0f, projectile.owner); } }
public override void Reaction(Player player, OrchidModPlayer modPlayer) { for (int i = 0; i < 10; i++) { int alpha = 175; Color newColor = new Color(0, 80, (int)byte.MaxValue, 100); int dust = Dust.NewDust(player.Center, 10, 10, 4, 0.0f, 0.0f, alpha, newColor, 1.2f); Main.dust[dust].velocity *= 1.5f; Main.dust[dust].scale *= 1f; } int itemType = ItemType <Alchemist.Weapons.Water.DungeonFlask>(); int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, 4, true); int spawnProj = ProjectileType <Alchemist.Projectiles.Reactive.SpiritedBubble>(); Projectile.NewProjectile(player.Center.X, player.Center.Y, 0f, -5f, spawnProj, dmg, 0f, player.whoAmI); }
public override void Reaction(Player player, OrchidModPlayer modPlayer) { int itemType = ItemType <Alchemist.Weapons.Nature.PoisonVial>(); int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, 4, true); for (int i = 0; i < 7; i++) { int spawnProj = Main.rand.Next(2) == 0 ? ProjectileType <Alchemist.Projectiles.Water.SeafoamVialProj>() : ProjectileType <Alchemist.Projectiles.Nature.PoisonVialProj>(); Projectile.NewProjectile(player.Center.X - 120 + i * 40, player.Center.Y, 0f, -(float)(3 + Main.rand.Next(4)) * 0.5f, spawnProj, dmg, 0f, player.whoAmI); } for (int i = 0; i < 11; i++) { Vector2 vel = (new Vector2(0f, -(float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(10))); int spawnProj = Main.rand.Next(2) == 0 ? ProjectileType <Alchemist.Projectiles.Water.SeafoamVialProjAlt>() : ProjectileType <Alchemist.Projectiles.Nature.PoisonVialProjAlt>(); Projectile.NewProjectile(player.Center.X - 150 + i * 30, player.Center.Y, vel.X, vel.Y, spawnProj, 0, 0f, player.whoAmI); } }
public override void OnHitNPCSecond(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer, OrchidModAlchemistNPC modTarget, OrchidModGlobalNPC modTargetGlobal, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { int rand = alchProj.nbElements; rand += alchProj.hasCloud() ? 2 : 0; if (Main.rand.Next(10) < rand && !alchProj.noCatalyticSpawn) { int dmg = getSecondaryDamage(player, modPlayer, alchProj.nbElements); int proj = ProjectileType <Alchemist.Projectiles.Reactive.SeafoamBubble>(); if (alchProj.natureFlask.type == ItemType <Alchemist.Weapons.Nature.PoisonVial>()) { dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, alchProj.natureFlask.type, alchProj.nbElements); proj = ProjectileType <Alchemist.Projectiles.Reactive.PoisonBubble>(); } Vector2 perturbedSpeed = new Vector2(0f, -5f).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, perturbedSpeed.X, perturbedSpeed.Y, proj, dmg, 0f, projectile.owner); } }
public override void Reaction(Player player, OrchidModPlayer modPlayer) { int itemType = ItemType <Alchemist.Weapons.Nature.SunflowerFlask>(); int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, 4, true); int nb = 5 + Main.rand.Next(4); for (int i = 0; i < 5; i++) { Vector2 vel = (new Vector2(0f, -5f).RotatedByRandom(MathHelper.ToRadians(10)).RotatedBy(MathHelper.ToRadians(-40 + (20 * i)))); Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, ProjectileType <Alchemist.Projectiles.Nature.SunflowerFlaskProj1>(), dmg, 0f, player.whoAmI); } for (int i = 0; i < nb; i++) { Vector2 vel = (new Vector2(0f, (float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(180))); int spawnProj = ProjectileType <Alchemist.Projectiles.Nature.SunflowerFlaskProj4>(); Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, spawnProj, 0, 0f, player.whoAmI); } }
public override void Update(Player player, ref int buffIndex) { OrchidModProjectile.spawnDustCircle(player.Center, 261, 1, 1, true, 1.5f, 1f, 16f, true, true, false, 0, 0, true); OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (modPlayer.alchemistLastAttackDelay > 60) { int range = 100; int projType = ProjectileType <Alchemist.Projectiles.Water.IceChestFlaskProj>(); int itemType = ItemType <Alchemist.Weapons.Water.IceChestFlask>(); int damage = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, 2, true); int newProjectileInt = Projectile.NewProjectile(player.Center.X, player.Center.Y, 0f, 0f, projType, damage, 0f, player.whoAmI); Projectile newProjectile = Main.projectile[newProjectileInt]; newProjectile.width = range * 2; newProjectile.height = range * 2; newProjectile.position.X = player.Center.X - (newProjectile.width / 2); newProjectile.position.Y = player.Center.Y - (newProjectile.width / 2); newProjectile.netUpdate = true; } }
public override void Reaction(Player player, OrchidModPlayer modPlayer) { int itemType = ItemType <Alchemist.Weapons.Air.DeathweedFlask>(); int itemType2 = ItemType <Alchemist.Weapons.Air.ShiverthornFlask>(); itemType = OrchidModAlchemistHelper.containsAlchemistFlask(itemType, player, modPlayer) ? itemType : itemType2; int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, 4, true); for (int i = 0; i < 10; i++) { Vector2 vel = (new Vector2(0f, -5f).RotatedBy(MathHelper.ToRadians(Main.rand.Next(360)))); int spawnProj = ProjectileType <Alchemist.Projectiles.Air.AirSporeProj>(); int spawnProj2 = Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, spawnProj, dmg, 0f, player.whoAmI); Main.projectile[spawnProj2].localAI[1] = 1f; } int nb = 4 + Main.rand.Next(3); for (int i = 0; i < nb; i++) { Vector2 vel = (new Vector2(0f, (float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(180))); int spawnProj = ProjectileType <Alchemist.Projectiles.Air.AirSporeProjAlt>(); Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, spawnProj, 0, 0f, player.whoAmI); } if (OrchidModAlchemistHelper.containsAlchemistFlask(ItemType <Alchemist.Weapons.Nature.GlowingAttractiteFlask>(), player, modPlayer)) { for (int i = 0; i < 5; i++) { Vector2 vel = (new Vector2(0f, -5f).RotatedBy(MathHelper.ToRadians(Main.rand.Next(360)))); int spawnProj = ProjectileType <Alchemist.Projectiles.Nature.NatureSporeProj>(); int spawnProj2 = Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, spawnProj, dmg, 0f, player.whoAmI); Main.projectile[spawnProj2].localAI[1] = 1f; } for (int i = 0; i < 2; i++) { Vector2 vel = (new Vector2(0f, (float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(180))); int spawnProj = ProjectileType <Alchemist.Projectiles.Nature.NatureSporeProjAlt>(); Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, spawnProj, 0, 0f, player.whoAmI); } } }
public override void Reaction(Player player, OrchidModPlayer modPlayer) { int itemType = ItemType <Alchemist.Weapons.Air.QueenBeeFlask>(); int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, 4, true); for (int i = 0; i < 10; i++) { Vector2 vel = (new Vector2(0f, -(float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(80))); if (player.strongBees && Main.rand.Next(2) == 0) { Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, 566, (int)(dmg * 1.15f), 0f, player.whoAmI); } else { Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, 181, dmg, 0f, player.whoAmI); } } for (int i = 0; i < 10; i++) { Vector2 vel = (new Vector2(0f, (float)(3 + Main.rand.Next(4))).RotatedByRandom(MathHelper.ToRadians(80))); int spawnProj = ProjectileType <Alchemist.Projectiles.Air.QueenBeeFlaskProj>(); Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, spawnProj, 0, 0f, player.whoAmI); } }
public void KillSecond(int timeLeft, Player player, OrchidModPlayer modPlayer) { if (this.fireFlaskGlobal != null) { fireFlaskGlobal.killSecondDelegate(timeLeft, player, modPlayer, this, projectile, this.fireFlaskGlobal); } if (this.waterFlaskGlobal != null) { waterFlaskGlobal.killSecondDelegate(timeLeft, player, modPlayer, this, projectile, this.waterFlaskGlobal); } if (this.natureFlaskGlobal != null) { natureFlaskGlobal.killSecondDelegate(timeLeft, player, modPlayer, this, projectile, this.natureFlaskGlobal); } if (this.airFlaskGlobal != null) { airFlaskGlobal.killSecondDelegate(timeLeft, player, modPlayer, this, projectile, this.airFlaskGlobal); } if (this.lightFlaskGlobal != null) { lightFlaskGlobal.killSecondDelegate(timeLeft, player, modPlayer, this, projectile, this.lightFlaskGlobal); } if (this.darkFlaskGlobal != null) { darkFlaskGlobal.killSecondDelegate(timeLeft, player, modPlayer, this, projectile, this.darkFlaskGlobal); } if (this.nbElements > 2 && player.HasBuff(BuffType <Alchemist.Buffs.QueenBeeFlaskBuff>())) { int itemType = ItemType <QueenBeeFlask>(); int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, this.nbElements, true); int rand = this.nbElements + Main.rand.Next(3); for (int i = 0; i < rand; i++) { Vector2 vel = (new Vector2(0f, -5f).RotatedByRandom(MathHelper.ToRadians(80))); if (player.strongBees && Main.rand.Next(2) == 0) { Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, 566, (int)(dmg * 1.15f), 0f, player.whoAmI, 0f, 0f); } else { Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, 181, dmg, 0f, player.whoAmI, 0f, 0f); } } } if (player.HasBuff(BuffType <Alchemist.Buffs.SpiritedWaterBuff>())) { int spawnProj = ProjectileType <Alchemist.Projectiles.Water.DungeonFlaskProj>(); int itemType = ItemType <DungeonFlask>(); int dmg = OrchidModAlchemistHelper.getSecondaryDamage(player, modPlayer, itemType, this.nbElements, true); for (int i = 0; i < this.nbElements; i++) { Vector2 vel = (new Vector2(0f, -5f).RotatedByRandom(MathHelper.ToRadians(180))); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, spawnProj, dmg, 0f, projectile.owner); } } }