コード例 #1
0
        private bool CanBeActivatedAtThisTime()
        {
            if (OwningCard.Zone != _p.ActivationZone)
            {
                return(false);
            }

            if (_p.ActivateOnlyOnceEachTurn && _lastActivation.Value == Turn.TurnCount)
            {
                return(false);
            }

            if (!_p.Condition(OwningCard, Game))
            {
                return(false);
            }

            if (OwningCard.Is().Planeswalker&& Turn.Events.HasAnyLoyalityAbilityBeenActivated(OwningCard))
            {
                return(false);
            }

            if (_p.ActivateAsSorcery)
            {
                return(Turn.Step.IsMain() &&
                       OwningCard.Controller.IsActive &&
                       Stack.IsEmpty);
            }

            return(true);
        }
コード例 #2
0
        private void Activate()
        {
            // should be set at start or there will be an
            // infinite loop
            _isActivated.Value = true;

            foreach (var modifier in _modifierFactories.Select(factory => factory()))
            {
                var p = new ModifierParameters
                {
                    IsStatic   = true,
                    SourceCard = OwningCard
                };

                var lifetime = new ManualLifetime();

                modifier.AddLifetime(lifetime);
                _lifetimes.Add(lifetime);

                if (modifier is IGameModifier)
                {
                    Game.AddModifier((IGameModifier)modifier, p);
                    continue;
                }

                if (modifier is ICardModifier)
                {
                    OwningCard.AddModifier((ICardModifier)modifier, p);
                    continue;
                }

                if (modifier is IPlayerModifier)
                {
                    OwningCard.Controller.AddModifier((IPlayerModifier)modifier, p);
                    continue;
                }
            }
        }
コード例 #3
0
        public void Enable()
        {
            foreach (var modifier in _modifierFactories.Select(factory => factory()))
            {
                var p = new ModifierParameters
                {
                    IsStatic   = true,
                    SourceCard = OwningCard
                };

                var lifetime = new ManualLifetime();

                modifier.AddLifetime(lifetime);
                _lifetimes.Add(lifetime);

                if (modifier is IGameModifier)
                {
                    Game.AddModifier((IGameModifier)modifier, p);
                    continue;
                }

                if (modifier is ICardModifier)
                {
                    OwningCard.AddModifier((ICardModifier)modifier, p);
                    continue;
                }

                if (modifier is IPlayerModifier)
                {
                    OwningCard.Controller.AddModifier((IPlayerModifier)modifier, p);
                    continue;
                }
            }

            _isEnabled.Value = true;
        }
コード例 #4
0
 public void PayActivationCost()
 {
     OwningCard.Exile();
 }
コード例 #5
0
 public void PayActivationCost()
 {
     OwningCard.Tap();
 }
 protected override void Initialize()
 {
     _strenghtModifier.Initialize(ChangeTracker);
     _strenghtModifier.Value = OwningCard.CountersCount(_counterType);
 }