mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
[SLD] renamed Stranger Things cards to in-magic names (following scryfall's lead)
This commit is contained in:
parent
92d7aebc3d
commit
36e78c5f91
11 changed files with 140 additions and 140 deletions
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.m;
|
||||
package mage.cards.a;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -27,7 +27,7 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801 plus everyone who worked on Gonti
|
||||
*/
|
||||
public final class MindFlayerTheShadow extends CardImpl {
|
||||
public final class ArvinoxTheMindFlail extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledPermanent();
|
||||
|
||||
|
@ -38,7 +38,7 @@ public final class MindFlayerTheShadow extends CardImpl {
|
|||
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
|
||||
private static final Hint hint = new ValueHint("Permanents you control but don't own", xValue);
|
||||
|
||||
public MindFlayerTheShadow(UUID ownerId, CardSetInfo setInfo) {
|
||||
public ArvinoxTheMindFlail(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{4}{B}{B}{B}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -53,23 +53,23 @@ public final class MindFlayerTheShadow extends CardImpl {
|
|||
|
||||
// At the beginning of your end step, exile the bottom card of each opponent's library face down. For as long as those cards remain exiled, you may look at them, you may cast permanent spells from among them, and you may spend mana as though it were mana of any color to cast those spells.
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(
|
||||
new MindFlayerTheShadowExileEffect(), TargetController.YOU, false
|
||||
new ArvinoxTheMindFlailExileEffect(), TargetController.YOU, false
|
||||
));
|
||||
}
|
||||
|
||||
private MindFlayerTheShadow(final MindFlayerTheShadow card) {
|
||||
private ArvinoxTheMindFlail(final ArvinoxTheMindFlail card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MindFlayerTheShadow copy() {
|
||||
return new MindFlayerTheShadow(this);
|
||||
public ArvinoxTheMindFlail copy() {
|
||||
return new ArvinoxTheMindFlail(this);
|
||||
}
|
||||
}
|
||||
|
||||
class MindFlayerTheShadowExileEffect extends OneShotEffect {
|
||||
class ArvinoxTheMindFlailExileEffect extends OneShotEffect {
|
||||
|
||||
MindFlayerTheShadowExileEffect() {
|
||||
ArvinoxTheMindFlailExileEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "exile the bottom card of each opponent's library face down. "
|
||||
+ "For as long as those cards remain exiled, you may look at them, "
|
||||
|
@ -77,13 +77,13 @@ class MindFlayerTheShadowExileEffect extends OneShotEffect {
|
|||
+ "and you may spend mana as though it were mana of any color to cast those spells";
|
||||
}
|
||||
|
||||
private MindFlayerTheShadowExileEffect(final MindFlayerTheShadowExileEffect effect) {
|
||||
private ArvinoxTheMindFlailExileEffect(final ArvinoxTheMindFlailExileEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MindFlayerTheShadowExileEffect copy() {
|
||||
return new MindFlayerTheShadowExileEffect(this);
|
||||
public ArvinoxTheMindFlailExileEffect copy() {
|
||||
return new ArvinoxTheMindFlailExileEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -108,21 +108,21 @@ class MindFlayerTheShadowExileEffect extends OneShotEffect {
|
|||
cards.getCards(game).stream().forEach(card -> card.setFaceDown(true, game));
|
||||
for (Card card : cards.getCards(game)) {
|
||||
card.setFaceDown(true, game);
|
||||
game.addEffect(new MindFlayerTheShadowCastFromExileEffect().setTargetPointer(new FixedTarget(card, game)), source);
|
||||
game.addEffect(new MindFlayerTheShadowSpendAnyManaEffect().setTargetPointer(new FixedTarget(card, game)), source);
|
||||
game.addEffect(new MindFlayerTheShadowLookEffect(source.getControllerId()).setTargetPointer(new FixedTarget(card, game)), source);
|
||||
game.addEffect(new ArvinoxTheMindFlailCastFromExileEffect().setTargetPointer(new FixedTarget(card, game)), source);
|
||||
game.addEffect(new ArvinoxTheMindFlailSpendAnyManaEffect().setTargetPointer(new FixedTarget(card, game)), source);
|
||||
game.addEffect(new ArvinoxTheMindFlailLookEffect(source.getControllerId()).setTargetPointer(new FixedTarget(card, game)), source);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class MindFlayerTheShadowCastFromExileEffect extends AsThoughEffectImpl {
|
||||
class ArvinoxTheMindFlailCastFromExileEffect extends AsThoughEffectImpl {
|
||||
|
||||
public MindFlayerTheShadowCastFromExileEffect() {
|
||||
public ArvinoxTheMindFlailCastFromExileEffect() {
|
||||
super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.Custom, Outcome.Benefit);
|
||||
}
|
||||
|
||||
private MindFlayerTheShadowCastFromExileEffect(final MindFlayerTheShadowCastFromExileEffect effect) {
|
||||
private ArvinoxTheMindFlailCastFromExileEffect(final ArvinoxTheMindFlailCastFromExileEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
|
@ -132,8 +132,8 @@ class MindFlayerTheShadowCastFromExileEffect extends AsThoughEffectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public MindFlayerTheShadowCastFromExileEffect copy() {
|
||||
return new MindFlayerTheShadowCastFromExileEffect(this);
|
||||
public ArvinoxTheMindFlailCastFromExileEffect copy() {
|
||||
return new ArvinoxTheMindFlailCastFromExileEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -161,14 +161,14 @@ class MindFlayerTheShadowCastFromExileEffect extends AsThoughEffectImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class MindFlayerTheShadowSpendAnyManaEffect extends AsThoughEffectImpl implements AsThoughManaEffect {
|
||||
class ArvinoxTheMindFlailSpendAnyManaEffect extends AsThoughEffectImpl implements AsThoughManaEffect {
|
||||
|
||||
public MindFlayerTheShadowSpendAnyManaEffect() {
|
||||
public ArvinoxTheMindFlailSpendAnyManaEffect() {
|
||||
super(AsThoughEffectType.SPEND_OTHER_MANA, Duration.Custom, Outcome.Benefit);
|
||||
staticText = "you may spend mana as though it were mana of any color to cast it";
|
||||
}
|
||||
|
||||
private MindFlayerTheShadowSpendAnyManaEffect(final MindFlayerTheShadowSpendAnyManaEffect effect) {
|
||||
private ArvinoxTheMindFlailSpendAnyManaEffect(final ArvinoxTheMindFlailSpendAnyManaEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
|
@ -178,8 +178,8 @@ class MindFlayerTheShadowSpendAnyManaEffect extends AsThoughEffectImpl implement
|
|||
}
|
||||
|
||||
@Override
|
||||
public MindFlayerTheShadowSpendAnyManaEffect copy() {
|
||||
return new MindFlayerTheShadowSpendAnyManaEffect(this);
|
||||
public ArvinoxTheMindFlailSpendAnyManaEffect copy() {
|
||||
return new ArvinoxTheMindFlailSpendAnyManaEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -206,17 +206,17 @@ class MindFlayerTheShadowSpendAnyManaEffect extends AsThoughEffectImpl implement
|
|||
}
|
||||
}
|
||||
|
||||
class MindFlayerTheShadowLookEffect extends AsThoughEffectImpl {
|
||||
class ArvinoxTheMindFlailLookEffect extends AsThoughEffectImpl {
|
||||
|
||||
private final UUID authorizedPlayerId;
|
||||
|
||||
public MindFlayerTheShadowLookEffect(UUID authorizedPlayerId) {
|
||||
public ArvinoxTheMindFlailLookEffect(UUID authorizedPlayerId) {
|
||||
super(AsThoughEffectType.LOOK_AT_FACE_DOWN, Duration.EndOfGame, Outcome.Benefit);
|
||||
this.authorizedPlayerId = authorizedPlayerId;
|
||||
staticText = "You may look at the cards exiled with {this}";
|
||||
}
|
||||
|
||||
private MindFlayerTheShadowLookEffect(final MindFlayerTheShadowLookEffect effect) {
|
||||
private ArvinoxTheMindFlailLookEffect(final ArvinoxTheMindFlailLookEffect effect) {
|
||||
super(effect);
|
||||
this.authorizedPlayerId = effect.authorizedPlayerId;
|
||||
}
|
||||
|
@ -227,8 +227,8 @@ class MindFlayerTheShadowLookEffect extends AsThoughEffectImpl {
|
|||
}
|
||||
|
||||
@Override
|
||||
public MindFlayerTheShadowLookEffect copy() {
|
||||
return new MindFlayerTheShadowLookEffect(this);
|
||||
public ArvinoxTheMindFlailLookEffect copy() {
|
||||
return new ArvinoxTheMindFlailLookEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.l;
|
||||
package mage.cards.b;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -22,9 +22,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class LucasTheSharpshooter extends CardImpl {
|
||||
public final class BjornaNightfallAlchemist extends CardImpl {
|
||||
|
||||
public LucasTheSharpshooter(UUID ownerId, CardSetInfo setInfo) {
|
||||
public BjornaNightfallAlchemist(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{R}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -43,12 +43,12 @@ public final class LucasTheSharpshooter extends CardImpl {
|
|||
this.addAbility(FriendsForeverAbility.getInstance());
|
||||
}
|
||||
|
||||
private LucasTheSharpshooter(final LucasTheSharpshooter card) {
|
||||
private BjornaNightfallAlchemist(final BjornaNightfallAlchemist card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LucasTheSharpshooter copy() {
|
||||
return new LucasTheSharpshooter(this);
|
||||
public BjornaNightfallAlchemist copy() {
|
||||
return new BjornaNightfallAlchemist(this);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.e;
|
||||
package mage.cards.c;
|
||||
|
||||
import mage.ApprovingObject;
|
||||
import mage.MageInt;
|
||||
|
@ -25,9 +25,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ElevenTheMage extends CardImpl {
|
||||
public final class CecilyHauntedMage extends CardImpl {
|
||||
|
||||
public ElevenTheMage(UUID ownerId, CardSetInfo setInfo) {
|
||||
public CecilyHauntedMage(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}{R}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -42,37 +42,37 @@ public final class ElevenTheMage extends CardImpl {
|
|||
)));
|
||||
|
||||
// Whenever Eleven, the Mage attacks, you draw a card and you lose 1 life. Then if you have eleven or more cards in your hand, you may cast an instant or sorcery spell from your hand without paying its mana cost.
|
||||
this.addAbility(new AttacksTriggeredAbility(new ElevenTheMageEffect()));
|
||||
this.addAbility(new AttacksTriggeredAbility(new CecilyHauntedMageEffect()));
|
||||
|
||||
// Friends forever
|
||||
this.addAbility(FriendsForeverAbility.getInstance());
|
||||
}
|
||||
|
||||
private ElevenTheMage(final ElevenTheMage card) {
|
||||
private CecilyHauntedMage(final CecilyHauntedMage card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ElevenTheMage copy() {
|
||||
return new ElevenTheMage(this);
|
||||
public CecilyHauntedMage copy() {
|
||||
return new CecilyHauntedMage(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ElevenTheMageEffect extends OneShotEffect {
|
||||
class CecilyHauntedMageEffect extends OneShotEffect {
|
||||
|
||||
ElevenTheMageEffect() {
|
||||
CecilyHauntedMageEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "you draw a card and you lose 1 life. Then if you have eleven or more cards in your hand, " +
|
||||
"you may cast an instant or sorcery spell from your hand without paying its mana cost";
|
||||
}
|
||||
|
||||
private ElevenTheMageEffect(final ElevenTheMageEffect effect) {
|
||||
private CecilyHauntedMageEffect(final CecilyHauntedMageEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ElevenTheMageEffect copy() {
|
||||
return new ElevenTheMageEffect(this);
|
||||
public CecilyHauntedMageEffect copy() {
|
||||
return new CecilyHauntedMageEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.m;
|
||||
package mage.cards.e;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -19,9 +19,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class MaxTheDaredevil extends CardImpl {
|
||||
public final class ElmarUlvenwaldInformant extends CardImpl {
|
||||
|
||||
public MaxTheDaredevil(UUID ownerId, CardSetInfo setInfo) {
|
||||
public ElmarUlvenwaldInformant(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -42,12 +42,12 @@ public final class MaxTheDaredevil extends CardImpl {
|
|||
this.addAbility(FriendsForeverAbility.getInstance());
|
||||
}
|
||||
|
||||
private MaxTheDaredevil(final MaxTheDaredevil card) {
|
||||
private ElmarUlvenwaldInformant(final ElmarUlvenwaldInformant card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaxTheDaredevil copy() {
|
||||
return new MaxTheDaredevil(this);
|
||||
public ElmarUlvenwaldInformant copy() {
|
||||
return new ElmarUlvenwaldInformant(this);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.d;
|
||||
package mage.cards.h;
|
||||
|
||||
import mage.ConditionalMana;
|
||||
import mage.MageInt;
|
||||
|
@ -22,9 +22,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class DustinGadgetGenius extends CardImpl {
|
||||
public final class HargildeKindlyRunechanter extends CardImpl {
|
||||
|
||||
public DustinGadgetGenius(UUID ownerId, CardSetInfo setInfo) {
|
||||
public HargildeKindlyRunechanter(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -34,28 +34,28 @@ public final class DustinGadgetGenius extends CardImpl {
|
|||
|
||||
// {T}: Add {C}{C}. Spend this mana only to cast artifact spells or activate abilities of artifacts.
|
||||
this.addAbility(new ConditionalColorlessManaAbility(
|
||||
new TapSourceCost(), 2, new DustinGadgetGeniusManaBuilder()
|
||||
new TapSourceCost(), 2, new HargildeKindlyRunechanterManaBuilder()
|
||||
));
|
||||
|
||||
// Friends forever
|
||||
this.addAbility(FriendsForeverAbility.getInstance());
|
||||
}
|
||||
|
||||
private DustinGadgetGenius(final DustinGadgetGenius card) {
|
||||
private HargildeKindlyRunechanter(final HargildeKindlyRunechanter card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DustinGadgetGenius copy() {
|
||||
return new DustinGadgetGenius(this);
|
||||
public HargildeKindlyRunechanter copy() {
|
||||
return new HargildeKindlyRunechanter(this);
|
||||
}
|
||||
}
|
||||
|
||||
class DustinGadgetGeniusManaBuilder extends ConditionalManaBuilder {
|
||||
class HargildeKindlyRunechanterManaBuilder extends ConditionalManaBuilder {
|
||||
|
||||
@Override
|
||||
public ConditionalMana build(Object... options) {
|
||||
return new DustinGadgetGeniusConditionalMana(this.mana);
|
||||
return new HargildeKindlyRunechanterConditionalMana(this.mana);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -64,15 +64,15 @@ class DustinGadgetGeniusManaBuilder extends ConditionalManaBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
class DustinGadgetGeniusConditionalMana extends ConditionalMana {
|
||||
class HargildeKindlyRunechanterConditionalMana extends ConditionalMana {
|
||||
|
||||
DustinGadgetGeniusConditionalMana(Mana mana) {
|
||||
HargildeKindlyRunechanterConditionalMana(Mana mana) {
|
||||
super(mana);
|
||||
addCondition(DustinGadgetGeniusCondition.instance);
|
||||
addCondition(HargildeKindlyRunechanterCondition.instance);
|
||||
}
|
||||
}
|
||||
|
||||
enum DustinGadgetGeniusCondition implements Condition {
|
||||
enum HargildeKindlyRunechanterCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
|
@ -26,13 +26,13 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class HawkinsNationalLaboratory extends CardImpl {
|
||||
public final class HavengulLaboratory extends CardImpl {
|
||||
|
||||
public HawkinsNationalLaboratory(UUID ownerId, CardSetInfo setInfo) {
|
||||
public HavengulLaboratory(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
||||
this.secondSideCardClazz = mage.cards.t.TheUpsideDown.class;
|
||||
this.secondSideCardClazz = mage.cards.h.HavengulMystery.class;
|
||||
|
||||
// {T}: Add {C}.
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
|
@ -46,26 +46,26 @@ public final class HawkinsNationalLaboratory extends CardImpl {
|
|||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new BeginningOfEndStepTriggeredAbility(
|
||||
Zone.BATTLEFIELD, new TransformSourceEffect(),
|
||||
TargetController.YOU, HawkinsNationalLaboratoryCondition.instance, false
|
||||
), new HawkinsNationalLaboratoryWatcher());
|
||||
TargetController.YOU, HavengulLaboratoryCondition.instance, false
|
||||
), new HavengulLaboratoryWatcher());
|
||||
}
|
||||
|
||||
private HawkinsNationalLaboratory(final HawkinsNationalLaboratory card) {
|
||||
private HavengulLaboratory(final HavengulLaboratory card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HawkinsNationalLaboratory copy() {
|
||||
return new HawkinsNationalLaboratory(this);
|
||||
public HavengulLaboratory copy() {
|
||||
return new HavengulLaboratory(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum HawkinsNationalLaboratoryCondition implements Condition {
|
||||
enum HavengulLaboratoryCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
return HawkinsNationalLaboratoryWatcher.checkPlayer(source.getControllerId(), game);
|
||||
return HavengulLaboratoryWatcher.checkPlayer(source.getControllerId(), game);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -74,11 +74,11 @@ enum HawkinsNationalLaboratoryCondition implements Condition {
|
|||
}
|
||||
}
|
||||
|
||||
class HawkinsNationalLaboratoryWatcher extends Watcher {
|
||||
class HavengulLaboratoryWatcher extends Watcher {
|
||||
|
||||
private final Map<UUID, Integer> playerMap = new HashMap<>();
|
||||
|
||||
HawkinsNationalLaboratoryWatcher() {
|
||||
HavengulLaboratoryWatcher() {
|
||||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ class HawkinsNationalLaboratoryWatcher extends Watcher {
|
|||
static boolean checkPlayer(UUID playerId, Game game) {
|
||||
return game
|
||||
.getState()
|
||||
.getWatcher(HawkinsNationalLaboratoryWatcher.class)
|
||||
.getWatcher(HavengulLaboratoryWatcher.class)
|
||||
.playerMap
|
||||
.getOrDefault(playerId, 0) >= 3;
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.t;
|
||||
package mage.cards.h;
|
||||
|
||||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -29,19 +29,19 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class TheUpsideDown extends CardImpl {
|
||||
public final class HavengulMystery extends CardImpl {
|
||||
|
||||
public TheUpsideDown(UUID ownerId, CardSetInfo setInfo) {
|
||||
public HavengulMystery(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
||||
this.nightCard = true;
|
||||
|
||||
// When this land transforms into The Upside Down, return target creature card from your graveyard to the battlefield.
|
||||
this.addAbility(new TheUpsideDownTransformAbility());
|
||||
this.addAbility(new HavengulMysteryTransformAbility());
|
||||
|
||||
// When the creature put onto the battlefield with The Upside Down leaves the battlefield, transform The Upside Down.
|
||||
this.addAbility(new TheUpsideDownLeavesAbility());
|
||||
this.addAbility(new HavengulMysteryLeavesAbility());
|
||||
|
||||
// {T}, Pay 1 life: Add {B}.
|
||||
Ability ability = new BlackManaAbility();
|
||||
|
@ -49,34 +49,34 @@ public final class TheUpsideDown extends CardImpl {
|
|||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
private TheUpsideDown(final TheUpsideDown card) {
|
||||
private HavengulMystery(final HavengulMystery card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TheUpsideDown copy() {
|
||||
return new TheUpsideDown(this);
|
||||
public HavengulMystery copy() {
|
||||
return new HavengulMystery(this);
|
||||
}
|
||||
|
||||
static String makeKey(Ability source, Game game) {
|
||||
return "TheUpsideDown_" + source.getSourceId() + '_' + source.getSourceObjectZoneChangeCounter();
|
||||
return "HavengulMystery_" + source.getSourceId() + '_' + source.getSourceObjectZoneChangeCounter();
|
||||
}
|
||||
}
|
||||
|
||||
class TheUpsideDownTransformAbility extends TriggeredAbilityImpl {
|
||||
class HavengulMysteryTransformAbility extends TriggeredAbilityImpl {
|
||||
|
||||
public TheUpsideDownTransformAbility() {
|
||||
super(Zone.BATTLEFIELD, new TheUpsideDownEffect(), false);
|
||||
public HavengulMysteryTransformAbility() {
|
||||
super(Zone.BATTLEFIELD, new HavengulMysteryEffect(), false);
|
||||
this.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
|
||||
}
|
||||
|
||||
public TheUpsideDownTransformAbility(final TheUpsideDownTransformAbility ability) {
|
||||
public HavengulMysteryTransformAbility(final HavengulMysteryTransformAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TheUpsideDownTransformAbility copy() {
|
||||
return new TheUpsideDownTransformAbility(this);
|
||||
public HavengulMysteryTransformAbility copy() {
|
||||
return new HavengulMysteryTransformAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -100,19 +100,19 @@ class TheUpsideDownTransformAbility extends TriggeredAbilityImpl {
|
|||
}
|
||||
}
|
||||
|
||||
class TheUpsideDownEffect extends OneShotEffect {
|
||||
class HavengulMysteryEffect extends OneShotEffect {
|
||||
|
||||
TheUpsideDownEffect() {
|
||||
HavengulMysteryEffect() {
|
||||
super(Outcome.Benefit);
|
||||
}
|
||||
|
||||
private TheUpsideDownEffect(final TheUpsideDownEffect effect) {
|
||||
private HavengulMysteryEffect(final HavengulMysteryEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TheUpsideDownEffect copy() {
|
||||
return new TheUpsideDownEffect(this);
|
||||
public HavengulMysteryEffect copy() {
|
||||
return new HavengulMysteryEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -127,7 +127,7 @@ class TheUpsideDownEffect extends OneShotEffect {
|
|||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
String key = TheUpsideDown.makeKey(source, game);
|
||||
String key = HavengulMystery.makeKey(source, game);
|
||||
Set<MageObjectReference> morSet;
|
||||
if (game.getState().getValue(key) != null) {
|
||||
morSet = (Set<MageObjectReference>) game.getState().getValue(key);
|
||||
|
@ -140,19 +140,19 @@ class TheUpsideDownEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
|
||||
class TheUpsideDownLeavesAbility extends TriggeredAbilityImpl {
|
||||
class HavengulMysteryLeavesAbility extends TriggeredAbilityImpl {
|
||||
|
||||
TheUpsideDownLeavesAbility() {
|
||||
HavengulMysteryLeavesAbility() {
|
||||
super(Zone.BATTLEFIELD, new TransformSourceEffect());
|
||||
}
|
||||
|
||||
private TheUpsideDownLeavesAbility(final TheUpsideDownLeavesAbility ability) {
|
||||
private HavengulMysteryLeavesAbility(final HavengulMysteryLeavesAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TheUpsideDownLeavesAbility copy() {
|
||||
return new TheUpsideDownLeavesAbility(this);
|
||||
public HavengulMysteryLeavesAbility copy() {
|
||||
return new HavengulMysteryLeavesAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -163,7 +163,7 @@ class TheUpsideDownLeavesAbility extends TriggeredAbilityImpl {
|
|||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
|
||||
Set<MageObjectReference> morSet = (Set<MageObjectReference>) game.getState().getValue(TheUpsideDown.makeKey(this, game));
|
||||
Set<MageObjectReference> morSet = (Set<MageObjectReference>) game.getState().getValue(HavengulMystery.makeKey(this, game));
|
||||
return morSet != null
|
||||
&& !morSet.isEmpty()
|
||||
&& morSet.stream().anyMatch(mor -> mor.refersTo(zEvent.getTarget(), game));
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.m;
|
||||
package mage.cards.o;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -23,7 +23,7 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class MikeTheDungeonMaster extends CardImpl {
|
||||
public final class OthelmSigardianOutcast extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCreatureCard(
|
||||
"creature card in your graveyard that was put there from the battlefield this turn"
|
||||
|
@ -33,7 +33,7 @@ public final class MikeTheDungeonMaster extends CardImpl {
|
|||
filter.add(PutIntoGraveFromBattlefieldThisTurnPredicate.instance);
|
||||
}
|
||||
|
||||
public MikeTheDungeonMaster(UUID ownerId, CardSetInfo setInfo) {
|
||||
public OthelmSigardianOutcast(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -57,12 +57,12 @@ public final class MikeTheDungeonMaster extends CardImpl {
|
|||
this.addAbility(FriendsForeverAbility.getInstance());
|
||||
}
|
||||
|
||||
private MikeTheDungeonMaster(final MikeTheDungeonMaster card) {
|
||||
private OthelmSigardianOutcast(final OthelmSigardianOutcast card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MikeTheDungeonMaster copy() {
|
||||
return new MikeTheDungeonMaster(this);
|
||||
public OthelmSigardianOutcast copy() {
|
||||
return new OthelmSigardianOutcast(this);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.c;
|
||||
package mage.cards.s;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
|
@ -21,7 +21,7 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ChiefJimHopper extends CardImpl {
|
||||
public final class SophinaSpearsageDeserter extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterAttackingCreature();
|
||||
|
||||
|
@ -31,7 +31,7 @@ public final class ChiefJimHopper extends CardImpl {
|
|||
|
||||
private static final DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
|
||||
|
||||
public ChiefJimHopper(UUID ownerId, CardSetInfo setInfo) {
|
||||
public SophinaSpearsageDeserter(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -51,12 +51,12 @@ public final class ChiefJimHopper extends CardImpl {
|
|||
this.addAbility(FriendsForeverAbility.getInstance());
|
||||
}
|
||||
|
||||
private ChiefJimHopper(final ChiefJimHopper card) {
|
||||
private SophinaSpearsageDeserter(final SophinaSpearsageDeserter card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChiefJimHopper copy() {
|
||||
return new ChiefJimHopper(this);
|
||||
public SophinaSpearsageDeserter copy() {
|
||||
return new SophinaSpearsageDeserter(this);
|
||||
}
|
||||
}
|
|
@ -22,9 +22,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class WillTheWise extends CardImpl {
|
||||
public final class WernogRidersChaplain extends CardImpl {
|
||||
|
||||
public WillTheWise(UUID ownerId, CardSetInfo setInfo) {
|
||||
public WernogRidersChaplain(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -33,37 +33,37 @@ public final class WillTheWise extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// When Will the Wise enters or leaves the battlefield, each opponent may investigate. Each opponent who doesn't loses 1 life. You investigate X times, where X is one plus the number of opponents who investigated this way.
|
||||
this.addAbility(new EntersBattlefieldOrLeavesSourceTriggeredAbility(new WillTheWiseEffect(), false));
|
||||
this.addAbility(new EntersBattlefieldOrLeavesSourceTriggeredAbility(new WernogRidersChaplainEffect(), false));
|
||||
|
||||
// Friends forever
|
||||
this.addAbility(FriendsForeverAbility.getInstance());
|
||||
}
|
||||
|
||||
private WillTheWise(final WillTheWise card) {
|
||||
private WernogRidersChaplain(final WernogRidersChaplain card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WillTheWise copy() {
|
||||
return new WillTheWise(this);
|
||||
public WernogRidersChaplain copy() {
|
||||
return new WernogRidersChaplain(this);
|
||||
}
|
||||
}
|
||||
|
||||
class WillTheWiseEffect extends OneShotEffect {
|
||||
class WernogRidersChaplainEffect extends OneShotEffect {
|
||||
|
||||
WillTheWiseEffect() {
|
||||
WernogRidersChaplainEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "each opponent may investigate. Each opponent who doesn't loses 1 life. " +
|
||||
"You investigate X times, where X is one plus the number of opponents who investigated this way";
|
||||
}
|
||||
|
||||
private WillTheWiseEffect(final WillTheWiseEffect effect) {
|
||||
private WernogRidersChaplainEffect(final WernogRidersChaplainEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WillTheWiseEffect copy() {
|
||||
return new WillTheWiseEffect(this);
|
||||
public WernogRidersChaplainEffect copy() {
|
||||
return new WernogRidersChaplainEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -324,14 +324,14 @@ public class SecretLairDrop extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Fabricate", 332, Rarity.RARE, mage.cards.f.Fabricate.class));
|
||||
cards.add(new SetCardInfo("Fact or Fiction", 333, Rarity.RARE, mage.cards.f.FactOrFiction.class));
|
||||
cards.add(new SetCardInfo("Mystical Tutor", 334, Rarity.RARE, mage.cards.m.MysticalTutor.class));
|
||||
cards.add(new SetCardInfo("Mind Flayer, the Shadow", 340, Rarity.MYTHIC, mage.cards.m.MindFlayerTheShadow.class));
|
||||
cards.add(new SetCardInfo("Chief Jim Hopper", 341, Rarity.RARE, mage.cards.c.ChiefJimHopper.class));
|
||||
cards.add(new SetCardInfo("Dustin, Gadget Genius", 342, Rarity.RARE, mage.cards.d.DustinGadgetGenius.class));
|
||||
cards.add(new SetCardInfo("Eleven, the Mage", 343, Rarity.RARE, mage.cards.e.ElevenTheMage.class));
|
||||
cards.add(new SetCardInfo("Lucas, the Sharpshooter", 344, Rarity.RARE, mage.cards.l.LucasTheSharpshooter.class));
|
||||
cards.add(new SetCardInfo("Max, the Daredevil", 345, Rarity.RARE, mage.cards.m.MaxTheDaredevil.class));
|
||||
cards.add(new SetCardInfo("Mike, the Dungeon Master", 346, Rarity.RARE, mage.cards.m.MikeTheDungeonMaster.class));
|
||||
cards.add(new SetCardInfo("Will the Wise", 347, Rarity.RARE, mage.cards.w.WillTheWise.class));
|
||||
cards.add(new SetCardInfo("Arvinox, the Mind Flail", 340, Rarity.MYTHIC, mage.cards.a.ArvinoxTheMindFlail.class));
|
||||
cards.add(new SetCardInfo("Sophina, Spearsage Deserter", 341, Rarity.RARE, mage.cards.s.SophinaSpearsageDeserter.class));
|
||||
cards.add(new SetCardInfo("Hargilde, Kindly Runechanter", 342, Rarity.RARE, mage.cards.h.HargildeKindlyRunechanter.class));
|
||||
cards.add(new SetCardInfo("Cecily, Haunted Mage", 343, Rarity.RARE, mage.cards.c.CecilyHauntedMage.class));
|
||||
cards.add(new SetCardInfo("Bjorna, Nightfall Alchemist", 344, Rarity.RARE, mage.cards.b.BjornaNightfallAlchemist.class));
|
||||
cards.add(new SetCardInfo("Elmar, Ulvenwald Informant", 345, Rarity.RARE, mage.cards.e.ElmarUlvenwaldInformant.class));
|
||||
cards.add(new SetCardInfo("Othelm, Sigardian Outcast", 346, Rarity.RARE, mage.cards.o.OthelmSigardianOutcast.class));
|
||||
cards.add(new SetCardInfo("Wernog, Rider's Chaplain", 347, Rarity.RARE, mage.cards.w.WernogRidersChaplain.class));
|
||||
cards.add(new SetCardInfo("Moorland Haunt", 349, Rarity.RARE, mage.cards.m.MoorlandHaunt.class));
|
||||
cards.add(new SetCardInfo("Vault of the Archangel", 350, Rarity.RARE, mage.cards.v.VaultOfTheArchangel.class));
|
||||
cards.add(new SetCardInfo("Nephalia Drownyard", 351, Rarity.RARE, mage.cards.n.NephaliaDrownyard.class));
|
||||
|
@ -502,8 +502,8 @@ public class SecretLairDrop extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Swiftfoot Boots", 606, Rarity.RARE, mage.cards.s.SwiftfootBoots.class));
|
||||
cards.add(new SetCardInfo("Rogue's Passage", 607, Rarity.RARE, mage.cards.r.RoguesPassage.class));
|
||||
cards.add(new SetCardInfo("Darksteel Citadel", 608, Rarity.RARE, mage.cards.d.DarksteelCitadel.class));
|
||||
cards.add(new SetCardInfo("Hawkins National Laboratory", 609, Rarity.RARE, mage.cards.h.HawkinsNationalLaboratory.class));
|
||||
cards.add(new SetCardInfo("The Upside Down", 609, Rarity.RARE, mage.cards.t.TheUpsideDown.class));
|
||||
cards.add(new SetCardInfo("Havengul Laboratory", 609, Rarity.RARE, mage.cards.h.HavengulLaboratory.class));
|
||||
cards.add(new SetCardInfo("Havengul Mystery", 609, Rarity.RARE, mage.cards.h.HavengulMystery.class));
|
||||
cards.add(new SetCardInfo("Battlefield Forge", 669, Rarity.RARE, mage.cards.b.BattlefieldForge.class));
|
||||
cards.add(new SetCardInfo("Plains", 670, Rarity.LAND, mage.cards.basiclands.Plains.class, FULL_ART_BFZ_VARIOUS));
|
||||
cards.add(new SetCardInfo("Questing Phelddagrif", 671, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
Loading…
Reference in a new issue