Charm component that grants the player one extra life. Resets usage at run start, prevents a death once by restoring HP, giving brief invincibility, showing a chat message and spawning a floater.
public class CharmExtraLife : Charm
{
public const string ItemId = "charm_extra_life";
public static string Description() => $"+1 extra life";
private bool _used;
public override void OnRunStart()
{
_used = false;
}
public override bool TryPreventDeath()
{
if ( _used )
return false;
_used = true;
Player.Health = Player.Stats[PlayerStat.MaxHp];
Player.BecomeInvincible( 1.5f );
// todo: sfx
Manager.Instance.Chat.AddLocalChatMessage( $"{ProgressManager.GetItemRichTextToken( ItemId )} Used extra life!", from: "" );
Manager.Instance.SpawnFloaterTextRpc( Player.WorldPosition.WithZ( 65f ), "EXTRA LIFE!", new Color( 1f, 1f, 0.5f ), size: 1.2f, floaterType: FloaterType.PositiveMessage );
return true;
}
}