[DMU] Implemented Archangel of Wrath (#9385)

* [DMU] Implemented Archangel of Wrath

* fix kicker cost

* small change to text generation
This commit is contained in:
Evan Kranzler 2022-08-19 18:19:00 -04:00 committed by GitHub
parent 7f3b03782e
commit a43eb00c1c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
152 changed files with 238 additions and 167 deletions

View file

@ -30,7 +30,7 @@ public final class AcademyDrake extends CardImpl {
// If Academy Drake was kicked, it enters the battlefield with two +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it.", ""));
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it.", ""));
}

View file

@ -36,7 +36,7 @@ public final class AetherFigment extends CardImpl {
// If Aether Figment was kicked, it enters the battlefield with two +1/+1 counters on it
Ability ability = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance,
KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it.",
"");
this.addAbility(ability);

View file

@ -32,7 +32,7 @@ public final class AgonizingDemise extends CardImpl {
// If Agonizing Demise was kicked, it deals damage equal to that creature's power to the creature's controller.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DamageTargetControllerEffect(TargetPermanentPowerCount.instance),
KickedCondition.instance,
KickedCondition.ONCE,
"if this spell was kicked, it deals damage equal to that creature's power to the creature's controller."));
}

View file

@ -0,0 +1,66 @@
package mage.cards.a;
import mage.MageInt;
import mage.abilities.TriggeredAbility;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.KickerAbility;
import mage.abilities.keyword.LifelinkAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.common.TargetAnyTarget;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class ArchangelOfWrath extends CardImpl {
public ArchangelOfWrath(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.subtype.add(SubType.ANGEL);
this.power = new MageInt(3);
this.toughness = new MageInt(4);
// Kicker {B} and/or {R}
KickerAbility kickerAbility = new KickerAbility("{B}");
kickerAbility.addKickerCost("{R}");
this.addAbility(kickerAbility);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Lifelink
this.addAbility(LifelinkAbility.getInstance());
TriggeredAbility triggeredAbility = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(2));
triggeredAbility.addTarget(new TargetAnyTarget());
// When Archangel of Wrath enters the battlefield, if it was kicked, it deals 2 damage to any target.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
triggeredAbility, KickedCondition.ONCE, "When {this} enters the battlefield, " +
"if it was kicked, it deals 2 damage to any target."
));
// When Archangel of Wrath enters the battlefield, if it was kicked twice, it deals 2 damage to any target.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
triggeredAbility.copy(), KickedCondition.TWICE, "When {this} enters the battlefield, " +
"if it was kicked twice, it deals 2 damage to any target."
));
}
private ArchangelOfWrath(final ArchangelOfWrath card) {
super(card);
}
@Override
public ArchangelOfWrath copy() {
return new ArchangelOfWrath(this);
}
}

View file

@ -35,7 +35,7 @@ public final class ArcticMerfolk extends CardImpl {
// If Arctic Merfolk was kicked, it enters the battlefield with a +1/+1 counter on it.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()),
KickedCondition.instance,"If Arctic Merfolk was kicked, it enters the battlefield with a +1/+1 counter on it.",""));
KickedCondition.ONCE,"If Arctic Merfolk was kicked, it enters the battlefield with a +1/+1 counter on it.",""));
}
private ArcticMerfolk(final ArcticMerfolk card) {

View file

@ -34,7 +34,7 @@ public final class ArdentSoldier extends CardImpl {
this.addAbility(VigilanceAbility.getInstance());
// If Ardent Soldier was kicked, it enters the battlefield with a +1/+1 counter on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with a +1/+1 counter on it.", ""));
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with a +1/+1 counter on it.", ""));
}
private ArdentSoldier(final ArdentSoldier card) {

View file

@ -32,7 +32,7 @@ public final class BalothGorger extends CardImpl {
// If Baloth Gorger was kicked, it enters the battlefield with three +1/+1 counters on it
Ability ability = new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)),
KickedCondition.instance,
KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with three +1/+1 counters on it",
"");
this.addAbility(ability);

View file

@ -33,7 +33,7 @@ public final class BenalishEmissary extends CardImpl {
// When Benalish Emissary enters the battlefield, if it was kicked, destroy target land.
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect());
ability.addTarget(new TargetLandPermanent());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance,
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, destroy target land."));
}

View file

@ -34,7 +34,7 @@ public final class BenalishLancer extends CardImpl {
// If Benalish Lancer was kicked, it enters the battlefield with two +1/+1 counters on it and with first strike.
Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance,
KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with first strike.", "");
ability.addEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability);

View file

@ -34,7 +34,7 @@ public final class BenalishSleeper extends CardImpl {
// When Benalish Sleeper enters the battlefield, if it was kicked, each player sacrifices a creature.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(new EntersBattlefieldTriggeredAbility(
new SacrificeAllEffect(StaticFilters.FILTER_CONTROLLED_CREATURE_SHORT_TEXT)
), KickedCondition.instance, "When {this} enters the battlefield, " +
), KickedCondition.ONCE, "When {this} enters the battlefield, " +
"if it was kicked, each player sacrifices a creature."));
}

View file

@ -41,7 +41,7 @@ public final class BlastFromThePast extends CardImpl {
// Blast from the Past deals 2 damage to any target. If this spell was kicked, create a 1/1 red Goblin creature token.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new CreateTokenEffect(new GoblinToken()), KickedCondition.instance));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new CreateTokenEffect(new GoblinToken()), KickedCondition.ONCE));
}
public BlastFromThePast (final BlastFromThePast card) {

View file

@ -28,7 +28,7 @@ public final class BlinkOfAnEye extends CardImpl {
// Return target nonland permanent to its owner's hand. If this spell was kicked, draw a card.
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(1), KickedCondition.instance,
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(1), KickedCondition.ONCE,
"If this spell was kicked, draw a card"));
}

View file

@ -48,7 +48,7 @@ enum BloodBeckoningAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
ability.getTargets().clear();
if (KickedCondition.instance.apply(game, ability)) {
if (KickedCondition.ONCE.apply(game, ability)) {
ability.addTarget(new TargetCardInYourGraveyard(2, StaticFilters.FILTER_CARD_CREATURE));
} else {
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE));

View file

@ -46,7 +46,7 @@ public final class BloodTribute extends CardImpl {
// If Blood Tribute was kicked, you gain life equal to the life lost this way.
Effect effect = new ConditionalOneShotEffect(
new BloodTributeGainLifeEffect(),
KickedCondition.instance,
KickedCondition.ONCE,
"if this spell was kicked, you gain life equal to the life lost this way");
this.getSpellAbility().addEffect(effect);
}

View file

@ -61,7 +61,7 @@ enum BloodchiefsThirstAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
ability.getTargets().clear();
if (KickedCondition.instance.apply(game, ability)) {
if (KickedCondition.ONCE.apply(game, ability)) {
ability.addTarget(new TargetCreatureOrPlaneswalker());
} else {
ability.addTarget(new TargetPermanent(filter));

View file

@ -28,7 +28,7 @@ public final class BogDown extends CardImpl {
// Target player discards two cards. If Bog Down was kicked, that player discards three cards instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DiscardTargetEffect(3),
new DiscardTargetEffect(2), KickedCondition.instance,
new DiscardTargetEffect(2), KickedCondition.ONCE,
"Target player discards two cards. If this spell was kicked, that player discards three cards instead."));
this.getSpellAbility().addTarget(new TargetPlayer());
}

View file

@ -61,7 +61,7 @@ class BoldDefenseEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
if (KickedCondition.instance.apply(game, source)) {
if (KickedCondition.ONCE.apply(game, source)) {
game.addEffect(new BoostControlledEffect(2, 2, Duration.EndOfTurn), source);
game.addEffect(new GainAbilityControlledEffect(
FirstStrikeAbility.getInstance(), Duration.EndOfTurn,

View file

@ -34,7 +34,7 @@ public final class BreathOfDarigaaz extends CardImpl {
// Breath of Darigaaz deals 1 damage to each creature without flying and each player. If Breath of Darigaaz was kicked, it deals 4 damage to each creature without flying and each player instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageEverythingEffect(4, filter),
new DamageEverythingEffect(1, filter), KickedCondition.instance,
new DamageEverythingEffect(1, filter), KickedCondition.ONCE,
"{this} deals 1 damage to each creature without flying and each player. If this spell was kicked, it deals 4 damage to each creature without flying and each player instead."));
}

View file

@ -42,7 +42,7 @@ public final class BubbleSnare extends CardImpl {
// When Bubble Snare enters the battlefield, if it was kicked, tap enchanted creature.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()), KickedCondition.instance,
new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()), KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, tap enchanted creature."
));

View file

@ -26,7 +26,7 @@ public final class BurstLightning extends CardImpl {
// Burst Lightning deals 2 damage to any target. If Burst Lightning was kicked, it deals 4 damage to that creature or player instead.
this.getSpellAbility().addTarget(new TargetAnyTarget());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageTargetEffect(4),
new DamageTargetEffect(2), KickedCondition.instance, "{this} deals 2 damage to any target. If this spell was kicked, it deals 4 damage instead"));
new DamageTargetEffect(2), KickedCondition.ONCE, "{this} deals 2 damage to any target. If this spell was kicked, it deals 4 damage instead"));
}
private BurstLightning(final BurstLightning card) {

View file

@ -38,7 +38,7 @@ public final class CaligoSkinWitch extends CardImpl {
false,
TargetController.OPPONENT
)),
KickedCondition.instance,
KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, each opponent discards two cards."
));
}

View file

@ -32,7 +32,7 @@ public final class CanopySurge extends CardImpl {
this.addAbility(new KickerAbility("{2}"));
// Canopy Surge deals 1 damage to each creature with flying and each player. If Canopy Surge was kicked, it deals 4 damage to each creature with flying and each player instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageEverythingEffect(4, filter),
new DamageEverythingEffect(1, filter), KickedCondition.instance,
new DamageEverythingEffect(1, filter), KickedCondition.ONCE,
"{this} deals 1 damage to each creature with flying and each player. If this spell was kicked, it deals 4 damage to each creature with flying and each player instead."));
}

View file

@ -26,7 +26,7 @@ public final class Cinderclasm extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DamageAllEffect(2, StaticFilters.FILTER_PERMANENT_CREATURE),
new DamageAllEffect(1, StaticFilters.FILTER_PERMANENT_CREATURE),
KickedCondition.instance, "{this} deals 1 damage to each creature. " +
KickedCondition.ONCE, "{this} deals 1 damage to each creature. " +
"If it was kicked, it deals 2 damage to each creature instead"
));
}

View file

@ -33,7 +33,7 @@ public final class CitanulWoodreaders extends CardImpl {
// When Citanul Woodreaders enters the battlefield, if it was kicked, draw two cards.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(2)),
KickedCondition.instance,
KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, draw two cards."
));
}

View file

@ -23,7 +23,7 @@ public final class ConquerorsPledge extends CardImpl {
this.addAbility(new KickerAbility("{6}"));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new CreateTokenEffect(new KorSoldierToken(), 12),
new CreateTokenEffect(new KorSoldierToken(), 6), KickedCondition.instance,
new CreateTokenEffect(new KorSoldierToken(), 6), KickedCondition.ONCE,
"Create six 1/1 white Kor Soldier creature tokens. If this spell was kicked, create twelve of those tokens instead"));
}

View file

