mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
[BOT] Implemented Ratchet, Field Medic / Ratcher, Rescue Racer
This commit is contained in:
parent
3ac222270e
commit
adfaa74fad
3 changed files with 178 additions and 0 deletions
115
Mage.Sets/src/mage/cards/r/RatchetFieldMedic.java
Normal file
115
Mage.Sets/src/mage/cards/r/RatchetFieldMedic.java
Normal file
|
@ -0,0 +1,115 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.GainLifeControllerTriggeredAbility;
|
||||
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.MoreThanMeetsTheEyeAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterArtifactCard;
|
||||
import mage.filter.predicate.Predicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.watchers.common.PlayerGainedLifeWatcher;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RatchetFieldMedic extends CardImpl {
|
||||
|
||||
public RatchetFieldMedic(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{2}{W}");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.ROBOT);
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(4);
|
||||
this.secondSideCardClazz = mage.cards.r.RatchetRescueRacer.class;
|
||||
|
||||
// More Than Meets the Eye {1}{W}
|
||||
this.addAbility(new MoreThanMeetsTheEyeAbility(this, "{1}{W}"));
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Whenever you gain life, you may convert Ratchet. When you do, return target artifact card with mana value less than or equal to the amount of life you gained this turn from your graveyard to the battlefield tapped.
|
||||
this.addAbility(new GainLifeControllerTriggeredAbility(
|
||||
new RatchetFieldMedicEffect(), true
|
||||
), new PlayerGainedLifeWatcher());
|
||||
}
|
||||
|
||||
private RatchetFieldMedic(final RatchetFieldMedic card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RatchetFieldMedic copy() {
|
||||
return new RatchetFieldMedic(this);
|
||||
}
|
||||
}
|
||||
|
||||
class RatchetFieldMedicEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterCard filter = new FilterArtifactCard("artifact card with mana value " +
|
||||
"less than or equal to the amount of life you gained this turn from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(RatchetFieldMedicPredicate.instance);
|
||||
}
|
||||
|
||||
RatchetFieldMedicEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "convert {this}. When you do, return target artifact card with mana value less than or equal to the amount of life you gained this turn from your graveyard to the battlefield tapped";
|
||||
}
|
||||
|
||||
private RatchetFieldMedicEffect(final RatchetFieldMedicEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RatchetFieldMedicEffect copy() {
|
||||
return new RatchetFieldMedicEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = source.getSourcePermanentIfItStillExists(game);
|
||||
// check not to transform twice the same side
|
||||
if (permanent == null || !permanent.transform(source, game)) {
|
||||
return false;
|
||||
}
|
||||
ReflexiveTriggeredAbility ability = new ReflexiveTriggeredAbility(
|
||||
new ReturnFromGraveyardToBattlefieldTargetEffect(true), false
|
||||
);
|
||||
ability.addTarget(new TargetCardInYourGraveyard(filter));
|
||||
game.fireReflexiveTriggeredAbility(ability, source);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
enum RatchetFieldMedicPredicate implements Predicate<Card> {
|
||||
instance;
|
||||
|
||||
@Override
|
||||
public boolean apply(Card input, Game game) {
|
||||
return input
|
||||
.getManaValue()
|
||||
<= game
|
||||
.getState()
|
||||
.getWatcher(PlayerGainedLifeWatcher.class)
|
||||
.getLifeGained(input.getOwnerId());
|
||||
}
|
||||
}
|
61
Mage.Sets/src/mage/cards/r/RatchetRescueRacer.java
Normal file
61
Mage.Sets/src/mage/cards/r/RatchetRescueRacer.java
Normal file
|
@ -0,0 +1,61 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.keyword.LifelinkAbility;
|
||||
import mage.abilities.keyword.LivingMetalAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterControlledArtifactPermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RatchetRescueRacer extends CardImpl {
|
||||
|
||||
private static final FilterPermanent filter = new FilterControlledArtifactPermanent();
|
||||
|
||||
static {
|
||||
filter.add(TokenPredicate.FALSE);
|
||||
}
|
||||
|
||||
public RatchetRescueRacer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "");
|
||||
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.VEHICLE);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(4);
|
||||
this.color.setWhite(true);
|
||||
this.nightCard = true;
|
||||
|
||||
// Living metal
|
||||
this.addAbility(new LivingMetalAbility());
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
// Whenever one or more nontoken artifacts you control are put into a graveyard from the battlefield, convert Ratchet. This ability triggers only once each turn.
|
||||
this.addAbility(new DiesCreatureTriggeredAbility(
|
||||
new TransformSourceEffect().setText("convert {this}"), false, filter
|
||||
).setTriggerPhrase("Whenever one or more nontoken artifacts you control " +
|
||||
"are put into a graveyard from the battlefield, ").setTriggersOnce(true));
|
||||
}
|
||||
|
||||
private RatchetRescueRacer(final RatchetRescueRacer card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RatchetRescueRacer copy() {
|
||||
return new RatchetRescueRacer(this);
|
||||
}
|
||||
}
|
|
@ -25,6 +25,8 @@ public final class Transformers extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Goldbug, Scrappy Scout", 11, Rarity.MYTHIC, mage.cards.g.GoldbugScrappyScout.class));
|
||||
cards.add(new SetCardInfo("Jetfire, Air Guardian", 3, Rarity.MYTHIC, mage.cards.j.JetfireAirGuardian.class));
|
||||
cards.add(new SetCardInfo("Jetfire, Ingenious Scientist", 3, Rarity.MYTHIC, mage.cards.j.JetfireIngeniousScientist.class));
|
||||
cards.add(new SetCardInfo("Ratchet, Field Medic", 2, Rarity.MYTHIC, mage.cards.r.RatchetFieldMedic.class));
|
||||
cards.add(new SetCardInfo("Ratchet, Rescue Racer", 2, Rarity.MYTHIC, mage.cards.r.RatchetRescueRacer.class));
|
||||
cards.add(new SetCardInfo("Ultra Magnus, Armored Carrier", 15, Rarity.MYTHIC, mage.cards.u.UltraMagnusArmoredCarrier.class));
|
||||
cards.add(new SetCardInfo("Ultra Magnus, Tactician", 15, Rarity.MYTHIC, mage.cards.u.UltraMagnusTactician.class));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue