public CardTemplate Leveler(string cost, EffectTag tag, params LevelDefinition[] levels) { ActivatedAbility(p => { p.Text = String.Format("{0}: Put a level counter on this. Level up only as sorcery.", cost); p.Cost = new PayMana(cost.Parse()); p.Effect = () => new ApplyModifiersToSelf(() => new IncreaseLevel()).SetTags(tag); p.TimingRule(new DefaultLevelUpTimingRule(cost.Parse(), levels)); p.ActivateAsSorcery = true; }); foreach (var level in levels) { var lvl = level; TriggeredAbility(p => { p.Trigger(new OnLevelChanged(lvl.Min)); p.Effect = () => new ApplyModifiersToSelf( () => { var modifier = new AddSimpleAbility(lvl.StaticAbility); modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max)); return(modifier); }, () => { var modifier = new SetPowerAndToughness(lvl.Power, lvl.Toughness); modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max)); return(modifier); } ); p.UsesStack = false; p.TriggerOnlyIfOwningCardIsInPlay = true; }); } _init.Add(cp => { cp.IsLeveler = true; }); return(this); }
public CardTemplate Leveler(string cost, EffectTag tag, params LevelDefinition[] levels) { ActivatedAbility(p => { p.Text = String.Format("{0}: Put a level counter on this. Level up only as sorcery.", cost); p.Cost = new PayMana(cost.Parse(), ManaUsage.Abilities); p.Effect = () => new ApplyModifiersToSelf(() => new IncreaseLevel()).SetTags(tag); p.TimingRule(new DefaultLevelUpTimingRule(cost.Parse(), levels)); p.ActivateAsSorcery = true; }); foreach (var level in levels) { var lvl = level; TriggeredAbility(p => { p.Trigger(new OnLevelChanged(lvl.Min)); p.Effect = () => new ApplyModifiersToSelf( () => { var modifier = new AddStaticAbility(lvl.StaticAbility); modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max)); return modifier; }, () => { var modifier = new SetPowerAndToughness(lvl.Power, lvl.Toughness); modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max)); return modifier; } ); p.UsesStack = false; p.TriggerOnlyIfOwningCardIsInPlay = true; }); } _init.Add(cp => { cp.IsLeveler = true; }); return this; }