Added Maze of Shadows and Volrath's Laboratory.

Fixed a couple of wrong creature types.
This commit is contained in:
emerald000 2015-03-31 14:06:19 -04:00
parent a878d4879b
commit cee5234bea
8 changed files with 322 additions and 10 deletions

View file

@ -28,9 +28,6 @@
package mage.sets.betrayersofkamigawa; package mage.sets.betrayersofkamigawa;
import java.util.UUID; import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
@ -39,6 +36,8 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
@ -56,7 +55,7 @@ public class SoratamiMindsweeper extends CardImpl {
public SoratamiMindsweeper(UUID ownerId) { public SoratamiMindsweeper(UUID ownerId) {
super(ownerId, 52, "Soratami Mindsweeper", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{U}"); super(ownerId, 52, "Soratami Mindsweeper", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.expansionSetCode = "BOK"; this.expansionSetCode = "BOK";
this.subtype.add("Moofolk"); this.subtype.add("Moonfolk");
this.subtype.add("Wizard"); this.subtype.add("Wizard");
this.color.setBlue(true); this.color.setBlue(true);
this.power = new MageInt(1); this.power = new MageInt(1);

View file

@ -50,7 +50,7 @@ public class AinokArtillerist extends CardImpl {
super(ownerId, 171, "Ainok Artillerist", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); super(ownerId, 171, "Ainok Artillerist", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.expansionSetCode = "DTK"; this.expansionSetCode = "DTK";
this.subtype.add("Hound"); this.subtype.add("Hound");
this.subtype.add("Arch"); this.subtype.add("Archer");
this.power = new MageInt(4); this.power = new MageInt(4);
this.toughness = new MageInt(1); this.toughness = new MageInt(1);

View file

@ -45,7 +45,7 @@ public class SandsteppeScavenger extends CardImpl {
super(ownerId, 200, "Sandsteppe Scavenger", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{G}"); super(ownerId, 200, "Sandsteppe Scavenger", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{G}");
this.expansionSetCode = "DTK"; this.expansionSetCode = "DTK";
this.subtype.add("Hound"); this.subtype.add("Hound");
this.subtype.add("Scount"); this.subtype.add("Scout");
this.power = new MageInt(2); this.power = new MageInt(2);
this.toughness = new MageInt(2); this.toughness = new MageInt(2);

View file

@ -27,6 +27,7 @@
*/ */
package mage.sets.gatecrash; package mage.sets.gatecrash;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
@ -39,12 +40,14 @@ import mage.cards.Card;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.Cards; import mage.cards.Cards;
import mage.cards.CardsImpl; import mage.cards.CardsImpl;
import mage.constants.*; import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
* *
* @author Plopman * @author Plopman
@ -55,7 +58,7 @@ public class ConsumingAberration extends CardImpl {
super(ownerId, 152, "Consuming Aberration", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{U}{B}"); super(ownerId, 152, "Consuming Aberration", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
this.expansionSetCode = "GTC"; this.expansionSetCode = "GTC";
this.subtype.add("horror"); this.subtype.add("Horror");
this.color.setBlack(true); this.color.setBlack(true);
this.color.setBlue(true); this.color.setBlue(true);

View file

@ -0,0 +1,52 @@
/*
* 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.stronghold;
import java.util.UUID;
/**
*
* @author emerald000
*/
public class VolrathsLaboratory extends mage.sets.tempestremastered.VolrathsLaboratory {
public VolrathsLaboratory(UUID ownerId) {
super(ownerId);
this.cardNumber = 136;
this.expansionSetCode = "STH";
}
public VolrathsLaboratory(final VolrathsLaboratory card) {
super(card);
}
@Override
public VolrathsLaboratory copy() {
return new VolrathsLaboratory(this);
}
}

View file

@ -0,0 +1,87 @@
/*
* 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.tempest;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.PreventDamageByTargetEffect;
import mage.abilities.effects.common.PreventDamageToTargetEffect;
import mage.abilities.effects.common.UntapTargetEffect;
import mage.abilities.keyword.ShadowAbility;
import mage.abilities.mana.ColorlessManaAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.filter.common.FilterAttackingCreature;
import mage.filter.predicate.mageobject.AbilityPredicate;
import mage.target.common.TargetAttackingCreature;
/**
*
* @author emerald000
*/
public class MazeOfShadows extends CardImpl {
private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with shadow");
static {
filter.add(new AbilityPredicate(ShadowAbility.class));
}
public MazeOfShadows(UUID ownerId) {
super(ownerId, 317, "Maze of Shadows", Rarity.UNCOMMON, new CardType[]{CardType.LAND}, "");
this.expansionSetCode = "TMP";
// {tap}: Add {1} to your mana pool.
this.addAbility(new ColorlessManaAbility());
// {tap}: Untap target attacking creature with shadow. Prevent all combat damage that would be dealt to and dealt by that creature this turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new TapSourceCost());
Effect effect = new PreventDamageByTargetEffect(Duration.EndOfTurn, true);
effect.setText("Prevent all combat damage that would be dealt to");
ability.addEffect(effect);
effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, Integer.MAX_VALUE, true);
effect.setText("and dealt by that creature this turn");
ability.addEffect(effect);
ability.addTarget(new TargetAttackingCreature(1, 1, filter, false));
this.addAbility(ability);
}
public MazeOfShadows(final MazeOfShadows card) {
super(card);
}
@Override
public MazeOfShadows copy() {
return new MazeOfShadows(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* 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.tempestremastered;
import java.util.UUID;
/**
*
* @author emerald000
*/
public class MazeOfShadows extends mage.sets.tempest.MazeOfShadows {
public MazeOfShadows(UUID ownerId) {
super(ownerId);
this.cardNumber = 238;
this.expansionSetCode = "TPR";
}
public MazeOfShadows(final MazeOfShadows card) {
super(card);
}
@Override
public MazeOfShadows copy() {
return new MazeOfShadows(this);
}
}

View 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.tempestremastered;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.ChooseColorEffect;
import mage.abilities.effects.common.ChooseCreatureTypeEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.token.Token;
/**
*
* @author emerald000
*/
public class VolrathsLaboratory extends CardImpl {
public VolrathsLaboratory(UUID ownerId) {
super(ownerId, 234, "Volrath's Laboratory", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{5}");
this.expansionSetCode = "TPR";
// As Volrath's Laboratory enters the battlefield, choose a color and a creature type.
Ability ability = new EntersBattlefieldAbility(new ChooseColorEffect(Outcome.Neutral), null, true, "As Volrath's Laboratory enters the battlefield, choose a color and a creature type.", "");
ability.addEffect(new ChooseCreatureTypeEffect(Outcome.Neutral));
this.addAbility(ability);
// {5}, {T}: Put a 2/2 creature token of the chosen color and type onto the battlefield.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new VolrathsLaboratoryEffect(), new GenericManaCost(5));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
}
public VolrathsLaboratory(final VolrathsLaboratory card) {
super(card);
}
@Override
public VolrathsLaboratory copy() {
return new VolrathsLaboratory(this);
}
}
class VolrathsLaboratoryEffect extends OneShotEffect {
VolrathsLaboratoryEffect() {
super(Outcome.PutCreatureInPlay);
this.staticText = "Put a 2/2 creature token of the chosen color and type onto the battlefield";
}
VolrathsLaboratoryEffect(final VolrathsLaboratoryEffect effect) {
super(effect);
}
@Override
public VolrathsLaboratoryEffect copy() {
return new VolrathsLaboratoryEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
ObjectColor color = (ObjectColor) game.getState().getValue(source.getSourceId() + "_color");
String type = (String) game.getState().getValue(source.getSourceId() + "_type");
Token token = new VolrathsLaboratoryToken(color, type);
return token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId());
}
}
class VolrathsLaboratoryToken extends Token {
VolrathsLaboratoryToken(ObjectColor color, String type) {
super(type, "2/2 creature token of the chosen color and type");
cardType.add(CardType.CREATURE);
if (color != null) {
this.color.setColor(color);
}
if (type != null) {
subtype.add(type);
}
power = new MageInt(2);
toughness = new MageInt(2);
}
}