public EffectResolved(EffectData e, Member src, Target target, BattleStateSnapshot before, BattleStateSnapshot after) { EffectData = e; Source = src; Target = target; BattleBefore = before; BattleAfter = after; }
public IPayloadProvider Resolve(BattleStateSnapshot beforeCard, Member source, Target target, Group @group, Scope scope, int amountPaid) { var applicapleMembers = target.Members.Where(x => x.State[TemporalStatType.HP] < x.State.MaxHp() * _percentage).ToArray(); if (applicapleMembers.Any()) { return(_effect.Play(source, new Multiple(applicapleMembers), group, scope, amountPaid)); } return(new NoPayload()); }
public IPayloadProvider Resolve(BattleStateSnapshot beforeCard, Member source, Target target, Group @group, Scope scope, int amountPaid) { if (source.State[new InMemoryResourceType { Name = _resource }] >= _amount) { return(_effect.Play(source, target, group, scope, amountPaid)); } return(new NoPayload()); }
public static void ApplyEffectAndReactions(EffectData e, Member source, Member target) { var battleSnapshotBefore = new BattleStateSnapshot(target.GetSnapshot()); AllEffects.Apply(e, source, target); var battleSnapshotAfter = new BattleStateSnapshot(target.GetSnapshot()); var effectResolved = new EffectResolved(e, source, new Single(target), battleSnapshotBefore, battleSnapshotAfter); var reactions = target.State.GetReactions(effectResolved); reactions.ForEach(r => r.Reaction.ActionSequence.CardActions.Actions.Where(a => a.Type == CardBattleActionType.Battle) .ForEach(be => AllEffects.Apply(be.BattleEffect, r.Source, r.Target))); }
public BattleStateChanged(BattleStateSnapshot before, BattleState after) { Before = before; State = after; }
public static void InitCardPlaying(BattleStateSnapshot beforeCard) => _beforeCard = beforeCard;
public IPayloadProvider Resolve(BattleStateSnapshot beforeCard, Member source, Target target, Group @group, Scope scope, int amountPaid) => new MultiplePayloads(new IPayloadProvider[0]);