Exemple #1
0
        public List <IPendingDamageResolution> AddDamage(ActiveGame game, int damage, Card originCard, bool BlockedDamage = false)
        {
            List <IPendingDamageResolution> retVal = new List <IPendingDamageResolution>();
            List <Card> bodyguards            = Battlefield.CardsWithAbility(typeof(Bodyguard));
            List <Card> cardsThatAffectDamage = GetCardsThatAffectDamage();

            if (cardsThatAffectDamage.Count > 0)
            {
                throw new NotImplementedException("Player.AddDamage-cardsThatAffectDamage");
            }
            else if (!BlockedDamage && bodyguards.Count > 1)
            {
                retVal.Add(new BodyGuardPendingDamageResolution()
                {
                    ActionPlayerId = Id,
                    BodyGuards     = bodyguards,
                    Damage         = damage,
                });
                damage = 0;
            }
            else if (!BlockedDamage && bodyguards.Count == 1)
            {
                bodyguards[0].AddDamage(game, damage, originCard);
                damage = 0;
            }
            if (damage > 0)
            {
                DamageTaken = DamageTaken + damage;
                foreach (IAbility ability in originCard.Abilities.FindAll(o => o.Trigger == EffectTrigger.DamageToPlayer))
                {
                    Player originPlayer = game.Players.First(o => o.Id == originCard.OwnerId);
                    ability.Process(new AbilityArgs()
                    {
                        Damage = damage, OriginCard = originCard, OriginPlayer = originPlayer, TargetPlayer = this
                    });
                }

                EffectTriggerEventArgs args = new EffectTriggerEventArgs()
                {
                    Args = new DamageTakenTriggerArgs()
                    {
                        ActivePlayer = this,
                        Damage       = damage,
                    },
                    Trigger = EffectTrigger.Phases_BegginingPhase_UpkeepStep,
                };
                OnEffectTrigger?.Invoke(null, args);
            }
            return(retVal);
        }
Exemple #2
0
        public void AddLife(int amount)
        {
            Life += amount;

            EffectTriggerEventArgs args = new EffectTriggerEventArgs()
            {
                Args = new LifeGainedTriggerArgs()
                {
                    ActivePlayer = this,
                    LifeGained   = amount,
                },
                Trigger = EffectTrigger.Phases_BegginingPhase_UpkeepStep,
            };

            OnEffectTrigger?.Invoke(null, args);
        }
Exemple #3
0
 private void Card_EffectTrigger(object sender, EventArgs e)
 {
     OnEffectTrigger?.Invoke(sender, e);
 }