Merge origin/master

This commit is contained in:
LevelX2 2016-07-12 20:00:42 +02:00
commit ca033647d3
10 changed files with 40 additions and 28 deletions

View file

@ -68,7 +68,7 @@ class CertainDeathEffect extends OneShotEffect {
public CertainDeathEffect() { public CertainDeathEffect() {
super(Outcome.DestroyPermanent); super(Outcome.DestroyPermanent);
this.staticText = "Destroy target creature. Its controler loses 2 life and you gain 2 life"; this.staticText = "Destroy target creature. Its controller loses 2 life and you gain 2 life";
} }
public CertainDeathEffect(final CertainDeathEffect effect) { public CertainDeathEffect(final CertainDeathEffect effect) {

View file

@ -77,8 +77,10 @@ public class Cryptbreaker extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// Tap three untapped Zombies you control: You draw a card and you lose 1 life. // Tap three untapped Zombies you control: You draw a card and you lose 1 life.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new TapTargetCost(new TargetControlledCreaturePermanent(3, 3, filter, true))); Effect effect = new DrawCardSourceControllerEffect(1);
Effect effect = new LoseLifeSourceControllerEffect(1); effect.setText("You draw a card");
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new TapTargetCost(new TargetControlledCreaturePermanent(3, 3, filter, true)));
effect = new LoseLifeSourceControllerEffect(1);
effect.setText("and you lose 1 life"); effect.setText("and you lose 1 life");
ability.addEffect(effect); ability.addEffect(effect);
this.addAbility(ability); this.addAbility(ability);

View file

@ -41,8 +41,8 @@ import mage.constants.Rarity;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ZombieToken; import mage.game.permanent.token.ZombieToken;
import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import mage.target.targetpointer.SecondTargetPointer; import mage.target.targetpointer.SecondTargetPointer;
@ -62,9 +62,9 @@ public class DarkSalvation extends CardImpl {
Effect effect = new CreateTokenTargetEffect(new ZombieToken(), new ManacostVariableValue()); Effect effect = new CreateTokenTargetEffect(new ZombieToken(), new ManacostVariableValue());
effect.setText("Target player puts X 2/2 black Zombie creature tokens onto the battlefield"); effect.setText("Target player puts X 2/2 black Zombie creature tokens onto the battlefield");
this.getSpellAbility().addEffect(effect); this.getSpellAbility().addEffect(effect);
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1, new FilterCreaturePermanent(), false)); DynamicValue value = new ZombiesControlledByTargetPlayerCount();
DynamicValue value = new ZombiesControlledByTargetCreaturesControllerCount(); this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1, new FilterCreaturePermanent(), false));
effect = new BoostTargetEffect(value, value, Duration.EndOfTurn, true); effect = new BoostTargetEffect(value, value, Duration.EndOfTurn, true);
effect.setTargetPointer(new SecondTargetPointer()); effect.setTargetPointer(new SecondTargetPointer());
effect.setText(", then up to one target creature gets -1/-1 until end of turn for each Zombie that player controls"); effect.setText(", then up to one target creature gets -1/-1 until end of turn for each Zombie that player controls");
@ -81,7 +81,7 @@ public class DarkSalvation extends CardImpl {
} }
} }
class ZombiesControlledByTargetCreaturesControllerCount implements DynamicValue { class ZombiesControlledByTargetPlayerCount implements DynamicValue {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombies"); private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("Zombies");
@ -90,15 +90,15 @@ class ZombiesControlledByTargetCreaturesControllerCount implements DynamicValue
} }
@Override @Override
public ZombiesControlledByTargetCreaturesControllerCount copy() { public ZombiesControlledByTargetPlayerCount copy() {
return new ZombiesControlledByTargetCreaturesControllerCount(); return new ZombiesControlledByTargetPlayerCount();
} }
@Override @Override
public int calculate(Game game, Ability sourceAbility, Effect effect) { public int calculate(Game game, Ability sourceAbility, Effect effect) {
Permanent targetCreature = game.getPermanent(effect.getTargetPointer().getFirst(game, sourceAbility)); Player player = game.getPlayer(sourceAbility.getTargets().get(0).getFirstTarget());
if (targetCreature != null) { if (player != null) {
int value = game.getBattlefield().countAll(filter, targetCreature.getControllerId(), game); int value = game.getBattlefield().countAll(filter, player.getId(), game);
return -1 * value; return -1 * value;
} else { } else {
return 0; return 0;

View file

@ -62,6 +62,7 @@ public class DuskFeaster extends CardImpl {
// <i>Delirium</i> &mdash; Dusk Feaster costs {2} less to cast if there are four or more card types among cards in your graveyard. // <i>Delirium</i> &mdash; Dusk Feaster costs {2} less to cast if there are four or more card types among cards in your graveyard.
this.addAbility(new SimpleStaticAbility(Zone.STACK, new DuskFeasterCostReductionEffect())); this.addAbility(new SimpleStaticAbility(Zone.STACK, new DuskFeasterCostReductionEffect()));
// Flying // Flying
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
} }
@ -80,7 +81,7 @@ class DuskFeasterCostReductionEffect extends CostModificationEffectImpl {
DuskFeasterCostReductionEffect() { DuskFeasterCostReductionEffect() {
super(Duration.Custom, Outcome.Benefit, CostModificationType.REDUCE_COST); super(Duration.Custom, Outcome.Benefit, CostModificationType.REDUCE_COST);
staticText = "{this} costs {2} less to cast if there are four or more card types among cards in your graveyard"; staticText = "<i>Delirium</i> &mdash; {this} costs {2} less to cast if there are four or more card types among cards in your graveyard";
} }
DuskFeasterCostReductionEffect(final DuskFeasterCostReductionEffect effect) { DuskFeasterCostReductionEffect(final DuskFeasterCostReductionEffect effect) {

View file

@ -33,6 +33,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.ExileFromGraveCost; import mage.abilities.costs.common.ExileFromGraveCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.MenaceAbility; import mage.abilities.keyword.MenaceAbility;
@ -64,7 +65,9 @@ public class GrafHarvest extends CardImpl {
this.expansionSetCode = "EMN"; this.expansionSetCode = "EMN";
// Zombies you control have menace. // Zombies you control have menace.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter))); Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.WhileOnBattlefield, filter);
effect.setText("Zombies you control have menace. <i>(They can't be blocked except by two or more creatures.)</i>");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// {3}{B}, Exile a creature card from your graveyard: Put a 2/2 black Zombie creature token onto the battlefield. // {3}{B}, Exile a creature card from your graveyard: Put a 2/2 black Zombie creature token onto the battlefield.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ZombieToken()), new ManaCostsImpl("{3}{B}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new ZombieToken()), new ManaCostsImpl("{3}{B}"));

View file

@ -60,8 +60,7 @@ public class NoosegrafMob extends CardImpl {
this.toughness = new MageInt(0); this.toughness = new MageInt(0);
// Noosegraf Mob enters the battlefield with five +1/+1 counters on it. // Noosegraf Mob enters the battlefield with five +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)), this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)), "with five +1/+1 counters on it"));
"{this} enters the battlefield with five +1/+1 counters on it"));
// Whenever a player casts a spell, remove a +1/+1 counter from Noosegraf Mob. If you do, put a 2/2 black Zombie creature token onto the battlefield. // Whenever a player casts a spell, remove a +1/+1 counter from Noosegraf Mob. If you do, put a 2/2 black Zombie creature token onto the battlefield.
this.addAbility(new SpellCastAllTriggeredAbility(new NoosegrafMobEffect(), false)); this.addAbility(new SpellCastAllTriggeredAbility(new NoosegrafMobEffect(), false));

View file

@ -28,8 +28,10 @@
package mage.sets.eldritchmoon; package mage.sets.eldritchmoon;
import java.util.UUID; import java.util.UUID;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.DiscardTargetCost; import mage.abilities.costs.common.DiscardTargetCost;
import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -51,11 +53,16 @@ public class RuthlessDisposal extends CardImpl {
this.expansionSetCode = "EMN"; this.expansionSetCode = "EMN";
// As an additional cost to cast Ruthless Disposal, discard a card and sacrifice a creature. // As an additional cost to cast Ruthless Disposal, discard a card and sacrifice a creature.
this.getSpellAbility().addCost(new DiscardTargetCost(new TargetCardInHand(new FilterCard("card to discard")))); this.getSpellAbility().addCost(new DiscardTargetCost(new TargetCardInHand(new FilterCard("a card"))));
this.getSpellAbility().addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent())); Cost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent());
cost.setText("As an additional cost to cast {this}, sacrifice a creature");
this.getSpellAbility().addCost(cost);
// Two target creatures each get -13/-13 until end of turn. // Two target creatures each get -13/-13 until end of turn.
Effect effect = new BoostTargetEffect(-13, -13, Duration.EndOfTurn);
effect.setText("Two target creatures each get -13/-13 until end of turn");
this.getSpellAbility().addTarget(new TargetCreaturePermanent(2)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(2));
this.getSpellAbility().addEffect(new BoostTargetEffect(-13, -13, Duration.EndOfTurn)); this.getSpellAbility().addEffect(effect);
} }

View file

@ -66,7 +66,7 @@ public class StrangeAugmentation extends CardImpl {
// <i>Delirium</i> &mdash Enchanted creature gets an additional +2/+2 as long as there are four or more card types among cards in your graveyard. // <i>Delirium</i> &mdash Enchanted creature gets an additional +2/+2 as long as there are four or more card types among cards in your graveyard.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new BoostEnchantedEffect(2, 2), DeliriumCondition.getInstance(), this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new BoostEnchantedEffect(2, 2), DeliriumCondition.getInstance(),
"<i>Delirium</i> &mdash; Enchanted creature gets an additional +2/+2 as long as you have no cards in hand"))); "<i>Delirium</i> &mdash; Enchanted creature gets an additional +2/+2 as long as there are four or more card types among cards in your graveyard.")));
} }
public StrangeAugmentation(final StrangeAugmentation card) { public StrangeAugmentation(final StrangeAugmentation card) {

View file

@ -53,7 +53,7 @@ public class StromkirkCondemned extends CardImpl {
} }
public StromkirkCondemned(UUID ownerId) { public StromkirkCondemned(UUID ownerId) {
super(ownerId, 105, "Stromkirk Condemned", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{B}{B}"); super(ownerId, 106, "Stromkirk Condemned", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{B}{B}");
this.expansionSetCode = "EMN"; this.expansionSetCode = "EMN";
this.subtype.add("Vampire"); this.subtype.add("Vampire");
this.subtype.add("Horror"); this.subtype.add("Horror");

View file

@ -51,7 +51,7 @@ public class WhispersOfEmrakul extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect( this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DiscardTargetEffect(1, true), new DiscardTargetEffect(1, true),
new InvertCondition(DeliriumCondition.getInstance()), new InvertCondition(DeliriumCondition.getInstance()),
"Target player sacrifices a creature or planeswalker.")); "Target opponent discards a card at random."));
// <i>Delirium</i> &mdash; If there are four or more card types among cards in your graveyard, that player discards two cards at random instead. // <i>Delirium</i> &mdash; If there are four or more card types among cards in your graveyard, that player discards two cards at random instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect( this.getSpellAbility().addEffect(new ConditionalOneShotEffect(