@ -42,7 +42,7 @@ public final class CragplateBaloth extends CardImpl {
// If Cragplate Baloth was kicked, it enters the battlefield with four +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)), KickedCondition.instance,
new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)), KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with four +1/+1 counters on it.", ""
));
}

View file

@ -43,7 +43,7 @@ public final class CunningGeysermage extends CardImpl {
// When Cunning Geysermage enters the battlefield, if it was kicked, return up to one other target creature to its owner's hand.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect()),
KickedCondition.instance, "When {this} enters the battlefield, " +
KickedCondition.ONCE, "When {this} enters the battlefield, " +
"if it was kicked, return up to one other target creature to its owner's hand."
);
ability.addTarget(new TargetPermanent(0, 1, filter, false));

View file

@ -58,7 +58,7 @@ class DauntlessUnityEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
if (KickedCondition.instance.apply(game, source)) {
if (KickedCondition.ONCE.apply(game, source)) {
game.addEffect(new BoostControlledEffect(2, 1, Duration.EndOfTurn), source);
} else {
game.addEffect(new BoostControlledEffect(1, 1, Duration.EndOfTurn), source);

View file

@ -43,7 +43,7 @@ public final class DesolationAngel extends CardImpl {
// When Desolation Angel enters the battlefield, destroy all lands you control. If it was kicked, destroy all lands instead.
this.addAbility(new EntersBattlefieldTriggeredAbility(new ConditionalOneShotEffect(new DestroyAllEffect(StaticFilters.FILTER_LANDS),
new DestroyAllEffect(filter2), KickedCondition.instance, "destroy all lands you control. If it was kicked, destroy all lands instead.")));
new DestroyAllEffect(filter2), KickedCondition.ONCE, "destroy all lands you control. If it was kicked, destroy all lands instead.")));
}
private DesolationAngel(final DesolationAngel card) {

View file

@ -41,7 +41,7 @@ public final class DesolationGiant extends CardImpl {
this.addAbility(new KickerAbility("{W}{W}"));
// When Desolation Giant enters the battlefield, destroy all other creatures you control. If it was kicked, destroy all other creatures instead.
this.addAbility(new EntersBattlefieldTriggeredAbility(new ConditionalOneShotEffect(new DestroyAllEffect(filter),
new DestroyAllEffect(filter2), KickedCondition.instance, "destroy all other creatures you control. If it was kicked, destroy all other creatures instead.")));
new DestroyAllEffect(filter2), KickedCondition.ONCE, "destroy all other creatures you control. If it was kicked, destroy all other creatures instead.")));
}
private DesolationGiant(final DesolationGiant card) {

View file

@ -31,7 +31,7 @@ public final class DismantlingBlow extends CardImpl {
// If Dismantling Blow was kicked, draw two cards.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(2),
KickedCondition.instance,
KickedCondition.ONCE,
"if this spell was kicked, draw two cards"));
}

View file

