mirror of
https://github.com/correl/mage.git
synced 2025-01-12 19:25:44 +00:00
* Raid abilities - added card hints about raid condition, fixed missing ability words;
This commit is contained in:
parent
3810a6230d
commit
fdc32f891e
33 changed files with 266 additions and 151 deletions
|
@ -1,32 +1,36 @@
|
|||
|
||||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.costs.AlternativeCostSourceAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.CounterTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.TargetSpell;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author L_J
|
||||
*/
|
||||
public final class AdmiralsOrder extends CardImpl {
|
||||
public final class AdmiralsOrder extends CardImpl {
|
||||
|
||||
public AdmiralsOrder(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}{U}");
|
||||
|
||||
// Raid - If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost.
|
||||
this.addAbility(new AlternativeCostSourceAbility(new ManaCostsImpl("{U}"), RaidCondition.instance,
|
||||
"<br/><br/><i>Raid</i> — If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost"), new PlayerAttackedWatcher());
|
||||
this.addAbility(new AlternativeCostSourceAbility(new ManaCostsImpl("{U}"), RaidCondition.instance,
|
||||
"<br/><br/><i>Raid</i> — If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost"),
|
||||
new PlayerAttackedWatcher());
|
||||
// Counter target spell.
|
||||
this.getSpellAbility().addEffect(new CounterTargetEffect());
|
||||
this.getSpellAbility().addTarget(new TargetSpell());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
public AdmiralsOrder(final AdmiralsOrder card) {
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
|
||||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.common.TargetAnyTarget;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class ArrowStorm extends CardImpl {
|
||||
|
@ -33,6 +34,8 @@ public final class ArrowStorm extends CardImpl {
|
|||
RaidCondition.instance,
|
||||
"<br/><br/><i>Raid</i> — If you attacked with a creature this turn, instead {this} deals 5 damage to that permanent or player and the damage can't be prevented"));
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
public ArrowStorm(final ArrowStorm card) {
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import mage.MageInt;
|
||||
|
@ -7,8 +6,10 @@ import mage.abilities.condition.InvertCondition;
|
|||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
@ -16,13 +17,12 @@ import mage.watchers.common.PlayerAttackedWatcher;
|
|||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class BellowingSaddlebrute extends CardImpl {
|
||||
|
||||
public BellowingSaddlebrute(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||
this.subtype.add(SubType.ORC, SubType.WARRIOR);
|
||||
|
||||
this.power = new MageInt(4);
|
||||
|
@ -30,10 +30,12 @@ public final class BellowingSaddlebrute extends CardImpl {
|
|||
|
||||
// Raid - When Bellowing Saddlebrute enters the battlefield, you lose 4 life unless you attacked with a creature this turn
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||
new EntersBattlefieldTriggeredAbility(new LoseLifeSourceControllerEffect(4)),
|
||||
new InvertCondition(RaidCondition.instance),
|
||||
"<i>Raid</i> — When {this} enters the battlefield, you lose 4 life unless you attacked with a creature this turn"
|
||||
), new PlayerAttackedWatcher());
|
||||
new EntersBattlefieldTriggeredAbility(new LoseLifeSourceControllerEffect(4)),
|
||||
new InvertCondition(RaidCondition.instance),
|
||||
"<i>Raid</i> — When {this} enters the battlefield, you lose 4 life unless you attacked with a creature this turn")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
public BellowingSaddlebrute(final BellowingSaddlebrute card) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CantBlockAbility;
|
||||
|
@ -9,15 +7,18 @@ import mage.abilities.condition.common.RaidCondition;
|
|||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalActivatedAbility;
|
||||
import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public final class BloodsoakedChampion extends CardImpl {
|
||||
|
@ -39,6 +40,8 @@ public final class BloodsoakedChampion extends CardImpl {
|
|||
new ManaCostsImpl<>("{1}{B}"),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {1}{B}: Return {this} from your graveyard to the battlefield. Activate this ability only if you attacked this turn");
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import mage.abilities.Ability;
|
|||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
@ -26,6 +27,8 @@ public final class ChartACourse extends CardImpl {
|
|||
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2));
|
||||
this.getSpellAbility().addEffect(new ChartACourseEffect());
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
// this.getSpellAbility().setAbilityWord(AbilityWord.RAID); // no raid ability, only same conditional
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
private ChartACourse(final ChartACourse card) {
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class DeadeyeRigHauler extends CardImpl {
|
||||
|
@ -33,6 +34,8 @@ public final class DeadeyeRigHauler extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), true), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, you may return target creature to its owner's hand.");
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,29 +1,30 @@
|
|||
|
||||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetOpponent;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class DeadeyeTormentor extends CardImpl {
|
||||
|
||||
public DeadeyeTormentor(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
|
||||
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.PIRATE);
|
||||
this.power = new MageInt(2);
|
||||
|
@ -33,6 +34,8 @@ public final class DeadeyeTormentor extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new DiscardTargetEffect(1)), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, target opponent discards a card.");
|
||||
ability.addTarget(new TargetOpponent());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
|
||||
package mage.cards.f;
|
||||
|
||||
import mage.abilities.condition.InvertCondition;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
@ -30,6 +30,8 @@ public final class FirecannonBlast extends CardImpl {
|
|||
"{this} deals 3 damage to target creature.<br><i>Raid</i> — {this} deals 6 damage instead if you attacked this turn"));
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
public FirecannonBlast(final FirecannonBlast card) {
|
||||
|
|
|
@ -1,20 +1,21 @@
|
|||
|
||||
package mage.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.game.permanent.token.TreasureToken;
|
||||
import mage.target.common.TargetOpponent;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class HeartlessPillage extends CardImpl {
|
||||
|
@ -32,6 +33,8 @@ public final class HeartlessPillage extends CardImpl {
|
|||
RaidCondition.instance,
|
||||
"<br/><br/><i>Raid</i> — If you attacked with a creature this turn, create a colorless Treasure artifact token with \"{T}, Sacrifice this artifact: Add one mana of any color.\""));
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
public HeartlessPillage(final HeartlessPillage card) {
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
|
||||
package mage.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.CopyTargetSpellEffect;
|
||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.game.Game;
|
||||
|
@ -18,24 +18,31 @@ import mage.game.stack.Spell;
|
|||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public final class HowlOfTheHorde extends CardImpl {
|
||||
|
||||
public HowlOfTheHorde(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{2}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{R}");
|
||||
|
||||
|
||||
// When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy.
|
||||
Effect effect = new CreateDelayedTriggeredAbilityEffect(new HowlOfTheHordeDelayedTriggeredAbility());
|
||||
effect.setText("When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy.");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
|
||||
|
||||
// <i>Raid</i> — If you attacked with a creature this turn, when you cast your next instant or sorcery spell this turn, copy that spell an additional time. You may choose new targets for the copy.
|
||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new CreateDelayedTriggeredAbilityEffect(new HowlOfTheHordeDelayedTriggeredAbility()), RaidCondition.instance, "<br><br><i>Raid</i> — If you attacked with a creature this turn, when you cast your next instant or sorcery spell this turn, copy that spell an additional time. You may choose new targets for the copy."));
|
||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
|
||||
new CreateDelayedTriggeredAbilityEffect(new HowlOfTheHordeDelayedTriggeredAbility()),
|
||||
RaidCondition.instance,
|
||||
"<br><br><i>Raid</i> — If you attacked with a creature this turn, when you cast your next instant or sorcery spell this turn, copy that spell an additional time. You may choose new targets for the copy.")
|
||||
);
|
||||
this.getSpellAbility().addWatcher(new PlayerAttackedWatcher());
|
||||
this.getSpellAbility().setAbilityWord(AbilityWord.RAID);
|
||||
this.getSpellAbility().addHint(RaidHint.instance);
|
||||
}
|
||||
|
||||
public HowlOfTheHorde(final HowlOfTheHorde card) {
|
||||
|
@ -49,7 +56,7 @@ public final class HowlOfTheHorde extends CardImpl {
|
|||
}
|
||||
|
||||
class HowlOfTheHordeDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
||||
|
||||
|
||||
HowlOfTheHordeDelayedTriggeredAbility() {
|
||||
super(new CopyTargetSpellEffect(true), Duration.EndOfTurn);
|
||||
}
|
||||
|
@ -70,11 +77,11 @@ class HowlOfTheHordeDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
if (event.getPlayerId().equals(this.getControllerId())) {
|
||||
if (event.getPlayerId().equals(this.getControllerId())) {
|
||||
Spell spell = game.getStack().getSpell(event.getTargetId());
|
||||
if (spell != null && (spell.isInstant() || spell.isSorcery())) {
|
||||
for (Effect effect : this.getEffects()) {
|
||||
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
|
||||
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class MaraudingLooter extends CardImpl {
|
||||
|
@ -34,8 +35,10 @@ public final class MaraudingLooter extends CardImpl {
|
|||
new BeginningOfEndStepTriggeredAbility(new DrawDiscardControllerEffect(1, 1, true), TargetController.YOU, false),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — At the beginning of your end step, "
|
||||
+ "if you attacked this turn, "
|
||||
+ "you may draw a card. If you do, discard a card.");
|
||||
+ "if you attacked this turn, "
|
||||
+ "you may draw a card. If you do, discard a card.");
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,28 +1,29 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetAnyTarget;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class MarduHeartPiercer extends CardImpl {
|
||||
|
||||
public MarduHeartPiercer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{R}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.ARCHER);
|
||||
|
||||
|
@ -33,6 +34,8 @@ public final class MarduHeartPiercer extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(2)), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, {this} deals 2 damage to any target.");
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.permanent.token.WarriorToken;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public final class MarduHordechief extends CardImpl {
|
||||
|
@ -29,8 +30,12 @@ public final class MarduHordechief extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// <i>Raid</i> — When Mardu Hordechief enters the battlefield, if you attacked this turn, create a 1/1 white Warrior creature token
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WarriorToken())), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, create a 1/1 white Warrior creature token."),
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new CreateTokenEffect(new WarriorToken())),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, create a 1/1 white Warrior creature token.")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTappedAbility;
|
||||
|
@ -9,21 +7,24 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
|||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetOpponent;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class MarduSkullhunter extends CardImpl {
|
||||
|
||||
public MarduSkullhunter(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
|
||||
this.subtype.add(SubType.HUMAN);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
|
||||
|
@ -37,6 +38,8 @@ public final class MarduSkullhunter extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new DiscardTargetEffect(1)), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, target opponent discards a card.");
|
||||
ability.addTarget(new TargetOpponent());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
|
||||
package mage.cards.m;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.Mana;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.mana.AddManaToManaPoolSourceControllerEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class MarduWarshrieker extends CardImpl {
|
||||
|
@ -29,8 +30,12 @@ public final class MarduWarshrieker extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// <em>Raid</em> - When Mardu Warshrieker enters the battlefield, if you attacked this turn, add {R}{W}{B}.
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new AddManaToManaPoolSourceControllerEffect(new Mana(1, 0, 0, 1, 1, 0, 0, 0))), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, add {R}{W}{B}."),
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(
|
||||
new AddManaToManaPoolSourceControllerEffect(new Mana(1, 0, 0, 1, 1, 0, 0, 0))),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, add {R}{W}{B}.")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -5,8 +5,10 @@ import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
|
|||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
@ -23,13 +25,15 @@ public final class NavigatorsRuin extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
|
||||
|
||||
// Raid - At the beginning of your end step, if you attacked with a creature this turm, target opponent puts the top four cards of their library into their graveyard.
|
||||
Ability ability = new ConditionalInterveningIfTriggeredAbility(
|
||||
new BeginningOfEndStepTriggeredAbility(
|
||||
new PutLibraryIntoGraveTargetEffect(4), TargetController.YOU, false
|
||||
), RaidCondition.instance, "<i>Raid</i> — At the beginning of your end step, " +
|
||||
"if you attacked this turn, target opponent mills four cards."
|
||||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new BeginningOfEndStepTriggeredAbility(
|
||||
new PutLibraryIntoGraveTargetEffect(4), TargetController.YOU, false),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — At the beginning of your end step, " +
|
||||
"if you attacked this turn, target opponent mills four cards."
|
||||
);
|
||||
ability.addTarget(new TargetOpponent());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -5,8 +5,10 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
|||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.permanent.token.HumanSoldierToken;
|
||||
|
@ -29,10 +31,12 @@ public final class NightsquadCommando extends CardImpl {
|
|||
|
||||
// When Nightsquad Commando enters the battlefield, if you attacked this turn, create a 1/1 white Human Soldier creature token.
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
||||
new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new HumanSoldierToken())),
|
||||
RaidCondition.instance, "When {this} enters the battlefield, " +
|
||||
"if you attacked this turn, create a 1/1 white Human Soldier creature token."
|
||||
), new PlayerAttackedWatcher());
|
||||
new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new HumanSoldierToken())),
|
||||
RaidCondition.instance, "When {this} enters the battlefield, " +
|
||||
"if you attacked this turn, create a 1/1 white Human Soldier creature token.")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
private NightsquadCommando(final NightsquadCommando card) {
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
|
||||
package mage.cards.p;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.effects.common.CopyPermanentEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author JayDi85
|
||||
*/
|
||||
|
@ -29,6 +31,8 @@ public final class ProteanRaider extends CardImpl {
|
|||
// <i>Raid</i> — If you attacked with a creature this turn, you may have Protean Raider enter the battlefield as a copy of any creature on the battlefield.
|
||||
Ability ability = new EntersBattlefieldAbility(new CopyPermanentEffect(), true, RaidCondition.instance,
|
||||
"<i>Raid</i> — If you attacked with a creature this turn, you may have {this} enter the battlefield as a copy of any creature on the battlefield.", "");
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.abilities.common.DiscardsACardOpponentTriggeredAbility;
|
||||
|
@ -9,16 +7,19 @@ import mage.abilities.condition.common.RaidCondition;
|
|||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.LoseLifeTargetEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SetTargetPointer;
|
||||
import mage.constants.TargetController;
|
||||
import mage.target.common.TargetOpponent;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RaidersWake extends CardImpl {
|
||||
|
@ -34,6 +35,8 @@ public final class RaidersWake extends CardImpl {
|
|||
new BeginningOfEndStepTriggeredAbility(new DiscardTargetEffect(1), TargetController.YOU, false), RaidCondition.instance,
|
||||
"<i>Raid</i> — At the beginning of your end step, if you attacked this turn, target opponent discards a card.");
|
||||
ability.addTarget(new TargetOpponent());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.decorator.ConditionalActivatedAbility;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
|
@ -16,8 +15,9 @@ import mage.constants.Zone;
|
|||
import mage.target.common.TargetAnyTarget;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RepeatingBarrage extends CardImpl {
|
||||
|
@ -35,6 +35,7 @@ public final class RepeatingBarrage extends CardImpl {
|
|||
new ManaCostsImpl("{3}{R}{R}"),
|
||||
RaidCondition.instance);
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class RiggingRunner extends CardImpl {
|
||||
|
@ -33,9 +34,11 @@ public final class RiggingRunner extends CardImpl {
|
|||
|
||||
// Raid — Rigging Runner enters the battlefield with a +1/+1 counter on it if you attacked this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1), false),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.",
|
||||
"{this} enters the battlefield with a +1/+1 counter"),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.",
|
||||
"{this} enters the battlefield with a +1/+1 counter")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,29 +1,21 @@
|
|||
|
||||
package mage.cards.r;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.Cards;
|
||||
import mage.cards.CardsImpl;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.*;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RuinRaider extends CardImpl {
|
||||
|
@ -41,8 +33,10 @@ public final class RuinRaider extends CardImpl {
|
|||
new BeginningOfEndStepTriggeredAbility(new RuinRaiderEffect(), TargetController.YOU, false),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — At the beginning of your end step, if you attacked this turn, "
|
||||
+ "reveal the top card of your library and put that card into your hand. "
|
||||
+ "You lose life equal to the card's converted mana cost.");
|
||||
+ "reveal the top card of your library and put that card into your hand. "
|
||||
+ "You lose life equal to the card's converted mana cost.");
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
||||
import mage.constants.SubType;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class ShipwreckLooter extends CardImpl {
|
||||
|
@ -33,6 +34,8 @@ public final class ShipwreckLooter extends CardImpl {
|
|||
new EntersBattlefieldTriggeredAbility(new DrawDiscardControllerEffect(1, 1, true)),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, you may draw a card. If you do, discard a card.");
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.effects.common.cost.SpellCostReductionSourceEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
|
@ -15,8 +15,9 @@ import mage.constants.SubType;
|
|||
import mage.constants.Zone;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class SirenReaver extends CardImpl {
|
||||
|
@ -31,13 +32,13 @@ public final class SirenReaver extends CardImpl {
|
|||
|
||||
// <i>Raid</i> — Siren Reaver costs {1} less to cast if you attacked this turn.
|
||||
Ability ability = new SimpleStaticAbility(Zone.ALL, new SpellCostReductionSourceEffect(1, RaidCondition.instance));
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.setRuleAtTheTop(true);
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
}
|
||||
|
||||
public SirenReaver(final SirenReaver card) {
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class StormFleetAerialist extends CardImpl {
|
||||
|
@ -33,9 +34,11 @@ public final class StormFleetAerialist extends CardImpl {
|
|||
|
||||
// Raid - Storm Fleet Aerialist enters the battlefield with a +1/+1 counter on it if you attacked this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1), false),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.",
|
||||
"{this} enters the battlefield with a +1/+1 counter"),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.",
|
||||
"{this} enters the battlefield with a +1/+1 counter")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,23 +1,24 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.SacrificeEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.target.common.TargetOpponent;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class StormFleetArsonist extends CardImpl {
|
||||
|
@ -36,6 +37,8 @@ public final class StormFleetArsonist extends CardImpl {
|
|||
RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, target opponent sacrifices a permanent.");
|
||||
ability.addTarget(new TargetOpponent());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.target.common.TargetAnyTarget;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class StormFleetPyromancer extends CardImpl {
|
||||
|
@ -36,6 +37,8 @@ public final class StormFleetPyromancer extends CardImpl {
|
|||
RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, {this} deals 2 damage to any target.");
|
||||
ability.addTarget(new TargetAnyTarget());
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,21 +1,22 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class StormFleetSpy extends CardImpl {
|
||||
|
@ -33,6 +34,8 @@ public final class StormFleetSpy extends CardImpl {
|
|||
new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1)),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, draw a card.");
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
|
||||
package mage.cards.s;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author JayDi85
|
||||
*/
|
||||
|
@ -29,10 +30,12 @@ public final class SwaggeringCorsair extends CardImpl {
|
|||
|
||||
// <i>Raid</i> — Swaggering Corsair enters the battlefield with a +1/+1 counter on it if you attacked this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.", ""
|
||||
), new PlayerAttackedWatcher());
|
||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn.", "")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
}
|
||||
|
||||
public SwaggeringCorsair(final SwaggeringCorsair card) {
|
||||
|
|
|
@ -1,25 +1,26 @@
|
|||
|
||||
package mage.cards.t;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public final class TimelyHordemate extends CardImpl {
|
||||
|
@ -42,6 +43,8 @@ public final class TimelyHordemate extends CardImpl {
|
|||
Ability ability = new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, return target creature card with converted mana cost 2 or less from your graveyard to the battlefield.");
|
||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
ability.setAbilityWord(AbilityWord.RAID);
|
||||
ability.addHint(RaidHint.instance);
|
||||
this.addAbility(ability, new PlayerAttackedWatcher());
|
||||
|
||||
}
|
||||
|
|
|
@ -1,26 +1,23 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAbility;
|
||||
import mage.abilities.common.SimpleEvasionAbility;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public final class WarNameAspirant extends CardImpl {
|
||||
|
@ -41,9 +38,11 @@ public final class WarNameAspirant extends CardImpl {
|
|||
|
||||
// <i>Raid</i> — War-Name Aspirant enters the battlefield with a +1/+1 counter on it if you attacked this turn.
|
||||
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1), false),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn",
|
||||
"{this} enters the battlefield with a +1/+1 counter"),
|
||||
RaidCondition.instance,
|
||||
"<i>Raid</i> — {this} enters the battlefield with a +1/+1 counter on it if you attacked this turn",
|
||||
"{this} enters the battlefield with a +1/+1 counter")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
|
||||
// War-Name Aspirant can't be blocked by creatures with power 1 or less.
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
|
||||
package mage.cards.w;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
|
@ -11,16 +9,19 @@ import mage.abilities.dynamicvalue.common.AttackingCreatureCount;
|
|||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.hint.common.RaidHint;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.AbilityWord;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.game.permanent.token.WingmateRocToken;
|
||||
import mage.watchers.common.PlayerAttackedWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public final class WingmateRoc extends CardImpl {
|
||||
|
@ -35,9 +36,11 @@ public final class WingmateRoc extends CardImpl {
|
|||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// <em>Raid</em> - When Wingmate Roc enters the battlefield, if you attacked this turn, create a 3/4 white Bird creature token with flying.
|
||||
// <i>Raid</i> — When Wingmate Roc enters the battlefield, if you attacked this turn, create a 3/4 white Bird creature token with flying.
|
||||
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WingmateRocToken())), RaidCondition.instance,
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, create a 3/4 white Bird creature token with flying."),
|
||||
"<i>Raid</i> — When {this} enters the battlefield, if you attacked this turn, create a 3/4 white Bird creature token with flying.")
|
||||
.setAbilityWord(AbilityWord.RAID)
|
||||
.addHint(RaidHint.instance),
|
||||
new PlayerAttackedWatcher());
|
||||
|
||||
// Whenever Wingmate Roc attacks, you gain 1 life for each attacking creature.
|
||||
|
|
26
Mage/src/main/java/mage/abilities/hint/common/RaidHint.java
Normal file
26
Mage/src/main/java/mage/abilities/hint/common/RaidHint.java
Normal file
|
@ -0,0 +1,26 @@
|
|||
package mage.abilities.hint.common;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.common.RaidCondition;
|
||||
import mage.abilities.hint.ConditionHint;
|
||||
import mage.abilities.hint.Hint;
|
||||
import mage.game.Game;
|
||||
|
||||
/**
|
||||
* @author JayDi85
|
||||
*/
|
||||
public enum RaidHint implements Hint {
|
||||
|
||||
instance;
|
||||
private static final ConditionHint hint = new ConditionHint(RaidCondition.instance, "You attacked this turn");
|
||||
|
||||
@Override
|
||||
public String getText(Game game, Ability ability) {
|
||||
return hint.getText(game, ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Hint copy() {
|
||||
return instance;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue