relics/RelicMagnifyingGlass.cs
using Sandbox;
using System.Reflection.PortableExecutable;
using System.Runtime.Versioning;
using System.Threading.Tasks;

public class RelicMagnifyingGlass : Relic
{
	public override bool ShouldHandleEvent( EventType eventType )
	{
		return eventType == EventType.LevelStart;
	}

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

		await Task.DelayRealtime( 500 );

		List<Card> revealedCards = new();

		for(int i = 0; i < Level; i++)
		{
			var card = Manager.Instance.GetRandomCard();
			while(revealedCards.Contains(card))
				card = Manager.Instance.GetRandomCard();

			revealedCards.Add(card);

			Manager.Instance.PlayCardSfx( "card_flip", card, pitch: Game.Random.Float( 0.9f, 1.1f ) );
			await Manager.Instance.RevealCard( card );

			await Task.DelayRealtime( 1000 );

			Manager.Instance.PlayCardSfx( "card_flip", card, pitch: Game.Random.Float( 0.65f, 0.75f ) );
			Manager.Instance.HideCard( card );

			await Task.DelayRealtime( 450 );
		}
		
		Manager.Instance.PopEventMessage();
	}
}