public override bool UseItem(Player player)
        {
            var epicPlayer = EpicPlayer.ModPlayer(player);

            epicPlayer.LimitCurrent = epicPlayer.MaxLimit;

            player.AddBuff(mod.BuffType("BurntMouth"), 60 * 600);
            player.AddBuff(mod.BuffType("Infuriated"), 60 * 10);

            return(true);
        }
        public virtual bool CanUseSpecial(Player player)
        {
            var epicPlayer = EpicPlayer.ModPlayer(player);

            if (epicPlayer.LimitCurrent >= LimitCost)
            {
                epicPlayer.LimitCurrent += LimitGain;
                epicPlayer.LimitCurrent -= LimitCost;
                return(true);
            }
            return(false);
        }
Exemplo n.º 3
0
        public override void Update(GameTime gameTime)
        {
            var config = ModContent.GetInstance <ClientSideConfig>();

            Vector2 drawStart = config.LimitBarPosition;

            area.Left.Set(drawStart.X, 0f);
            area.Top.Set(drawStart.Y, 0f);

            var epicPlayer = EpicPlayer.ModPlayer(Main.LocalPlayer);

            text.SetText($"Limit Break: { epicPlayer.LimitCurrent} / { epicPlayer.MaxLimit2}");
            base.Update(gameTime);
        }
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            var epicPlayer = EpicPlayer.ModPlayer(player);

            regentimer--;

            epicPlayer.Tryforce = true;

            if (regentimer <= 0 && epicPlayer.LimitCurrent < 100)
            {
                epicPlayer.LimitCurrent++;

                regentimer = 60 * 5;
            }
        }
Exemplo n.º 5
0
        protected override void DrawSelf(SpriteBatch spriteBatch)
        {
            base.DrawSelf(spriteBatch);

            var   epicPlayer = EpicPlayer.ModPlayer(Main.LocalPlayer);
            float quotient   = (float)epicPlayer.LimitCurrent / epicPlayer.MaxLimit2;

            Rectangle hitbox = barFrame.GetInnerDimensions().ToRectangle();

            hitbox.X      += 12;
            hitbox.Width  -= 24;
            hitbox.Y      += 8;
            hitbox.Height -= 16;

            int left  = hitbox.Left;
            int right = hitbox.Right;
            int steps = (int)((right - left) * quotient);

            for (int i = 0; i < steps; i++)
            {
                float percent = (float)i / (right - left);
                spriteBatch.Draw(Main.magicPixel, new Rectangle(left + i, hitbox.Y, 1, hitbox.Height), Color.Lerp(gradientA, gradientB, percent));
            }
        }
Exemplo n.º 6
0
        public override bool PreAI()
        {
            Player player = Main.player[projectile.owner];

            if (++projectile.frameCounter >= 5)
            {
                projectile.frameCounter = 0;

                //Dust generation when it begins growing.

                #region Start Dust

                if (projectile.frame == 8)
                {
                    Vector2 origin = new Vector2(projectile.Center.X, projectile.Center.Y);

                    for (int i = 0; i < dustSpawnRate; i++)
                    {
                        float rot = Main.rand.NextFloat() * (float)Math.PI * 2; //random angle

                        dustSpeed = Main.rand.NextFloat(3f, 10f);

                        effectDusts.Add(Dust.NewDustPerfect(origin + (new Vector2((float)Math.Cos(rot), (float)Math.Sin(rot)) * dustBoost) * 20f, 31, new Vector2((float)Math.Cos(rot), (float)Math.Sin(rot)) * dustSpeed, 0, new Color(255, 255, 255), 2.5f)); //add new dust to list
                        effectDusts[effectDusts.Count - 1].noGravity = true;                                                                                                                                                                                    //modify the newly created dust
                        effectDusts[effectDusts.Count - 1].scale     = 1f;
                    }
                }

                #endregion Start Dust

                if (++projectile.frame >= 10)
                {
                    //passive dust spawning

                    #region Dust Spawning

                    Color drawColor = Color.Black;
                    if (Main.rand.Next(2) == 0)
                    {
                        drawColor = Color.Red;
                    }

                    Dust.NewDustDirect(projectile.position, projectile.width, projectile.height, DustID.Smoke, 0f, 0f, 0, drawColor, 1f);

                    #endregion Dust Spawning

                    Vector2 oldSize = projectile.Size;
                    // In Multi Player (MP) This code only runs on the client of the projectile's owner, this is because it relies on mouse position, which isn't the same across all clients.
                    if (Main.myPlayer == projectile.owner && projectile.ai[0] == 0f)
                    {
                        Movement(player);

                        var epicPlayer = EpicPlayer.ModPlayer(player);

                        // If the player channels the weapon, do something. This check only works if item.channel is true for the weapon.
                        if (player.channel && epicPlayer.LimitCurrent > 0)
                        {
                            LimitDrain(player);

                            Scaling(player, oldSize);

                            Sucking();
                        }
                        // If the player stops channeling, do something else.
                        else if (projectile.ai[0] == 0f || epicPlayer.LimitCurrent <= 0)
                        {
                            projectile.timeLeft = 1;

                            Damage();
                        }
                    }
                    if (projectile.frame >= 16)
                    {
                        projectile.frame = 10;
                    }
                }
            }
            return(false);
        }
        public override void HoldItem(Player player)
        {
            var epicPlayer = EpicPlayer.ModPlayer(player);

            epicPlayer.LimitCurrent -= LimitDrain;
        }