forked from External/mage
[FIN] Implement Absolute Virtue
This commit is contained in:
parent
4e7495a8f2
commit
791c67aae2
2 changed files with 87 additions and 0 deletions
85
Mage.Sets/src/mage/cards/a/AbsoluteVirtue.java
Normal file
85
Mage.Sets/src/mage/cards/a/AbsoluteVirtue.java
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageItem;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.common.CantBeCounteredSourceAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControllerEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.ProtectionAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class AbsoluteVirtue extends CardImpl {
|
||||
|
||||
public AbsoluteVirtue(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{W}{U}");
|
||||
|
||||
this.supertype.add(SuperType.LEGENDARY);
|
||||
this.subtype.add(SubType.AVATAR);
|
||||
this.subtype.add(SubType.WARRIOR);
|
||||
this.power = new MageInt(8);
|
||||
this.toughness = new MageInt(8);
|
||||
|
||||
// This spell can't be countered.
|
||||
this.addAbility(new CantBeCounteredSourceAbility());
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// You have protection from each of your opponents.
|
||||
this.addAbility(new SimpleStaticAbility(new GainAbilityControllerEffect(new AbsoluteVirtueAbility())));
|
||||
}
|
||||
|
||||
private AbsoluteVirtue(final AbsoluteVirtue card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbsoluteVirtue copy() {
|
||||
return new AbsoluteVirtue(this);
|
||||
}
|
||||
}
|
||||
|
||||
class AbsoluteVirtueAbility extends ProtectionAbility {
|
||||
|
||||
public AbsoluteVirtueAbility() {
|
||||
super(StaticFilters.FILTER_CARD);
|
||||
}
|
||||
|
||||
private AbsoluteVirtueAbility(final AbsoluteVirtueAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbsoluteVirtueAbility copy() {
|
||||
return new AbsoluteVirtueAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "protection from each of your opponents";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canTarget(MageObject source, Game game) {
|
||||
return Optional
|
||||
.ofNullable(source)
|
||||
.map(MageItem::getId)
|
||||
.map(game::getControllerId)
|
||||
.map(uuid -> !game.getOpponents(this.getControllerId()).contains(uuid))
|
||||
.orElse(true);
|
||||
}
|
||||
}
|
||||
|
|
@ -22,6 +22,8 @@ public final class FinalFantasy extends ExpansionSet {
|
|||
|
||||
cards.add(new SetCardInfo("A Realm Reborn", 196, Rarity.RARE, mage.cards.a.ARealmReborn.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("A Realm Reborn", 344, Rarity.RARE, mage.cards.a.ARealmReborn.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Absolute Virtue", 212, Rarity.MYTHIC, mage.cards.a.AbsoluteVirtue.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Absolute Virtue", 476, Rarity.MYTHIC, mage.cards.a.AbsoluteVirtue.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Adventurer's Inn", 271, Rarity.COMMON, mage.cards.a.AdventurersInn.class));
|
||||
cards.add(new SetCardInfo("Aerith Gainsborough", 4, Rarity.RARE, mage.cards.a.AerithGainsborough.class, NON_FULL_USE_VARIOUS));
|
||||
cards.add(new SetCardInfo("Aerith Gainsborough", 374, Rarity.RARE, mage.cards.a.AerithGainsborough.class, NON_FULL_USE_VARIOUS));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue