From ccaeabaeba3076df539995023d7c53d17b102303 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 8 Jul 2025 17:27:05 -0400 Subject: [PATCH] update commander rules to allow vehicles and spacecraft with P/T --- .../src/mage/deck/AbstractCommander.java | 18 +++++++++++++++--- .../abilities/keyword/StationLevelAbility.java | 4 ++++ 2 files changed, 19 insertions(+), 3 deletions(-) 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 99168e5ea3b..50468b91552 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 @@ -5,11 +5,13 @@ import mage.abilities.Ability; import mage.abilities.common.CanBeYourCommanderAbility; import mage.abilities.common.CommanderChooseColorAbility; import mage.abilities.keyword.CompanionAbility; +import mage.abilities.keyword.StationLevelAbility; import mage.cards.Card; import mage.cards.decks.Constructed; import mage.cards.decks.Deck; import mage.cards.decks.DeckValidatorErrorType; import mage.constants.CardType; +import mage.constants.SubType; import mage.filter.FilterMana; import mage.util.CardUtil; import mage.util.ManaUtil; @@ -51,9 +53,19 @@ public abstract class AbstractCommander extends Constructed { protected abstract boolean checkBanned(Map counts); protected boolean checkCommander(Card commander, Set commanders) { - return commander.hasCardTypeForDeckbuilding(CardType.CREATURE) && commander.isLegendary() - || commander.getAbilities().contains(CanBeYourCommanderAbility.getInstance()) - || (validators.stream().anyMatch(validator -> validator.specialCheck(commander)) && commanders.size() == 2); + if (commander.getAbilities().contains(CanBeYourCommanderAbility.getInstance())) { + return true; + } + if (commander.isLegendary() + && (commander.hasCardTypeForDeckbuilding(CardType.CREATURE) + || commander.hasSubTypeForDeckbuilding(SubType.VEHICLE) + || commander.hasSubTypeForDeckbuilding(SubType.SPACECRAFT) + && CardUtil + .castStream(commander.getAbilities(), StationLevelAbility.class) + .anyMatch(StationLevelAbility::hasPT))) { + return true; + } + return commanders.size() == 2 && validators.stream().anyMatch(validator -> validator.specialCheck(commander)); } protected boolean checkPartners(Set commanders) { diff --git a/Mage/src/main/java/mage/abilities/keyword/StationLevelAbility.java b/Mage/src/main/java/mage/abilities/keyword/StationLevelAbility.java index b9531f0c51f..69adb98abd0 100644 --- a/Mage/src/main/java/mage/abilities/keyword/StationLevelAbility.java +++ b/Mage/src/main/java/mage/abilities/keyword/StationLevelAbility.java @@ -52,6 +52,10 @@ public class StationLevelAbility extends StaticAbility { .map(CardUtil::getTextWithFirstCharUpperCase) .collect(Collectors.joining("
")); } + + public boolean hasPT() { + return this.getEffects().stream().anyMatch(StationLevelCreatureEffect.class::isInstance); + } } class StationLevelAbilityEffect extends ContinuousEffectImpl {