@ -49,7 +49,7 @@ public final class DralnusPet extends CardImpl {
kickerCosts.add(new DiscardCardCost(StaticFilters.FILTER_CARD_CREATURE));
this.addAbility(new KickerAbility(kickerCosts));
// If Dralnu's Pet was kicked, it enters the battlefield with flying and with X +1/+1 counters on it, where X is the discarded card's converted mana cost.
Ability ability = new EntersBattlefieldAbility(new DralnusPetEffect(), KickedCondition.instance,
Ability ability = new EntersBattlefieldAbility(new DralnusPetEffect(), KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with flying and with X +1/+1 counters on it, where X is the discarded card's mana value.", "");
ability.addEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability);

View file

@ -35,7 +35,7 @@ public final class Duskwalker extends CardImpl {
// If Duskwalker was kicked, it enters the battlefield with two +1/+1 counters on it and with fear.
Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance,
KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with fear.", "");
ability.addEffect(new GainAbilitySourceEffect(FearAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability);

View file

@ -55,7 +55,7 @@ enum DwarvenLandslideAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
if (KickedCondition.instance.apply(game, ability)) {
if (KickedCondition.ONCE.apply(game, ability)) {
ability.getTargets().clear();
ability.addTarget(new TargetLandPermanent(2));
}

View file

@ -71,7 +71,7 @@ class ElementalAppealEffect extends OneShotEffect {
CreateTokenEffect effect = new CreateTokenEffect(new RedElementalWithTrampleAndHaste());
if (effect.apply(game, source)) {
effect.exileTokensCreatedAtNextEndStep(game, source);
if (KickedCondition.instance.apply(game, source)) {
if (KickedCondition.ONCE.apply(game, source)) {
List<Predicate<MageObject>> predList = new ArrayList<>();
for (UUID tokenId : effect.getLastAddedTokenIds()) {
predList.add(new CardIdPredicate(tokenId));

View file

@ -61,6 +61,6 @@ class ElfhameDruidConditionalMana extends ConditionalMana {
public ElfhameDruidConditionalMana(Mana mana) {
super(mana);
addCondition(KickedCondition.instance);
addCondition(KickedCondition.ONCE);
}
}

View file

@ -55,7 +55,7 @@ class ErtaisTrickeryEffect extends CounterTargetEffect {
@Override
public boolean apply(Game game, Ability source) {
Spell targetSpell = game.getStack().getSpell(source.getFirstTarget());
if(targetSpell != null && KickedCondition.instance.apply(game, targetSpell.getSpellAbility())) {
if(targetSpell != null && KickedCondition.ONCE.apply(game, targetSpell.getSpellAbility())) {
return super.apply(game, source);
}
return false;

View file

@ -35,7 +35,7 @@ public final class ExcavationElephant extends CardImpl {
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false);
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_ARTIFACT_FROM_YOUR_GRAVEYARD));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
ability, KickedCondition.instance,
ability, KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, "
+ "return target artifact card from your graveyard to your hand."
));

View file

@ -28,7 +28,7 @@ public final class ExplosiveGrowth extends CardImpl {
// Target creature gets +2/+2 until end of turn. If Explosive Growth was kicked, that creature gets +5/+5 until end of turn instead.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(new BoostTargetEffect(5, 5, Duration.EndOfTurn),
new BoostTargetEffect(2, 2, Duration.EndOfTurn), new LockedInCondition(KickedCondition.instance),
new BoostTargetEffect(2, 2, Duration.EndOfTurn), new LockedInCondition(KickedCondition.ONCE),
"Target creature gets +2/+2 until end of turn. If this spell was kicked, that creature gets +5/+5 until end of turn instead."));
}

View file

@ -35,7 +35,7 @@ public final class FaerieSquadron extends CardImpl {
this.addAbility(new KickerAbility("{3}{U}"));
// If Faerie Squadron was kicked, it enters the battlefield with two +1/+1 counters on it and with flying.
Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with flying.", "");
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with flying.", "");
ability.addEffect(new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability);
}

View file

@ -55,6 +55,6 @@ enum FallingTimberAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
ability.getTargets().clear();
ability.addTarget(new TargetCreaturePermanent(KickedCondition.instance.apply(game, ability) ? 2 : 1));
ability.addTarget(new TargetCreaturePermanent(KickedCondition.ONCE.apply(game, ability) ? 2 : 1));
}
}

View file

@ -24,7 +24,7 @@ public final class FieldResearch extends CardImpl {
// Draw two cards. If this spell was kicked, draw three cards instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(3), new DrawCardSourceControllerEffect(2),
KickedCondition.instance, "Draw two cards. If this spell was kicked, draw three cards instead."
KickedCondition.ONCE, "Draw two cards. If this spell was kicked, draw three cards instead."
));
}

View file

@ -32,7 +32,7 @@ public final class FightWithFire extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DamageMultiEffect(10),
new DamageTargetEffect(5),
KickedCondition.instance,
KickedCondition.ONCE,
"{this} deals 5 damage to target creature. If this spell was kicked, "
+ "it deals 10 damage divided as you choose among any number of targets instead."
+ "<i> (Those targets can include players and planeswalkers.)</i>"
@ -57,7 +57,7 @@ enum FightWithFireAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
ability.getTargets().clear();
if (KickedCondition.instance.apply(game, ability)) {
if (KickedCondition.ONCE.apply(game, ability)) {
ability.addTarget(new TargetAnyTargetAmount(10));
} else {
ability.addTarget(new TargetCreaturePermanent());

View file

@ -43,7 +43,7 @@ public final class GatekeeperOfMalakir extends CardImpl {
// When Gatekeeper of Malakir enters the battlefield, if it was kicked, target player sacrifices a creature.
EntersBattlefieldTriggeredAbility ability =
new EntersBattlefieldTriggeredAbility(new SacrificeEffect(filter, 1, "target player"));
Ability conditionalAbility = new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, target player sacrifices a creature.");
Ability conditionalAbility = new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, target player sacrifices a creature.");
conditionalAbility.addTarget(new TargetPlayer());
this.addAbility(conditionalAbility);
}

View file

@ -39,7 +39,7 @@ public final class GhastlyGloomhunter extends CardImpl {
// If Ghastly Gloomhunter was kicked, it enters the battlefield with two +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), KickedCondition.instance,
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it.", ""
));
}

View file

@ -40,7 +40,7 @@ public final class GhituChronicler extends CardImpl {
// When Ghitu Chronicler enters the battlefield, if it was kicked, return target instant or sorcery card from your graveyard to your hand.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false),
KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, " +
KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, " +
"return target instant or sorcery card from your graveyard to your hand."
);
ability.addTarget(new TargetCardInYourGraveyard(filter));

View file

@ -31,7 +31,7 @@ public final class GiftOfGrowth extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new UntapTargetEffect().setText("Untap target creature"));
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(new BoostTargetEffect(4, 4, Duration.EndOfTurn),
new BoostTargetEffect(2, 2, Duration.EndOfTurn), new LockedInCondition(KickedCondition.instance),
new BoostTargetEffect(2, 2, Duration.EndOfTurn), new LockedInCondition(KickedCondition.ONCE),
"It gets +2/+2 until end of turn. If this spell was kicked, that creature gets +4/+4 until end of turn instead."));
}

View file

@ -51,7 +51,7 @@ public final class Gigantiform extends CardImpl {
// When Gigantiform enters the battlefield, if it was kicked, you may search your library for a card named Gigantiform, put it onto the battlefield, then shuffle your library.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new GigantiformEffect(), true),
KickedCondition.instance,
KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, you may search your library for a card named Gigantiform, put it onto the battlefield, then shuffle."));
}

View file

@ -35,7 +35,7 @@ public final class GnarlidColony extends CardImpl {
// If Gnarlid Colony was kicked, it enters the battlefield with two +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), KickedCondition.instance,
new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it.", ""
));

View file

@ -64,7 +64,7 @@ enum GoblinBarrageAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
if (KickedCondition.instance.apply(game, ability)) {
if (KickedCondition.ONCE.apply(game, ability)) {
ability.addTarget(new TargetPlayerOrPlaneswalker());
}
}

View file

@ -43,7 +43,7 @@ public final class GoblinBushwhacker extends CardImpl {
));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
ability,
KickedCondition.instance,
KickedCondition.ONCE,
"When {this} enters the battlefield, "
+ "if it was kicked, "
+ "creatures you control get +1/+0 and gain haste until end of turn."

View file

