forked from External/mage
75 lines
2.9 KiB
Java
75 lines
2.9 KiB
Java
package mage.cards.v;
|
|
|
|
import java.util.UUID;
|
|
import mage.MageInt;
|
|
import mage.abilities.TriggeredAbility;
|
|
import mage.abilities.common.SimpleStaticAbility;
|
|
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
|
|
import mage.abilities.condition.common.SourceMatchesFilterCondition;
|
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
|
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
|
import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPermanent;
|
|
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
|
|
import mage.abilities.keyword.CyclingAbility;
|
|
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.FilterSpell;
|
|
import mage.filter.StaticFilters;
|
|
import mage.filter.common.FilterLandPermanent;
|
|
import mage.game.permanent.token.TokenImpl;
|
|
|
|
/**
|
|
*
|
|
* @author jeffwadsworth
|
|
*/
|
|
public final class VeiledSerpent extends CardImpl {
|
|
|
|
public VeiledSerpent(UUID ownerId, CardSetInfo setInfo) {
|
|
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
|
|
|
|
// When an opponent casts a spell, if Veiled Serpent is an enchantment, Veiled Serpent becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island.
|
|
TriggeredAbility ability = new SpellCastOpponentTriggeredAbility(new BecomesCreatureSourceEffect(new VeiledSerpentToken(), "", Duration.WhileOnBattlefield, true, false),
|
|
new FilterSpell(), false);
|
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, new SourceMatchesFilterCondition(StaticFilters.FILTER_ENCHANTMENT_PERMANENT),
|
|
"Whenever an opponent casts a spell, if Veiled Serpent is an enchantment, Veiled Serpent becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island."));
|
|
|
|
// Cycling {2}
|
|
this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
|
|
|
|
}
|
|
|
|
public VeiledSerpent(final VeiledSerpent card) {
|
|
super(card);
|
|
}
|
|
|
|
@Override
|
|
public VeiledSerpent copy() {
|
|
return new VeiledSerpent(this);
|
|
}
|
|
}
|
|
|
|
class VeiledSerpentToken extends TokenImpl {
|
|
|
|
public VeiledSerpentToken() {
|
|
super("Serpent", "4/4 Serpent creature");
|
|
cardType.add(CardType.CREATURE);
|
|
subtype.add(SubType.SERPENT);
|
|
power = new MageInt(4);
|
|
toughness = new MageInt(4);
|
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
|
|
new CantAttackUnlessDefenderControllsPermanent(
|
|
new FilterLandPermanent(SubType.ISLAND, "an Island"))));
|
|
}
|
|
|
|
public VeiledSerpentToken(final VeiledSerpentToken token) {
|
|
super(token);
|
|
}
|
|
|
|
public VeiledSerpentToken copy() {
|
|
return new VeiledSerpentToken(this);
|
|
}
|
|
}
|