mirror of
https://github.com/correl/mage.git
synced 2024-11-15 19:19:33 +00:00
[MID] Implemented Intrepid Adversary
This commit is contained in:
parent
44c6c15c4f
commit
a001b91ea6
6 changed files with 125 additions and 12 deletions
|
@ -87,10 +87,6 @@ class BloodthirstyAdversaryEffect extends OneShotEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
|
||||||
if (controller == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Integer timesPaid = (Integer) getValue("timesPaid");
|
Integer timesPaid = (Integer) getValue("timesPaid");
|
||||||
if (timesPaid == null || timesPaid <= 0) {
|
if (timesPaid == null || timesPaid <= 0) {
|
||||||
return false;
|
return false;
|
||||||
|
|
123
Mage.Sets/src/mage/cards/i/IntrepidAdversary.java
Normal file
123
Mage.Sets/src/mage/cards/i/IntrepidAdversary.java
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
package mage.cards.i;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.dynamicvalue.DynamicValue;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.DoIfAnyNumberCostPaid;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||||
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.SubType;
|
||||||
|
import mage.abilities.keyword.LifelinkAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.cards.CardSetInfo;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.counters.CounterType;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.permanent.Permanent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author weirddan455
|
||||||
|
*/
|
||||||
|
public final class IntrepidAdversary extends CardImpl {
|
||||||
|
|
||||||
|
public IntrepidAdversary(UUID ownerId, CardSetInfo setInfo) {
|
||||||
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||||
|
|
||||||
|
this.subtype.add(SubType.HUMAN);
|
||||||
|
this.subtype.add(SubType.SCOUT);
|
||||||
|
this.power = new MageInt(3);
|
||||||
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
|
// Lifelink
|
||||||
|
this.addAbility(LifelinkAbility.getInstance());
|
||||||
|
|
||||||
|
// When Intrepid Adversary enters the battlefield, you may pay {1}{W} any number of times.
|
||||||
|
// When you pay this cost once or more times, put that many valor counters on Intrepid Adversary.
|
||||||
|
this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfAnyNumberCostPaid(
|
||||||
|
new IntrepidAdversaryEffect(), new ManaCostsImpl<>("{1}{W}")
|
||||||
|
)));
|
||||||
|
|
||||||
|
// Creatures you control get +1/+1 for each valor counter on Intrepid Adversary.
|
||||||
|
this.addAbility(new SimpleStaticAbility(new BoostControlledEffect(
|
||||||
|
IntrepidAdversaryValue.instance, IntrepidAdversaryValue.instance, Duration.WhileOnBattlefield
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private IntrepidAdversary(final IntrepidAdversary card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IntrepidAdversary copy() {
|
||||||
|
return new IntrepidAdversary(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class IntrepidAdversaryEffect extends OneShotEffect {
|
||||||
|
|
||||||
|
public IntrepidAdversaryEffect() {
|
||||||
|
super(Outcome.Benefit);
|
||||||
|
staticText = "put that many valor counters on {this}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private IntrepidAdversaryEffect(final IntrepidAdversaryEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IntrepidAdversaryEffect copy() {
|
||||||
|
return new IntrepidAdversaryEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Integer timesPaid = (Integer) getValue("timesPaid");
|
||||||
|
if (timesPaid == null || timesPaid <= 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(
|
||||||
|
new AddCountersSourceEffect(CounterType.VALOR.createInstance(timesPaid)),
|
||||||
|
false, staticText
|
||||||
|
);
|
||||||
|
game.fireReflexiveTriggeredAbility(ability, source);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum IntrepidAdversaryValue implements DynamicValue {
|
||||||
|
instance;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
||||||
|
Permanent permanent = sourceAbility.getSourcePermanentIfItStillExists(game);
|
||||||
|
if (permanent == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return permanent.getCounters(game).getCount(CounterType.VALOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IntrepidAdversaryValue copy() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMessage() {
|
||||||
|
return "valor counter on {this}";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "1";
|
||||||
|
}
|
||||||
|
}
|
|
@ -92,10 +92,6 @@ class SpectralAdversaryEffect extends OneShotEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player player = game.getPlayer(source.getControllerId());
|
|
||||||
if (player == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Integer timesPaid = (Integer) getValue("timesPaid");
|
Integer timesPaid = (Integer) getValue("timesPaid");
|
||||||
if (timesPaid == null || timesPaid <= 0) {
|
if (timesPaid == null || timesPaid <= 0) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -73,10 +73,6 @@ class TaintedAdversaryEffect extends OneShotEffect {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player player = game.getPlayer(source.getControllerId());
|
|
||||||
if (player == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Integer timesPaid = (Integer) getValue("timesPaid");
|
Integer timesPaid = (Integer) getValue("timesPaid");
|
||||||
if (timesPaid == null || timesPaid <= 0) {
|
if (timesPaid == null || timesPaid <= 0) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -116,6 +116,7 @@ public final class InnistradMidnightHunt extends ExpansionSet {
|
||||||
cards.add(new SetCardInfo("Infernal Grasp", 107, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class));
|
cards.add(new SetCardInfo("Infernal Grasp", 107, Rarity.UNCOMMON, mage.cards.i.InfernalGrasp.class));
|
||||||
cards.add(new SetCardInfo("Inherited Fiend", 105, Rarity.UNCOMMON, mage.cards.i.InheritedFiend.class));
|
cards.add(new SetCardInfo("Inherited Fiend", 105, Rarity.UNCOMMON, mage.cards.i.InheritedFiend.class));
|
||||||
cards.add(new SetCardInfo("Insectile Aberration", 47, Rarity.UNCOMMON, mage.cards.i.InsectileAberration.class));
|
cards.add(new SetCardInfo("Insectile Aberration", 47, Rarity.UNCOMMON, mage.cards.i.InsectileAberration.class));
|
||||||
|
cards.add(new SetCardInfo("Intrepid Adversary", 25, Rarity.MYTHIC, mage.cards.i.IntrepidAdversary.class));
|
||||||
cards.add(new SetCardInfo("Island", 270, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
|
cards.add(new SetCardInfo("Island", 270, Rarity.LAND, mage.cards.basiclands.Island.class, FULL_ART_BFZ_VARIOUS));
|
||||||
cards.add(new SetCardInfo("Jack-o'-Lantern", 254, Rarity.COMMON, mage.cards.j.JackOLantern.class));
|
cards.add(new SetCardInfo("Jack-o'-Lantern", 254, Rarity.COMMON, mage.cards.j.JackOLantern.class));
|
||||||
cards.add(new SetCardInfo("Jadar, Ghoulcaller of Nephalia", 108, Rarity.RARE, mage.cards.j.JadarGhoulcallerOfNephalia.class));
|
cards.add(new SetCardInfo("Jadar, Ghoulcaller of Nephalia", 108, Rarity.RARE, mage.cards.j.JadarGhoulcallerOfNephalia.class));
|
||||||
|
|
|
@ -169,6 +169,7 @@ public enum CounterType {
|
||||||
TRAP("trap"),
|
TRAP("trap"),
|
||||||
TREASURE("treasure"),
|
TREASURE("treasure"),
|
||||||
UNITY("unity", "a"),
|
UNITY("unity", "a"),
|
||||||
|
VALOR("valor"),
|
||||||
VELOCITY("velocity"),
|
VELOCITY("velocity"),
|
||||||
VERSE("verse"),
|
VERSE("verse"),
|
||||||
VIGILANCE("vigilance"),
|
VIGILANCE("vigilance"),
|
||||||
|
|
Loading…
Reference in a new issue