IEnumerator Grabbing() { while (effectTarget.GetIntChoice("Grab") == -1) { yield return(new WaitForEndOfFrame()); } SC_GrabCard.canGrab = null; for (int i = 0; i < Mathf.Max(CurrentEffect.effectValue, 1); i++) { SC_CardZone zone = effectTarget.GetIntChoice("Grab" + i) == 0 ? effectTarget.Deck : ((effectTarget.GetIntChoice("Grab" + i) == 1 ? effectTarget.Graveyard : (effectTarget == Caller ? Receiver : Caller).Graveyard) as SC_CardZone); SC_BaseCard grabbed = zone.GetCards().Find((c) => { return(c.Path == effectTarget.GetStringChoice("Grab" + i)); }); yield return(StartCoroutine(zone.Grab(effectTarget.IsLocalPlayer, grabbed))); } ApplyingEffects = false; }