From a46d59d4b0446f5287692433fa6a981af9adaa1a Mon Sep 17 00:00:00 2001 From: Hanmac Date: Fri, 14 Oct 2016 07:24:16 +0000 Subject: [PATCH] Card & CardPredicates: make hasCMC work with SplitCards --- .../src/main/java/forge/game/card/Card.java | 21 +++++++++++++++---- .../java/forge/game/card/CardPredicates.java | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 3d71decc148..d540c763e40 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -5453,6 +5453,19 @@ public class Card extends GameEntity implements Comparable { return shares; } + public final boolean sharesCMCWith(final int n) { + //need to get GameState for Discarded Cards + final Card host = game.getCardState(this); + + if (host.isSplitCard() && host.getCurrentStateName() == CardStateName.Original) { + int x = host.getCMC(SplitCMCMode.LeftSplitCMC); + int x2 = host.getCMC(SplitCMCMode.RightSplitCMC); + return x == n || x2 == n; + } else { + return host.getCMC() == n; + } + } + public final boolean sharesCMCWith(final Card c1) { int x; int x2 = -1; @@ -5464,15 +5477,15 @@ public class Card extends GameEntity implements Comparable { final Card other = game.getCardState(c1); if (host.isSplitCard() && host.getCurrentStateName() == CardStateName.Original) { - x = host.getState(CardStateName.LeftSplit).getManaCost().getCMC(); - x2 = host.getState(CardStateName.RightSplit).getManaCost().getCMC(); + x = host.getCMC(SplitCMCMode.LeftSplitCMC); + x2 = host.getCMC(SplitCMCMode.RightSplitCMC); } else { x = host.getCMC(); } if (other.isSplitCard() && other.getCurrentStateName() == CardStateName.Original) { - y = other.getState(CardStateName.LeftSplit).getManaCost().getCMC(); - y2 = other.getState(CardStateName.RightSplit).getManaCost().getCMC(); + y = other.getCMC(SplitCMCMode.LeftSplitCMC); + y2 = other.getCMC(SplitCMCMode.RightSplitCMC); if (host.isSplitCard() && host.getCurrentStateName() == CardStateName.Original) { return x == y || x == y2 || x2 == y || x2 == y2; diff --git a/forge-game/src/main/java/forge/game/card/CardPredicates.java b/forge-game/src/main/java/forge/game/card/CardPredicates.java index 49a24508246..f4ff91b6b56 100644 --- a/forge-game/src/main/java/forge/game/card/CardPredicates.java +++ b/forge-game/src/main/java/forge/game/card/CardPredicates.java @@ -238,7 +238,7 @@ public final class CardPredicates { return new Predicate() { @Override public boolean apply(final Card c) { - return c.getCMC() == cmc; + return c.sharesCMCWith(cmc); } }; }