[CLB] Implemented Irenicus's Vile Duplication

This commit is contained in:
Evan Kranzler 2022-05-18 22:00:12 -04:00
parent a321468d7d
commit d16b28bad2
3 changed files with 71 additions and 23 deletions

View file

@ -0,0 +1,37 @@
package mage.cards.i;
import mage.abilities.effects.common.CreateTokenCopyTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class IrenicussVileDuplication extends CardImpl {
public IrenicussVileDuplication(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
// Create a token that's a copy of target creature you control, except the token has flying and isn't legendary if that creature is legendary.
this.getSpellAbility().addEffect(new CreateTokenCopyTargetEffect()
.addAdditionalAbilities(FlyingAbility.getInstance())
.setIsntLegendary(true)
.setText("create a token that's a copy of target creature you control, " +
"except the token has flying and isn't legendary if that creature is legendary"));
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
}
private IrenicussVileDuplication(final IrenicussVileDuplication card) {
super(card);
}
@Override
public IrenicussVileDuplication copy() {
return new IrenicussVileDuplication(this);
}
}

View file

@ -49,6 +49,7 @@ public final class CommanderLegendsBattleForBaldursGate extends ExpansionSet {
cards.add(new SetCardInfo("Goggles of Night", 74, Rarity.COMMON, mage.cards.g.GogglesOfNight.class)); cards.add(new SetCardInfo("Goggles of Night", 74, Rarity.COMMON, mage.cards.g.GogglesOfNight.class));
cards.add(new SetCardInfo("Gorion, Wise Mentor", 276, Rarity.RARE, mage.cards.g.GorionWiseMentor.class)); cards.add(new SetCardInfo("Gorion, Wise Mentor", 276, Rarity.RARE, mage.cards.g.GorionWiseMentor.class));
cards.add(new SetCardInfo("Imoen, Mystic Trickster", 77, Rarity.UNCOMMON, mage.cards.i.ImoenMysticTrickster.class)); cards.add(new SetCardInfo("Imoen, Mystic Trickster", 77, Rarity.UNCOMMON, mage.cards.i.ImoenMysticTrickster.class));
cards.add(new SetCardInfo("Irenicus's Vile Duplication", 78, Rarity.UNCOMMON, mage.cards.i.IrenicussVileDuplication.class));
cards.add(new SetCardInfo("Island", 455, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Island", 455, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Jaheira's Respite", 238, Rarity.RARE, mage.cards.j.JaheirasRespite.class)); cards.add(new SetCardInfo("Jaheira's Respite", 238, Rarity.RARE, mage.cards.j.JaheirasRespite.class));
cards.add(new SetCardInfo("Korlessa, Scale Singer", 280, Rarity.UNCOMMON, mage.cards.k.KorlessaScaleSinger.class)); cards.add(new SetCardInfo("Korlessa, Scale Singer", 280, Rarity.UNCOMMON, mage.cards.k.KorlessaScaleSinger.class));

View file

@ -318,40 +318,64 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
return addedTokenPermanents; return addedTokenPermanents;
} }
public void setAdditionalSubType(SubType additionalSubType) { public CreateTokenCopyTargetEffect setAdditionalSubType(SubType additionalSubType) {
this.additionalSubType = additionalSubType; this.additionalSubType = additionalSubType;
return this;
} }
public void setOnlySubType(SubType onlySubType) { public CreateTokenCopyTargetEffect setOnlySubType(SubType onlySubType) {
this.onlySubType = onlySubType; this.onlySubType = onlySubType;
return this;
} }
public void setOnlyColor(ObjectColor color) { public CreateTokenCopyTargetEffect setOnlyColor(ObjectColor color) {
this.color = color; this.color = color;
return this;
} }
public void setUseLKI(boolean useLKI) { public CreateTokenCopyTargetEffect setUseLKI(boolean useLKI) {
this.useLKI = useLKI; this.useLKI = useLKI;
return this;
} }
public void setBecomesArtifact(boolean becomesArtifact) { public CreateTokenCopyTargetEffect setBecomesArtifact(boolean becomesArtifact) {
this.becomesArtifact = becomesArtifact; this.becomesArtifact = becomesArtifact;
return this;
} }
public void setIsntLegendary(boolean isntLegendary) { public CreateTokenCopyTargetEffect setIsntLegendary(boolean isntLegendary) {
this.isntLegendary = isntLegendary; this.isntLegendary = isntLegendary;
return this;
} }
public void setHasHaste(boolean hasHaste) { public CreateTokenCopyTargetEffect setHasHaste(boolean hasHaste) {
this.hasHaste = hasHaste; this.hasHaste = hasHaste;
return this;
} }
public void setStartingLoyalty(int startingLoyalty) { public CreateTokenCopyTargetEffect setStartingLoyalty(int startingLoyalty) {
this.startingLoyalty = startingLoyalty; this.startingLoyalty = startingLoyalty;
return this;
} }
public void setNumber(int number) { public CreateTokenCopyTargetEffect setNumber(int number) {
this.number = number; this.number = number;
return this;
}
public CreateTokenCopyTargetEffect addAbilityClassesToRemoveFromTokens(Class<? extends Ability> clazz) {
this.abilityClazzesToRemove.add(clazz);return this;
}
public CreateTokenCopyTargetEffect addAdditionalAbilities(Ability... abilities) {
this.additionalAbilities.addAll(Arrays.asList(abilities));
return this;
}
public CreateTokenCopyTargetEffect setSavedPermanent(Permanent savedPermanent) {
this.savedPermanent = savedPermanent;
return this;
} }
public void sacrificeTokensCreatedAtNextEndStep(Game game, Ability source) { public void sacrificeTokensCreatedAtNextEndStep(Game game, Ability source) {
@ -394,18 +418,4 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect {
game.addDelayedTriggeredAbility(exileAbility, source); game.addDelayedTriggeredAbility(exileAbility, source);
} }
public void addAbilityClassesToRemoveFromTokens(Class<? extends Ability> clazz) {
this.abilityClazzesToRemove.add(clazz);
}
public void addAdditionalAbilities(Ability... abilities) {
this.additionalAbilities.addAll(Arrays.asList(abilities));
}
public CreateTokenCopyTargetEffect setSavedPermanent(Permanent savedPermanent) {
this.savedPermanent = savedPermanent;
return this;
}
} }