[WOE] Implement Restless Spire (#10846)

This commit is contained in:
Susucre 2023-08-18 15:15:59 +02:00 committed by GitHub
parent db444906f2
commit 7d82b6b1be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 76 additions and 1 deletions

View file

@ -0,0 +1,64 @@
package mage.cards.r;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.hint.common.MyTurnHint;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.RedManaAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.game.permanent.token.custom.CreatureToken;
import java.util.UUID;
/**
* @author Susucr
*/
public final class RestlessSpire extends CardImpl {
public RestlessSpire(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
// Restless Spire enters the battlefield tapped.
this.addAbility(new EntersBattlefieldTappedAbility());
// {T}: Add {U} or {R}.
this.addAbility(new BlueManaAbility());
this.addAbility(new RedManaAbility());
// {U}{R}: Until end of turn, Restless Spire becomes a 2/1 blue and red Elemental creature with "As long as it's your turn, this creature has first strike". It's still a land.
this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(
new CreatureToken(2, 1, "2/1 blue and red Elemental creature with \"As long as it's your turn, this creature has first strike\"")
.withColor("UR").withSubType(SubType.ELEMENTAL)
.withAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(
new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield),
MyTurnCondition.instance, "As long as it's your turn, this creature has first strike."
)).addHint(MyTurnHint.instance)),
CardType.LAND, Duration.EndOfTurn, true
), new ManaCostsImpl<>("{U}{R}")));
// Whenever Restless Spire attacks, scry 1.
this.addAbility(new AttacksTriggeredAbility(new ScryEffect(1, false), false));
}
private RestlessSpire(final RestlessSpire card) {
super(card);
}
@Override
public RestlessSpire copy() {
return new RestlessSpire(this);
}
}

View file

@ -58,6 +58,7 @@ public final class WildsOfEldraine extends ExpansionSet {
cards.add(new SetCardInfo("Realm-Scorcher Hellkite", 145, Rarity.MYTHIC, mage.cards.r.RealmScorcherHellkite.class));
cards.add(new SetCardInfo("Restless Cottage", 258, Rarity.RARE, mage.cards.r.RestlessCottage.class));
cards.add(new SetCardInfo("Restless Fortress", 259, Rarity.RARE, mage.cards.r.RestlessFortress.class));
cards.add(new SetCardInfo("Restless Spire", 260, Rarity.RARE, mage.cards.r.RestlessSpire.class));
cards.add(new SetCardInfo("Return from the Wilds", 181, Rarity.COMMON, mage.cards.r.ReturnFromTheWilds.class));
cards.add(new SetCardInfo("Rootrider Faun", 182, Rarity.COMMON, mage.cards.r.RootriderFaun.class));
cards.add(new SetCardInfo("Ruby, Daring Tracker", 212, Rarity.UNCOMMON, mage.cards.r.RubyDaringTracker.class));

View file

@ -49,10 +49,20 @@ public class BecomesCreatureSourceEffect extends ContinuousEffectImpl {
* @param duration Duration for the effect
*/
public BecomesCreatureSourceEffect(Token token, CardType retainType, Duration duration) {
this(token, retainType, duration, (retainType == CardType.PLANESWALKER || retainType == CardType.CREATURE));
}
/**
* @param token Token as blueprint for creature to become
* @param retainType If null, permanent loses its previous types, otherwise retains types with appropriate text
* @param duration Duration for the effect
* @param durationRuleAtStart for text rule generation
*/
public BecomesCreatureSourceEffect(Token token, CardType retainType, Duration duration, boolean durationRuleAtStart) {
super(duration, Outcome.BecomeCreature);
this.token = token;
this.retainType = retainType;
this.durationRuleAtStart = (retainType == CardType.PLANESWALKER || retainType == CardType.CREATURE);
this.durationRuleAtStart = durationRuleAtStart;
setText();
this.addDependencyType(DependencyType.BecomeCreature);
}