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 OnHitNPCSecond(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer, OrchidModAlchemistNPC modTarget, OrchidModGlobalNPC modTargetGlobal, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { if (!(target.boss || target.type == NPCID.TargetDummy) && target.knockBackResist > 0f) { target.AddBuff(mod.BuffType("SlimeSlow"), 90 * (alchProj.nbElements * 2)); } 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.SlimeBubbleLava>(); 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); } if (modTarget.alchemistFire > 0) { int nb = Main.rand.Next(3) + 3; int dmg = (int)(getSecondaryDamage(player, modPlayer, alchProj.nbElements) * 1.5); int proj = ProjectileType <Alchemist.Projectiles.Fire.HellSlimeFlaskProj>(); for (int i = 0; i < nb; i++) { Vector2 perturbedSpeed = projectile.velocity.RotatedByRandom(MathHelper.ToRadians(15)) * 0.75f; Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, perturbedSpeed.X, perturbedSpeed.Y, proj, dmg, 1f, projectile.owner); } } }
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) { int dmg = getSecondaryDamage(player, modPlayer, alchProj.nbElements + 5); int proj = ProjectileType <Alchemist.Projectiles.Reactive.LivingSapBubble>(); 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 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 OnHitNPCSecond(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer, OrchidModAlchemistNPC modTarget, OrchidModGlobalNPC modTargetGlobal, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { if (alchProj.fireFlask.type != 0) { int dmg = getSecondaryDamage(player, modPlayer, alchProj.nbElements); modTarget.spreadOilFire(target.Center, dmg, Main.player[projectile.owner]); Main.PlaySound(2, (int)target.position.X, (int)target.position.Y, 45); } int rand = alchProj.nbElements; rand += alchProj.hasCloud() ? 2 : 0; if (Main.rand.Next(6) < rand && !alchProj.noCatalyticSpawn) { int dmg = 0; int proj = ProjectileType <Alchemist.Projectiles.Reactive.OilBubble>(); 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 OnHitNPCSecond(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer, OrchidModAlchemistNPC modTarget, OrchidModGlobalNPC modTargetGlobal, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { if (!(target.boss || target.type == NPCID.TargetDummy) && target.knockBackResist > 0f) { target.AddBuff(mod.BuffType("SlimeSlow"), 90 * (alchProj.nbElements * 2)); } int rand = alchProj.nbElements; rand += alchProj.hasCloud() ? 2 : 0; rand += player.HasBuff(BuffType <Alchemist.Buffs.KingSlimeFlaskBuff>()) ? 2 : 0; if (Main.rand.Next(10) < rand && !alchProj.noCatalyticSpawn) { int dmg = getSecondaryDamage(player, modPlayer, alchProj.nbElements); dmg += player.HasBuff(BuffType <Alchemist.Buffs.KingSlimeFlaskBuff>()) ? 5 : 0; int proj = ProjectileType <Alchemist.Projectiles.Reactive.SlimeBubble>(); 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); } }