mirror of
https://github.com/correl/mage.git
synced 2024-12-27 20:06:31 +00:00
[SLX] update Street Fighter cards to Universes Within versions
This commit is contained in:
parent
88e82d12a0
commit
50a52d18e3
10 changed files with 167 additions and 121 deletions
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.k;
|
||||
package mage.cards.a;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -24,9 +24,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class KenBurningBrawler extends CardImpl {
|
||||
public final class AishaOfSparksAndSmoke extends CardImpl {
|
||||
|
||||
public KenBurningBrawler(UUID ownerId, CardSetInfo setInfo) {
|
||||
public AishaOfSparksAndSmoke(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -45,35 +45,35 @@ public final class KenBurningBrawler extends CardImpl {
|
|||
|
||||
// Shoryuken—Whenever Ken deals combat damage, you may cast a sorcery spell from your hand with mana value less than or equal to that damage without paying its mana cost.
|
||||
this.addAbility(new DealsCombatDamageTriggeredAbility(
|
||||
new KenBurningBrawlerEffect(), false
|
||||
new AishaOfSparksAndSmokeEffect(), false
|
||||
).withFlavorWord("Shoryuken"));
|
||||
}
|
||||
|
||||
private KenBurningBrawler(final KenBurningBrawler card) {
|
||||
private AishaOfSparksAndSmoke(final AishaOfSparksAndSmoke card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KenBurningBrawler copy() {
|
||||
return new KenBurningBrawler(this);
|
||||
public AishaOfSparksAndSmoke copy() {
|
||||
return new AishaOfSparksAndSmoke(this);
|
||||
}
|
||||
}
|
||||
|
||||
class KenBurningBrawlerEffect extends OneShotEffect {
|
||||
class AishaOfSparksAndSmokeEffect extends OneShotEffect {
|
||||
|
||||
KenBurningBrawlerEffect() {
|
||||
AishaOfSparksAndSmokeEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "you may cast a sorcery spell from your hand with mana value " +
|
||||
"less than or equal to that damage without paying its mana cost";
|
||||
}
|
||||
|
||||
private KenBurningBrawlerEffect(final KenBurningBrawlerEffect effect) {
|
||||
private AishaOfSparksAndSmokeEffect(final AishaOfSparksAndSmokeEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public KenBurningBrawlerEffect copy() {
|
||||
return new KenBurningBrawlerEffect(this);
|
||||
public AishaOfSparksAndSmokeEffect copy() {
|
||||
return new AishaOfSparksAndSmokeEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.e;
|
||||
package mage.cards.b;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -6,7 +6,10 @@ import mage.abilities.common.AttacksTriggeredAbility;
|
|||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.MyTurnCondition;
|
||||
import mage.abilities.decorator.ConditionalContinuousEffect;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.StaticValue;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.ChooseOpponentEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.ruleModifying.CombatDamageByToughnessEffect;
|
||||
import mage.cards.CardImpl;
|
||||
|
@ -16,16 +19,21 @@ import mage.constants.Duration;
|
|||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class EHondaSumoChampion extends CardImpl {
|
||||
public final class BaldinCenturyHerdmaster extends CardImpl {
|
||||
|
||||
public EHondaSumoChampion(UUID ownerId, CardSetInfo setInfo) {
|
||||
public BaldinCenturyHerdmaster(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -43,18 +51,48 @@ public final class EHondaSumoChampion extends CardImpl {
|
|||
|
||||
// Hundred Hand Slap—Whenever E. Honda, Sumo Champion attacks, up to one hundred target creatures each get +0/+X until end of turn, where X is the number of cards in your hand.
|
||||
Ability ability = new AttacksTriggeredAbility(new BoostTargetEffect(
|
||||
StaticValue.get(0), CardsInTargetPlayerHandCount.instance, Duration.EndOfTurn
|
||||
StaticValue.get(0), BaldinCenturyHerdmasterValue.instance, Duration.EndOfTurn
|
||||
).setText("up to one hundred target creatures each get +0/+X until end of turn, where X is the number of cards in your hand"));
|
||||
ability.addTarget(new TargetCreaturePermanent(0, 100));
|
||||
this.addAbility(ability.withFlavorWord("Hundred Hand Slap"));
|
||||
}
|
||||
|
||||
private EHondaSumoChampion(final EHondaSumoChampion card) {
|
||||
private BaldinCenturyHerdmaster(final BaldinCenturyHerdmaster card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EHondaSumoChampion copy() {
|
||||
return new EHondaSumoChampion(this);
|
||||
public BaldinCenturyHerdmaster copy() {
|
||||
return new BaldinCenturyHerdmaster(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum BaldinCenturyHerdmasterValue implements DynamicValue {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||
return Optional.ofNullable(game.getPlayer(
|
||||
(UUID) game.getState().getValue(sourceAbility.getSourceId() + ChooseOpponentEffect.VALUE_KEY)
|
||||
))
|
||||
.filter(Objects::nonNull)
|
||||
.map(Player::getHand)
|
||||
.map(Set::size)
|
||||
.orElse(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaldinCenturyHerdmasterValue copy() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "1";
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.g;
|
||||
package mage.cards.i;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -25,9 +25,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class GuileSonicSoldier extends CardImpl {
|
||||
public final class ImmardTheStormcleaver extends CardImpl {
|
||||
|
||||
public GuileSonicSoldier(UUID ownerId, CardSetInfo setInfo) {
|
||||
public ImmardTheStormcleaver(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}{R}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -39,36 +39,36 @@ public final class GuileSonicSoldier extends CardImpl {
|
|||
// Whenever Guile, Sonic Soldier enters the battlefield or attacks, put a charge counter on him or remove one from him. When you remove a counter this way, choose one—
|
||||
// • Sonic Boom—Guile, Sonic Soldier deals 4 damage to any target.
|
||||
// • Flash Kick—Guile, Sonic Soldier gains lifelink and indestructible until end of turn.
|
||||
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GuileSonicSoldierEffect()));
|
||||
this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new ImmardTheStormcleaverEffect()));
|
||||
}
|
||||
|
||||
private GuileSonicSoldier(final GuileSonicSoldier card) {
|
||||
private ImmardTheStormcleaver(final ImmardTheStormcleaver card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuileSonicSoldier copy() {
|
||||
return new GuileSonicSoldier(this);
|
||||
public ImmardTheStormcleaver copy() {
|
||||
return new ImmardTheStormcleaver(this);
|
||||
}
|
||||
}
|
||||
|
||||
class GuileSonicSoldierEffect extends OneShotEffect {
|
||||
class ImmardTheStormcleaverEffect extends OneShotEffect {
|
||||
|
||||
private final ReflexiveTriggeredAbility ability = makeAbility();
|
||||
|
||||
GuileSonicSoldierEffect() {
|
||||
ImmardTheStormcleaverEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "put a charge counter on him or remove one from him. When you remove a counter this way, "
|
||||
+ CardUtil.getTextWithFirstCharLowerCase(ability.getRule());
|
||||
}
|
||||
|
||||
private GuileSonicSoldierEffect(final GuileSonicSoldierEffect effect) {
|
||||
private ImmardTheStormcleaverEffect(final ImmardTheStormcleaverEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuileSonicSoldierEffect copy() {
|
||||
return new GuileSonicSoldierEffect(this);
|
||||
public ImmardTheStormcleaverEffect copy() {
|
||||
return new ImmardTheStormcleaverEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.z;
|
||||
package mage.cards.m;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageObjectReference;
|
||||
|
@ -33,15 +33,15 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ZangiefTheRedCyclone extends CardImpl {
|
||||
public final class MaarikaBrutalGladiator extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("a creature");
|
||||
|
||||
static {
|
||||
filter.add(ZangiefTheRedCycloneWatcher::checkPermanent);
|
||||
filter.add(MaarikaBrutalGladiatorWatcher::checkPermanent);
|
||||
}
|
||||
|
||||
public ZangiefTheRedCyclone(UUID ownerId, CardSetInfo setInfo) {
|
||||
public MaarikaBrutalGladiator(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}{G}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -61,21 +61,21 @@ public final class ZangiefTheRedCyclone extends CardImpl {
|
|||
|
||||
// Spinning Piledriver—Whenever Zangief deals damage to a creature, if that creature was dealt excess damage this turn, that creature's controller sacrifices a noncreature, nonland permanent.
|
||||
this.addAbility(new DealsDamageToACreatureTriggeredAbility(
|
||||
new ZangiefTheRedCycloneEffect(), false, false, true, filter
|
||||
).withFlavorWord("Spinning Piledriver"), new ZangiefTheRedCycloneWatcher());
|
||||
new MaarikaBrutalGladiatorEffect(), false, false, true, filter
|
||||
).withFlavorWord("Spinning Piledriver"), new MaarikaBrutalGladiatorWatcher());
|
||||
}
|
||||
|
||||
private ZangiefTheRedCyclone(final ZangiefTheRedCyclone card) {
|
||||
private MaarikaBrutalGladiator(final MaarikaBrutalGladiator card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ZangiefTheRedCyclone copy() {
|
||||
return new ZangiefTheRedCyclone(this);
|
||||
public MaarikaBrutalGladiator copy() {
|
||||
return new MaarikaBrutalGladiator(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ZangiefTheRedCycloneEffect extends OneShotEffect {
|
||||
class MaarikaBrutalGladiatorEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterPermanent filter = new FilterNonlandPermanent("noncreature, nonland permanent");
|
||||
|
||||
|
@ -83,19 +83,19 @@ class ZangiefTheRedCycloneEffect extends OneShotEffect {
|
|||
filter.add(Predicates.not(CardType.CREATURE.getPredicate()));
|
||||
}
|
||||
|
||||
ZangiefTheRedCycloneEffect() {
|
||||
MaarikaBrutalGladiatorEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "if that creature was dealt excess damage this turn, " +
|
||||
"that creature's controller sacrifices a noncreature, nonland permanent";
|
||||
}
|
||||
|
||||
private ZangiefTheRedCycloneEffect(final ZangiefTheRedCycloneEffect effect) {
|
||||
private MaarikaBrutalGladiatorEffect(final MaarikaBrutalGladiatorEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ZangiefTheRedCycloneEffect copy() {
|
||||
return new ZangiefTheRedCycloneEffect(this);
|
||||
public MaarikaBrutalGladiatorEffect copy() {
|
||||
return new MaarikaBrutalGladiatorEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -110,11 +110,11 @@ class ZangiefTheRedCycloneEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
|
||||
class ZangiefTheRedCycloneWatcher extends Watcher {
|
||||
class MaarikaBrutalGladiatorWatcher extends Watcher {
|
||||
|
||||
private final Set<MageObjectReference> morSet = new HashSet<>();
|
||||
|
||||
ZangiefTheRedCycloneWatcher() {
|
||||
MaarikaBrutalGladiatorWatcher() {
|
||||
super(WatcherScope.GAME);
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ class ZangiefTheRedCycloneWatcher extends Watcher {
|
|||
static boolean checkPermanent(Permanent input, Game game) {
|
||||
return game
|
||||
.getState()
|
||||
.getWatcher(ZangiefTheRedCycloneWatcher.class)
|
||||
.getWatcher(MaarikaBrutalGladiatorWatcher.class)
|
||||
.morSet
|
||||
.stream()
|
||||
.anyMatch(mor -> mor.refersTo(input, game));
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.d;
|
||||
package mage.cards.t;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageObjectReference;
|
||||
|
@ -33,7 +33,7 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class DhalsimPliablePacifist extends CardImpl {
|
||||
public final class TadeasJuniperAscendant extends CardImpl {
|
||||
|
||||
private static final Condition condition = new InvertCondition(SourceAttackingCondition.instance);
|
||||
private static final FilterControlledCreaturePermanent filter
|
||||
|
@ -43,7 +43,7 @@ public final class DhalsimPliablePacifist extends CardImpl {
|
|||
filter.add(new AbilityPredicate(ReachAbility.class));
|
||||
}
|
||||
|
||||
public DhalsimPliablePacifist(UUID ownerId, CardSetInfo setInfo) {
|
||||
public TadeasJuniperAscendant(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -63,37 +63,37 @@ public final class DhalsimPliablePacifist extends CardImpl {
|
|||
|
||||
// Whenever a creature you control with reach attacks, untap it and it can't be blocked by creatures with greater power this combat.
|
||||
this.addAbility(new AttacksCreatureYouControlTriggeredAbility(
|
||||
new DhalsimPliablePacifistEffect(), false, filter, true
|
||||
new TadeasJuniperAscendantEffect(), false, filter, true
|
||||
));
|
||||
|
||||
// Fierce Punch—Whenever one or more creatures you control deal combat damage to a player, draw a card.
|
||||
this.addAbility(new DhalsimPliablePacifistTriggeredAbility());
|
||||
this.addAbility(new TadeasJuniperAscendantTriggeredAbility());
|
||||
}
|
||||
|
||||
private DhalsimPliablePacifist(final DhalsimPliablePacifist card) {
|
||||
private TadeasJuniperAscendant(final TadeasJuniperAscendant card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DhalsimPliablePacifist copy() {
|
||||
return new DhalsimPliablePacifist(this);
|
||||
public TadeasJuniperAscendant copy() {
|
||||
return new TadeasJuniperAscendant(this);
|
||||
}
|
||||
}
|
||||
|
||||
class DhalsimPliablePacifistEffect extends OneShotEffect {
|
||||
class TadeasJuniperAscendantEffect extends OneShotEffect {
|
||||
|
||||
DhalsimPliablePacifistEffect() {
|
||||
TadeasJuniperAscendantEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "untap it and it can't be blocked by creatures with greater power this combat";
|
||||
}
|
||||
|
||||
private DhalsimPliablePacifistEffect(final DhalsimPliablePacifistEffect effect) {
|
||||
private TadeasJuniperAscendantEffect(final TadeasJuniperAscendantEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DhalsimPliablePacifistEffect copy() {
|
||||
return new DhalsimPliablePacifistEffect(this);
|
||||
public TadeasJuniperAscendantEffect copy() {
|
||||
return new TadeasJuniperAscendantEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -103,28 +103,28 @@ class DhalsimPliablePacifistEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
permanent.untap(game);
|
||||
game.addEffect(new DhalsimPliablePacifistBlockEffect(permanent, game), source);
|
||||
game.addEffect(new TadeasJuniperAscendantBlockEffect(permanent, game), source);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class DhalsimPliablePacifistBlockEffect extends RestrictionEffect {
|
||||
class TadeasJuniperAscendantBlockEffect extends RestrictionEffect {
|
||||
|
||||
private final MageObjectReference mor;
|
||||
|
||||
DhalsimPliablePacifistBlockEffect(Permanent permanent, Game game) {
|
||||
TadeasJuniperAscendantBlockEffect(Permanent permanent, Game game) {
|
||||
super(Duration.EndOfTurn);
|
||||
this.mor = new MageObjectReference(permanent, game);
|
||||
}
|
||||
|
||||
private DhalsimPliablePacifistBlockEffect(final DhalsimPliablePacifistBlockEffect effect) {
|
||||
private TadeasJuniperAscendantBlockEffect(final TadeasJuniperAscendantBlockEffect effect) {
|
||||
super(effect);
|
||||
this.mor = effect.mor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DhalsimPliablePacifistBlockEffect copy() {
|
||||
return new DhalsimPliablePacifistBlockEffect(this);
|
||||
public TadeasJuniperAscendantBlockEffect copy() {
|
||||
return new TadeasJuniperAscendantBlockEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -143,23 +143,23 @@ class DhalsimPliablePacifistBlockEffect extends RestrictionEffect {
|
|||
}
|
||||
}
|
||||
|
||||
class DhalsimPliablePacifistTriggeredAbility extends TriggeredAbilityImpl {
|
||||
class TadeasJuniperAscendantTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
private final Set<UUID> damagedPlayerIds = new HashSet<>();
|
||||
|
||||
DhalsimPliablePacifistTriggeredAbility() {
|
||||
TadeasJuniperAscendantTriggeredAbility() {
|
||||
super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), false);
|
||||
this.withFlavorWord("Fierce Punch");
|
||||
setTriggerPhrase("Whenever one or more creatures you control deal combat damage to a player, ");
|
||||
}
|
||||
|
||||
private DhalsimPliablePacifistTriggeredAbility(final DhalsimPliablePacifistTriggeredAbility ability) {
|
||||
private TadeasJuniperAscendantTriggeredAbility(final TadeasJuniperAscendantTriggeredAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DhalsimPliablePacifistTriggeredAbility copy() {
|
||||
return new DhalsimPliablePacifistTriggeredAbility(this);
|
||||
public TadeasJuniperAscendantTriggeredAbility copy() {
|
||||
return new TadeasJuniperAscendantTriggeredAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.b;
|
||||
package mage.cards.t;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -23,9 +23,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class BlankaFerociousFriend extends CardImpl {
|
||||
public final class TheHowlingAbomination extends CardImpl {
|
||||
|
||||
public BlankaFerociousFriend(UUID ownerId, CardSetInfo setInfo) {
|
||||
public TheHowlingAbomination(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}{G}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -40,7 +40,7 @@ public final class BlankaFerociousFriend extends CardImpl {
|
|||
|
||||
// Rolling Attack—Blanka, Ferocious Friend has trample as long as you've cast three or more spells this turn.
|
||||
this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
|
||||
new GainAbilitySourceEffect(TrampleAbility.getInstance()), BlankaFerociousFriendCondition.instance,
|
||||
new GainAbilitySourceEffect(TrampleAbility.getInstance()), TheHowlingAbominationCondition.instance,
|
||||
"{this} has trample as long as you've cast three or more spells this turn"
|
||||
)).withFlavorWord("Rolling Attack"));
|
||||
|
||||
|
@ -53,17 +53,17 @@ public final class BlankaFerociousFriend extends CardImpl {
|
|||
this.addAbility(ability.withFlavorWord("Electric Thunder"));
|
||||
}
|
||||
|
||||
private BlankaFerociousFriend(final BlankaFerociousFriend card) {
|
||||
private TheHowlingAbomination(final TheHowlingAbomination card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlankaFerociousFriend copy() {
|
||||
return new BlankaFerociousFriend(this);
|
||||
public TheHowlingAbomination copy() {
|
||||
return new TheHowlingAbomination(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum BlankaFerociousFriendCondition implements Condition {
|
||||
enum TheHowlingAbominationCondition implements Condition {
|
||||
instance;
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.r;
|
||||
package mage.cards.v;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
|
@ -24,9 +24,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RyuWorldWarrior extends CardImpl {
|
||||
public final class VikyaScorchingStalwart extends CardImpl {
|
||||
|
||||
public RyuWorldWarrior(UUID ownerId, CardSetInfo setInfo) {
|
||||
public VikyaScorchingStalwart(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -39,38 +39,38 @@ public final class RyuWorldWarrior extends CardImpl {
|
|||
this.addAbility(new TrainingAbility());
|
||||
|
||||
// Hadoken—{4}{R}, {Q}, Discard a card: Ryu, World Warrior deals damage equal to his power to any target. If excess damage was dealt to a creature this way, draw a card.
|
||||
Ability ability = new SimpleActivatedAbility(new RyuWorldWarriorEffect(), new ManaCostsImpl<>("{4}{R}"));
|
||||
Ability ability = new SimpleActivatedAbility(new VikyaScorchingStalwartEffect(), new ManaCostsImpl<>("{4}{R}"));
|
||||
ability.addCost(new UntapSourceCost());
|
||||
ability.addCost(new DiscardCardCost());
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
this.addAbility(ability.withFlavorWord("Hadoken"));
|
||||
}
|
||||
|
||||
private RyuWorldWarrior(final RyuWorldWarrior card) {
|
||||
private VikyaScorchingStalwart(final VikyaScorchingStalwart card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RyuWorldWarrior copy() {
|
||||
return new RyuWorldWarrior(this);
|
||||
public VikyaScorchingStalwart copy() {
|
||||
return new VikyaScorchingStalwart(this);
|
||||
}
|
||||
}
|
||||
|
||||
class RyuWorldWarriorEffect extends OneShotEffect {
|
||||
class VikyaScorchingStalwartEffect extends OneShotEffect {
|
||||
|
||||
RyuWorldWarriorEffect() {
|
||||
VikyaScorchingStalwartEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "{this} deals damage equal to his power to any target. " +
|
||||
"If excess damage was dealt to a creature this way, draw a card";
|
||||
}
|
||||
|
||||
private RyuWorldWarriorEffect(final RyuWorldWarriorEffect effect) {
|
||||
private VikyaScorchingStalwartEffect(final VikyaScorchingStalwartEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RyuWorldWarriorEffect copy() {
|
||||
return new RyuWorldWarriorEffect(this);
|
||||
public VikyaScorchingStalwartEffect copy() {
|
||||
return new VikyaScorchingStalwartEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package mage.cards.c;
|
||||
package mage.cards.z;
|
||||
|
||||
import mage.ApprovingObject;
|
||||
import mage.MageInt;
|
||||
|
@ -23,9 +23,9 @@ import java.util.UUID;
|
|||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ChunLiCountlessKicks extends CardImpl {
|
||||
public final class ZethiArcaneBlademaster extends CardImpl {
|
||||
|
||||
public ChunLiCountlessKicks(UUID ownerId, CardSetInfo setInfo) {
|
||||
public ZethiArcaneBlademaster(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -38,24 +38,24 @@ public final class ChunLiCountlessKicks extends CardImpl {
|
|||
this.addAbility(new MultikickerAbility("{W/U}"));
|
||||
|
||||
// When Chun-Li enters the battlefield, exile up to X target instant cards from your graveyard, where X is the number of times Chun-Li was kicked. Put a kick counter on each of them.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new ChunLiCountlessKicksExileEffect())
|
||||
.setTargetAdjuster(ChunLiCountlessKicksAdjuster.instance));
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new ZethiArcaneBlademasterExileEffect())
|
||||
.setTargetAdjuster(ZethiArcaneBlademasterAdjuster.instance));
|
||||
|
||||
// Lightning Kick—Whenever Chun-Li attacks, copy each exiled card you own with a kick counter on it. You may cast the copies.
|
||||
this.addAbility(new AttacksTriggeredAbility(new ChunLiCountlessKicksCastEffect()).withFlavorWord("Lightning Kick"));
|
||||
this.addAbility(new AttacksTriggeredAbility(new ZethiArcaneBlademasterCastEffect()).withFlavorWord("Lightning Kick"));
|
||||
}
|
||||
|
||||
private ChunLiCountlessKicks(final ChunLiCountlessKicks card) {
|
||||
private ZethiArcaneBlademaster(final ZethiArcaneBlademaster card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunLiCountlessKicks copy() {
|
||||
return new ChunLiCountlessKicks(this);
|
||||
public ZethiArcaneBlademaster copy() {
|
||||
return new ZethiArcaneBlademaster(this);
|
||||
}
|
||||
}
|
||||
|
||||
enum ChunLiCountlessKicksAdjuster implements TargetAdjuster {
|
||||
enum ZethiArcaneBlademasterAdjuster implements TargetAdjuster {
|
||||
instance;
|
||||
private static final FilterCard filter = new FilterCard("instant cards from your graveyard");
|
||||
|
||||
|
@ -71,21 +71,21 @@ enum ChunLiCountlessKicksAdjuster implements TargetAdjuster {
|
|||
}
|
||||
}
|
||||
|
||||
class ChunLiCountlessKicksExileEffect extends OneShotEffect {
|
||||
class ZethiArcaneBlademasterExileEffect extends OneShotEffect {
|
||||
|
||||
ChunLiCountlessKicksExileEffect() {
|
||||
ZethiArcaneBlademasterExileEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "exile up to X target instant cards from your graveyard, "
|
||||
+ "where X is the number of times {this} was kicked. Put a kick counter on each of them";
|
||||
}
|
||||
|
||||
private ChunLiCountlessKicksExileEffect(final ChunLiCountlessKicksExileEffect effect) {
|
||||
private ZethiArcaneBlademasterExileEffect(final ZethiArcaneBlademasterExileEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunLiCountlessKicksExileEffect copy() {
|
||||
return new ChunLiCountlessKicksExileEffect(this);
|
||||
public ZethiArcaneBlademasterExileEffect copy() {
|
||||
return new ZethiArcaneBlademasterExileEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -101,20 +101,20 @@ class ChunLiCountlessKicksExileEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
|
||||
class ChunLiCountlessKicksCastEffect extends OneShotEffect {
|
||||
class ZethiArcaneBlademasterCastEffect extends OneShotEffect {
|
||||
|
||||
ChunLiCountlessKicksCastEffect() {
|
||||
ZethiArcaneBlademasterCastEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "copy each exiled card you own with a kick counter on it. You may cast the copies";
|
||||
}
|
||||
|
||||
private ChunLiCountlessKicksCastEffect(final ChunLiCountlessKicksCastEffect effect) {
|
||||
private ZethiArcaneBlademasterCastEffect(final ZethiArcaneBlademasterCastEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChunLiCountlessKicksCastEffect copy() {
|
||||
return new ChunLiCountlessKicksCastEffect(this);
|
||||
public ZethiArcaneBlademasterCastEffect copy() {
|
||||
return new ZethiArcaneBlademasterCastEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -153,7 +153,7 @@ class ChunLiCountlessKicksCastEffect extends OneShotEffect {
|
|||
);
|
||||
game.getState().setValue("PlayFromNotOwnHandZone" + copiedCard.getId(), null);
|
||||
} else {
|
||||
Logger.getLogger(ChunLiCountlessKicksCastEffect.class).error("Chun Li, Countless Kicks: "
|
||||
Logger.getLogger(ZethiArcaneBlademasterCastEffect.class).error("Chun Li, Countless Kicks: "
|
||||
+ "spell ability == null " + copiedCard.getName());
|
||||
}
|
||||
}
|
|
@ -421,14 +421,14 @@ public class SecretLairDrop extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Freed from the Real", 425, Rarity.RARE, mage.cards.f.FreedFromTheReal.class));
|
||||
cards.add(new SetCardInfo("Boseiju, Who Shelters All", 426, Rarity.RARE, mage.cards.b.BoseijuWhoSheltersAll.class));
|
||||
cards.add(new SetCardInfo("Hall of the Bandit Lord", 427, Rarity.RARE, mage.cards.h.HallOfTheBanditLord.class));
|
||||
cards.add(new SetCardInfo("E. Honda, Sumo Champion", 428, Rarity.RARE, mage.cards.e.EHondaSumoChampion.class));
|
||||
cards.add(new SetCardInfo("Ryu, World Warrior", 429, Rarity.RARE, mage.cards.r.RyuWorldWarrior.class));
|
||||
cards.add(new SetCardInfo("Ken, Burning Brawler", 430, Rarity.RARE, mage.cards.k.KenBurningBrawler.class));
|
||||
cards.add(new SetCardInfo("Blanka, Ferocious Friend", 431, Rarity.RARE, mage.cards.b.BlankaFerociousFriend.class));
|
||||
cards.add(new SetCardInfo("Chun-Li, Countless Kicks", 432, Rarity.RARE, mage.cards.c.ChunLiCountlessKicks.class));
|
||||
cards.add(new SetCardInfo("Dhalsim, Pliable Pacifist", 433, Rarity.RARE, mage.cards.d.DhalsimPliablePacifist.class));
|
||||
cards.add(new SetCardInfo("Guile, Sonic Soldier", 434, Rarity.RARE, mage.cards.g.GuileSonicSoldier.class));
|
||||
cards.add(new SetCardInfo("Zangief, the Red Cyclone", 435, Rarity.RARE, mage.cards.z.ZangiefTheRedCyclone.class));
|
||||
cards.add(new SetCardInfo("Baldin, Century Herdmaster", 428, Rarity.RARE, mage.cards.b.BaldinCenturyHerdmaster.class));
|
||||
cards.add(new SetCardInfo("Vikya, Scorching Stalwart", 429, Rarity.RARE, mage.cards.v.VikyaScorchingStalwart.class));
|
||||
cards.add(new SetCardInfo("Aisha of Sparks and Smoke", 430, Rarity.RARE, mage.cards.a.AishaOfSparksAndSmoke.class));
|
||||
cards.add(new SetCardInfo("The Howling Abomination", 431, Rarity.RARE, mage.cards.t.TheHowlingAbomination.class));
|
||||
cards.add(new SetCardInfo("Zethi, Arcane Blademaster", 432, Rarity.RARE, mage.cards.z.ZethiArcaneBlademaster.class));
|
||||
cards.add(new SetCardInfo("Tadeas, Juniper Ascendant", 433, Rarity.RARE, mage.cards.t.TadeasJuniperAscendant.class));
|
||||
cards.add(new SetCardInfo("Immard, the Stormcleaver", 434, Rarity.RARE, mage.cards.i.ImmardTheStormcleaver.class));
|
||||
cards.add(new SetCardInfo("Maarika, Brutal Gladiator", 435, Rarity.RARE, mage.cards.m.MaarikaBrutalGladiator.class));
|
||||
cards.add(new SetCardInfo("Windbrisk Heights", 436, Rarity.RARE, mage.cards.w.WindbriskHeights.class));
|
||||
cards.add(new SetCardInfo("Shelldock Isle", 437, Rarity.RARE, mage.cards.s.ShelldockIsle.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Howltooth Hollow", 438, Rarity.RARE, mage.cards.h.HowltoothHollow.class));
|
||||
|
|
|
@ -21,15 +21,23 @@ public final class UniversesWithin extends ExpansionSet {
|
|||
this.hasBasicLands = false;
|
||||
this.hasBoosters = false;
|
||||
|
||||
cards.add(new SetCardInfo("Aisha of Sparks and Smoke", 12, Rarity.RARE, mage.cards.a.AishaOfSparksAndSmoke.class));
|
||||
cards.add(new SetCardInfo("Arvinox, the Mind Flail", 1, Rarity.MYTHIC, mage.cards.a.ArvinoxTheMindFlail.class));
|
||||
cards.add(new SetCardInfo("Baldin, Century Herdmaster", 10, Rarity.RARE, mage.cards.b.BaldinCenturyHerdmaster.class));
|
||||
cards.add(new SetCardInfo("Bjorna, Nightfall Alchemist", 2, Rarity.RARE, mage.cards.b.BjornaNightfallAlchemist.class));
|
||||
cards.add(new SetCardInfo("Cecily, Haunted Mage", 3, Rarity.RARE, mage.cards.c.CecilyHauntedMage.class));
|
||||
cards.add(new SetCardInfo("Elmar, Ulvenwald Informant", 4, Rarity.RARE, mage.cards.e.ElmarUlvenwaldInformant.class));
|
||||
cards.add(new SetCardInfo("Hargilde, Kindly Runechanter", 5, Rarity.RARE, mage.cards.h.HargildeKindlyRunechanter.class));
|
||||
cards.add(new SetCardInfo("Havengul Laboratory", 9, Rarity.RARE, mage.cards.h.HavengulLaboratory.class));
|
||||
cards.add(new SetCardInfo("Havengul Mystery", 9, Rarity.RARE, mage.cards.h.HavengulMystery.class));
|
||||
cards.add(new SetCardInfo("Immard, the Stormcleaver", 14, Rarity.RARE, mage.cards.i.ImmardTheStormcleaver.class));
|
||||
cards.add(new SetCardInfo("Maarika, Brutal Gladiator", 15, Rarity.RARE, mage.cards.m.MaarikaBrutalGladiator.class));
|
||||
cards.add(new SetCardInfo("Othelm, Sigardian Outcast", 6, Rarity.RARE, mage.cards.o.OthelmSigardianOutcast.class));
|
||||
cards.add(new SetCardInfo("Sophina, Spearsage Deserter", 7, Rarity.RARE, mage.cards.s.SophinaSpearsageDeserter.class));
|
||||
cards.add(new SetCardInfo("Tadeas, Juniper Ascendant", 16, Rarity.RARE, mage.cards.t.TadeasJuniperAscendant.class));
|
||||
cards.add(new SetCardInfo("The Howling Abomination", 13, Rarity.RARE, mage.cards.t.TheHowlingAbomination.class));
|
||||
cards.add(new SetCardInfo("Vikya, Scorching Stalwart", 11, Rarity.RARE, mage.cards.v.VikyaScorchingStalwart.class));
|
||||
cards.add(new SetCardInfo("Wernog, Rider's Chaplain", 8, Rarity.RARE, mage.cards.w.WernogRidersChaplain.class));
|
||||
cards.add(new SetCardInfo("Zethi, Arcane Blademaster", 17, Rarity.RARE, mage.cards.z.ZethiArcaneBlademaster.class));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue