forked from External/mage
[CMR] Implemented Akroma, Vision of Ixidor
This commit is contained in:
parent
b0472db851
commit
8d9c1f6a7c
2 changed files with 119 additions and 0 deletions
118
Mage.Sets/src/mage/cards/a/AkromaVisionOfIxidor.java
Normal file
118
Mage.Sets/src/mage/cards/a/AkromaVisionOfIxidor.java
Normal 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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue