public void Activate(IPlayable owner)
        {
            if (!(owner is Playable m))
            {
                throw new Exception($"Can't activate Adaptive Effect on non-Playable entity {owner}.");
            }

            IAura instance = new AdaptiveEffect(this, m);

            if (!_isSwitching)
            {
                if (m is Weapon)
                {
                    if (m.Controller.Hero.AuraEffects == null)
                    {
                        m.Controller.Hero.AuraEffects = new AuraEffects(CardType.HERO);
                    }
                }
                else if (m.AuraEffects == null)
                {
                    m.AuraEffects = new AuraEffects(CardType.MINION);
                }
            }

            owner.Game.Auras.Add(instance);
            owner.OngoingEffect = instance;
        }
        private AdaptiveEffect(AdaptiveEffect prototype, Playable owner)
        {
            _isSwitching   = prototype._isSwitching;
            _valueFunction = prototype._valueFunction;
            _tag           = prototype._tag;
            _operator      = prototype._operator;
            _condition     = prototype._condition;
            _lastValue     = prototype._lastValue;
            _on            = prototype._on;

            _owner = owner;
        }