diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 53c3b9602b8..7370e3d0dcd 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -507,6 +507,10 @@ public class Card extends GameEntity implements Comparable { public final boolean isFlipCard() { return this.isFlipCard; } + + public final boolean isSplitCard() { + return cardRules != null && cardRules.getSplitType() == CardSplitType.Split; + } /** * Sets the flip card. @@ -7021,7 +7025,7 @@ public class Card extends GameEntity implements Comparable { } else if (property.startsWith("greatestCMC")) { final List list = CardLists.filter(Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield), Presets.CREATURES); for (final Card crd : list) { - if (crd.getRules() != null && crd.getRules().getSplitType() == CardSplitType.Split) { + if (crd.isSplitCard()) { if (crd.getCMC(Card.SplitCMCMode.LeftSplitCMC) > this.getCMC() || crd.getCMC(Card.SplitCMCMode.RightSplitCMC) > this.getCMC()) { return false; } @@ -7049,7 +7053,7 @@ public class Card extends GameEntity implements Comparable { final List list = Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield); for (final Card crd : list) { if (!crd.isLand() && !crd.isImmutable()) { - if (crd.getRules() != null && crd.getRules().getSplitType() == CardSplitType.Split) { + if (crd.isSplitCard()) { if (crd.getCMC(Card.SplitCMCMode.LeftSplitCMC) < this.getCMC() || crd.getCMC(Card.SplitCMCMode.RightSplitCMC) < this.getCMC()) { return false; } @@ -7119,7 +7123,7 @@ public class Card extends GameEntity implements Comparable { y = this.getNetDefense(); } else if (property.startsWith("cmc")) { rhs = property.substring(5); - if (getRules() != null && getRules().getSplitType() == CardSplitType.Split && getCurState() == CardCharacteristicName.Original) { + if (isSplitCard() && getCurState() == CardCharacteristicName.Original) { y = getState(CardCharacteristicName.LeftSplit).getManaCost().getCMC(); y2 = getState(CardCharacteristicName.RightSplit).getManaCost().getCMC(); } else { @@ -9126,7 +9130,7 @@ public class Card extends GameEntity implements Comparable { int requestedCMC = 0; - if (getRules() != null && getRules().getSplitType() == CardSplitType.Split) { + if (isSplitCard()) { switch(mode) { case CurrentSideCMC: // TODO: test if this returns combined CMC for the full face (then get rid of CombinedCMC mode?) diff --git a/src/main/java/forge/CardLists.java b/src/main/java/forge/CardLists.java index d6898fbcd7e..c235b29a23d 100644 --- a/src/main/java/forge/CardLists.java +++ b/src/main/java/forge/CardLists.java @@ -271,7 +271,7 @@ public class CardLists { final List tiedForHighest = new ArrayList(); int highest = 0; for (final Card crd : cardList) { - if (crd.getRules() != null && crd.getRules().getSplitType() == CardSplitType.Split) { + if (crd.isSplitCard()) { if (crd.getCMC(Card.SplitCMCMode.LeftSplitCMC) > highest) { highest = crd.getCMC(Card.SplitCMCMode.LeftSplitCMC); tiedForHighest.clear(); diff --git a/src/main/java/forge/card/cardfactory/CardFactory.java b/src/main/java/forge/card/cardfactory/CardFactory.java index 33ee906af5b..f695216cb85 100644 --- a/src/main/java/forge/card/cardfactory/CardFactory.java +++ b/src/main/java/forge/card/cardfactory/CardFactory.java @@ -240,7 +240,7 @@ public class CardFactory { c.setState(CardCharacteristicName.Transformed); c.setImageKey(ImageCache.getImageKey(cp, true)); } - else if (c.getRules().getSplitType() == CardSplitType.Split) { + else if (c.isSplitCard()) { c.setState(CardCharacteristicName.LeftSplit); c.setImageKey(originalPicture); c.setCurSetCode(cp.getEdition()); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 5813640e334..9ed92e42588 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -1421,7 +1421,7 @@ public class CardFactoryUtil { } } for (final Card crd : list) { - if (crd.getRules() != null && crd.getRules().getSplitType() == CardSplitType.Split) { + if (crd.isSplitCard()) { if (crd.getCMC(Card.SplitCMCMode.LeftSplitCMC) > highest) { highest = crd.getCMC(Card.SplitCMCMode.LeftSplitCMC); } diff --git a/src/main/java/forge/card/spellability/SpellAbilityRequirements.java b/src/main/java/forge/card/spellability/SpellAbilityRequirements.java index e39cf4c6371..9edc31f1fe3 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityRequirements.java +++ b/src/main/java/forge/card/spellability/SpellAbilityRequirements.java @@ -153,10 +153,8 @@ public class SpellAbilityRequirements { final Card c = this.ability.getSourceCard(); // split cards transform back to full form if targeting is canceled - if (c.getRules() != null) { - if (c.getRules().getSplitType() == CardSplitType.Split) { - c.setState(CardCharacteristicName.Original); - } + if (c.isSplitCard()) { + c.setState(CardCharacteristicName.Original); } if (this.bCasting && !c.isCopiedSpell()) { // and not a copy @@ -206,10 +204,8 @@ public class SpellAbilityRequirements { final Card c = this.ability.getSourceCard(); // split cards transform back to full form if mana cost is not paid - if (c.getRules() != null) { - if (c.getRules().getSplitType() == CardSplitType.Split) { - c.setState(CardCharacteristicName.Original); - } + if (c.isSplitCard()) { + c.setState(CardCharacteristicName.Original); } if (this.bCasting && !c.isCopiedSpell()) { // and not a copy diff --git a/src/main/java/forge/game/GameAction.java b/src/main/java/forge/game/GameAction.java index d51acf393ac..0dd3b86c954 100644 --- a/src/main/java/forge/game/GameAction.java +++ b/src/main/java/forge/game/GameAction.java @@ -344,10 +344,8 @@ public class GameAction { */ public final Card moveTo(final Zone zoneTo, Card c) { // if a split card is moved, convert it back to its full form before moving (unless moving to stack) - if (c.getRules() != null) { - if ((c.getRules().getSplitType() == CardSplitType.Split) && (zoneTo != game.getStackZone())) { - c.setState(CardCharacteristicName.Original); - } + if (c.isSplitCard() && zoneTo != game.getStackZone()) { + c.setState(CardCharacteristicName.Original); } return moveTo(zoneTo, c, null); diff --git a/src/main/java/forge/game/GameActionPlay.java b/src/main/java/forge/game/GameActionPlay.java index 391259925ed..48be8fef092 100644 --- a/src/main/java/forge/game/GameActionPlay.java +++ b/src/main/java/forge/game/GameActionPlay.java @@ -541,21 +541,19 @@ public class GameActionPlay { private void setSplitCardState(final Card source, SpellAbility sa) { // Split card support - if (source.getRules() != null) { - if (source.getRules().getSplitType() == CardSplitType.Split) { - List leftSplitAbilities = source.getState(CardCharacteristicName.LeftSplit).getSpellAbility(); - List rightSplitAbilities = source.getState(CardCharacteristicName.RightSplit).getSpellAbility(); - for (SpellAbility a : leftSplitAbilities) { - if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) { - source.setState(CardCharacteristicName.LeftSplit); - break; - } + if (source.isSplitCard()) { + List leftSplitAbilities = source.getState(CardCharacteristicName.LeftSplit).getSpellAbility(); + List rightSplitAbilities = source.getState(CardCharacteristicName.RightSplit).getSpellAbility(); + for (SpellAbility a : leftSplitAbilities) { + if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) { + source.setState(CardCharacteristicName.LeftSplit); + break; } - for (SpellAbility a : rightSplitAbilities) { - if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) { - source.setState(CardCharacteristicName.RightSplit); - break; - } + } + for (SpellAbility a : rightSplitAbilities) { + if (sa == a || sa.getDescription().equals(String.format("%s (without paying its mana cost)", a.getDescription()))) { + source.setState(CardCharacteristicName.RightSplit); + break; } } } diff --git a/src/main/java/forge/gui/CardDetailPanel.java b/src/main/java/forge/gui/CardDetailPanel.java index ed463e35f50..64d572a1077 100644 --- a/src/main/java/forge/gui/CardDetailPanel.java +++ b/src/main/java/forge/gui/CardDetailPanel.java @@ -218,7 +218,7 @@ public class CardDetailPanel extends FPanel { this.nameCostLabel.setText(card.getName()); } else { String manaCost = card.getManaCost().toString(); - if ( card.getRules() != null && card.getRules().getSplitType() == CardSplitType.Split && card.getCurState() == CardCharacteristicName.Original) { + if ( card.isSplitCard() && card.getCurState() == CardCharacteristicName.Original) { manaCost = card.getRules().getMainPart().getManaCost().toString() + " // " + card.getRules().getOtherPart().getManaCost().toString(); } this.nameCostLabel.setText(card.getName() + " - " + manaCost); diff --git a/src/main/java/forge/view/arcane/CardPanel.java b/src/main/java/forge/view/arcane/CardPanel.java index 962eef048c3..25727b1d538 100644 --- a/src/main/java/forge/view/arcane/CardPanel.java +++ b/src/main/java/forge/view/arcane/CardPanel.java @@ -377,7 +377,7 @@ public class CardPanel extends JPanel implements CardContainer { if (this.showCastingCost) { if (this.cardWidth < 200) { Card gameCard = this.getGameCard(); - boolean showSplitMana = gameCard.getRules() != null && gameCard.getRules().getSplitType() == CardSplitType.Split && gameCard.getCurState() == CardCharacteristicName.Original; + boolean showSplitMana = gameCard.isSplitCard() && gameCard.getCurState() == CardCharacteristicName.Original; if ( !showSplitMana ) { drawManaCost(g, gameCard.getManaCost(), 0); } else {