Fixed Chandra, Pyromaster only casting cards, not playing. Add Oracle's Vault to MLP

This commit is contained in:
fireshoes 2017-03-28 22:16:14 -05:00
parent ff382cf0a6
commit adc3b2ccac
2 changed files with 113 additions and 106 deletions

View file

@ -32,6 +32,7 @@ import java.util.Set;
import java.util.UUID;
import mage.MageObject;
import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
@ -211,11 +212,7 @@ class ChandraPyromasterEffect2 extends OneShotEffect {
Card card = library.removeFromTop(game);
if (card != null) {
controller.moveCardToExileWithInfo(card, source.getSourceId(), sourceObject.getIdName() + " <this card may be played the turn it was exiled>", source.getSourceId(), game, Zone.LIBRARY, true);
if (!card.getManaCost().isEmpty()) {
ContinuousEffect effect = new ChandraPyromasterCastFromExileEffect();
effect.setTargetPointer(new FixedTarget(card.getId()));
game.addEffect(effect, source);
}
game.addEffect(new ChandraPyromasterPlayEffect(new MageObjectReference(card, game)), source);
}
return true;
}
@ -223,15 +220,19 @@ class ChandraPyromasterEffect2 extends OneShotEffect {
}
}
class ChandraPyromasterCastFromExileEffect extends AsThoughEffectImpl {
class ChandraPyromasterPlayEffect extends AsThoughEffectImpl {
public ChandraPyromasterCastFromExileEffect() {
private final MageObjectReference objectReference;
public ChandraPyromasterPlayEffect(MageObjectReference objectReference) {
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.EndOfTurn, Outcome.Benefit);
staticText = "You may play the card from exile this turn";
this.objectReference = objectReference;
staticText = "you may play that card until end of turn";
}
public ChandraPyromasterCastFromExileEffect(final ChandraPyromasterCastFromExileEffect effect) {
public ChandraPyromasterPlayEffect(final ChandraPyromasterPlayEffect effect) {
super(effect);
this.objectReference = effect.objectReference;
}
@Override
@ -240,14 +241,19 @@ class ChandraPyromasterCastFromExileEffect extends AsThoughEffectImpl {
}
@Override
public ChandraPyromasterCastFromExileEffect copy() {
return new ChandraPyromasterCastFromExileEffect(this);
public ChandraPyromasterPlayEffect copy() {
return new ChandraPyromasterPlayEffect(this);
}
@Override
public boolean applies(UUID sourceId, Ability source, UUID affectedControllerId, Game game) {
if (targetPointer.getTargets(game, source).contains(sourceId)) {
return game.getState().getZone(sourceId) == Zone.EXILED;
public boolean applies(UUID objectId, Ability source, UUID affectedControllerId, Game game) {
if (objectReference.refersTo(objectId, game) && affectedControllerId.equals(source.getControllerId())) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
return true;
} else {
discard();
}
}
return false;
}

View file

@ -1,92 +1,93 @@
/*
* 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;
import mage.constants.SetType;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
/**
*
* @author fireshoes
*/
public class LaunchParty extends ExpansionSet {
private static final LaunchParty instance = new LaunchParty();
public static LaunchParty getInstance() {
return instance;
}
private LaunchParty() {
super("Launch Party", "MLP", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Ajani Vengeant", 4, Rarity.MYTHIC, mage.cards.a.AjaniVengeant.class));
cards.add(new SetCardInfo("Ancient Hellkite", 11, Rarity.RARE, mage.cards.a.AncientHellkite.class));
cards.add(new SetCardInfo("Angel of Deliverance", 35, Rarity.RARE, mage.cards.a.AngelOfDeliverance.class));
cards.add(new SetCardInfo("Ant Queen", 7, Rarity.RARE, mage.cards.a.AntQueen.class));
cards.add(new SetCardInfo("Bident of Thassa", 24, Rarity.RARE, mage.cards.b.BidentOfThassa.class));
cards.add(new SetCardInfo("Blight Herder", 32, Rarity.RARE, mage.cards.b.BlightHerder.class));
cards.add(new SetCardInfo("Breaking // Entering", 22, Rarity.RARE, mage.cards.b.BreakingEntering.class));
cards.add(new SetCardInfo("Colossal Whale", 23, Rarity.RARE, mage.cards.c.ColossalWhale.class));
cards.add(new SetCardInfo("Deadbridge Goliath", 20, Rarity.RARE, mage.cards.d.DeadbridgeGoliath.class));
cards.add(new SetCardInfo("Deathbringer Regent", 30, Rarity.RARE, mage.cards.d.DeathbringerRegent.class));
cards.add(new SetCardInfo("Dictate of the Twin Gods", 26, Rarity.RARE, mage.cards.d.DictateOfTheTwinGods.class));
cards.add(new SetCardInfo("Dragon Throne of Tarkir", 27, Rarity.RARE, mage.cards.d.DragonThroneOfTarkir.class));
cards.add(new SetCardInfo("Earwig Squad", 1, Rarity.RARE, mage.cards.e.EarwigSquad.class));
cards.add(new SetCardInfo("Endbringer", 34, Rarity.RARE, mage.cards.e.Endbringer.class));
cards.add(new SetCardInfo("Figure of Destiny", 3, Rarity.RARE, mage.cards.f.FigureOfDestiny.class));
cards.add(new SetCardInfo("Garruk's Horde", 15, Rarity.RARE, mage.cards.g.GarruksHorde.class));
cards.add(new SetCardInfo("Identity Thief", 33, Rarity.RARE, mage.cards.i.IdentityThief.class));
cards.add(new SetCardInfo("In Garruk's Wake", 28, Rarity.RARE, mage.cards.i.InGarruksWake.class));
cards.add(new SetCardInfo("Joraga Warcaller", 9, Rarity.RARE, mage.cards.j.JoragaWarcaller.class));
cards.add(new SetCardInfo("Knight of New Alara", 6, Rarity.RARE, mage.cards.k.KnightOfNewAlara.class));
cards.add(new SetCardInfo("Lord of Shatterskull Pass", 10, Rarity.RARE, mage.cards.l.LordOfShatterskullPass.class));
cards.add(new SetCardInfo("Ludevic's Abomination", 1064, Rarity.RARE, mage.cards.l.LudevicsAbomination.class));
cards.add(new SetCardInfo("Ludevic's Test Subject", 16, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class));
cards.add(new SetCardInfo("Mizzium Meddler", 31, Rarity.RARE, mage.cards.m.MizziumMeddler.class));
cards.add(new SetCardInfo("Mondronen Shaman", 17, Rarity.RARE, mage.cards.m.MondronenShaman.class));
cards.add(new SetCardInfo("Obelisk of Alara", 5, Rarity.RARE, mage.cards.o.ObeliskOfAlara.class));
cards.add(new SetCardInfo("Phyrexian Metamorph", 14, Rarity.RARE, mage.cards.p.PhyrexianMetamorph.class));
cards.add(new SetCardInfo("Quicksmith Rebel", 38, Rarity.RARE, mage.cards.q.QuicksmithRebel.class));
cards.add(new SetCardInfo("Restoration Angel", 18, Rarity.RARE, mage.cards.r.RestorationAngel.class));
cards.add(new SetCardInfo("Saheeli's Artistry", 37, Rarity.RARE, mage.cards.s.SaheelisArtistry.class));
cards.add(new SetCardInfo("Sandsteppe Mastodon", 29, Rarity.RARE, mage.cards.s.SandsteppeMastodon.class));
cards.add(new SetCardInfo("Skarrg Goliath", 21, Rarity.RARE, mage.cards.s.SkarrgGoliath.class));
cards.add(new SetCardInfo("Staff of Nin", 19, Rarity.RARE, mage.cards.s.StaffOfNin.class));
cards.add(new SetCardInfo("Steel Hellkite", 12, Rarity.RARE, mage.cards.s.SteelHellkite.class));
cards.add(new SetCardInfo("Thopter Assembly", 13, Rarity.RARE, mage.cards.t.ThopterAssembly.class));
cards.add(new SetCardInfo("Tovolar's Magehunter", 98, Rarity.RARE, mage.cards.t.TovolarsMagehunter.class));
cards.add(new SetCardInfo("Tromokratis", 25, Rarity.RARE, mage.cards.t.Tromokratis.class));
cards.add(new SetCardInfo("Valakut, the Molten Pinnacle", 8, Rarity.RARE, mage.cards.v.ValakutTheMoltenPinnacle.class));
cards.add(new SetCardInfo("Vexing Shusher", 2, Rarity.RARE, mage.cards.v.VexingShusher.class));
}
}
/*
* 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;
import mage.constants.SetType;
import mage.cards.ExpansionSet;
import mage.constants.Rarity;
/**
*
* @author fireshoes
*/
public class LaunchParty extends ExpansionSet {
private static final LaunchParty instance = new LaunchParty();
public static LaunchParty getInstance() {
return instance;
}
private LaunchParty() {
super("Launch Party", "MLP", ExpansionSet.buildDate(2011, 6, 17), SetType.PROMOTIONAL);
this.hasBoosters = false;
this.hasBasicLands = false;
cards.add(new SetCardInfo("Ajani Vengeant", 4, Rarity.MYTHIC, mage.cards.a.AjaniVengeant.class));
cards.add(new SetCardInfo("Ancient Hellkite", 11, Rarity.RARE, mage.cards.a.AncientHellkite.class));
cards.add(new SetCardInfo("Angel of Deliverance", 35, Rarity.RARE, mage.cards.a.AngelOfDeliverance.class));
cards.add(new SetCardInfo("Ant Queen", 7, Rarity.RARE, mage.cards.a.AntQueen.class));
cards.add(new SetCardInfo("Bident of Thassa", 24, Rarity.RARE, mage.cards.b.BidentOfThassa.class));
cards.add(new SetCardInfo("Blight Herder", 32, Rarity.RARE, mage.cards.b.BlightHerder.class));
cards.add(new SetCardInfo("Breaking // Entering", 22, Rarity.RARE, mage.cards.b.BreakingEntering.class));
cards.add(new SetCardInfo("Colossal Whale", 23, Rarity.RARE, mage.cards.c.ColossalWhale.class));
cards.add(new SetCardInfo("Deadbridge Goliath", 20, Rarity.RARE, mage.cards.d.DeadbridgeGoliath.class));
cards.add(new SetCardInfo("Deathbringer Regent", 30, Rarity.RARE, mage.cards.d.DeathbringerRegent.class));
cards.add(new SetCardInfo("Dictate of the Twin Gods", 26, Rarity.RARE, mage.cards.d.DictateOfTheTwinGods.class));
cards.add(new SetCardInfo("Dragon Throne of Tarkir", 27, Rarity.RARE, mage.cards.d.DragonThroneOfTarkir.class));
cards.add(new SetCardInfo("Earwig Squad", 1, Rarity.RARE, mage.cards.e.EarwigSquad.class));
cards.add(new SetCardInfo("Endbringer", 34, Rarity.RARE, mage.cards.e.Endbringer.class));
cards.add(new SetCardInfo("Figure of Destiny", 3, Rarity.RARE, mage.cards.f.FigureOfDestiny.class));
cards.add(new SetCardInfo("Garruk's Horde", 15, Rarity.RARE, mage.cards.g.GarruksHorde.class));
cards.add(new SetCardInfo("Identity Thief", 33, Rarity.RARE, mage.cards.i.IdentityThief.class));
cards.add(new SetCardInfo("In Garruk's Wake", 28, Rarity.RARE, mage.cards.i.InGarruksWake.class));
cards.add(new SetCardInfo("Joraga Warcaller", 9, Rarity.RARE, mage.cards.j.JoragaWarcaller.class));
cards.add(new SetCardInfo("Knight of New Alara", 6, Rarity.RARE, mage.cards.k.KnightOfNewAlara.class));
cards.add(new SetCardInfo("Lord of Shatterskull Pass", 10, Rarity.RARE, mage.cards.l.LordOfShatterskullPass.class));
cards.add(new SetCardInfo("Ludevic's Abomination", 1064, Rarity.RARE, mage.cards.l.LudevicsAbomination.class));
cards.add(new SetCardInfo("Ludevic's Test Subject", 16, Rarity.RARE, mage.cards.l.LudevicsTestSubject.class));
cards.add(new SetCardInfo("Mizzium Meddler", 31, Rarity.RARE, mage.cards.m.MizziumMeddler.class));
cards.add(new SetCardInfo("Mondronen Shaman", 17, Rarity.RARE, mage.cards.m.MondronenShaman.class));
cards.add(new SetCardInfo("Obelisk of Alara", 5, Rarity.RARE, mage.cards.o.ObeliskOfAlara.class));
cards.add(new SetCardInfo("Oracle's Vault", 39, Rarity.RARE, mage.cards.o.OraclesVault.class));
cards.add(new SetCardInfo("Phyrexian Metamorph", 14, Rarity.RARE, mage.cards.p.PhyrexianMetamorph.class));
cards.add(new SetCardInfo("Quicksmith Rebel", 38, Rarity.RARE, mage.cards.q.QuicksmithRebel.class));
cards.add(new SetCardInfo("Restoration Angel", 18, Rarity.RARE, mage.cards.r.RestorationAngel.class));
cards.add(new SetCardInfo("Saheeli's Artistry", 37, Rarity.RARE, mage.cards.s.SaheelisArtistry.class));
cards.add(new SetCardInfo("Sandsteppe Mastodon", 29, Rarity.RARE, mage.cards.s.SandsteppeMastodon.class));
cards.add(new SetCardInfo("Skarrg Goliath", 21, Rarity.RARE, mage.cards.s.SkarrgGoliath.class));
cards.add(new SetCardInfo("Staff of Nin", 19, Rarity.RARE, mage.cards.s.StaffOfNin.class));
cards.add(new SetCardInfo("Steel Hellkite", 12, Rarity.RARE, mage.cards.s.SteelHellkite.class));
cards.add(new SetCardInfo("Thopter Assembly", 13, Rarity.RARE, mage.cards.t.ThopterAssembly.class));
cards.add(new SetCardInfo("Tovolar's Magehunter", 98, Rarity.RARE, mage.cards.t.TovolarsMagehunter.class));
cards.add(new SetCardInfo("Tromokratis", 25, Rarity.RARE, mage.cards.t.Tromokratis.class));
cards.add(new SetCardInfo("Valakut, the Molten Pinnacle", 8, Rarity.RARE, mage.cards.v.ValakutTheMoltenPinnacle.class));
cards.add(new SetCardInfo("Vexing Shusher", 2, Rarity.RARE, mage.cards.v.VexingShusher.class));
}
}