* Mul Daya Channelers - Fixed a bug that the mana givng ability did not work as mana ability.

This commit is contained in:
LevelX2 2013-06-15 00:56:11 +02:00
parent b7a22aa283
commit eeca9a66ca
2 changed files with 70 additions and 14 deletions

View file

@ -31,19 +31,24 @@ import java.util.UUID;
import mage.Constants; import mage.Constants;
import mage.Constants.CardType; import mage.Constants.CardType;
import mage.Constants.Rarity; import mage.Constants.Rarity;
import mage.MageInt;
import mage.Constants.Zone; import mage.Constants.Zone;
import mage.MageInt;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continious.PlayWithTheTopCardRevealedEffect; import mage.abilities.condition.Condition;
import mage.cards.CardImpl;
import mage.abilities.effects.common.continious.BoostSourceEffect;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.condition.common.TopLibraryCardTypeCondition; import mage.abilities.condition.common.TopLibraryCardTypeCondition;
import mage.abilities.decorator.ConditionalGainActivatedAbility; import mage.abilities.costs.Cost;
import static mage.abilities.condition.common.TopLibraryCardTypeCondition.CheckType.*;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.decorator.ConditionalContinousEffect;
import mage.abilities.effects.common.AddManaOfAnyColorEffect; import mage.abilities.effects.common.AddManaOfAnyColorEffect;
import mage.abilities.effects.common.ManaEffect;
import mage.abilities.effects.common.continious.BoostSourceEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.effects.common.continious.PlayWithTheTopCardRevealedEffect;
import mage.abilities.mana.ManaAbility;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
import mage.choices.ChoiceColor; import mage.choices.ChoiceColor;
import mage.game.Game;
/** /**
* *
@ -52,7 +57,6 @@ import mage.choices.ChoiceColor;
public class MulDayaChannelers extends CardImpl<MulDayaChannelers> { public class MulDayaChannelers extends CardImpl<MulDayaChannelers> {
private static final String rule1 = "As long as the top card of your library is a creature card, {this} gets +3/+3"; private static final String rule1 = "As long as the top card of your library is a creature card, {this} gets +3/+3";
private static final String rule2 = "As long as the top card of your library is a land card, {this} has T: Add two mana of any one color to your mana pool.";
public MulDayaChannelers(UUID ownerId) { public MulDayaChannelers(UUID ownerId) {
super(ownerId, 198, "Mul Daya Channelers", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); super(ownerId, 198, "Mul Daya Channelers", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
@ -69,13 +73,17 @@ public class MulDayaChannelers extends CardImpl<MulDayaChannelers> {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PlayWithTheTopCardRevealedEffect())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PlayWithTheTopCardRevealedEffect()));
// As long as the top card of your library is a creature card, Mul Daya Channelers gets +3/+3. // As long as the top card of your library is a creature card, Mul Daya Channelers gets +3/+3.
ConditionalContinousEffect effect = new ConditionalContinousEffect(new BoostSourceEffect(3, 3, Constants.Duration.WhileOnBattlefield), new TopLibraryCardTypeCondition(CREATURE), rule1); ConditionalContinousEffect effect = new ConditionalContinousEffect(new BoostSourceEffect(3, 3, Constants.Duration.WhileOnBattlefield), new TopLibraryCardTypeCondition(TopLibraryCardTypeCondition.CheckType.CREATURE), rule1);
this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, effect)); this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, effect));
// As long as the top card of your library is a land card, Mul Daya Channelers has "T: Add two mana of any one color to your mana pool." // As long as the top card of your library is a land card, Mul Daya Channelers has "T: Add two mana of any one color to your mana pool."
ConditionalGainActivatedAbility ability = new ConditionalGainActivatedAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost(), new TopLibraryCardTypeCondition(LAND), rule2); SimpleManaAbility manaAbility = new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(2), new TapSourceCost());
ability.addChoice(new ChoiceColor()); manaAbility.addChoice(new ChoiceColor());
this.addAbility(ability); effect = new ConditionalContinousEffect(new GainAbilitySourceEffect(manaAbility, Constants.Duration.WhileOnBattlefield),
new TopLibraryCardTypeCondition(TopLibraryCardTypeCondition.CheckType.LAND),
"As long as the top card of your library is a land card, Mul Daya Channelers has \"{T}: Add two mana of any one color to your mana pool.\"");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
} }
public MulDayaChannelers(final MulDayaChannelers card) { public MulDayaChannelers(final MulDayaChannelers card) {
@ -87,3 +95,46 @@ public class MulDayaChannelers extends CardImpl<MulDayaChannelers> {
return new MulDayaChannelers(this); return new MulDayaChannelers(this);
} }
} }
class MulDayaChannelersActivateIfConditionManaAbility extends ManaAbility<MulDayaChannelersActivateIfConditionManaAbility> {
private Condition condition;
public MulDayaChannelersActivateIfConditionManaAbility(Zone zone, ManaEffect effect, Cost cost, Condition condition) {
super(zone, effect, cost);
this.condition = condition;
}
public MulDayaChannelersActivateIfConditionManaAbility(MulDayaChannelersActivateIfConditionManaAbility ability) {
super(ability);
this.condition = ability.condition;
}
@Override
public boolean canActivate(UUID playerId, Game game) {
if (condition.apply(game, this)) {
return super.canActivate(playerId, game);
}
return false;
}
@Override
public boolean activate(Game game, boolean noMana) {
if (canActivate(this.controllerId, game)) {
return super.activate(game, noMana);
}
return false;
}
@Override
public String getRule() {
return "As long as the top card of your library is a land card, {this} has \"{T}: Add two mana of any one color to your mana pool.";
}
@Override
public MulDayaChannelersActivateIfConditionManaAbility copy() {
return new MulDayaChannelersActivateIfConditionManaAbility(this);
}
}

View file

@ -32,6 +32,7 @@ import mage.abilities.Ability;
import mage.choices.ChoiceColor; import mage.choices.ChoiceColor;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import mage.util.CardUtil;
/** /**
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
@ -47,7 +48,11 @@ public class AddManaOfAnyColorEffect extends ManaEffect<AddManaOfAnyColorEffect>
public AddManaOfAnyColorEffect(final int amount) { public AddManaOfAnyColorEffect(final int amount) {
super(); super();
this.amount = amount; this.amount = amount;
this.staticText = "add " + amount + " mana of any color to your mana pool"; this.staticText = new StringBuilder("add ")
.append(CardUtil.numberToText(amount))
.append(" mana of any ")
.append(amount > 1 ?"one ":"")
.append("color to your mana pool").toString();
} }
public AddManaOfAnyColorEffect(final AddManaOfAnyColorEffect effect) { public AddManaOfAnyColorEffect(final AddManaOfAnyColorEffect effect) {