cards/CardSkunk.cs
using Sandbox;
using System.Threading.Tasks;

public class CardSkunk : Card
{
	public override bool IsAlive => true;

	public override bool ShouldHandleEvent( EventType eventType )
	{
		return eventType == EventType.Mismatch && Manager.Instance.ChosenCards[0].CardType == CardType.Skunk && Manager.Instance.ChosenCards[1].CardType == CardType.Skunk && !IsLocked;
	}

	public override async Task HandleEventAsync( EventType eventType )
	{
		Manager.Instance.PushEventMessage( this, eventType );

		// todo: sfx

		await Task.DelayRealtime( 850 );

		Manager.Instance.PopEventMessage();
	}

	public override bool CanBeMatched()
	{
		foreach(var card in Manager.Instance.GetNearbyCards(GridPos, adjacentOnly: true))
		{
			if ( card.CardType != CardType.Skunk )
				return false;
		}

		return true;
	}
}