Esempio n. 1
0
        public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            OrchidModPlayer modPlayer  = player.GetModPlayer <OrchidModPlayer>();
            int             BuffsCount = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            BuffsCount -= BuffsCount > 0 ? 1 : 0;

            float  spread      = 1f * 0.0574f;
            float  baseSpeed   = (float)Math.Sqrt(speedX * speedX + speedY * speedY);
            double startAngle  = Math.Atan2(speedX, speedY) - spread;
            double deltaAngle  = spread;
            double offsetAngle = startAngle - deltaAngle * 5;

            if (BuffsCount > 3)
            {
                offsetAngle -= deltaAngle * 4;
            }
            int i;

            for (i = 0; i < BuffsCount; i++)
            {
                offsetAngle += deltaAngle * 4;
                this.NewShamanProjectile(position.X, position.Y, baseSpeed * (float)Math.Sin(offsetAngle), baseSpeed * (float)Math.Cos(offsetAngle), mod.ProjectileType("TerraSpecterProj"), (int)(item.damage * 0.55), knockBack, item.owner);
            }
            return(true);
        }
Esempio n. 2
0
        public override void UpdateInventory(Player player)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            switch (nbBonds)
            {
            case 0:
                item.useTime = 60;
                break;

            case 1:
                item.useTime = 30;
                break;

            case 2:
                item.useTime = 20;
                break;

            case 3:
                item.useTime = 15;
                break;

            case 4:
                item.useTime = 12;
                break;

            case 5:
                item.useTime = 10;
                break;
            }
        }
Esempio n. 3
0
        public override void SafeModifyWeaponDamage(Player player, ref float add, ref float mult, ref float flat)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            mult *= modPlayer.shamanDamage + (nbBonds * 0.1f);
        }
Esempio n. 4
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 0)
            {
                if (modPlayer.orbCountSmall == 0 && modPlayer.shamanOrbSmall != ShamanOrbSmall.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbSmall = ShamanOrbSmall.NULL;
                }

                if (modPlayer.orbCountBig == 0 && modPlayer.shamanOrbBig != ShamanOrbBig.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbBig = ShamanOrbBig.NULL;
                }

                if (modPlayer.orbCountLarge == 0 && modPlayer.shamanOrbLarge != ShamanOrbLarge.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbLarge = ShamanOrbLarge.NULL;
                }

                if (modPlayer.orbCountUnique == 0 && modPlayer.shamanOrbUnique != ShamanOrbUnique.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbUnique = ShamanOrbUnique.NULL;
                }
            }
        }
Esempio n. 5
0
        public override void UpdateInventory(Player player)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            item.shootSpeed = 7f + 2f * nbBonds;
        }
Esempio n. 6
0
        public override void Kill(int timeLeft)
        {
            Player          player    = Main.player[projectile.owner];
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            Projectile.NewProjectile(projectile.position.X, projectile.position.Y, 0f, 0f, mod.ProjectileType("MoltenResidueScepterProjExplosion"), projectile.damage + (5 * nbBonds), 0.0f, projectile.owner, 0.0f, 0.0f);
            Main.PlaySound(2, (int)projectile.position.X, (int)projectile.position.Y, 14);

            float oldVelocityX = 0 + projectile.velocity.X / 2;
            float oldVelocityY = 0 + projectile.velocity.Y / 2;

            projectile.velocity.X *= 0;
            projectile.velocity.Y *= 0;

            for (int i = 1; i < nbBonds + 1; i++)
            {
                spawnDustCircle(6, 15 * i);
            }

            projectile.velocity.X = oldVelocityX;
            projectile.velocity.Y = oldVelocityY;

            projectile.position.X += projectile.velocity.X;
            projectile.position.Y += projectile.velocity.Y;
            spawnDustCircle(6, nbBonds * 15 + 15);
            projectile.position.X += projectile.velocity.X * 3;
            projectile.position.Y += projectile.velocity.Y * 3;
            spawnDustCircle(6, nbBonds * 10 + 10);
            projectile.position.X += projectile.velocity.X * 3;
            projectile.position.Y += projectile.velocity.Y * 3;
            spawnDustCircle(6, nbBonds * 5 + 5);
            projectile.velocity *= 0;
        }
