IEnumerator Use(bool resumed = false) { if (!resumed) { if (originalCard == this || !Ephemeral || interceptFinishCard) { UI.AddCardToHistory(UICard.image, Caller.IsLocalPlayer); } OnPlay?.Invoke(); while (ApplyingEffects) { yield return(new WaitForEndOfFrame()); } (this as SC_AttackCard)?.PayCost(); yield return(new WaitForSeconds(GM.playedDelay)); if (!unblockable && Receiver.Unlocked && (!Is(CardType.Basic) || Has(CommonEffectType.Lock))) { if (Receiver.IsLocalPlayer) { responding = true; if (Receiver.HasOnePlayableCardInHand(false)) { UI.ShowMessage("ResponseCan"); UpdateHighlightedCards(true); } else { UI.ShowMessage("ResponseCant"); } } else if (Receiver.AI && Receiver.HasOnePlayableCardInHand(false)) { Receiver.BecomeActive(false); } yield return(new WaitForSeconds(GM.responseTime)); if (Receiver.IsLocalPlayer) { UpdateHighlightedCards(false); } responding = false; UI.messagePanel.SetActive(false); } } yield return(StartCoroutine(ApplyEffects())); if (GM.Count == 3) { UI.ShowEndPanel(!Caller.IsLocalPlayer); } else if (this != lockingCard) { UICard.RecT.DOSizeDelta(UICard.RecT.sizeDelta / GM.playedSizeMultiplicator, 1); if (stayOnRing) { UICard.ToRingSlot(); } else { UICard.ToGraveyard(1, () => { FinishedUsing(); }, false); } } else { activeCard = originalCard = null; NextTurn(); } }