@ -40,7 +40,7 @@ public final class GoblinRuinblaster extends CardImpl {
// When Goblin Ruinblaster enters the battlefield, if it was kicked, destroy target nonbasic land.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetNonBasicLandPermanent());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, destroy target nonbasic land."));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, destroy target nonbasic land."));
}
private GoblinRuinblaster(final GoblinRuinblaster card) {

View file

@ -28,7 +28,7 @@ public final class GrowFromTheAshes extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
KickedCondition.instance,
KickedCondition.ONCE,
"Search your library for a basic land card, put it onto the battlefield, then shuffle. If this spell was kicked, instead search your library for two basic land cards, put them onto the battlefield, then shuffle."));
}

View file

@ -36,7 +36,7 @@ public final class GrunnTheLonelyKing extends CardImpl {
//If Grunn, the Lonely King was kicked, it enters the battlefield with five +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with five +1/+1 counters on it", ""));
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with five +1/+1 counters on it", ""));
//Whenever Grunn attacks alone, double its power and toughness until end of turn.
SourcePermanentPowerCount power = new SourcePermanentPowerCount();

View file

@ -38,7 +38,7 @@ public final class HeartstabberMosquito extends CardImpl {
// When Heartstabber Mosquito enters the battlefield, if it was kicked, destroy target creature.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, destroy target creature."));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, destroy target creature."));
}
private HeartstabberMosquito(final HeartstabberMosquito card) {

View file

@ -47,7 +47,7 @@ public final class HuntingWilds extends CardImpl {
// If Hunting Wilds was kicked, untap all Forests put onto the battlefield this way.
// They become 3/3 green creatures with haste that are still lands.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new HuntingWildsEffect(), KickedCondition.instance));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new HuntingWildsEffect(), KickedCondition.ONCE));
}
private HuntingWilds(final HuntingWilds card) {

View file

@ -26,7 +26,7 @@ public final class HypnoticCloud extends CardImpl {
// Target player discards a card. If Hypnotic Cloud was kicked, that player discards three cards instead.
this.getSpellAbility().addTarget(new TargetPlayer());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DiscardTargetEffect(3), new DiscardTargetEffect(1), KickedCondition.instance,
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DiscardTargetEffect(3), new DiscardTargetEffect(1), KickedCondition.ONCE,
"Target player discards a card. If this spell was kicked, that player discards three cards instead"));
}

View file

@ -30,7 +30,7 @@ public final class IntoTheRoil extends CardImpl {
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1),
KickedCondition.instance,
KickedCondition.ONCE,
"if this spell was kicked, draw a card"));
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
}

View file

@ -43,7 +43,7 @@ public final class JaceMirrorMage extends CardImpl {
// When Jace, Mirror Mage enters the battlefield, if Jace was kicked, create a token that's a copy of Jace, Mirror Mage except it's not legendary and its starting loyalty is 1.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new JaceMirrorMageCopyEffect()),
KickedCondition.instance, "When {this} enters the battlefield, if {this} was kicked, " +
KickedCondition.ONCE, "When {this} enters the battlefield, if {this} was kicked, " +
"create a token that's a copy of {this}, except it's not legendary and its starting loyalty is 1."
));

View file

@ -35,7 +35,7 @@ public final class Jilt extends CardImpl {
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
Effect effect = new ConditionalOneShotEffect(
new DamageTargetEffect(2, "it"),
KickedCondition.instance,
KickedCondition.ONCE,
"if this spell was kicked, it deals 2 damage to another target creature");
effect.setTargetPointer(new SecondTargetPointer());
this.getSpellAbility().addEffect(effect);
@ -60,7 +60,7 @@ enum JiltAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
if (!KickedCondition.instance.apply(game, ability)) {
if (!KickedCondition.ONCE.apply(game, ability)) {
return;
}
FilterCreaturePermanent filter = new FilterCreaturePermanent("Another creature: Damaged");

View file

@ -35,7 +35,7 @@ public final class JosuVessLichKnight extends CardImpl {
//When Josu Vess, Lich Knight enters the battlefield, if it was kicked, create eight 2/2 black Zombie Knight creature tokens with menace.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ZombieKnightToken(), 8));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance,
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, create eight 2/2 black Zombie Knight creature tokens with menace."));
}

View file

@ -50,7 +50,7 @@ public final class KangeeAerieKeeper extends CardImpl {
// When Kangee, Aerie Keeper enters the battlefield, if it was kicked, put X feather counters on it.
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.FEATHER.createInstance(), GetKickerXValue.instance, true));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, put X feather counters on it."));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, put X feather counters on it."));
// Other Bird creatures get +1/+1 for each feather counter on Kangee, Aerie Keeper.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(new CountersSourceCount(CounterType.FEATHER), new CountersSourceCount(CounterType.FEATHER), Duration.WhileOnBattlefield, filter, true, "Other Bird creatures get +1/+1 for each feather counter on {this}.")));

View file

@ -33,7 +33,7 @@ public final class KavuAggressor extends CardImpl {
this.addAbility(new CantBlockAbility());
// If Kavu Aggressor was kicked, it enters the battlefield with a +1/+1 counter on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with a +1/+1 counter on it.", ""));
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with a +1/+1 counter on it.", ""));
}
private KavuAggressor(final KavuAggressor card) {

View file

@ -35,7 +35,7 @@ public final class KavuPrimarch extends CardImpl {
// If Kavu Primarch was kicked, it enters the battlefield with four +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)),KickedCondition.instance,
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)),KickedCondition.ONCE,
"If Kavu Primarch was kicked, it enters the battlefield with four +1/+1 counters on it.", ""));
}

View file

@ -34,7 +34,7 @@ public final class KavuTitan extends CardImpl {
this.addAbility(new KickerAbility("{2}{G}"));
// If Kavu Titan was kicked, it enters the battlefield with three +1/+1 counters on it and with trample.
Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)),
KickedCondition.instance,
KickedCondition.ONCE,
"If Kavu Titan was kicked, it enters the battlefield with three +1/+1 counters on it and with trample.", "");
ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability);

