mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
enum conditions
This commit is contained in:
parent
40870f22c2
commit
ea6ba3c0a9
28 changed files with 57 additions and 46 deletions
|
@ -74,7 +74,7 @@ public class AkutaBornOfAsh extends CardImpl {
|
||||||
new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD,
|
new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD,
|
||||||
new DoIfCostPaid(new ReturnSourceFromGraveyardToBattlefieldEffect(), new SacrificeTargetCost(new TargetControlledPermanent(filterSwamp))),
|
new DoIfCostPaid(new ReturnSourceFromGraveyardToBattlefieldEffect(), new SacrificeTargetCost(new TargetControlledPermanent(filterSwamp))),
|
||||||
TargetController.YOU, false),
|
TargetController.YOU, false),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return {this} from your graveyard to the battlefield.");
|
"At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return {this} from your graveyard to the battlefield.");
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class AngelOfTheDireHour extends CardImpl {
|
||||||
// When Angel of the Dire Hour enters the battlefield, if you cast it from your hand, exile all attacking creatures.
|
// When Angel of the Dire Hour enters the battlefield, if you cast it from your hand, exile all attacking creatures.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new ExileAllEffect(new FilterAttackingCreature("attacking creatures")), false),
|
new EntersBattlefieldTriggeredAbility(new ExileAllEffect(new FilterAttackingCreature("attacking creatures")), false),
|
||||||
new CastFromHandSourceCondition(),
|
CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, exile all attacking creatures."),
|
"When {this} enters the battlefield, if you cast it from your hand, exile all attacking creatures."),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class BreachingLeviathan extends CardImpl {
|
||||||
// When Breaching Leviathan enters the battlefield, if you cast it from your hand, tap all nonblue creatures. Those creatures don't untap during their controllers' next untap steps.
|
// When Breaching Leviathan enters the battlefield, if you cast it from your hand, tap all nonblue creatures. Those creatures don't untap during their controllers' next untap steps.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new BreachingLeviathanEffect(), false),
|
new EntersBattlefieldTriggeredAbility(new BreachingLeviathanEffect(), false),
|
||||||
new CastFromHandSourceCondition(),
|
CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, tap all nonblue creatures. Those creatures don't untap during their controllers' next untap steps."),
|
"When {this} enters the battlefield, if you cast it from your hand, tap all nonblue creatures. Those creatures don't untap during their controllers' next untap steps."),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class CoalStoker extends CardImpl {
|
||||||
// When Coal Stoker enters the battlefield, if you cast it from your hand, add {R}{R}{R} to your mana pool.
|
// When Coal Stoker enters the battlefield, if you cast it from your hand, add {R}{R}{R} to your mana pool.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new BasicManaEffect(Mana.RedMana(3)), false),
|
new EntersBattlefieldTriggeredAbility(new BasicManaEffect(Mana.RedMana(3)), false),
|
||||||
new CastFromHandSourceCondition(),
|
CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, add {R}{R}{R} to your mana pool."),
|
"When {this} enters the battlefield, if you cast it from your hand, add {R}{R}{R} to your mana pool."),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class DeathOfAThousandStings extends CardImpl {
|
||||||
new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD,
|
new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD,
|
||||||
new ReturnSourceFromGraveyardToHandEffect(),
|
new ReturnSourceFromGraveyardToHandEffect(),
|
||||||
TargetController.YOU, true),
|
TargetController.YOU, true),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"At the beginning of your upkeep, if you have more cards in hand than each opponent, you may return {this} from your graveyard to your hand.");
|
"At the beginning of your upkeep, if you have more cards in hand than each opponent, you may return {this} from your graveyard to your hand.");
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ class DeathbringerRegentCondition implements Condition {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
return new CastFromHandSourceCondition().apply(game, source)
|
return CastFromHandSourceCondition.instance.apply(game, source)
|
||||||
&& game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), game).size() >= 6;
|
&& game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), game).size() >= 6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,11 +61,11 @@ public class DescendantOfKiyomaro extends CardImpl {
|
||||||
// As long as you have more cards in hand than each opponent, Descendant of Kiyomaro gets +1/+2 and has "Whenever this creature deals combat damage, you gain 3 life."
|
// As long as you have more cards in hand than each opponent, Descendant of Kiyomaro gets +1/+2 and has "Whenever this creature deals combat damage, you gain 3 life."
|
||||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||||
new BoostSourceEffect(1,2, Duration.WhileOnBattlefield),
|
new BoostSourceEffect(1,2, Duration.WhileOnBattlefield),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"As long as you have more cards in hand than each opponent, {this} gets +1/+2"));
|
"As long as you have more cards in hand than each opponent, {this} gets +1/+2"));
|
||||||
ability.addEffect(new ConditionalContinuousEffect(
|
ability.addEffect(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(new DealsCombatDamageTriggeredAbility(new GainLifeEffect(3), false)),
|
new GainAbilitySourceEffect(new DealsCombatDamageTriggeredAbility(new GainLifeEffect(3), false)),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"and has \"Whenever this creature deals combat damage, you gain 3 life.\""));
|
"and has \"Whenever this creature deals combat damage, you gain 3 life.\""));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.d;
|
package mage.cards.d;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
@ -44,6 +43,8 @@ import mage.target.Target;
|
||||||
import mage.target.common.TargetArtifactPermanent;
|
import mage.target.common.TargetArtifactPermanent;
|
||||||
import mage.target.common.TargetControlledPermanent;
|
import mage.target.common.TargetControlledPermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Styxo
|
* @author Styxo
|
||||||
|
|
|
@ -71,7 +71,7 @@ public class DreadCacodemon extends CardImpl {
|
||||||
// if you cast it from your hand, destroy all creatures your opponents control, then tap all other creatures you control.
|
// if you cast it from your hand, destroy all creatures your opponents control, then tap all other creatures you control.
|
||||||
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyAllEffect(opponentsCreatures, false));
|
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DestroyAllEffect(opponentsCreatures, false));
|
||||||
ability.addEffect(new TapAllEffect(otherCreaturesYouControl));
|
ability.addEffect(new TapAllEffect(otherCreaturesYouControl));
|
||||||
this.addAbility(new ConditionalTriggeredAbility(ability, new CastFromHandSourceCondition(),
|
this.addAbility(new ConditionalTriggeredAbility(ability, CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, destroy all creatures your opponents control, then tap all other creatures you control."), new CastFromHandWatcher());
|
"When {this} enters the battlefield, if you cast it from your hand, destroy all creatures your opponents control, then tap all other creatures you control."), new CastFromHandWatcher());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class Epochrasite extends CardImpl {
|
||||||
// Epochrasite enters the battlefield with three +1/+1 counters on it if you didn't cast it from your hand.
|
// Epochrasite enters the battlefield with three +1/+1 counters on it if you didn't cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(
|
this.addAbility(new EntersBattlefieldAbility(
|
||||||
new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)),
|
new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)),
|
||||||
new InvertCondition(new CastFromHandSourceCondition()),
|
new InvertCondition(CastFromHandSourceCondition.instance),
|
||||||
"{this} enters the battlefield with three +1/+1 counters on it if you didn't cast it from your hand",""),
|
"{this} enters the battlefield with three +1/+1 counters on it if you didn't cast it from your hand",""),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ public class ExileIntoDarkness extends CardImpl {
|
||||||
new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD,
|
new BeginningOfUpkeepTriggeredAbility(Zone.GRAVEYARD,
|
||||||
new ReturnSourceFromGraveyardToHandEffect(),
|
new ReturnSourceFromGraveyardToHandEffect(),
|
||||||
TargetController.YOU, true),
|
TargetController.YOU, true),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"At the beginning of your upkeep, if you have more cards in hand than each opponent, you may return {this} from your graveyard to your hand.");
|
"At the beginning of your upkeep, if you have more cards in hand than each opponent, you may return {this} from your graveyard to your hand.");
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class FurnaceDragon extends CardImpl {
|
||||||
// When Furnace Dragon enters the battlefield, if you cast it from your hand, exile all artifacts.
|
// When Furnace Dragon enters the battlefield, if you cast it from your hand, exile all artifacts.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new ExileAllEffect(filter), false),
|
new EntersBattlefieldTriggeredAbility(new ExileAllEffect(filter), false),
|
||||||
new CastFromHandSourceCondition(),
|
CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, exile all artifacts."),
|
"When {this} enters the battlefield, if you cast it from your hand, exile all artifacts."),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class InameAsOne extends CardImpl {
|
||||||
// When Iname as One enters the battlefield, if you cast it from your hand, you may search your library for a Spirit permanent card, put it onto the battlefield, then shuffle your library.
|
// When Iname as One enters the battlefield, if you cast it from your hand, you may search your library for a Spirit permanent card, put it onto the battlefield, then shuffle your library.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, filter)), true),
|
new EntersBattlefieldTriggeredAbility(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 1, filter)), true),
|
||||||
new CastFromHandSourceCondition(),
|
CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, you may search your library for a Spirit permanent card, put it onto the battlefield, then shuffle your library."),
|
"When {this} enters the battlefield, if you cast it from your hand, you may search your library for a Spirit permanent card, put it onto the battlefield, then shuffle your library."),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.k;
|
package mage.cards.k;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.condition.common.MoreCardsInHandThanOpponentsCondition;
|
import mage.abilities.condition.common.MoreCardsInHandThanOpponentsCondition;
|
||||||
|
@ -41,6 +40,8 @@ import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.target.common.TargetCreaturePermanent;
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
|
@ -60,7 +61,7 @@ public class KitsuneBonesetter extends CardImpl {
|
||||||
Zone.BATTLEFIELD,
|
Zone.BATTLEFIELD,
|
||||||
new PreventDamageToTargetEffect(Duration.EndOfTurn, 3),
|
new PreventDamageToTargetEffect(Duration.EndOfTurn, 3),
|
||||||
new TapSourceCost(),
|
new TapSourceCost(),
|
||||||
new MoreCardsInHandThanOpponentsCondition()
|
MoreCardsInHandThanOpponentsCondition.instance
|
||||||
);
|
);
|
||||||
ability.addTarget(new TargetCreaturePermanent());
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
|
@ -62,7 +62,7 @@ public class LinvalaThePreserver extends CardImpl {
|
||||||
|
|
||||||
// When Linvala, the Preserver enters the battlefield, if an opponent has more life than you, you gain 5 life.
|
// When Linvala, the Preserver enters the battlefield, if an opponent has more life than you, you gain 5 life.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(5), false),
|
this.addAbility(new ConditionalTriggeredAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(5), false),
|
||||||
new OpponentHasMoreLifeCondition(),
|
OpponentHasMoreLifeCondition.instance,
|
||||||
"When {this} enters the battlefield, if an opponent has more life than you, you gain 5 life."));
|
"When {this} enters the battlefield, if an opponent has more life than you, you gain 5 life."));
|
||||||
|
|
||||||
// When Linvala enters the battlefield, if an opponent controls more creatures than you, create a 3/3 white Angel creature token with flying.
|
// When Linvala enters the battlefield, if an opponent controls more creatures than you, create a 3/3 white Angel creature token with flying.
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class MyojinOfCleansingFire extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Cleansing Fire enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Cleansing Fire enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), new CastFromHandSourceCondition(), ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourceCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Cleansing Fire is indestructible as long as it has a divinity counter on it.
|
// Myojin of Cleansing Fire is indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class MyojinOfInfiniteRage extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Infinite Rage enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Infinite Rage enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), new CastFromHandSourceCondition(), ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourceCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Infinite Rage is indestructible as long as it has a divinity counter on it.
|
// Myojin of Infinite Rage is indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.EntersBattlefieldAbility;
|
||||||
|
@ -53,6 +52,8 @@ import mage.players.Player;
|
||||||
import mage.target.common.TargetCardInHand;
|
import mage.target.common.TargetCardInHand;
|
||||||
import mage.watchers.common.CastFromHandWatcher;
|
import mage.watchers.common.CastFromHandWatcher;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX
|
* @author LevelX
|
||||||
*/
|
*/
|
||||||
|
@ -69,7 +70,7 @@ public class MyojinOfLifesWeb extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Life's Web enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Life's Web enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), new CastFromHandSourceCondition(), ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourceCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Life's Web is indestructible as long as it has a divinity counter on it.
|
// Myojin of Life's Web is indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
||||||
new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
|
|
|
@ -27,9 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.constants.*;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.EntersBattlefieldAbility;
|
||||||
|
@ -47,11 +44,14 @@ import mage.abilities.keyword.IndestructibleAbility;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.*;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
import mage.watchers.common.CastFromHandWatcher;
|
import mage.watchers.common.CastFromHandWatcher;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX
|
* @author LevelX
|
||||||
*/
|
*/
|
||||||
|
@ -68,7 +68,7 @@ public class MyojinOfNightsReach extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Night's Reach enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Night's Reach enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), new CastFromHandSourceCondition(), ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourceCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Night's Reach is indestructible as long as it has a divinity counter on it.
|
// Myojin of Night's Reach is indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
||||||
|
|
|
@ -27,9 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.m;
|
package mage.cards.m;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import mage.constants.*;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.EntersBattlefieldAbility;
|
||||||
|
@ -47,11 +44,14 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
import mage.abilities.keyword.IndestructibleAbility;
|
import mage.abilities.keyword.IndestructibleAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.cards.CardSetInfo;
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.*;
|
||||||
import mage.counters.CounterType;
|
import mage.counters.CounterType;
|
||||||
import mage.filter.FilterPermanent;
|
import mage.filter.FilterPermanent;
|
||||||
import mage.filter.predicate.permanent.ControllerPredicate;
|
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||||
import mage.watchers.common.CastFromHandWatcher;
|
import mage.watchers.common.CastFromHandWatcher;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author LevelX
|
* @author LevelX
|
||||||
*/
|
*/
|
||||||
|
@ -73,12 +73,12 @@ public class MyojinOfSeeingWinds extends CardImpl {
|
||||||
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
this.getSpellAbility().addWatcher(new CastFromHandWatcher());
|
||||||
|
|
||||||
// Myojin of Seeing Winds enters the battlefield with a divinity counter on it if you cast it from your hand.
|
// Myojin of Seeing Winds enters the battlefield with a divinity counter on it if you cast it from your hand.
|
||||||
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), new CastFromHandSourceCondition(), ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
this.addAbility(new EntersBattlefieldAbility(new ConditionalOneShotEffect(new AddCountersSourceEffect(CounterType.DIVINITY.createInstance()), CastFromHandSourceCondition.instance, ""), "{this} enters the battlefield with a divinity counter on it if you cast it from your hand"));
|
||||||
// Myojin of Seeing Winds is indestructible as long as it has a divinity counter on it.
|
// Myojin of Seeing Winds is indestructible as long as it has a divinity counter on it.
|
||||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
new SourceHasCounterCondition(CounterType.DIVINITY), "{this} is indestructible as long as it has a divinity counter on it")));
|
||||||
// Remove a divinity counter from Myojin of Seeing Winds: Draw a card for each permanent you control.
|
// Remove a divinity counter from Myojin of Seeing Winds: Draw a card for each permanent you control.
|
||||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter, 1)), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)), new RemoveCountersSourceCost(CounterType.DIVINITY.createInstance()));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.o;
|
package mage.cards.o;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
@ -40,6 +39,8 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
|
@ -57,7 +58,7 @@ public class OkinaNightwatch extends CardImpl {
|
||||||
// As long as you have more cards in hand than each opponent, Okina Nightwatch gets +3/+3.
|
// As long as you have more cards in hand than each opponent, Okina Nightwatch gets +3/+3.
|
||||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||||
new BoostSourceEffect(3,3, Duration.WhileOnBattlefield),
|
new BoostSourceEffect(3,3, Duration.WhileOnBattlefield),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"As long as you have more cards in hand than each opponent, Okina Nightwatch gets +3/+3"));
|
"As long as you have more cards in hand than each opponent, Okina Nightwatch gets +3/+3"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class PhageTheUntouchable extends CardImpl {
|
||||||
// When Phage the Untouchable enters the battlefield, if you didn't cast it from your hand, you lose the game.
|
// When Phage the Untouchable enters the battlefield, if you didn't cast it from your hand, you lose the game.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new LoseGameSourceControllerEffect(), false),
|
new EntersBattlefieldTriggeredAbility(new LoseGameSourceControllerEffect(), false),
|
||||||
new InvertCondition(new CastFromHandSourceCondition()),
|
new InvertCondition(CastFromHandSourceCondition.instance),
|
||||||
"When {this} enters the battlefield, if you didn't cast it from your hand, you lose the game"
|
"When {this} enters the battlefield, if you didn't cast it from your hand, you lose the game"
|
||||||
), new CastFromHandWatcher());
|
), new CastFromHandWatcher());
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.r;
|
package mage.cards.r;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.ObjectColor;
|
import mage.ObjectColor;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -44,6 +43,8 @@ import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
import mage.watchers.common.CastFromHandWatcher;
|
import mage.watchers.common.CastFromHandWatcher;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author daagar
|
* @author daagar
|
||||||
|
@ -69,7 +70,7 @@ public class ReiverDemon extends CardImpl {
|
||||||
// When Reiver Demon enters the battlefield, if you cast it from your hand, destroy all nonartifact, nonblack creatures. They can't be regenerated.
|
// When Reiver Demon enters the battlefield, if you cast it from your hand, destroy all nonartifact, nonblack creatures. They can't be regenerated.
|
||||||
this.addAbility(new ConditionalTriggeredAbility(
|
this.addAbility(new ConditionalTriggeredAbility(
|
||||||
new EntersBattlefieldTriggeredAbility(new DestroyAllEffect(filter, true), false),
|
new EntersBattlefieldTriggeredAbility(new DestroyAllEffect(filter, true), false),
|
||||||
new CastFromHandSourceCondition(),
|
CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, destroy all nonartifact, nonblack creatures. They can't be regenerated."),
|
"When {this} enters the battlefield, if you cast it from your hand, destroy all nonartifact, nonblack creatures. They can't be regenerated."),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.TriggeredAbility;
|
import mage.abilities.TriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
@ -41,6 +40,8 @@ import mage.constants.CardType;
|
||||||
import mage.game.permanent.token.BirdToken;
|
import mage.game.permanent.token.BirdToken;
|
||||||
import mage.watchers.common.CastFromHandWatcher;
|
import mage.watchers.common.CastFromHandWatcher;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
|
@ -56,7 +57,7 @@ public class ScionOfVituGhazi extends CardImpl {
|
||||||
|
|
||||||
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BirdToken()), false);
|
TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BirdToken()), false);
|
||||||
ability.addEffect(new PopulateEffect("then"));
|
ability.addEffect(new PopulateEffect("then"));
|
||||||
this.addAbility(new ConditionalTriggeredAbility(ability, new CastFromHandSourceCondition(),
|
this.addAbility(new ConditionalTriggeredAbility(ability, CastFromHandSourceCondition.instance,
|
||||||
"When {this} enters the battlefield, if you cast it from your hand, create a 1/1 white Bird creature token with flying, then populate."),
|
"When {this} enters the battlefield, if you cast it from your hand, create a 1/1 white Bird creature token with flying, then populate."),
|
||||||
new CastFromHandWatcher());
|
new CastFromHandWatcher());
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*/
|
*/
|
||||||
package mage.cards.s;
|
package mage.cards.s;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
@ -42,6 +41,8 @@ import mage.constants.CardType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
|
@ -58,11 +59,11 @@ public class Secretkeeper extends CardImpl {
|
||||||
// As long as you have more cards in hand than each opponent, Secretkeeper gets +2/+2 and has flying.
|
// As long as you have more cards in hand than each opponent, Secretkeeper gets +2/+2 and has flying.
|
||||||
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
|
||||||
new BoostSourceEffect(2,2, Duration.WhileOnBattlefield),
|
new BoostSourceEffect(2,2, Duration.WhileOnBattlefield),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"As long as you have more cards in hand than each opponent, Secretkeeper gets +2/+2"));
|
"As long as you have more cards in hand than each opponent, Secretkeeper gets +2/+2"));
|
||||||
ability.addEffect(new ConditionalContinuousEffect(
|
ability.addEffect(new ConditionalContinuousEffect(
|
||||||
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield),
|
new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield),
|
||||||
new MoreCardsInHandThanOpponentsCondition(),
|
MoreCardsInHandThanOpponentsCondition.instance,
|
||||||
"and has flying"));
|
"and has flying"));
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,9 @@ import mage.watchers.common.CastFromHandWatcher;
|
||||||
*
|
*
|
||||||
* @author Loki
|
* @author Loki
|
||||||
*/
|
*/
|
||||||
public class CastFromHandSourceCondition implements Condition {
|
public enum CastFromHandSourceCondition implements Condition {
|
||||||
|
|
||||||
|
instance;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
|
|
|
@ -7,7 +7,9 @@ import mage.players.Player;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class MoreCardsInHandThanOpponentsCondition implements Condition {
|
public enum MoreCardsInHandThanOpponentsCondition implements Condition {
|
||||||
|
|
||||||
|
instance;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
|
|
|
@ -28,21 +28,21 @@
|
||||||
|
|
||||||
package mage.abilities.condition.common;
|
package mage.abilities.condition.common;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.condition.Condition;
|
import mage.abilities.condition.Condition;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author fireshoes
|
* @author fireshoes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class OpponentHasMoreLifeCondition implements Condition {
|
public enum OpponentHasMoreLifeCondition implements Condition {
|
||||||
|
|
||||||
public OpponentHasMoreLifeCondition() {
|
instance;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
|
|
Loading…
Reference in a new issue