Fixed a lot of storage lands to calculate available mana correctly.

This commit is contained in:
LevelX2 2015-07-25 12:41:48 +02:00
parent e4005c0a35
commit 193177d999
12 changed files with 141 additions and 82 deletions

View file

@ -25,24 +25,26 @@
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets.betrayersofkamigawa;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.MageInt;
import mage.Mana;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.common.ManaEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.mana.BasicManaAbility;
import mage.abilities.mana.DynamicManaAbility;
import mage.cards.CardImpl;
import mage.choices.ChoiceColor;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.counters.CounterType;
import mage.filter.common.FilterSpiritOrArcaneCard;
import mage.game.Game;
@ -62,14 +64,19 @@ public class PetalmaneBaku extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(2);
// Whenever you cast a Spirit or Arcane spell, you may put a ki counter on Skullmane Baku.
this.addAbility(new SpellCastControllerTriggeredAbility(new AddCountersSourceEffect(CounterType.KI.createInstance()), filter, true));
// {1}, Remove X ki counters from Petalmane Baku: Add X mana of any one color to your mana pool.
Ability ability = new PetalmaneBakuManaAbility();
ability.addCost(new GenericManaCost(1));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.KI.createInstance(1)));
Ability ability = new DynamicManaAbility(
new Mana(0, 0, 0, 0, 0, 0, 1),
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add X mana of any one color to your mana pool",
true, new CountersCount(CounterType.KI));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove X ki counters from {this}"));
this.addAbility(ability);
}
@ -81,8 +88,9 @@ public class PetalmaneBaku extends CardImpl {
public PetalmaneBaku copy() {
return new PetalmaneBaku(this);
}
private class PetalmaneBakuManaAbility extends BasicManaAbility {
PetalmaneBakuManaAbility() {
super(new PetalmaneBakuManaEffect());
this.addChoice(new ChoiceColor());
@ -96,7 +104,7 @@ public class PetalmaneBaku extends CardImpl {
public PetalmaneBakuManaAbility copy() {
return new PetalmaneBakuManaAbility(this);
}
}
}
private class PetalmaneBakuManaEffect extends ManaEffect {
@ -118,9 +126,9 @@ public class PetalmaneBaku extends CardImpl {
int numberOfMana = 0;
for (Cost cost : source.getCosts()) {
if (cost instanceof RemoveVariableCountersSourceCost) {
numberOfMana = ((RemoveVariableCountersSourceCost)cost).getAmount();
numberOfMana = ((RemoveVariableCountersSourceCost) cost).getAmount();
}
}
}
if (choice.getColor().isBlack()) {
player.getManaPool().addMana(new Mana(0, 0, 0, 0, numberOfMana, 0, 0), game, source);
return true;
@ -152,5 +160,4 @@ public class PetalmaneBaku extends CardImpl {
}
}
}
}

View file

@ -35,7 +35,9 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SkipUntapOptionalAbility;
import mage.abilities.condition.common.SourceTappedCondition;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
@ -67,10 +69,14 @@ public class BottomlessVault extends CardImpl {
Effect effect = new ConditionalOneShotEffect(addStorageCounter, SourceTappedCondition.getInstance(), "if {this} is tapped, put a storage counter on it");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, false));
// {tap}, Remove any number of storage counters from Bottomless Vault: Add {B} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.BlackMana, new RemovedCountersForCostValue(),
"Add {B} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.BlackMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {B} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -35,7 +35,9 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SkipUntapOptionalAbility;
import mage.abilities.condition.common.SourceTappedCondition;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
@ -67,10 +69,14 @@ public class HollowTrees extends CardImpl {
Effect effect = new ConditionalOneShotEffect(addStorageCounter, SourceTappedCondition.getInstance(), "if {this} is tapped, put a storage counter on it");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, false));
// {tap}, Remove any number of storage counters from Hollow Trees: Add {G} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.BlackMana, new RemovedCountersForCostValue(),
"Add {B} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.GreenMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {G} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -35,7 +35,9 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SkipUntapOptionalAbility;
import mage.abilities.condition.common.SourceTappedCondition;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
@ -67,10 +69,14 @@ public class IcatianStore extends CardImpl {
Effect effect = new ConditionalOneShotEffect(addStorageCounter, SourceTappedCondition.getInstance(), "if {this} is tapped, put a storage counter on it");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, false));
// {tap}, Remove any number of storage counters from Icatian Store: Add {W} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.WhiteMana, new RemovedCountersForCostValue(),
"Add {W} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.WhiteMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {W} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -35,7 +35,9 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SkipUntapOptionalAbility;
import mage.abilities.condition.common.SourceTappedCondition;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
@ -67,10 +69,14 @@ public class DwarvenHold extends CardImpl {
Effect effect = new ConditionalOneShotEffect(addStorageCounter, SourceTappedCondition.getInstance(), "if {this} is tapped, put a storage counter on it");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, false));
// {tap}, Remove any number of storage counters from Dwarven Hold: Add {R} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.RedMana, new RemovedCountersForCostValue(),
"Add {R} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.RedMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {R} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -35,7 +35,9 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SkipUntapOptionalAbility;
import mage.abilities.condition.common.SourceTappedCondition;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
@ -67,10 +69,14 @@ public class SandSilos extends CardImpl {
Effect effect = new ConditionalOneShotEffect(addStorageCounter, SourceTappedCondition.getInstance(), "if {this} is tapped, put a storage counter on it");
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, effect, TargetController.YOU, false));
// {tap}, Remove any number of storage counters from Sand Silos: Add {U} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.BlueMana, new RemovedCountersForCostValue(),
"Add {U} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.BlueMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {U} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -34,6 +34,7 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.mana.DynamicManaAbility;
@ -57,11 +58,15 @@ public class FountainOfCho extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
// {tap}: Put a storage counter on Fountain of Cho.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.STORAGE.createInstance()), new TapSourceCost()));
// {tap}, Remove any number of storage counters from Fountain of Cho: Add {W} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.WhiteMana, new RemovedCountersForCostValue(),
"Add {W} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
// {T}, Remove any number of storage counters from Fountain of Cho: Add {W} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(
Mana.WhiteMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {W} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -34,6 +34,7 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.mana.DynamicManaAbility;
@ -58,10 +59,14 @@ public class MercadianBazaar extends CardImpl {
// {tap}: Put a storage counter on Mercadian Bazaar.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.STORAGE.createInstance()), new TapSourceCost()));
// {tap}, Remove any number of storage counters from Mercadian Bazaar: Add {R} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.RedMana, new RemovedCountersForCostValue(),
"Add {R} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.RedMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {R} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -34,6 +34,7 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.mana.DynamicManaAbility;
@ -55,13 +56,17 @@ public class RushwoodGrove extends CardImpl {
// Rushwood Grove enters the battlefield tapped.
this.addAbility(new EntersBattlefieldTappedAbility());
// {tap}: Put a storage counter on Rushwood Grove.
// {T}: Put a storage counter on Rushwood Grove.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.STORAGE.createInstance()), new TapSourceCost()));
// {tap}, Remove any number of storage counters from Rushwood Grove: Add {G} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.GreenMana, new RemovedCountersForCostValue(),
"Add {G} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
// {T}, Remove any number of storage counters from Rushwood Grove: Add {G} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(
Mana.GreenMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {G} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -34,13 +34,12 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.common.AddManaInAnyCombinationEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.mana.DynamicManaAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.ColoredManaSymbol;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.counters.CounterType;
@ -60,10 +59,14 @@ public class SaprazzanCove extends CardImpl {
// {tap}: Put a storage counter on Saprazzan Cove.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.STORAGE.createInstance()), new TapSourceCost()));
// {tap}, Remove any number of storage counters from Saprazzan Cove: Add {U} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.BlueMana, new RemovedCountersForCostValue(),
"Add {U} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.BlueMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {U} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}

View file

@ -34,6 +34,7 @@ import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.RemoveVariableCountersSourceCost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.dynamicvalue.common.CountersCount;
import mage.abilities.dynamicvalue.common.RemovedCountersForCostValue;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.mana.DynamicManaAbility;
@ -58,10 +59,14 @@ public class SubterraneanHangar extends CardImpl {
// {tap}: Put a storage counter on Subterranean Hangar.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.STORAGE.createInstance()), new TapSourceCost()));
// {tap}, Remove any number of storage counters from Subterranean Hangar: Add {B} to your mana pool for each storage counter removed this way.
Ability ability = new DynamicManaAbility(Mana.BlackMana, new RemovedCountersForCostValue(),
"Add {B} to your mana pool for each storage counter removed this way");
ability.addCost(new RemoveVariableCountersSourceCost(
CounterType.STORAGE.createInstance(), "Remove any number of storage counters from {this}"));
Ability ability = new DynamicManaAbility(
Mana.BlackMana,
new RemovedCountersForCostValue(),
new TapSourceCost(),
"Add {B} to your mana pool for each storage counter removed this way",
true, new CountersCount(CounterType.STORAGE));
ability.addCost(new RemoveVariableCountersSourceCost(CounterType.STORAGE.createInstance(),
"Remove any number of storage counters from {this}"));
this.addAbility(ability);
}