示例#1
0
        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);
            }
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
            }
        }