diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AbstractCommander.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AbstractCommander.java index e6b93fb521d..c3bfbae9868 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AbstractCommander.java +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/AbstractCommander.java @@ -28,7 +28,6 @@ public abstract class AbstractCommander extends Constructed { private static List validators = Arrays.asList( PartnerValidator.instance, PartnerVariantValidator.instance, - FriendsForeverValidator.instance, PartnerWithValidator.instance, ChooseABackgroundValidator.instance, DoctorsCompanionValidator.instance diff --git a/Mage.Sets/src/mage/cards/b/BjornaNightfallAlchemist.java b/Mage.Sets/src/mage/cards/b/BjornaNightfallAlchemist.java index a87b4b6189e..f23ba173219 100644 --- a/Mage.Sets/src/mage/cards/b/BjornaNightfallAlchemist.java +++ b/Mage.Sets/src/mage/cards/b/BjornaNightfallAlchemist.java @@ -7,14 +7,13 @@ import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.combat.GoadTargetEffect; -import mage.abilities.keyword.FriendsForeverAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.PartnerVariantType; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.StaticFilters; -import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -40,7 +39,7 @@ public final class BjornaNightfallAlchemist extends CardImpl { this.addAbility(ability); // Friends forever - this.addAbility(FriendsForeverAbility.getInstance()); + this.addAbility(PartnerVariantType.FRIENDS_FOREVER.makeAbility()); } private BjornaNightfallAlchemist(final BjornaNightfallAlchemist card) { diff --git a/Mage.Sets/src/mage/cards/c/CecilyHauntedMage.java b/Mage.Sets/src/mage/cards/c/CecilyHauntedMage.java index 66a3de5573d..41ad792a802 100644 --- a/Mage.Sets/src/mage/cards/c/CecilyHauntedMage.java +++ b/Mage.Sets/src/mage/cards/c/CecilyHauntedMage.java @@ -6,7 +6,6 @@ import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect; -import mage.abilities.keyword.FriendsForeverAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -40,7 +39,7 @@ public final class CecilyHauntedMage extends CardImpl { this.addAbility(new AttacksTriggeredAbility(new CecilyHauntedMageEffect())); // Friends forever - this.addAbility(FriendsForeverAbility.getInstance()); + this.addAbility(PartnerVariantType.FRIENDS_FOREVER.makeAbility()); } private CecilyHauntedMage(final CecilyHauntedMage card) { diff --git a/Mage.Sets/src/mage/cards/e/ElmarUlvenwaldInformant.java b/Mage.Sets/src/mage/cards/e/ElmarUlvenwaldInformant.java index 546ad0b68ca..4f45c6e45e4 100644 --- a/Mage.Sets/src/mage/cards/e/ElmarUlvenwaldInformant.java +++ b/Mage.Sets/src/mage/cards/e/ElmarUlvenwaldInformant.java @@ -5,11 +5,11 @@ import mage.abilities.Ability; import mage.abilities.common.CastSecondSpellTriggeredAbility; import mage.abilities.effects.common.UntapTargetEffect; import mage.abilities.effects.keyword.InvestigateEffect; -import mage.abilities.keyword.FriendsForeverAbility; import mage.abilities.keyword.HasteAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.PartnerVariantType; import mage.constants.SubType; import mage.constants.SuperType; import mage.target.common.TargetCreaturePermanent; @@ -39,7 +39,7 @@ public final class ElmarUlvenwaldInformant extends CardImpl { this.addAbility(ability); // Friends forever - this.addAbility(FriendsForeverAbility.getInstance()); + this.addAbility(PartnerVariantType.FRIENDS_FOREVER.makeAbility()); } private ElmarUlvenwaldInformant(final ElmarUlvenwaldInformant card) { diff --git a/Mage.Sets/src/mage/cards/h/HargildeKindlyRunechanter.java b/Mage.Sets/src/mage/cards/h/HargildeKindlyRunechanter.java index e82531a4cbf..01adba4edfa 100644 --- a/Mage.Sets/src/mage/cards/h/HargildeKindlyRunechanter.java +++ b/Mage.Sets/src/mage/cards/h/HargildeKindlyRunechanter.java @@ -7,12 +7,12 @@ import mage.Mana; import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.keyword.FriendsForeverAbility; import mage.abilities.mana.ConditionalColorlessManaAbility; import mage.abilities.mana.builder.ConditionalManaBuilder; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.PartnerVariantType; import mage.constants.SubType; import mage.constants.SuperType; import mage.game.Game; @@ -38,7 +38,7 @@ public final class HargildeKindlyRunechanter extends CardImpl { )); // Friends forever - this.addAbility(FriendsForeverAbility.getInstance()); + this.addAbility(PartnerVariantType.FRIENDS_FOREVER.makeAbility()); } private HargildeKindlyRunechanter(final HargildeKindlyRunechanter card) { diff --git a/Mage.Sets/src/mage/cards/o/OthelmSigardianOutcast.java b/Mage.Sets/src/mage/cards/o/OthelmSigardianOutcast.java index 1fb77dd636b..f02b6f1cb6f 100644 --- a/Mage.Sets/src/mage/cards/o/OthelmSigardianOutcast.java +++ b/Mage.Sets/src/mage/cards/o/OthelmSigardianOutcast.java @@ -6,10 +6,10 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; -import mage.abilities.keyword.FriendsForeverAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.PartnerVariantType; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterCard; @@ -54,7 +54,7 @@ public final class OthelmSigardianOutcast extends CardImpl { this.addAbility(ability, new CardsPutIntoGraveyardWatcher()); // Friends forever - this.addAbility(FriendsForeverAbility.getInstance()); + this.addAbility(PartnerVariantType.FRIENDS_FOREVER.makeAbility()); } private OthelmSigardianOutcast(final OthelmSigardianOutcast card) { diff --git a/Mage.Sets/src/mage/cards/s/SophinaSpearsageDeserter.java b/Mage.Sets/src/mage/cards/s/SophinaSpearsageDeserter.java index f43f0c8f384..308d4dd8459 100644 --- a/Mage.Sets/src/mage/cards/s/SophinaSpearsageDeserter.java +++ b/Mage.Sets/src/mage/cards/s/SophinaSpearsageDeserter.java @@ -5,11 +5,11 @@ import mage.abilities.common.AttacksTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.effects.keyword.InvestigateEffect; -import mage.abilities.keyword.FriendsForeverAbility; import mage.abilities.keyword.MenaceAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.PartnerVariantType; import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterPermanent; @@ -48,7 +48,7 @@ public final class SophinaSpearsageDeserter extends CardImpl { .setText("investigate once for each nontoken attacking creature"))); // Friends forever - this.addAbility(FriendsForeverAbility.getInstance()); + this.addAbility(PartnerVariantType.FRIENDS_FOREVER.makeAbility()); } private SophinaSpearsageDeserter(final SophinaSpearsageDeserter card) { diff --git a/Mage.Sets/src/mage/cards/w/WernogRidersChaplain.java b/Mage.Sets/src/mage/cards/w/WernogRidersChaplain.java index 0ba99ca4dde..1f5738510ac 100644 --- a/Mage.Sets/src/mage/cards/w/WernogRidersChaplain.java +++ b/Mage.Sets/src/mage/cards/w/WernogRidersChaplain.java @@ -6,13 +6,9 @@ import mage.abilities.common.EntersBattlefieldOrLeavesSourceTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.keyword.InvestigateEffect; import mage.abilities.effects.keyword.InvestigateTargetEffect; -import mage.abilities.keyword.FriendsForeverAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.SubType; -import mage.constants.SuperType; +import mage.constants.*; import mage.game.Game; import mage.players.Player; import mage.target.targetpointer.FixedTarget; @@ -36,7 +32,7 @@ public final class WernogRidersChaplain extends CardImpl { this.addAbility(new EntersBattlefieldOrLeavesSourceTriggeredAbility(new WernogRidersChaplainEffect(), false)); // Friends forever - this.addAbility(FriendsForeverAbility.getInstance()); + this.addAbility(PartnerVariantType.FRIENDS_FOREVER.makeAbility()); } private WernogRidersChaplain(final WernogRidersChaplain card) { diff --git a/Mage/src/main/java/mage/abilities/keyword/FriendsForeverAbility.java b/Mage/src/main/java/mage/abilities/keyword/FriendsForeverAbility.java deleted file mode 100644 index f53cf3d2ec5..00000000000 --- a/Mage/src/main/java/mage/abilities/keyword/FriendsForeverAbility.java +++ /dev/null @@ -1,37 +0,0 @@ -package mage.abilities.keyword; - -import mage.abilities.MageSingleton; -import mage.abilities.StaticAbility; -import mage.constants.Zone; - -import java.io.ObjectStreamException; - -/** - * @author TheElk801 - */ -public class FriendsForeverAbility extends StaticAbility implements MageSingleton { - - private static final FriendsForeverAbility instance = new FriendsForeverAbility(); - - private Object readResolve() throws ObjectStreamException { - return instance; - } - - public static FriendsForeverAbility getInstance() { - return instance; - } - - private FriendsForeverAbility() { - super(Zone.BATTLEFIELD, null); - } - - @Override - public String getRule() { - return "Friends forever (You can have two commanders if both have friends forever.)"; - } - - @Override - public FriendsForeverAbility copy() { - return instance; - } -} diff --git a/Mage/src/main/java/mage/constants/PartnerVariantType.java b/Mage/src/main/java/mage/constants/PartnerVariantType.java index 1c1d960f983..ebe057043d8 100644 --- a/Mage/src/main/java/mage/constants/PartnerVariantType.java +++ b/Mage/src/main/java/mage/constants/PartnerVariantType.java @@ -12,6 +12,7 @@ import java.util.stream.Collectors; */ public enum PartnerVariantType { FATHER_AND_SON("Father & son"), + FRIENDS_FOREVER("Friends forever"), SURVIVORS("Survivors"), CHARACTER_SELECT("Character select"); diff --git a/Mage/src/main/java/mage/util/validation/FriendsForeverValidator.java b/Mage/src/main/java/mage/util/validation/FriendsForeverValidator.java deleted file mode 100644 index 48c8afed8cc..00000000000 --- a/Mage/src/main/java/mage/util/validation/FriendsForeverValidator.java +++ /dev/null @@ -1,16 +0,0 @@ -package mage.util.validation; - -import mage.abilities.keyword.FriendsForeverAbility; -import mage.cards.Card; - -/** - * @author TheElk801 - */ -public enum FriendsForeverValidator implements CommanderValidator { - instance; - - @Override - public boolean checkPartner(Card commander1, Card commander2) { - return commander1.getAbilities().containsClass(FriendsForeverAbility.class); - } -}