Exemplo n.º 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);
            }
        }
Exemplo n.º 2
0
        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);
                    }
                }
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 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;

            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);
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
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);
            }
        }
Exemplo n.º 8
0
        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);
            }
        }
Exemplo n.º 9
0
        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;
            }
        }
Exemplo n.º 10
0
        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);
                }
            }
        }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
        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);
                }
            }
        }