[DFT] Implement Adrenaline Jockey

This commit is contained in:
theelk801 2025-02-03 14:56:46 -05:00
parent c0ccbe2a2b
commit c082edd663
3 changed files with 70 additions and 0 deletions

View file

@ -0,0 +1,62 @@
package mage.cards.a;
import mage.MageInt;
import mage.abilities.common.ActivateAbilityTriggeredAbility;
import mage.abilities.common.SpellCastAllTriggeredAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SetTargetPointer;
import mage.constants.SubType;
import mage.constants.TargetController;
import mage.counters.CounterType;
import mage.filter.FilterSpell;
import mage.filter.FilterStackObject;
import mage.filter.predicate.other.ExhaustAbilityPredicate;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AdrenalineJockey extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a spell, if it's not their turn");
private static final FilterStackObject filter2 = new FilterStackObject("an exhaust ability");
static {
filter.add(TargetController.INACTIVE.getControllerPredicate());
filter2.add(ExhaustAbilityPredicate.instance);
}
public AdrenalineJockey(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
this.subtype.add(SubType.MINOTAUR);
this.subtype.add(SubType.PILOT);
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// Whenever a player casts a spell, if it's not their turn, this creature deals 4 damage to them.
this.addAbility(new SpellCastAllTriggeredAbility(
new DamageTargetEffect(4, true, "them"),
filter, false, SetTargetPointer.PLAYER
));
// Whenever you activate an exhaust ability, put a +1/+1 counter on this creature.
this.addAbility(new ActivateAbilityTriggeredAbility(
new AddCountersSourceEffect(CounterType.P1P1.createInstance()), filter2, SetTargetPointer.NONE
));
}
private AdrenalineJockey(final AdrenalineJockey card) {
super(card);
}
@Override
public AdrenalineJockey copy() {
return new AdrenalineJockey(this);
}
}

View file

@ -22,6 +22,7 @@ public final class Aetherdrift extends ExpansionSet {
this.hasBoosters = false; // temporary
cards.add(new SetCardInfo("Aatchik, Emerald Radian", 187, Rarity.RARE, mage.cards.a.AatchikEmeraldRadian.class));
cards.add(new SetCardInfo("Adrenaline Jockey", 112, Rarity.UNCOMMON, mage.cards.a.AdrenalineJockey.class));
cards.add(new SetCardInfo("Aether Syphon", 38, Rarity.UNCOMMON, mage.cards.a.AetherSyphon.class));
cards.add(new SetCardInfo("Aetherjacket", 230, Rarity.COMMON, mage.cards.a.Aetherjacket.class));
cards.add(new SetCardInfo("Afterburner Expert", 150, Rarity.RARE, mage.cards.a.AfterburnerExpert.class));

View file

@ -16,6 +16,7 @@ import java.util.UUID;
public enum TargetController {
ACTIVE,
INACTIVE,
ANY,
YOU,
NOT_YOU,
@ -85,6 +86,8 @@ public enum TargetController {
return card.isOwnedBy(input.getSource().getFirstTarget());
case ACTIVE:
return card.isOwnedBy(game.getActivePlayerId());
case INACTIVE:
return !card.isOwnedBy(game.getActivePlayerId());
case MONARCH:
return card.isOwnedBy(game.getMonarchId());
case ANY:
@ -130,6 +133,8 @@ public enum TargetController {
return player.getId().equals(input.getSource().getFirstTarget());
case ACTIVE:
return game.isActivePlayer(player.getId());
case INACTIVE:
return !game.isActivePlayer(player.getId());
case MONARCH:
return player.getId().equals(game.getMonarchId());
default:
@ -168,6 +173,8 @@ public enum TargetController {
return !object.isControlledBy(playerId);
case ACTIVE:
return object.isControlledBy(game.getActivePlayerId());
case INACTIVE:
return !object.isControlledBy(game.getActivePlayerId());
case ENCHANTED:
Permanent permanent = input.getSource().getSourcePermanentIfItStillExists(game);
return permanent != null && input.getObject().isControlledBy(permanent.getAttachedTo());