Esempio n. 7
0
        public override void Kill(int timeLeft)
        {
            Player          player    = Main.player[projectile.owner];
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             dmg       = (int)(10 * modPlayer.shamanDamage);

            for (int i = 0; i < 13; i++)
            {
                int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, 153);
                Main.dust[dust].noGravity = true;
            }

            for (int i = 0; i < OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); i++)
            {
                if (Main.rand.Next(4) == 0)
                {
                    if (player.strongBees && Main.rand.Next(2) == 0)
                    {
                        Projectile.NewProjectile(projectile.position.X, projectile.position.Y, 3 - Main.rand.Next(6), 3 - Main.rand.Next(6), 566, (int)(dmg * 1.15f), 0f, projectile.owner, 0f, 0f);
                    }
                    else
                    {
                        Projectile.NewProjectile(projectile.position.X, projectile.position.Y, 3 - Main.rand.Next(6), 3 - Main.rand.Next(6), 181, dmg, 0f, projectile.owner, 0f, 0f);
                    }
                }
            }
        }
Esempio n. 8
0
 public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
 {
     if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 1)
     {
         Projectile.NewProjectile(player.Center.X, player.Center.Y, projectile.velocity.X, projectile.velocity.Y, mod.ProjectileType("PatchWerkScepterProjAlt"), projectile.damage, 0f, 0, 0f, 0f);
     }
 }
Esempio n. 9
0
        public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            player.ClearBuff(mod.BuffType("SporeEmpowerment"));

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == item.shoot && proj.owner == player.whoAmI)
                {
                    proj.active = false;
                }
            }

            for (int i = 0; i < nbBonds + 2; i++)
            {
                Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(30));
                float   scale          = 1f - (Main.rand.NextFloat() * .3f);
                perturbedSpeed = perturbedSpeed * scale;
                this.NewShamanProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockBack, player.whoAmI);
            }
            return(false);
        }
        public override void Kill(int timeLeft)
        {
            Player          player    = Main.player[projectile.owner];
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            if (projectile.soundDelay == 0)
            {
                Main.PlaySound(mod.GetLegacySoundSlot(SoundType.Custom, "Sounds/Custom/Poof").WithPitchVariance(Main.rand.NextFloat(0.9f, 1f)), projectile.Center);
            }
            projectile.soundDelay = 10;

            int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            for (int i = 0; i < nbBonds; i++)
            {
                Vector2 perturbedSpeed = new Vector2(projectile.velocity.X / (Main.rand.Next(3) + 2), -3f).RotatedByRandom(MathHelper.ToRadians(30));
                Projectile.NewProjectile(projectile.position.X, projectile.position.Y, perturbedSpeed.X, perturbedSpeed.Y, mod.ProjectileType("BoreanStriderScepterProjAlt"), (int)(projectile.damage * 0.70), 0.0f, player.whoAmI, 0.0f, 0.0f);
            }

            for (int i = 0; i < 10; i++)
            {
                var dust = Main.dust[Dust.NewDust(projectile.position, projectile.width, projectile.height, 67)];
                dust.noGravity = true;
                dust.scale     = 1.5f;
                dust.noLight   = true;
                dust.velocity  = new Vector2(0, Main.rand.NextFloat(2f, 4f)).RotatedBy(Main.rand.NextFloat(MathHelper.TwoPi));
            }

            Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, 0, 0, ModContent.ProjectileType <BoreanStriderScepterKillProj>(), 0, 0.0f, player.whoAmI, Math.Sign(projectile.velocity.X) * 0.1f, projectile.rotation);
        }
Esempio n. 11
0
 public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
 {
     if (Main.rand.Next(8) < (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + 1))
     {
         Projectile.NewProjectile(player.position.X, player.position.Y, projectile.velocity.X, projectile.velocity.Y, mod.ProjectileType("ViscountScepterBat"), projectile.damage, 0f, 0, 0f, 0f);
     }
 }
