mirror of
https://github.com/correl/mage.git
synced 2024-12-24 03:00:14 +00:00
[BFZ] Added missing colorless cards (3 cards).
This commit is contained in:
parent
c659f79b96
commit
fffeaf1e5c
4 changed files with 349 additions and 12 deletions
101
Mage.Sets/src/mage/sets/battleforzendikar/BaneOfBalaGed.java
Normal file
101
Mage.Sets/src/mage/sets/battleforzendikar/BaneOfBalaGed.java
Normal file
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
package mage.sets.battleforzendikar;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.Target;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class BaneOfBalaGed extends CardImpl {
|
||||
|
||||
public BaneOfBalaGed(UUID ownerId) {
|
||||
super(ownerId, 1, "Bane of Bala Ged", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{7}");
|
||||
this.expansionSetCode = "BFZ";
|
||||
this.subtype.add("Eldrazi");
|
||||
this.power = new MageInt(7);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
// Whenever Bane of Bala Ged attacks, defending player exiles two permanents he or she controls.
|
||||
this.addAbility(new AttacksTriggeredAbility(new BaneOfBalaGedEffect(), false, "", SetTargetPointer.PLAYER));
|
||||
}
|
||||
|
||||
public BaneOfBalaGed(final BaneOfBalaGed card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaneOfBalaGed copy() {
|
||||
return new BaneOfBalaGed(this);
|
||||
}
|
||||
}
|
||||
|
||||
class BaneOfBalaGedEffect extends OneShotEffect {
|
||||
|
||||
public BaneOfBalaGedEffect() {
|
||||
super(Outcome.Benefit);
|
||||
this.staticText = "defending player exiles two permanents he or she controls";
|
||||
}
|
||||
|
||||
public BaneOfBalaGedEffect(final BaneOfBalaGedEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaneOfBalaGedEffect copy() {
|
||||
return new BaneOfBalaGedEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player defendingPlayer = game.getPlayer(getTargetPointer().getFirst(game, source));
|
||||
if (defendingPlayer != null) {
|
||||
Target target = new TargetControlledPermanent(2);
|
||||
defendingPlayer.chooseTarget(outcome, target, source, game);
|
||||
defendingPlayer.moveCards(new CardsImpl(target.getTargets()), null, Zone.EXILED, source, game);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
118
Mage.Sets/src/mage/sets/battleforzendikar/RuinProcessor.java
Normal file
118
Mage.Sets/src/mage/sets/battleforzendikar/RuinProcessor.java
Normal file
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
package mage.sets.battleforzendikar;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CastSourceTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.other.OwnerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.Target;
|
||||
import mage.target.common.TargetCardInExile;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class RuinProcessor extends CardImpl {
|
||||
|
||||
public RuinProcessor(UUID ownerId) {
|
||||
super(ownerId, 12, "Ruin Processor", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{7}");
|
||||
this.expansionSetCode = "BFZ";
|
||||
this.subtype.add("Eldrazi");
|
||||
this.subtype.add("Processor");
|
||||
this.power = new MageInt(7);
|
||||
this.toughness = new MageInt(8);
|
||||
|
||||
// When you cast Ruin Processor, you may put a card an opponent owns from exile into that player's graveyard. If you do, you gain 5 life.
|
||||
this.addAbility(new CastSourceTriggeredAbility(new RuinProcessorEffect()));
|
||||
|
||||
}
|
||||
|
||||
public RuinProcessor(final RuinProcessor card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RuinProcessor copy() {
|
||||
return new RuinProcessor(this);
|
||||
}
|
||||
}
|
||||
|
||||
class RuinProcessorEffect extends OneShotEffect {
|
||||
|
||||
private final static FilterCard filter = new FilterCard("card an opponent owns from exile");
|
||||
|
||||
static {
|
||||
filter.add(new OwnerPredicate(TargetController.OPPONENT));
|
||||
}
|
||||
|
||||
public RuinProcessorEffect() {
|
||||
super(Outcome.Discard);
|
||||
this.staticText = "you may put a card an opponent owns from exile into that player's graveyard. If you do, you gain 5 life";
|
||||
}
|
||||
|
||||
public RuinProcessorEffect(final RuinProcessorEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RuinProcessorEffect copy() {
|
||||
return new RuinProcessorEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
Target target = new TargetCardInExile(1, 1, filter, null);
|
||||
if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) {
|
||||
if (controller.chooseTarget(outcome, target, source, game)) {
|
||||
Cards cardsToGraveyard = new CardsImpl(target.getTargets());
|
||||
controller.moveCards(cardsToGraveyard, null, Zone.GRAVEYARD, source, game);
|
||||
controller.gainLife(5, game);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
119
Mage.Sets/src/mage/sets/battleforzendikar/UlamogsDespoiler.java
Normal file
119
Mage.Sets/src/mage/sets/battleforzendikar/UlamogsDespoiler.java
Normal file
|
@ -0,0 +1,119 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
package mage.sets.battleforzendikar;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Rarity;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.other.OwnerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.Target;
|
||||
import mage.target.common.TargetCardInExile;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class UlamogsDespoiler extends CardImpl {
|
||||
|
||||
public UlamogsDespoiler(UUID ownerId) {
|
||||
super(ownerId, 16, "Ulamog's Despoiler", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{6}");
|
||||
this.expansionSetCode = "BFZ";
|
||||
this.subtype.add("Eldrazi");
|
||||
this.subtype.add("Processor");
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
// As Ulamog's Despoiler enters the battlefield, you may put two cards your opponents own from exile into their owners' graveyards. If you do, Ulamog's Despoiler enters the battlefield with four +1/+1 counters on it.
|
||||
this.addAbility(new EntersBattlefieldAbility(new UlamogsDespoilerEffect(), null, true,
|
||||
"As {this} enters the battlefield, you may put two cards your opponents own from exile into their owners' graveyards. If you do, {this} enters the battlefield with four +1/+1 counters on it", null));
|
||||
}
|
||||
|
||||
public UlamogsDespoiler(final UlamogsDespoiler card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UlamogsDespoiler copy() {
|
||||
return new UlamogsDespoiler(this);
|
||||
}
|
||||
}
|
||||
|
||||
class UlamogsDespoilerEffect extends OneShotEffect {
|
||||
|
||||
private final static FilterCard filter = new FilterCard("cards your opponents own from exile");
|
||||
|
||||
static {
|
||||
filter.add(new OwnerPredicate(TargetController.OPPONENT));
|
||||
}
|
||||
|
||||
public UlamogsDespoilerEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.staticText = "you may put two cards your opponents own from exile into their owners' graveyards. If you do, {this} enters the battlefield with four +1/+1 counters on it";
|
||||
}
|
||||
|
||||
public UlamogsDespoilerEffect(final UlamogsDespoilerEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UlamogsDespoilerEffect copy() {
|
||||
return new UlamogsDespoilerEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
Target target = new TargetCardInExile(2, 2, filter, null);
|
||||
if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) {
|
||||
if (controller.chooseTarget(outcome, target, source, game)) {
|
||||
Cards cardsToGraveyard = new CardsImpl(target.getTargets());
|
||||
controller.moveCards(cardsToGraveyard, null, Zone.GRAVEYARD, source, game);
|
||||
return new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)).apply(game, source);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -1,16 +1,16 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
|
@ -20,12 +20,11 @@
|
|||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
|
||||
package mage.abilities.common;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@ -42,14 +41,14 @@ import mage.target.targetpointer.FixedTarget;
|
|||
* @author BetaSteward_at_googlemail.com
|
||||
*/
|
||||
public class AttacksTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
|
||||
protected SetTargetPointer setTargetPointer;
|
||||
protected String text;
|
||||
|
||||
public AttacksTriggeredAbility(Effect effect, boolean optional) {
|
||||
this(effect, optional, null);
|
||||
}
|
||||
|
||||
|
||||
public AttacksTriggeredAbility(Effect effect, boolean optional, String text) {
|
||||
this(effect, optional, text, SetTargetPointer.NONE);
|
||||
}
|
||||
|
@ -73,12 +72,12 @@ public class AttacksTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
if (game.getCombat().getAttackers().contains(this.getSourceId()) ) {
|
||||
switch(setTargetPointer) {
|
||||
if (game.getCombat().getAttackers().contains(this.getSourceId())) {
|
||||
switch (setTargetPointer) {
|
||||
case PLAYER:
|
||||
UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(getSourceId(), game);
|
||||
if (defendingPlayerId != null) {
|
||||
for (Effect effect: getEffects()) {
|
||||
for (Effect effect : getEffects()) {
|
||||
effect.setTargetPointer(new FixedTarget(defendingPlayerId));
|
||||
}
|
||||
}
|
||||
|
@ -93,7 +92,7 @@ public class AttacksTriggeredAbility extends TriggeredAbilityImpl {
|
|||
@Override
|
||||
public String getRule() {
|
||||
if (text == null || text.isEmpty()) {
|
||||
return "When {this} attacks, " + super.getRule();
|
||||
return "Whenever {this} attacks, " + super.getRule();
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue