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

public class CardMicrowave : Card
{
	public override bool ShouldHandleEvent( EventType eventType )
	{
		return eventType == EventType.TurnStart && Manager.Instance.GetNearbyCards( GridPos ).Where(x => x.IsFoodOrBeverage).Count() > 0;
	}

	public override async Task HandleEventAsync( EventType eventType )
	{
		var nearbyCards = Manager.Instance.GetNearbyCards( GridPos ).Where( x => x.IsFoodOrBeverage );
		if ( nearbyCards.Count() > 0 )
		{
			await Task.DelayRealtime( 400 );

			var card = nearbyCards.ElementAt(Game.Random.Int( 0, nearbyCards.Count() - 1 ));

			await Manager.Instance.ShakeCard(card);

			await Task.DelayRealtime( 700 );
		}
	}
}