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

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

	public override bool ShouldHandleEvent( EventType eventType )
	{
		return eventType == EventType.TurnStart && Manager.Instance.GetNumNearbyCards( GridPos, adjacentOnly: true ) > 0;
	}

	public override async Task HandleEventAsync( EventType eventType )
	{
		var nearbyCards = Manager.Instance.GetNearbyCards( GridPos, adjacentOnly: true );
		if(nearbyCards.Count > 0)
		{
			await Task.DelayRealtime( 200 );

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

			await Manager.Instance.ShakeCard(card);

			await Task.DelayRealtime( 500 );
		}
	}
}