[OTJ] Implement Colossal Rattlewurm

This commit is contained in:
theelk801 2024-03-27 12:47:37 -04:00
parent e783d40efd
commit 0dfd214f44
2 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,80 @@
package mage.cards.c;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.Condition;
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
import mage.abilities.costs.common.ExileSourceFromGraveCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
import mage.abilities.hint.ConditionHint;
import mage.abilities.hint.Hint;
import mage.abilities.keyword.FlashAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.FilterCard;
import mage.filter.common.FilterControlledPermanent;
import mage.target.common.TargetCardInLibrary;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class ColossalRattlewurm extends CardImpl {
private static final Condition condition
= new PermanentsOnTheBattlefieldCondition(new FilterControlledPermanent(SubType.DESERT));
private static final Hint hint = new ConditionHint(condition, "You control a Desert");
private static final FilterCard filter = new FilterCard("a Desert card");
static {
filter.add(SubType.DESERT.getPredicate());
}
public ColossalRattlewurm(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
this.subtype.add(SubType.WURM);
this.power = new MageInt(6);
this.toughness = new MageInt(5);
// Colossal Rattlewurm has flash as long as you control a Desert.
this.addAbility(new SimpleStaticAbility(
Zone.ALL,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(
FlashAbility.getInstance(), Duration.WhileOnBattlefield, true
), condition, "{this} has flash as long as you control a desert")
).setRuleAtTheTop(true).addHint(hint));
// Trample
this.addAbility(TrampleAbility.getInstance());
// {1}{G}, Exile Colossal Rattlewurm from your graveyard: Search your library for a Desert card, put it onto the battlefield tapped, then shuffle.
Ability ability = new SimpleActivatedAbility(
Zone.GRAVEYARD,
new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true),
new ManaCostsImpl<>("{1}{G}")
);
ability.addCost(new ExileSourceFromGraveCost());
this.addAbility(ability);
}
private ColossalRattlewurm(final ColossalRattlewurm card) {
super(card);
}
@Override
public ColossalRattlewurm copy() {
return new ColossalRattlewurm(this);
}
}

View file

@ -30,6 +30,7 @@ public final class OutlawsOfThunderJunction extends ExpansionSet {
cards.add(new SetCardInfo("Blooming Marsh", 266, Rarity.RARE, mage.cards.b.BloomingMarsh.class));
cards.add(new SetCardInfo("Botanical Sanctum", 267, Rarity.RARE, mage.cards.b.BotanicalSanctum.class));
cards.add(new SetCardInfo("Bristling Backwoods", 253, Rarity.COMMON, mage.cards.b.BristlingBackwoods.class));
cards.add(new SetCardInfo("Colossal Rattlewurm", 159, Rarity.RARE, mage.cards.c.ColossalRattlewurm.class));
cards.add(new SetCardInfo("Concealed Courtyard", 268, Rarity.RARE, mage.cards.c.ConcealedCourtyard.class));
cards.add(new SetCardInfo("Creosote Heath", 255, Rarity.COMMON, mage.cards.c.CreosoteHeath.class));
cards.add(new SetCardInfo("Eroded Canyon", 256, Rarity.COMMON, mage.cards.e.ErodedCanyon.class));