cards/CardCheese.cs
using Sandbox;
using System.Threading.Tasks;
public class CardCheese : Card
{
public override bool IsFoodOrBeverage => true;
private int _numTurnsElapsed;
public override bool ShouldHandleEvent( EventType eventType )
{
return (eventType == EventType.TurnStart && CardType == CardType.Cheese) || (eventType == EventType.Match && Manager.Instance.ChosenCards[1] == this);
}
public override async Task HandleEventAsync( EventType eventType )
{
if(eventType == EventType.TurnStart)
{
_numTurnsElapsed++;
if(_numTurnsElapsed >= 7)
{
SetCardType(CardType.CheeseMoldy);
}
}
else
{
Manager.Instance.PushEventMessage( this, eventType );
await Task.DelayRealtime( 350 );
Manager.Instance.PlayCardSfxBetween( "cheese", Manager.Instance.ChosenCards[0], Manager.Instance.ChosenCards[1], volume: 1f, pitch: Game.Random.Float( 0.95f, 1.05f ) );
if ( CardType == CardType.Cheese )
{
await Task.DelayRealtime( 400 );
var healAmount = 3 + (int)Manager.Instance.Stats[StatType.FoodAdditionalHeal];
Manager.Instance.SpawnHealHPFloater( healAmount, WorldPosition );
await Manager.Instance.GainHP( healAmount );
await Task.DelayRealtime( 300 );
//Manager.Instance.PlayCardSfxBetween( "potion_heal", Manager.Instance.ChosenCards[0], Manager.Instance.ChosenCards[1], volume: 1f, pitch: Game.Random.Float( 0.97f, 1.03f ) );
}
else
{
await Task.DelayRealtime( 300 );
Manager.Instance.PlayCardSfxBetween( "cheese_moldy", Manager.Instance.ChosenCards[0], Manager.Instance.ChosenCards[1], volume: 1.2f, pitch: Game.Random.Float( 0.95f, 1.05f ) );
await Task.DelayRealtime( 400 );
//var lossAmount = 1;
//Manager.Instance.SpawnLoseHPFloater( lossAmount, WorldPosition );
//await Manager.Instance.LoseHP( lossAmount );
}
await Task.DelayRealtime( 700 );
Manager.Instance.PopEventMessage();
}
}
public override string GetEventText( EventType eventType )
{
return "✅Match: +3 HP if not moldy";
}
}