Esempio n. 12
0
        public override void OnSpawn()
        {
            // I hate it
            Player                    player        = Main.player[projectile.owner];
            OrchidModPlayer           modPlayer     = player.GetModPlayer <OrchidModPlayer>();
            int                       newCrit       = 10 * OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + modPlayer.shamanCrit + player.inventory[player.selectedItem].crit;
            OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>();

            modProjectile.baseCritChance = newCrit;

            switch (Main.rand.Next(3))
            {
            case 1:
                mainColor = new Color(231, 120, 255, 100);
                break;

            case 2:
                mainColor = new Color(120, 247, 255, 100);
                break;

            default:
                mainColor = new Color(215, 255, 120, 100);
                break;
            }

            projectile.ai[0] = 0.35f;
            projectile.ai[1] = 0;             // Death Type
            startRotation    = Main.rand.NextFloat(-(float)Math.PI, (float)Math.PI);
        }
Esempio n. 13
0
        public override void PostUpdateEquips()
        {
            this.updateBuffEffects();
            this.updateItemEffects();

            this.generalPostUpdateEquips();
            OrchidModShamanHelper.shamanPostUpdateEquips(player, this, mod);
            OrchidModAlchemistHelper.alchemistPostUpdateEquips(player, this, mod);
            OrchidModGamblerHelper.gamblerPostUpdateEquips(player, this, mod);
            OrchidModDancerHelper.dancerPostUpdateEquips(player, this, mod);

            Mod thoriumMod = OrchidMod.ThoriumMod;

            if (thoriumMod != null)
            {
                object result = thoriumMod.Call("GetAllCrit", player);
                if (result is int thoriumCrit && thoriumCrit > 0)
                {
                    this.customCrit += thoriumCrit;
                }
            }

            this.shamanCrit    += this.customCrit;
            this.alchemistCrit += this.customCrit;
            this.gamblerCrit   += this.customCrit;
            this.dancerCrit    += this.customCrit;

            this.CheckWoodBreak(player);
        }
Esempio n. 14
0
        public override void AI()
        {
            Player          player    = Main.player[projectile.owner];
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            if (projectile.timeLeft == 45)
            {
                for (int i = 0; i < nbBonds; i++)
                {
                    sizeBonus         += 2;
                    projectile.damage += 5;
                }
                projectile.netUpdate = true;
            }

            for (int index1 = 0; index1 < 3; ++index1)
            {
                int index2 = Dust.NewDust(projectile.Center, 0, 0, 169, 0.0f, 0.0f, 0, new Color(), 1f);
                Main.dust[index2].scale     = (float)(Main.rand.Next(70, 110) * 0.013f) + ((sizeBonus) * 0.15f);
                Main.dust[index2].velocity  = projectile.velocity;
                Main.dust[index2].noGravity = true;
            }

            if (projectile.timeLeft % 5 == 0)
            {
                int range = projectile.timeLeft - 10;
                range = range > 20 ? 20 : range;
                spawnDustCircle(169, range);
            }
        }
Esempio n. 15
0
        public override void UpdateInventory(Player player)
        {
            // I hate it
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            item.crit = 4 + 10 * OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + modPlayer.shamanCrit;
        }
Esempio n. 16
0
        public override void UpdateInventory(Player player)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            item.useTime      = 18 - (2 * nbBonds);
            item.useAnimation = 18 - (2 * nbBonds);
        }
Esempio n. 17
0
        public override void PostUpdate()
        {
            ignoreScrollHotbar = false;

            OrchidModShamanHelper.postUpdateShaman(player, this, mod);
            OrchidModGamblerHelper.postUpdateGambler(player, this, mod);
            OrchidModAlchemistHelper.postUpdateAlchemist(player, this, mod);
        }
Esempio n. 18
0
 public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
 {
     OrchidModProjectile.spawnDustCircle(projectile.Center, 127, 20, 20, true, 1f);
     if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 2)
     {
         target.AddBuff((72), 5 * 60);                 // Midas
     }
 }
Esempio n. 19
0
        public override void SafeModifyWeaponDamage(Player player, ref float add, ref float mult, ref float flat)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 3)
            {
                flat += 7f;
            }
        }
