mirror of
https://github.com/correl/mage.git
synced 2024-12-26 03:00:11 +00:00
[STX] Implemented Rushed Rebirth
This commit is contained in:
parent
52ab2facfd
commit
b156e3b137
2 changed files with 138 additions and 0 deletions
137
Mage.Sets/src/mage/cards/r/RushedRebirth.java
Normal file
137
Mage.Sets/src/mage/cards/r/RushedRebirth.java
Normal file
|
@ -0,0 +1,137 @@
|
|||
package mage.cards.r;
|
||||
|
||||
import mage.MageObjectReference;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.DelayedTriggeredAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.Predicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class RushedRebirth extends CardImpl {
|
||||
|
||||
public RushedRebirth(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}{G}");
|
||||
|
||||
// Choose target creature. When that creature dies this turn, search your library for a creature card with lesser mana value, put it onto the battlefield tapped, then shuffle.
|
||||
this.getSpellAbility().addEffect(new RushedRebirthEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
}
|
||||
|
||||
private RushedRebirth(final RushedRebirth card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RushedRebirth copy() {
|
||||
return new RushedRebirth(this);
|
||||
}
|
||||
}
|
||||
|
||||
class RushedRebirthEffect extends OneShotEffect {
|
||||
|
||||
RushedRebirthEffect() {
|
||||
super(Outcome.Benefit);
|
||||
staticText = "choose target creature. When that creature dies this turn, " +
|
||||
"search your library for a creature card with lesser mana value, " +
|
||||
"put it onto the battlefield tapped, then shuffle";
|
||||
}
|
||||
|
||||
private RushedRebirthEffect(final RushedRebirthEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RushedRebirthEffect copy() {
|
||||
return new RushedRebirthEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
||||
if (permanent == null) {
|
||||
return false;
|
||||
}
|
||||
game.addDelayedTriggeredAbility(new RushedRebirthDelayedTriggeredAbility(permanent, game));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class RushedRebirthDelayedTriggeredAbility extends DelayedTriggeredAbility {
|
||||
|
||||
private static final class RushedRebirthPredicate implements Predicate<Card> {
|
||||
|
||||
private final Permanent permanent;
|
||||
|
||||
private RushedRebirthPredicate(Permanent permanent) {
|
||||
this.permanent = permanent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Card input, Game game) {
|
||||
return input.getConvertedManaCost() < permanent.getConvertedManaCost();
|
||||
}
|
||||
}
|
||||
|
||||
private final MageObjectReference mor;
|
||||
|
||||
RushedRebirthDelayedTriggeredAbility(Permanent permanent, Game game) {
|
||||
super(makeEffect(permanent), Duration.EndOfTurn, false, false);
|
||||
this.mor = new MageObjectReference(permanent, game);
|
||||
}
|
||||
|
||||
private RushedRebirthDelayedTriggeredAbility(final RushedRebirthDelayedTriggeredAbility ability) {
|
||||
super(ability);
|
||||
this.mor = ability.mor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.ZONE_CHANGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
|
||||
return zEvent.isDiesEvent() && mor.refersTo(zEvent.getTarget(), game);
|
||||
}
|
||||
|
||||
private static Effect makeEffect(Permanent permanent) {
|
||||
FilterCard filter = new FilterCreatureCard(
|
||||
"creature card with lesser mana value than " + permanent.getIdName()
|
||||
);
|
||||
filter.add(new RushedRebirthPredicate(permanent));
|
||||
return new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RushedRebirthDelayedTriggeredAbility copy() {
|
||||
return new RushedRebirthDelayedTriggeredAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "When that creature dies this turn, search your library for a creature card " +
|
||||
"with lesser mana value, put it onto the battlefield tapped, then shuffle.";
|
||||
}
|
||||
|
||||
}
|
|
@ -192,6 +192,7 @@ public final class StrixhavenSchoolOfMages extends ExpansionSet {
|
|||
cards.add(new SetCardInfo("Rip Apart", 225, Rarity.UNCOMMON, mage.cards.r.RipApart.class));
|
||||
cards.add(new SetCardInfo("Rise of Extus", 226, Rarity.COMMON, mage.cards.r.RiseOfExtus.class));
|
||||
cards.add(new SetCardInfo("Rootha, Mercurial Artist", 227, Rarity.UNCOMMON, mage.cards.r.RoothaMercurialArtist.class));
|
||||
cards.add(new SetCardInfo("Rushed Rebirth", 228, Rarity.RARE, mage.cards.r.RushedRebirth.class));
|
||||
cards.add(new SetCardInfo("Scurrid Colony", 142, Rarity.COMMON, mage.cards.s.ScurridColony.class));
|
||||
cards.add(new SetCardInfo("Secret Rendezvous", 26, Rarity.UNCOMMON, mage.cards.s.SecretRendezvous.class));
|
||||
cards.add(new SetCardInfo("Sedgemoor Witch", 86, Rarity.RARE, mage.cards.s.SedgemoorWitch.class));
|
||||
|
|
Loading…
Reference in a new issue