[CMR] Implemented Akroma, Vision of Ixidor

This commit is contained in:
Evan Kranzler 2020-11-04 17:45:35 -05:00
parent b0472db851
commit 8d9c1f6a7c
2 changed files with 119 additions and 0 deletions

View file

@ -0,0 +1,118 @@
package mage.cards.a;
import com.google.common.collect.Sets;
import mage.MageInt;
import mage.abilities.Abilities;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.keyword.*;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import java.util.Set;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class AkromaVisionOfIxidor extends CardImpl {
public AkromaVisionOfIxidor(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}{W}");
this.addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.ANGEL);
this.power = new MageInt(6);
this.toughness = new MageInt(6);
// Flying
this.addAbility(FlyingAbility.getInstance());
// First strike
this.addAbility(FirstStrikeAbility.getInstance());
// Vigilance
this.addAbility(VigilanceAbility.getInstance());
// Trample
this.addAbility(TrampleAbility.getInstance());
// At the beginning of each combat, until end of turn, each other creature you control gets +1/+1 if it has flying, +1/+1 if it has first strike, and so on for double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, protection, reach, trample, vigilance, and partner.
this.addAbility(new BeginningOfCombatTriggeredAbility(
new AkromaVisionOfIxidorEffect(), TargetController.ANY, false
));
// Partner
this.addAbility(PartnerAbility.getInstance());
}
private AkromaVisionOfIxidor(final AkromaVisionOfIxidor card) {
super(card);
}
@Override
public AkromaVisionOfIxidor copy() {
return new AkromaVisionOfIxidor(this);
}
}
class AkromaVisionOfIxidorEffect extends OneShotEffect {
private static final Set<Class<? extends Ability>> classes = Sets.newHashSet(
FlyingAbility.class,
FirstStrikeAbility.class,
DoubleStrikeAbility.class,
DeathtouchAbility.class,
HasteAbility.class,
HexproofBaseAbility.class,
IndestructibleAbility.class,
LifelinkAbility.class,
MenaceAbility.class,
ProtectionAbility.class,
ReachAbility.class,
TrampleAbility.class,
VigilanceAbility.class,
PartnerAbility.class
);
AkromaVisionOfIxidorEffect() {
super(Outcome.Benefit);
staticText = "until end of turn, each other creature you control gets +1/+1 if it has flying, " +
"+1/+1 if it has first strike, and so on for double strike, deathtouch, haste, hexproof, " +
"indestructible, lifelink, menace, protection, reach, trample, vigilance, and partner";
}
private AkromaVisionOfIxidorEffect(final AkromaVisionOfIxidorEffect effect) {
super(effect);
}
@Override
public AkromaVisionOfIxidorEffect copy() {
return new AkromaVisionOfIxidorEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
for (Permanent permanent : game.getBattlefield().getActivePermanents(
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE,
source.getControllerId(), source.getSourceId(), game
)) {
Abilities abilities = permanent.getAbilities(game);
int count = classes
.stream()
.map(clazz -> abilities.stream().anyMatch(clazz::isInstance))
.mapToInt(b -> b ? 1 : 0)
.sum();
if (count > 0) {
game.addEffect(new BoostTargetEffect(count, count, Duration.EndOfTurn), source);
}
}
return true;
}
}

View file

@ -30,6 +30,7 @@ public final class CommanderLegends extends ExpansionSet {
cards.add(new SetCardInfo("Abrade", 410, Rarity.UNCOMMON, mage.cards.a.Abrade.class));
cards.add(new SetCardInfo("Acidic Slime", 421, Rarity.UNCOMMON, mage.cards.a.AcidicSlime.class));
cards.add(new SetCardInfo("Akiri, Line-Slinger", 515, Rarity.MYTHIC, mage.cards.a.AkiriLineSlinger.class));
cards.add(new SetCardInfo("Akroma, Vision of Ixidor", 547, Rarity.MYTHIC, mage.cards.a.AkromaVisionOfIxidor.class));
cards.add(new SetCardInfo("Alena, Kessig Trapper", 160, Rarity.UNCOMMON, mage.cards.a.AlenaKessigTrapper.class));
cards.add(new SetCardInfo("Amareth, the Lustrous", 266, Rarity.RARE, mage.cards.a.AmarethTheLustrous.class));
cards.add(new SetCardInfo("Amphin Mutineer", 55, Rarity.RARE, mage.cards.a.AmphinMutineer.class));