Esempio n. 20
0
        public override void OnHitNPCWithProj(Projectile projectile, NPC target, int damage, float knockback, bool crit)
        {
            OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>();

            if (modProjectile.shamanProjectile)
            {
                OrchidModShamanHelper.OnHitNPCWithProjShaman(projectile, target, damage, knockback, crit, player, this, mod);
            }
        }
Esempio n. 21
0
        public override void AI()
        {
            if (RadiusProgress < 1)
            {
                RadiusProgress += 0.075f;
            }
            else if (RadiusProgress != 1)
            {
                RadiusProgress = 1;
            }

            float  pr    = MathHelper.SmoothStep(0, maxRadius, RadiusProgress);
            Player owner = Main.player[projectile.owner];

            projectile.velocity.X  = 0f;
            projectile.velocity.Y += +0.2f;
            if (projectile.velocity.Y > 16f)
            {
                projectile.velocity.Y = 16f;
            }

            // DPS Zone
            if (projectile.timeLeft % 120 == 0)
            {
                foreach (var target in Main.npc)
                {
                    if (!target.active || !target.CanBeChasedBy() || Vector2.Distance(projectile.Center, target.Center) > pr)
                    {
                        continue;
                    }

                    target.StrikeNPCNoInteraction(projectile.damage, 0f, 0);
                    if (NbBonds >= 3)
                    {
                        OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>();
                        target.GetGlobalNPC <OrchidModGlobalNPC>().shamanShroom = 300;
                        OrchidModShamanHelper.addShamanicEmpowerment(modProjectile.shamanEmpowermentType, owner, owner.GetModPlayer <OrchidModPlayer>(), mod);
                    }
                    target.netUpdate = true;
                }
            }

            // Buff Zone
            if (NbBonds >= 5)
            {
                Player buffPlayer = Main.player[Main.myPlayer];                 // I hope it works

                if (Vector2.Distance(buffPlayer.Center, projectile.Center) <= pr)
                {
                    buffPlayer.AddBuff(ModContent.BuffType <Buffs.ShroomHeal>(), 1);
                }
            }

            Color color = new Color(36, 129, 234) * 0.4f;

            Lighting.AddLight(projectile.Center, color.R / 255f, color.G / 255f, color.B / 255f);
        }
Esempio n. 22
0
        public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
        {
            float randX = target.position.X + (target.width / 2) + Main.rand.Next(700) - 350;
            float randY = target.position.Y + (target.height / 2) - Main.rand.Next(200) - 100;

            if (Main.rand.Next(20) < OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod))
            {
                Projectile.NewProjectile(randX, randY, 0f, 0f, mod.ProjectileType("PharaohScepterPortal"), 0, 0.0f, projectile.owner, 0.0f, 0.0f);
            }
        }
Esempio n. 23
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 0)
            {
                if (modPlayer.orbCountSmall == 0 && modPlayer.shamanOrbSmall != ShamanOrbSmall.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbSmall = ShamanOrbSmall.NULL;

                    if (Main.myPlayer == player.whoAmI)
                    {
                        player.HealEffect(5, true);
                    }
                    player.statLife += 5;
                }

                if (modPlayer.orbCountBig == 0 && modPlayer.shamanOrbBig != ShamanOrbBig.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbBig = ShamanOrbBig.NULL;

                    if (Main.myPlayer == player.whoAmI)
                    {
                        player.HealEffect(10, true);
                    }
                    player.statLife += 10;
                }

                if (modPlayer.orbCountLarge == 0 && modPlayer.shamanOrbLarge != ShamanOrbLarge.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbLarge = ShamanOrbLarge.NULL;

                    if (Main.myPlayer == player.whoAmI)
                    {
                        player.HealEffect(20, true);
                    }
                    player.statLife += 20;
                }

                if (modPlayer.orbCountUnique == 0 && modPlayer.shamanOrbUnique != ShamanOrbUnique.NULL)
                {
                    player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60);
                    modPlayer.shamanOrbUnique = ShamanOrbUnique.NULL;

                    if (Main.myPlayer == player.whoAmI)
                    {
                        player.HealEffect(20, true);
                    }
                    player.statLife += 20;
                }
            }
        }
