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); }
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); }
private void Card_EffectTrigger(object sender, EventArgs e) { OnEffectTrigger?.Invoke(sender, e); }