From 108dec5a4f3a68e7002d35960508fb40d36c13e1 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Mon, 7 May 2012 09:08:58 +0400 Subject: [PATCH] Reimplemented EverflowingChalice --- .../sets/worldwake/EverflowingChalice.java | 82 +++++++++++++++++-- .../abilities/keyword/MultikickerAbility.java | 3 + 2 files changed, 77 insertions(+), 8 deletions(-) diff --git a/Mage.Sets/src/mage/sets/worldwake/EverflowingChalice.java b/Mage.Sets/src/mage/sets/worldwake/EverflowingChalice.java index 53899c1f926..8cebc3f4cd6 100644 --- a/Mage.Sets/src/mage/sets/worldwake/EverflowingChalice.java +++ b/Mage.Sets/src/mage/sets/worldwake/EverflowingChalice.java @@ -28,22 +28,23 @@ package mage.sets.worldwake; -import java.util.UUID; +import mage.Constants; import mage.Constants.CardType; -import mage.Constants.Duration; import mage.Constants.Rarity; import mage.Mana; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.dynamicvalue.common.CountersCount; -import mage.abilities.effects.common.continious.GainAbilitySourceEffect; -import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.OneShotEffect; import mage.abilities.keyword.MultikickerAbility; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; import mage.counters.CounterType; -import mage.counters.common.ChargeCounter; +import mage.game.Game; +import mage.game.permanent.Permanent; + +import java.util.UUID; /** * @@ -51,12 +52,18 @@ import mage.counters.common.ChargeCounter; */ public class EverflowingChalice extends CardImpl { + protected static final String rule = "Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked"; + public EverflowingChalice(UUID ownerId) { super(ownerId, 123, "Everflowing Chalice", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{0}"); this.expansionSetCode = "WWK"; - Ability ability1 = new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(new ChargeCounter())); - MultikickerAbility ability = new MultikickerAbility(new GainAbilitySourceEffect(ability1, Duration.WhileOnBattlefield), false); + // Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked. + Ability ability1 = new EntersBattlefieldAbility(new EverflowingChaliceAddCountersEffect()); + this.addAbility(ability1); + + // Multikicker {2} (You may pay an additional {2} any number of times as you cast this spell.) + MultikickerAbility ability = new MultikickerAbility(new EmptyEffect(rule), false); ability.addManaCost(new GenericManaCost(2)); this.addAbility(ability); @@ -73,3 +80,62 @@ public class EverflowingChalice extends CardImpl { } } + +class EmptyEffect extends OneShotEffect { + + public EmptyEffect(String rule) { + super(Constants.Outcome.DrawCard); + staticText = rule; + } + + public EmptyEffect(final EmptyEffect effect) { + super(effect); + } + + @Override + public EmptyEffect copy() { + return new EmptyEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + // empty effect + return true; + } + +} + +class EverflowingChaliceAddCountersEffect extends OneShotEffect { + + public EverflowingChaliceAddCountersEffect() { + super(Constants.Outcome.Benefit); + staticText = EverflowingChalice.rule; + } + + public EverflowingChaliceAddCountersEffect(final EverflowingChaliceAddCountersEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null) { + for (Ability ability : permanent.getAbilities()) { + if (ability instanceof MultikickerAbility) { + int count = ((MultikickerAbility)ability).getActivateCount(); + if (count > 0) { + permanent.addCounters(CounterType.CHARGE.createInstance(count), game); + } + } + } + } + return true; + } + + @Override + public EverflowingChaliceAddCountersEffect copy() { + return new EverflowingChaliceAddCountersEffect(this); + } + +} + diff --git a/Mage/src/mage/abilities/keyword/MultikickerAbility.java b/Mage/src/mage/abilities/keyword/MultikickerAbility.java index 66e1314bc4e..e5def5c6b6a 100644 --- a/Mage/src/mage/abilities/keyword/MultikickerAbility.java +++ b/Mage/src/mage/abilities/keyword/MultikickerAbility.java @@ -93,4 +93,7 @@ public class MultikickerAbility extends KickerAbility { return sb.toString(); } + public int getActivateCount() { + return activateCount; + } }