Esempio n. 24
0
        public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            OrchidModPlayer modPlayer  = player.GetModPlayer <OrchidModPlayer>();
            int             BuffsCount = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            if (BuffsCount > 2)
            {
                this.NewShamanProjectile(position.X, position.Y, speedX, speedY, mod.ProjectileType("DepthBatonProjAlt"), damage - 10, knockBack, player.whoAmI);
            }
            return(true);
        }
Esempio n. 25
0
        public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
        {
            //if (!(target.boss || target.type == NPCID.TargetDummy) && target.knockBackResist > 0f && slow)

            var owner = Main.player[projectile.owner];

            if (OrchidModShamanHelper.getNbShamanicBonds(owner, owner.GetModPlayer <OrchidModPlayer>(), mod) >= 2 && !target.boss && target.CanBeChasedBy() && target.knockBackResist > 0f)
            {
                target.AddBuff(ModContent.BuffType <Buffs.Debuffs.LeafSlow>(), 60 * 5);
            }
        }
Esempio n. 26
0
 public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
 {
     if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 4)
     {
         Mod thoriumMod = OrchidMod.ThoriumMod;
         if (thoriumMod != null)
         {
             target.AddBuff((thoriumMod.BuffType("BerserkSoul")), 5 * 60);
         }
     }
 }
Esempio n. 27
0
        public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             nbBonds   = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod);

            for (int i = 0; i < nbBonds + 1; i++)
            {
                Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(nbBonds + 1));
                this.NewShamanProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockBack, player.whoAmI);
            }
            return(false);
        }
Esempio n. 28
0
        public override void AI()
        {
            projectile.alpha += 30;

            if (projectile.timeLeft == 80)
            {
                storeVelocity = projectile.velocity;
                storeDamage   = projectile.damage;
            }

            if (projectile.timeLeft > 35)
            {
                projectile.velocity *= 0f;
                projectile.damage    = 0;
                dustScale           += 0.0195f;
            }

            if (projectile.timeLeft == 35)
            {
                projectile.damage       = storeDamage;
                projectile.velocity     = storeVelocity;
                projectile.extraUpdates = 1;

                OrchidModProjectile.spawnDustCircle(projectile.Center, 92, 20, 5, true, 1.5f, 1f, 1f, true, true, false, 0, 0, true);
                for (int i = 0; i < 5; i++)
                {
                    int index = Dust.NewDust(projectile.position, projectile.width, projectile.height, 92);
                    Main.dust[index].scale     = 1.5f;
                    Main.dust[index].velocity  = projectile.velocity.RotatedByRandom(MathHelper.ToRadians(20));
                    Main.dust[index].noGravity = true;
                }
            }

            for (int i = 0; i < 3; i++)
            {
                Vector2 Position = projectile.position;
                int     index2   = Dust.NewDust(Position, projectile.width, projectile.height, 92);
                Main.dust[index2].scale     = (float)90 * 0.010f + dustScale / 3;
                Main.dust[index2].velocity *= 0.2f;
                Main.dust[index2].noGravity = true;
            }

            if (!this.initialized)
            {
                this.initialized = true;
                Player                    player        = Main.player[projectile.owner];
                OrchidModPlayer           modPlayer     = player.GetModPlayer <OrchidModPlayer>();
                int                       newCrit       = 10 * OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + modPlayer.shamanCrit + player.inventory[player.selectedItem].crit;
                OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>();
                modProjectile.baseCritChance = newCrit;
            }
        }
Esempio n. 29
0
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) == 5 && modPlayer.timer120 % 2 == 0)
            {
                modPlayer.shamanFireTimer++;
                modPlayer.shamanWaterTimer++;
                modPlayer.shamanAirTimer++;
                modPlayer.shamanEarthTimer++;
                modPlayer.shamanSpiritTimer++;
            }
        }
Esempio n. 30
0
        public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            if (Main.rand.Next(101) < 4 + OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) * 4)
            {
                this.NewShamanProjectile(position.X, position.Y, speedX, speedY, mod.ProjectileType("StrangePlatingScepterProjAlt"), damage * 2, knockBack, player.whoAmI);
            }
            else
            {
                this.NewShamanProjectile(position.X, position.Y, speedX, speedY, type, damage, knockBack, player.whoAmI);
            }
            return(false);
        }