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

public class CardKey : Card
{
	//public override bool ShouldHandleEvent( EventType eventType )
	//{
	//	return eventType == EventType.Mismatch && Manager.Instance.ChosenCards.Contains(this) || eventType == EventType.Match && Manager.Instance.ChosenCards[1] == this;
	//}

	//public override async Task HandleEventAsync( EventType eventType )
	//{
	//	if ( eventType == EventType.Mismatch )
	//	{
	//		var key = Manager.Instance.ChosenCards[0].CardType == CardType.Key ? Manager.Instance.ChosenCards[0] : Manager.Instance.ChosenCards[1];
	//		var otherCard = Manager.Instance.ChosenCards[0].CardType == CardType.Key ? Manager.Instance.ChosenCards[1] : Manager.Instance.ChosenCards[0];

	//		if ( key.IsLocked || !otherCard.IsLocked )
	//			return;

	//		Manager.Instance.PushEventMessage( this, eventType );

	//		await Task.DelayRealtime( 50 );

	//		Manager.Instance.PlayCardSfxBetween( "key", Manager.Instance.ChosenCards[0], Manager.Instance.ChosenCards[1], volume: 1.5f, pitch: Game.Random.Float( 0.9f, 1.1f ) );

	//		await Task.DelayRealtime( 50 );

	//		await Manager.Instance.UnlockCard( otherCard );

	//		await Task.DelayRealtime( 900 );

	//		Manager.Instance.PopEventMessage();
	//	}
 //       else if (eventType == EventType.Match)
	//	{
	//		Manager.Instance.PushEventMessage( this, eventType );

	//		await Task.DelayRealtime( 50 );

	//		var lockedCards = Manager.Instance.Cards.Where( x => x.IsLocked ).ToList();

	//		if ( lockedCards.Count == 0 )
	//		{
	//			await Task.DelayRealtime( 800 );

	//			Manager.Instance.PopEventMessage();

	//			return;
	//		}

	//		Manager.Instance.PlayCardSfxBetween( "key", Manager.Instance.ChosenCards[0], Manager.Instance.ChosenCards[1], volume: 1.5f, pitch: Game.Random.Float( 0.9f, 1.1f ) );

	//		await Task.DelayRealtime( 50 );

	//		foreach ( var card in lockedCards )
	//		{
	//			await Manager.Instance.UnlockCard( card );
	//		}

	//		await Task.DelayRealtime( 1000 );

	//		Manager.Instance.PopEventMessage();
	//	}
	//}

	//public override string GetEventText( EventType eventType )
	//{
	//	if ( eventType == EventType.Mismatch )
	//	{
	//		return "❌Mismatch: unlock other card";
	//	}
	//	else
	//	{
	//		return "✅Match: unlock all cards";
	//	}
	//}
}