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); }
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; } }
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)); } }
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; }