View file

@ -44,7 +44,7 @@ public final class KeldonOverseer extends CardImpl {
ability.addEffect(new UntapTargetEffect());
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance,
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn."));
}

View file

@ -38,7 +38,7 @@ public final class KitesailCleric extends CardImpl {
// When Kitesail Cleric enters the battelfield, if it was kicked, tap up to two target creatures.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new TapTargetEffect()),
KickedCondition.instance, "When {this} enters the battlefield, " +
KickedCondition.ONCE, "When {this} enters the battlefield, " +
"if it was kicked, tap up to two target creatures."
);
ability.addTarget(new TargetCreaturePermanent(0, 2));

View file

@ -39,7 +39,7 @@ public final class KorAeronaut extends CardImpl {
//When Kor Aeronaut enters the battlefield, if it was kicked, target creature gains flying until end of turn.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), false);
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, target creature gains flying until end of turn."));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, target creature gains flying until end of turn."));
}
private KorAeronaut(final KorAeronaut card) {

View file

@ -36,7 +36,7 @@ public final class KorSanctifiers extends CardImpl {
// When Kor Sanctifiers enters the battlefield, if it was kicked, destroy target artifact or enchantment.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, destroy target artifact or enchantment."));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, destroy target artifact or enchantment."));
}
public KorSanctifiers (final KorSanctifiers card) {

View file

@ -33,7 +33,7 @@ public final class KrosanDruid extends CardImpl {
// When Krosan Druid enters the battlefield, if it was kicked, you gain 10 life.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new GainLifeEffect(10)),
KickedCondition.instance,
KickedCondition.ONCE,
"When {this} enters the battlefield, if it was kicked, you gain 10 life"
));
}

View file

@ -36,7 +36,7 @@ public final class LlanowarElite extends CardImpl {
// If Llanowar Elite was kicked, it enters the battlefield with five +1/+1 counters on it.
Ability ability = new EntersBattlefieldAbility(
new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)), KickedCondition.instance, ""),
new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)), KickedCondition.ONCE, ""),
"If {this} was kicked, it enters the battlefield with five +1/+1 counters on it.");
this.addAbility(ability);

View file

@ -57,7 +57,7 @@ class MaddeningCacophonyEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
boolean kicked = KickedCondition.instance.apply(game, source);
boolean kicked = KickedCondition.ONCE.apply(game, source);
for (UUID playerId : game.getOpponents(source.getControllerId())) {
Player player = game.getPlayer(playerId);
if (player == null) {

View file

@ -51,6 +51,6 @@ enum MagmaBurstAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
ability.addTarget(new TargetAnyTarget(KickedCondition.instance.apply(game, ability) ? 2 : 1));
ability.addTarget(new TargetAnyTarget(KickedCondition.ONCE.apply(game, ability) ? 2 : 1));
}
}

View file

@ -38,7 +38,7 @@ public final class MarshCasualties extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(
new MarshCasualtiesEffect(-2, -2),
new MarshCasualtiesEffect(-1, -1),
new LockedInCondition(KickedCondition.instance),
new LockedInCondition(KickedCondition.ONCE),
ruleText));
this.getSpellAbility().addTarget(new TargetPlayer());
}

View file

@ -60,7 +60,7 @@ class MightOfMurasaEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
int i = KickedCondition.instance.apply(game, source) ? 5 : 3;
int i = KickedCondition.ONCE.apply(game, source) ? 5 : 3;
game.addEffect(new BoostTargetEffect(i, i, Duration.EndOfTurn), source);
return true;
}

View file

@ -44,7 +44,7 @@ public final class MoldShambler extends CardImpl {
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
Target target = new TargetPermanent(filter);
ability.addTarget(target);
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, destroy target noncreature permanent."));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, destroy target noncreature permanent."));
}
private MoldShambler(final MoldShambler card) {

View file

@ -78,14 +78,14 @@ class MoltenDisasterSplitSecondEffect extends ContinuousRuleModifyingEffectImpl
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (event.getType() == GameEvent.EventType.CAST_SPELL) {
if (KickedCondition.instance.apply(game, source)) {
if (KickedCondition.ONCE.apply(game, source)) {
return true;
}
}
if (event.getType() == GameEvent.EventType.ACTIVATE_ABILITY) {
Optional<Ability> ability = game.getAbility(event.getTargetId(), event.getSourceId());
if (ability.isPresent() && !(ability.get() instanceof ActivatedManaAbilityImpl)) {
return KickedCondition.instance.apply(game, source);
return KickedCondition.ONCE.apply(game, source);
}
}
return false;

View file

@ -37,7 +37,7 @@ public final class MossPitSkeleton extends CardImpl {
// If Moss-Pit Skeleton was kicked, it enters the battlefield with three +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), KickedCondition.instance,
new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), KickedCondition.ONCE,
"If {this} was kicked, it enters the battlefield with three +1/+1 counters on it.", ""
));

View file

@ -42,7 +42,7 @@ public final class MurasaSproutling extends CardImpl {
// When Murasa Sproutling enters the battlefield, if it was kicked, return target card with a kicker ability from your graveyard to your hand.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToHandTargetEffect()),
KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, " +
KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, " +
"return target card with a kicker ability from your graveyard to your hand."
);
ability.addTarget(new TargetCardInYourGraveyard(filter));

View file

@ -55,7 +55,7 @@ public final class MyriadConstruct extends CardImpl {
// If Myriad Construct was kicked, it enters the battlefield with a +1/+1 counter on it for each nonbasic land your opponents control.
this.addAbility(new EntersBattlefieldAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance(), xValue, false),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield " +
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield " +
"with a +1/+1 counter on it for each nonbasic land your opponents control.", ""
));

View file

@ -43,7 +43,7 @@ public final class NullpriestOfOblivion extends CardImpl {
// When Nullpriest of Oblivion enters the battlefield, if it was kicked, return target creature card from your graveyard to the battlefield.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new ReturnFromGraveyardToBattlefieldTargetEffect()),
KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, " +
KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, " +
"return target creature card from your graveyard to the battlefield."
);
ability.addTarget(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_YOUR_GRAVEYARD));

View file

@ -46,7 +46,7 @@ public final class OranRiefRecluse extends CardImpl {
// When Oran-Rief Recluse enters the battlefield, if it was kicked, destroy target creature with flying.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, destroy target creature with flying."));
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, destroy target creature with flying."));
}
private OranRiefRecluse(final OranRiefRecluse card) {

View file

@ -96,7 +96,7 @@ class OrimsChantEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null && KickedCondition.instance.apply(game, source)) {
if (controller != null && KickedCondition.ONCE.apply(game, source)) {
game.addEffect(new CantAttackAnyPlayerAllEffect(Duration.EndOfTurn, FILTER_PERMANENT_CREATURES), source);
return true;
}

View file

@ -36,7 +36,7 @@ public final class OrimsThunder extends CardImpl {
this.getSpellAbility().addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new OrimsThunderEffect2(),
KickedCondition.instance,
KickedCondition.ONCE,
"If this spell was kicked, it deals damage equal to that permanent's mana value to target creature")
);
this.getSpellAbility().setTargetAdjuster(OrimsThunderAdjuster.instance);
@ -57,7 +57,7 @@ enum OrimsThunderAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
if (KickedCondition.instance.apply(game, ability)) {
if (KickedCondition.ONCE.apply(game, ability)) {
ability.addTarget(new TargetCreaturePermanent());
}
}
@ -82,7 +82,7 @@ class OrimsThunderEffect2 extends OneShotEffect {
if (firstTarget != null) {
damage = firstTarget.getManaValue();
}
boolean kicked = KickedCondition.instance.apply(game, source);
boolean kicked = KickedCondition.ONCE.apply(game, source);
if (kicked && secondTarget != null) {
secondTarget.damage(damage, source.getSourceId(), source, game);
return true;

View file

@ -29,7 +29,7 @@ public final class OrimsTouch extends CardImpl {
// Prevent the next 2 damage that would be dealt to any target this turn. If Orim's Touch was kicked, prevent the next 4 damage that would be dealt to that creature or player this turn instead.
Effect effect = new ConditionalReplacementEffect(
new PreventDamageToTargetEffect(Duration.EndOfTurn, 4),
new LockedInCondition(KickedCondition.instance),
new LockedInCondition(KickedCondition.ONCE),
new PreventDamageToTargetEffect(Duration.EndOfTurn, 2));
effect.setText("Prevent the next 2 damage that would be dealt to any target this turn. If Orim's Touch was kicked, prevent the next 4 damage that would be dealt to that permanent or player this turn instead");
this.getSpellAbility().addTarget(new TargetAnyTarget());

View file

@ -65,7 +65,7 @@ class OverloadEffect extends OneShotEffect {
Permanent targetArtifact = game.getPermanent(this.getTargetPointer().getFirst(game, source));
if (targetArtifact != null) {
int cmc = targetArtifact.getManaValue();
if (cmc <= 2 || (KickedCondition.instance.apply(game, source) && cmc <= 5)) {
if (cmc <= 2 || (KickedCondition.ONCE.apply(game, source) && cmc <= 5)) {
targetArtifact.destroy(source, game, false);
}
}

View file

@ -31,7 +31,7 @@ public final class PhyrexianScuta extends CardImpl {
// Kicker-Pay 3 life.
this.addAbility(new KickerAbility(new PayLifeCost(3)));
// If Phyrexian Scuta was kicked, it enters the battlefield with two +1/+1 counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), KickedCondition.instance, "If Phyrexian Scuta was kicked, it enters the battlefield with two +1/+1 counters on it.", ""));
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), KickedCondition.ONCE, "If Phyrexian Scuta was kicked, it enters the battlefield with two +1/+1 counters on it.", ""));
}
private PhyrexianScuta(final PhyrexianScuta card) {

View file

@ -36,7 +36,7 @@ public final class PincerSpider extends CardImpl {
// If Pincer Spider was kicked, it enters the battlefield with a +1/+1 counter on it.
Ability ability = new EntersBattlefieldAbility(
new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), KickedCondition.instance, ""),
new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), KickedCondition.ONCE, ""),
"If {this} was kicked, it enters the battlefield with a +1/+1 counter on it.");
this.addAbility(ability);

View file

@ -34,7 +34,7 @@ public final class PollenRemedy extends CardImpl {
// Prevent the next 3 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose.
// If Pollen Remedy was kicked, prevent the next 6 damage this way instead.
Effect effect = new ConditionalReplacementEffect(new PreventDamageToTargetMultiAmountEffect(Duration.EndOfTurn, 6),
KickedCondition.instance, new PreventDamageToTargetMultiAmountEffect(Duration.EndOfTurn, 3));
KickedCondition.ONCE, new PreventDamageToTargetMultiAmountEffect(Duration.EndOfTurn, 3));
effect.setText("Prevent the next 3 damage that would be dealt this turn to any number of targets, divided as you choose. If this spell was kicked, prevent the next 6 damage this way instead.");
this.getSpellAbility().addEffect(effect);
this.getSpellAbility().setTargetAdjuster(PollenRemedyAdjuster.instance);
@ -55,6 +55,6 @@ enum PollenRemedyAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
ability.addTarget(new TargetAnyTargetAmount(KickedCondition.instance.apply(game, ability) ? 6 : 3));
ability.addTarget(new TargetAnyTargetAmount(KickedCondition.ONCE.apply(game, ability) ? 6 : 3));
}
}

View file

@ -38,7 +38,7 @@ public final class PouncingKavu extends CardImpl {
this.addAbility(FirstStrikeAbility.getInstance());
// If Pouncing Kavu was kicked, it enters the battlefield with two +1/+1 counters on it and with haste.
Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with haste.", "");
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with haste.", "");
ability.addEffect(new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability);
}

View file

@ -36,7 +36,7 @@ public final class PouncingWurm extends CardImpl {
// If Pouncing Wurm was kicked, it enters the battlefield with three +1/+1 counters on it and with haste.
Ability ability = new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3))),
KickedCondition.instance,"If Pouncing Wurm was kicked, it enters the battlefield with three +1/+1 counters on it and with haste.");
KickedCondition.ONCE,"If Pouncing Wurm was kicked, it enters the battlefield with three +1/+1 counters on it and with haste.");
ability.addEffect(new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield));
this.addAbility(ability);
}

View file

@ -32,7 +32,7 @@ public final class PrimalGrowth extends CardImpl {
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, StaticFilters.FILTER_CARD_BASIC_LAND), false, true),
KickedCondition.instance,
KickedCondition.ONCE,
"Search your library for a basic land card, put that card onto the battlefield, then shuffle. If this spell was kicked, instead search your library for up to two basic land cards, put them onto the battlefield, then shuffle"));
}

View file

@ -38,7 +38,7 @@ public final class PrisonBarricade extends CardImpl {
// If Prison Barricade was kicked, it enters the battlefield with a +1/+1 counter on it and with "Prison Barricade can attack as though it didn't have defender."
Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with a +1/+1 counter on it and with \"{this} can attack as though it didn't have defender.\"", "");
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with a +1/+1 counter on it and with \"{this} can attack as though it didn't have defender.\"", "");
ability.addEffect(new CanAttackAsThoughItDidntHaveDefenderSourceEffect(Duration.WhileOnBattlefield));
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ public final class Probe extends CardImpl {
// If Probe was kicked, target player discards two cards.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DiscardTargetEffect(2),
KickedCondition.instance,
KickedCondition.ONCE,
"If this spell was kicked, target player discards two cards"));
this.getSpellAbility().setTargetAdjuster(ProbeAdjuster.instance);
}
@ -52,7 +52,7 @@ enum ProbeAdjuster implements TargetAdjuster {
@Override
public void adjustTargets(Ability ability, Game game) {
ability.getTargets().clear();
if (KickedCondition.instance.apply(game, ability)) {
if (KickedCondition.ONCE.apply(game, ability)) {
ability.addTarget(new TargetPlayer());
}
}

View file

@ -69,7 +69,7 @@ class ProhibitEffect extends OneShotEffect {
if (targetSpell != null) {
int cmc = targetSpell.getManaValue();
if (cmc <= 2
|| (KickedCondition.instance.apply(game, source) && cmc <= 4)) {
|| (KickedCondition.ONCE.apply(game, source) && cmc <= 4)) {
game.getStack().counter(targetSpell.getId(), source, game);
}
}

View file

@ -38,7 +38,7 @@ public final class RavagingRiftwurm extends CardImpl {
this.addAbility(new VanishingSacrificeAbility());
// If Ravaging Riftwurm was kicked, it enters the battlefield with three additional time counters on it.
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(3)),
KickedCondition.instance, "If {this} was kicked, it enters the battlefield with three additional time counters on it.", ""));
KickedCondition.ONCE, "If {this} was kicked, it enters the battlefield with three additional time counters on it.", ""));
}
private RavagingRiftwurm(final RavagingRiftwurm card) {

View file

@ -32,7 +32,7 @@ public final class ReclaimTheWastes extends CardImpl {
new SearchLibraryPutInHandEffect(new TargetCardInLibrary(
0, 1,
StaticFilters.FILTER_CARD_BASIC_LAND
), true), KickedCondition.instance, "search your library for a basic land card, " +
), true), KickedCondition.ONCE, "search your library for a basic land card, " +
"reveal it, put it into your hand, then shuffle. If this spell was kicked, " +
"search your library for two basic land cards instead of one"
));

View file

@ -26,7 +26,7 @@ public final class RiteOfReplication extends CardImpl {
// Create a token that's a copy of target creature. If Rite of Replication was kicked, create five of those tokens instead.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new CreateTokenCopyTargetEffect(null, null, false, 5),
new CreateTokenCopyTargetEffect(), KickedCondition.instance,
new CreateTokenCopyTargetEffect(), KickedCondition.ONCE,
"Create a token that's a copy of target creature. If this spell was kicked, create five of those tokens instead"));
}

View file

@ -24,7 +24,7 @@ public final class RoilEruption extends CardImpl {
// Roil Eruption deals 3 damage to any target. If this spell was kicked, it deals 5 damage instead.
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DamageTargetEffect(5), new DamageTargetEffect(3), KickedCondition.instance,
new DamageTargetEffect(5), new DamageTargetEffect(3), KickedCondition.ONCE,
"{this} deals 3 damage to any target. If this spell was kicked, it deals 5 damage instead"
));
this.getSpellAbility().addTarget(new TargetAnyTarget());

View file

@ -28,7 +28,7 @@ public final class RoostOfDrakes extends CardImpl {
// When Roost of Drakes enters the battlefield, if it was kicked, create a 2/2 blue Drake creature token with flying.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new DrakeToken())),
KickedCondition.instance, "When {this} enters the battlefield, if it was kicked, " +
KickedCondition.ONCE, "When {this} enters the battlefield, if it was kicked, " +
"create a 2/2 blue Drake creature token with flying."
));

Some files were not shown because too many files have changed in this diff Show more