[SLD] renamed Stranger Things cards to in-magic names (following scryfall's lead)

This commit is contained in:
Evan Kranzler 2022-03-04 07:47:16 -05:00
parent 92d7aebc3d
commit 36e78c5f91
11 changed files with 140 additions and 140 deletions

View file

@ -1,4 +1,4 @@
package mage.cards.m; package mage.cards.a;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -27,7 +27,7 @@ import java.util.UUID;
/** /**
* @author TheElk801 plus everyone who worked on Gonti * @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(); 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 DynamicValue xValue = new PermanentsOnBattlefieldCount(filter);
private static final Hint hint = new ValueHint("Permanents you control but don't own", xValue); 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}"); super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT, CardType.CREATURE}, "{4}{B}{B}{B}");
this.addSuperType(SuperType.LEGENDARY); 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. // 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( 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); super(card);
} }
@Override @Override
public MindFlayerTheShadow copy() { public ArvinoxTheMindFlail copy() {
return new MindFlayerTheShadow(this); return new ArvinoxTheMindFlail(this);
} }
} }
class MindFlayerTheShadowExileEffect extends OneShotEffect { class ArvinoxTheMindFlailExileEffect extends OneShotEffect {
MindFlayerTheShadowExileEffect() { ArvinoxTheMindFlailExileEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
staticText = "exile the bottom card of each opponent's library face down. " 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, " + "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"; + "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); super(effect);
} }
@Override @Override
public MindFlayerTheShadowExileEffect copy() { public ArvinoxTheMindFlailExileEffect copy() {
return new MindFlayerTheShadowExileEffect(this); return new ArvinoxTheMindFlailExileEffect(this);
} }
@Override @Override
@ -108,21 +108,21 @@ class MindFlayerTheShadowExileEffect extends OneShotEffect {
cards.getCards(game).stream().forEach(card -> card.setFaceDown(true, game)); cards.getCards(game).stream().forEach(card -> card.setFaceDown(true, game));
for (Card card : cards.getCards(game)) { for (Card card : cards.getCards(game)) {
card.setFaceDown(true, game); card.setFaceDown(true, game);
game.addEffect(new MindFlayerTheShadowCastFromExileEffect().setTargetPointer(new FixedTarget(card, game)), source); game.addEffect(new ArvinoxTheMindFlailCastFromExileEffect().setTargetPointer(new FixedTarget(card, game)), source);
game.addEffect(new MindFlayerTheShadowSpendAnyManaEffect().setTargetPointer(new FixedTarget(card, game)), source); game.addEffect(new ArvinoxTheMindFlailSpendAnyManaEffect().setTargetPointer(new FixedTarget(card, game)), source);
game.addEffect(new MindFlayerTheShadowLookEffect(source.getControllerId()).setTargetPointer(new FixedTarget(card, game)), source); game.addEffect(new ArvinoxTheMindFlailLookEffect(source.getControllerId()).setTargetPointer(new FixedTarget(card, game)), source);
} }
return true; 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); super(AsThoughEffectType.PLAY_FROM_NOT_OWN_HAND_ZONE, Duration.Custom, Outcome.Benefit);
} }
private MindFlayerTheShadowCastFromExileEffect(final MindFlayerTheShadowCastFromExileEffect effect) { private ArvinoxTheMindFlailCastFromExileEffect(final ArvinoxTheMindFlailCastFromExileEffect effect) {
super(effect); super(effect);
} }
@ -132,8 +132,8 @@ class MindFlayerTheShadowCastFromExileEffect extends AsThoughEffectImpl {
} }
@Override @Override
public MindFlayerTheShadowCastFromExileEffect copy() { public ArvinoxTheMindFlailCastFromExileEffect copy() {
return new MindFlayerTheShadowCastFromExileEffect(this); return new ArvinoxTheMindFlailCastFromExileEffect(this);
} }
@Override @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); 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"; 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); super(effect);
} }
@ -178,8 +178,8 @@ class MindFlayerTheShadowSpendAnyManaEffect extends AsThoughEffectImpl implement
} }
@Override @Override
public MindFlayerTheShadowSpendAnyManaEffect copy() { public ArvinoxTheMindFlailSpendAnyManaEffect copy() {
return new MindFlayerTheShadowSpendAnyManaEffect(this); return new ArvinoxTheMindFlailSpendAnyManaEffect(this);
} }
@Override @Override
@ -206,17 +206,17 @@ class MindFlayerTheShadowSpendAnyManaEffect extends AsThoughEffectImpl implement
} }
} }
class MindFlayerTheShadowLookEffect extends AsThoughEffectImpl { class ArvinoxTheMindFlailLookEffect extends AsThoughEffectImpl {
private final UUID authorizedPlayerId; private final UUID authorizedPlayerId;
public MindFlayerTheShadowLookEffect(UUID authorizedPlayerId) { public ArvinoxTheMindFlailLookEffect(UUID authorizedPlayerId) {
super(AsThoughEffectType.LOOK_AT_FACE_DOWN, Duration.EndOfGame, Outcome.Benefit); super(AsThoughEffectType.LOOK_AT_FACE_DOWN, Duration.EndOfGame, Outcome.Benefit);
this.authorizedPlayerId = authorizedPlayerId; this.authorizedPlayerId = authorizedPlayerId;
staticText = "You may look at the cards exiled with {this}"; staticText = "You may look at the cards exiled with {this}";
} }
private MindFlayerTheShadowLookEffect(final MindFlayerTheShadowLookEffect effect) { private ArvinoxTheMindFlailLookEffect(final ArvinoxTheMindFlailLookEffect effect) {
super(effect); super(effect);
this.authorizedPlayerId = effect.authorizedPlayerId; this.authorizedPlayerId = effect.authorizedPlayerId;
} }
@ -227,8 +227,8 @@ class MindFlayerTheShadowLookEffect extends AsThoughEffectImpl {
} }
@Override @Override
public MindFlayerTheShadowLookEffect copy() { public ArvinoxTheMindFlailLookEffect copy() {
return new MindFlayerTheShadowLookEffect(this); return new ArvinoxTheMindFlailLookEffect(this);
} }
@Override @Override

View file

@ -1,4 +1,4 @@
package mage.cards.l; package mage.cards.b;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -22,9 +22,9 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @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}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}{R}");
this.addSuperType(SuperType.LEGENDARY); this.addSuperType(SuperType.LEGENDARY);
@ -43,12 +43,12 @@ public final class LucasTheSharpshooter extends CardImpl {
this.addAbility(FriendsForeverAbility.getInstance()); this.addAbility(FriendsForeverAbility.getInstance());
} }
private LucasTheSharpshooter(final LucasTheSharpshooter card) { private BjornaNightfallAlchemist(final BjornaNightfallAlchemist card) {
super(card); super(card);
} }
@Override @Override
public LucasTheSharpshooter copy() { public BjornaNightfallAlchemist copy() {
return new LucasTheSharpshooter(this); return new BjornaNightfallAlchemist(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.e; package mage.cards.c;
import mage.ApprovingObject; import mage.ApprovingObject;
import mage.MageInt; import mage.MageInt;
@ -25,9 +25,9 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @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}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{B}{R}");
this.addSuperType(SuperType.LEGENDARY); 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. // 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 // Friends forever
this.addAbility(FriendsForeverAbility.getInstance()); this.addAbility(FriendsForeverAbility.getInstance());
} }
private ElevenTheMage(final ElevenTheMage card) { private CecilyHauntedMage(final CecilyHauntedMage card) {
super(card); super(card);
} }
@Override @Override
public ElevenTheMage copy() { public CecilyHauntedMage copy() {
return new ElevenTheMage(this); return new CecilyHauntedMage(this);
} }
} }
class ElevenTheMageEffect extends OneShotEffect { class CecilyHauntedMageEffect extends OneShotEffect {
ElevenTheMageEffect() { CecilyHauntedMageEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
staticText = "you draw a card and you lose 1 life. Then if you have eleven or more cards in your hand, " + 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"; "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); super(effect);
} }
@Override @Override
public ElevenTheMageEffect copy() { public CecilyHauntedMageEffect copy() {
return new ElevenTheMageEffect(this); return new CecilyHauntedMageEffect(this);
} }
@Override @Override

View file

@ -1,4 +1,4 @@
package mage.cards.m; package mage.cards.e;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -19,9 +19,9 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @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}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{G}");
this.addSuperType(SuperType.LEGENDARY); this.addSuperType(SuperType.LEGENDARY);
@ -42,12 +42,12 @@ public final class MaxTheDaredevil extends CardImpl {
this.addAbility(FriendsForeverAbility.getInstance()); this.addAbility(FriendsForeverAbility.getInstance());
} }
private MaxTheDaredevil(final MaxTheDaredevil card) { private ElmarUlvenwaldInformant(final ElmarUlvenwaldInformant card) {
super(card); super(card);
} }
@Override @Override
public MaxTheDaredevil copy() { public ElmarUlvenwaldInformant copy() {
return new MaxTheDaredevil(this); return new ElmarUlvenwaldInformant(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.d; package mage.cards.h;
import mage.ConditionalMana; import mage.ConditionalMana;
import mage.MageInt; import mage.MageInt;
@ -22,9 +22,9 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @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}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{U}");
this.addSuperType(SuperType.LEGENDARY); 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. // {T}: Add {C}{C}. Spend this mana only to cast artifact spells or activate abilities of artifacts.
this.addAbility(new ConditionalColorlessManaAbility( this.addAbility(new ConditionalColorlessManaAbility(
new TapSourceCost(), 2, new DustinGadgetGeniusManaBuilder() new TapSourceCost(), 2, new HargildeKindlyRunechanterManaBuilder()
)); ));
// Friends forever // Friends forever
this.addAbility(FriendsForeverAbility.getInstance()); this.addAbility(FriendsForeverAbility.getInstance());
} }
private DustinGadgetGenius(final DustinGadgetGenius card) { private HargildeKindlyRunechanter(final HargildeKindlyRunechanter card) {
super(card); super(card);
} }
@Override @Override
public DustinGadgetGenius copy() { public HargildeKindlyRunechanter copy() {
return new DustinGadgetGenius(this); return new HargildeKindlyRunechanter(this);
} }
} }
class DustinGadgetGeniusManaBuilder extends ConditionalManaBuilder { class HargildeKindlyRunechanterManaBuilder extends ConditionalManaBuilder {
@Override @Override
public ConditionalMana build(Object... options) { public ConditionalMana build(Object... options) {
return new DustinGadgetGeniusConditionalMana(this.mana); return new HargildeKindlyRunechanterConditionalMana(this.mana);
} }
@Override @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); super(mana);
addCondition(DustinGadgetGeniusCondition.instance); addCondition(HargildeKindlyRunechanterCondition.instance);
} }
} }
enum DustinGadgetGeniusCondition implements Condition { enum HargildeKindlyRunechanterCondition implements Condition {
instance; instance;
@Override @Override

View file

@ -26,13 +26,13 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @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}, ""); super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
this.addSuperType(SuperType.LEGENDARY); this.addSuperType(SuperType.LEGENDARY);
this.secondSideCardClazz = mage.cards.t.TheUpsideDown.class; this.secondSideCardClazz = mage.cards.h.HavengulMystery.class;
// {T}: Add {C}. // {T}: Add {C}.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());
@ -46,26 +46,26 @@ public final class HawkinsNationalLaboratory extends CardImpl {
this.addAbility(new TransformAbility()); this.addAbility(new TransformAbility());
this.addAbility(new BeginningOfEndStepTriggeredAbility( this.addAbility(new BeginningOfEndStepTriggeredAbility(
Zone.BATTLEFIELD, new TransformSourceEffect(), Zone.BATTLEFIELD, new TransformSourceEffect(),
TargetController.YOU, HawkinsNationalLaboratoryCondition.instance, false TargetController.YOU, HavengulLaboratoryCondition.instance, false
), new HawkinsNationalLaboratoryWatcher()); ), new HavengulLaboratoryWatcher());
} }
private HawkinsNationalLaboratory(final HawkinsNationalLaboratory card) { private HavengulLaboratory(final HavengulLaboratory card) {
super(card); super(card);
} }
@Override @Override
public HawkinsNationalLaboratory copy() { public HavengulLaboratory copy() {
return new HawkinsNationalLaboratory(this); return new HavengulLaboratory(this);
} }
} }
enum HawkinsNationalLaboratoryCondition implements Condition { enum HavengulLaboratoryCondition implements Condition {
instance; instance;
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
return HawkinsNationalLaboratoryWatcher.checkPlayer(source.getControllerId(), game); return HavengulLaboratoryWatcher.checkPlayer(source.getControllerId(), game);
} }
@Override @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<>(); private final Map<UUID, Integer> playerMap = new HashMap<>();
HawkinsNationalLaboratoryWatcher() { HavengulLaboratoryWatcher() {
super(WatcherScope.GAME); super(WatcherScope.GAME);
} }
@ -103,7 +103,7 @@ class HawkinsNationalLaboratoryWatcher extends Watcher {
static boolean checkPlayer(UUID playerId, Game game) { static boolean checkPlayer(UUID playerId, Game game) {
return game return game
.getState() .getState()
.getWatcher(HawkinsNationalLaboratoryWatcher.class) .getWatcher(HavengulLaboratoryWatcher.class)
.playerMap .playerMap
.getOrDefault(playerId, 0) >= 3; .getOrDefault(playerId, 0) >= 3;
} }

View file

@ -1,4 +1,4 @@
package mage.cards.t; package mage.cards.h;
import mage.MageObjectReference; import mage.MageObjectReference;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -29,19 +29,19 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @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}, ""); super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
this.addSuperType(SuperType.LEGENDARY); this.addSuperType(SuperType.LEGENDARY);
this.nightCard = true; this.nightCard = true;
// When this land transforms into The Upside Down, return target creature card from your graveyard to the battlefield. // 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. // 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}. // {T}, Pay 1 life: Add {B}.
Ability ability = new BlackManaAbility(); Ability ability = new BlackManaAbility();
@ -49,34 +49,34 @@ public final class TheUpsideDown extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
} }
private TheUpsideDown(final TheUpsideDown card) { private HavengulMystery(final HavengulMystery card) {
super(card); super(card);
} }
@Override @Override
public TheUpsideDown copy() { public HavengulMystery copy() {
return new TheUpsideDown(this); return new HavengulMystery(this);
} }
static String makeKey(Ability source, Game game) { 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() { public HavengulMysteryTransformAbility() {
super(Zone.BATTLEFIELD, new TheUpsideDownEffect(), false); super(Zone.BATTLEFIELD, new HavengulMysteryEffect(), false);
this.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD)); this.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));
} }
public TheUpsideDownTransformAbility(final TheUpsideDownTransformAbility ability) { public HavengulMysteryTransformAbility(final HavengulMysteryTransformAbility ability) {
super(ability); super(ability);
} }
@Override @Override
public TheUpsideDownTransformAbility copy() { public HavengulMysteryTransformAbility copy() {
return new TheUpsideDownTransformAbility(this); return new HavengulMysteryTransformAbility(this);
} }
@Override @Override
@ -100,19 +100,19 @@ class TheUpsideDownTransformAbility extends TriggeredAbilityImpl {
} }
} }
class TheUpsideDownEffect extends OneShotEffect { class HavengulMysteryEffect extends OneShotEffect {
TheUpsideDownEffect() { HavengulMysteryEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
} }
private TheUpsideDownEffect(final TheUpsideDownEffect effect) { private HavengulMysteryEffect(final HavengulMysteryEffect effect) {
super(effect); super(effect);
} }
@Override @Override
public TheUpsideDownEffect copy() { public HavengulMysteryEffect copy() {
return new TheUpsideDownEffect(this); return new HavengulMysteryEffect(this);
} }
@Override @Override
@ -127,7 +127,7 @@ class TheUpsideDownEffect extends OneShotEffect {
if (permanent == null) { if (permanent == null) {
return false; return false;
} }
String key = TheUpsideDown.makeKey(source, game); String key = HavengulMystery.makeKey(source, game);
Set<MageObjectReference> morSet; Set<MageObjectReference> morSet;
if (game.getState().getValue(key) != null) { if (game.getState().getValue(key) != null) {
morSet = (Set<MageObjectReference>) game.getState().getValue(key); 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()); super(Zone.BATTLEFIELD, new TransformSourceEffect());
} }
private TheUpsideDownLeavesAbility(final TheUpsideDownLeavesAbility ability) { private HavengulMysteryLeavesAbility(final HavengulMysteryLeavesAbility ability) {
super(ability); super(ability);
} }
@Override @Override
public TheUpsideDownLeavesAbility copy() { public HavengulMysteryLeavesAbility copy() {
return new TheUpsideDownLeavesAbility(this); return new HavengulMysteryLeavesAbility(this);
} }
@Override @Override
@ -163,7 +163,7 @@ class TheUpsideDownLeavesAbility extends TriggeredAbilityImpl {
@Override @Override
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event; 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 return morSet != null
&& !morSet.isEmpty() && !morSet.isEmpty()
&& morSet.stream().anyMatch(mor -> mor.refersTo(zEvent.getTarget(), game)); && morSet.stream().anyMatch(mor -> mor.refersTo(zEvent.getTarget(), game));

View file

@ -1,4 +1,4 @@
package mage.cards.m; package mage.cards.o;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -23,7 +23,7 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class MikeTheDungeonMaster extends CardImpl { public final class OthelmSigardianOutcast extends CardImpl {
private static final FilterCard filter = new FilterCreatureCard( private static final FilterCard filter = new FilterCreatureCard(
"creature card in your graveyard that was put there from the battlefield this turn" "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); 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}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{G}{W}");
this.addSuperType(SuperType.LEGENDARY); this.addSuperType(SuperType.LEGENDARY);
@ -57,12 +57,12 @@ public final class MikeTheDungeonMaster extends CardImpl {
this.addAbility(FriendsForeverAbility.getInstance()); this.addAbility(FriendsForeverAbility.getInstance());
} }
private MikeTheDungeonMaster(final MikeTheDungeonMaster card) { private OthelmSigardianOutcast(final OthelmSigardianOutcast card) {
super(card); super(card);
} }
@Override @Override
public MikeTheDungeonMaster copy() { public OthelmSigardianOutcast copy() {
return new MikeTheDungeonMaster(this); return new OthelmSigardianOutcast(this);
} }
} }

View file

@ -1,4 +1,4 @@
package mage.cards.c; package mage.cards.s;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.AttacksTriggeredAbility;
@ -21,7 +21,7 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class ChiefJimHopper extends CardImpl { public final class SophinaSpearsageDeserter extends CardImpl {
private static final FilterPermanent filter = new FilterAttackingCreature(); 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); 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}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{W}");
this.addSuperType(SuperType.LEGENDARY); this.addSuperType(SuperType.LEGENDARY);
@ -51,12 +51,12 @@ public final class ChiefJimHopper extends CardImpl {
this.addAbility(FriendsForeverAbility.getInstance()); this.addAbility(FriendsForeverAbility.getInstance());
} }
private ChiefJimHopper(final ChiefJimHopper card) { private SophinaSpearsageDeserter(final SophinaSpearsageDeserter card) {
super(card); super(card);
} }
@Override @Override
public ChiefJimHopper copy() { public SophinaSpearsageDeserter copy() {
return new ChiefJimHopper(this); return new SophinaSpearsageDeserter(this);
} }
} }

View file

@ -22,9 +22,9 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @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}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
this.addSuperType(SuperType.LEGENDARY); this.addSuperType(SuperType.LEGENDARY);
@ -33,37 +33,37 @@ public final class WillTheWise extends CardImpl {
this.toughness = new MageInt(2); 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. // 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 // Friends forever
this.addAbility(FriendsForeverAbility.getInstance()); this.addAbility(FriendsForeverAbility.getInstance());
} }
private WillTheWise(final WillTheWise card) { private WernogRidersChaplain(final WernogRidersChaplain card) {
super(card); super(card);
} }
@Override @Override
public WillTheWise copy() { public WernogRidersChaplain copy() {
return new WillTheWise(this); return new WernogRidersChaplain(this);
} }
} }
class WillTheWiseEffect extends OneShotEffect { class WernogRidersChaplainEffect extends OneShotEffect {
WillTheWiseEffect() { WernogRidersChaplainEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
staticText = "each opponent may investigate. Each opponent who doesn't loses 1 life. " + 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"; "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); super(effect);
} }
@Override @Override
public WillTheWiseEffect copy() { public WernogRidersChaplainEffect copy() {
return new WillTheWiseEffect(this); return new WernogRidersChaplainEffect(this);
} }
@Override @Override

View file

@ -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("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("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("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("Arvinox, the Mind Flail", 340, Rarity.MYTHIC, mage.cards.a.ArvinoxTheMindFlail.class));
cards.add(new SetCardInfo("Chief Jim Hopper", 341, Rarity.RARE, mage.cards.c.ChiefJimHopper.class)); cards.add(new SetCardInfo("Sophina, Spearsage Deserter", 341, Rarity.RARE, mage.cards.s.SophinaSpearsageDeserter.class));
cards.add(new SetCardInfo("Dustin, Gadget Genius", 342, Rarity.RARE, mage.cards.d.DustinGadgetGenius.class)); cards.add(new SetCardInfo("Hargilde, Kindly Runechanter", 342, Rarity.RARE, mage.cards.h.HargildeKindlyRunechanter.class));
cards.add(new SetCardInfo("Eleven, the Mage", 343, Rarity.RARE, mage.cards.e.ElevenTheMage.class)); cards.add(new SetCardInfo("Cecily, Haunted Mage", 343, Rarity.RARE, mage.cards.c.CecilyHauntedMage.class));
cards.add(new SetCardInfo("Lucas, the Sharpshooter", 344, Rarity.RARE, mage.cards.l.LucasTheSharpshooter.class)); cards.add(new SetCardInfo("Bjorna, Nightfall Alchemist", 344, Rarity.RARE, mage.cards.b.BjornaNightfallAlchemist.class));
cards.add(new SetCardInfo("Max, the Daredevil", 345, Rarity.RARE, mage.cards.m.MaxTheDaredevil.class)); cards.add(new SetCardInfo("Elmar, Ulvenwald Informant", 345, Rarity.RARE, mage.cards.e.ElmarUlvenwaldInformant.class));
cards.add(new SetCardInfo("Mike, the Dungeon Master", 346, Rarity.RARE, mage.cards.m.MikeTheDungeonMaster.class)); cards.add(new SetCardInfo("Othelm, Sigardian Outcast", 346, Rarity.RARE, mage.cards.o.OthelmSigardianOutcast.class));
cards.add(new SetCardInfo("Will the Wise", 347, Rarity.RARE, mage.cards.w.WillTheWise.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("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("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)); 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("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("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("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("Havengul Laboratory", 609, Rarity.RARE, mage.cards.h.HavengulLaboratory.class));
cards.add(new SetCardInfo("The Upside Down", 609, Rarity.RARE, mage.cards.t.TheUpsideDown.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("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("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)); cards.add(new SetCardInfo("Questing Phelddagrif", 671, Rarity.RARE, mage.cards.q.QuestingPhelddagrif.class, NON_FULL_USE_VARIOUS));