Exemple #1
0
        public void Activate(ConvergePlayer you)
        {
            if (hasTarget)
            {
                return;
            }

            if (you.TryPayCost(manacost) && source.TryPayAltCost(altCost))
            {
                timesUsed++;
                ConvergeEffectContext context = new ConvergeEffectContext(source, you, this);
                effect.Run(context);
            }
        }
Exemple #2
0
        public void ActivateOn(ConvergeObject target, ConvergePlayer you)
        {
            if (!hasTarget)
            {
                return;
            }

            if (!CanTarget(target, you))
            {
                return;
            }

            if (you.TryPayCost(manacost) && source.TryPayAltCost(altCost))
            {
                timesUsed++;
                ConvergeEffectContext context = new ConvergeEffectContext(source, you, this);
                context.target = target;
                effect.Run(context);
            }
        }
        public void PlayOn(ConvergeObject target, ConvergePlayer you)
        {
            if (zone.zoneId == ConvergeZoneId.Hand &&
                (cardType.HasFlag(ConvergeCardType.Action) || cardType.HasFlag(ConvergeCardType.Augment)) &&
                CanTarget(target, you)
                )
            {
                if (you.TryPayCost(cost))
                {
                    if (TriggerSystem.HasTriggers(ConvergeTriggerType.PlayCard))
                    {
                        TriggerSystem.CheckTriggers(ConvergeTriggerType.PlayCard, new TriggerData(you, this, target, 0));
                    }

                    ConvergeEffectContext context = new ConvergeEffectContext(this, you);
                    context.target = target;
                    original.actionEffect.Run(context);
                    MoveZone(owner.discardPile);
                }
            }
        }
        public void Play(ConvergePlayer you)
        {
            if (zone.zoneId == ConvergeZoneId.Hand)
            {
                if (this.cardType.HasFlag(ConvergeCardType.Resource))
                {
                    if (you.numLandsPlayed < you.numLandsPlayable)
                    {
                        you.numLandsPlayed++;
                    }
                    else
                    {
                        return;
                    }
                }
                else if (original.actionTarget != null)
                {
                    // this spell needs a target
                    return;
                }

                if (TriggerSystem.HasTriggers(ConvergeTriggerType.PlayCard))
                {
                    TriggerSystem.CheckTriggers(ConvergeTriggerType.PlayCard, new TriggerData(you, this, null, 0));
                }

                if (you.TryPayCost(cost))
                {
                    if (this.cardType.HasFlag(ConvergeCardType.Unit))
                    {
                        MoveZone(you.defense);
                        if (!this.keywords.HasFlag(ConvergeKeyword.Haste))
                        {
                            tapped = true;
                        }
                    }
                    else if (this.cardType.HasFlag(ConvergeCardType.Action))
                    {
                        ConvergeEffectContext context = new ConvergeEffectContext(this, you);
                        original.actionEffect.Run(context);
                        MoveZone(owner.discardPile);
                    }
                    else if (this.cardType.HasFlag(ConvergeCardType.Resource) && this.activatedAbilities.Count == 0)
                    {
                        MoveZone(you.resourceZone);
                    }
                    else
                    {
                        MoveZone(you.home);
                    }
                }
            }
            else if (zone.zoneId == ConvergeZoneId.Attack)
            {
                WithdrawAttack();
            }
            else if (zone.zoneId == ConvergeZoneId.Defense)
            {
                EnterAttack();
            }
        }