From 4987b31e31379856e57a18f4a6a6159f6333860a Mon Sep 17 00:00:00 2001 From: ArsenalNut Date: Fri, 2 Sep 2011 04:45:04 +0000 Subject: [PATCH] Modified handling of CheckSVar in Trigger.java to be consistent with the other abilities. Moved handling of Remembered and Imprint list in calculateAmount outside of the ability if statement --- .../card/abilityFactory/AbilityFactory.java | 36 +++++++++++-------- src/main/java/forge/card/trigger/Trigger.java | 33 ++++++----------- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory.java b/src/main/java/forge/card/abilityFactory/AbilityFactory.java index 364952d68d1..0ba9fc616dc 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory.java @@ -1159,20 +1159,6 @@ public class AbilityFactory { SpellAbility root = ability.getRootSpellAbility(); list = new CardList(); list.add((Card) root.getTriggeringObject(calcX[0].substring(9))); - } else if (calcX[0].startsWith("Remembered")) { - // Add whole Remembered list to handlePaid - list = new CardList(); - for (Object o : card.getRemembered()) { - if (o instanceof Card) { - list.add(AllZoneUtil.getCardState((Card) o)); - } - } - } else if (calcX[0].startsWith("Imprinted")) { - // Add whole Imprinted list to handlePaid - list = new CardList(); - for (Card c : card.getImprinted()) { - list.add(AllZoneUtil.getCardState(c)); - } } else if (calcX[0].startsWith("TriggerCount")) { // TriggerCount is similar to a regular Count, but just pulls Integer Values from Trigger objects String[] l = calcX[1].split("/"); @@ -1181,10 +1167,32 @@ public class AbilityFactory { return CardFactoryUtil.doXMath(count, m, card) * multiplier; } else { + return 0; } return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier; + + } else if (calcX[0].startsWith("Remembered")) { + // Add whole Remembered list to handlePaid + CardList list = new CardList(); + for (Object o : card.getRemembered()) { + if (o instanceof Card) { + list.add(AllZoneUtil.getCardState((Card) o)); + } + } + + return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier; + + } else if (calcX[0].startsWith("Imprinted")) { + // Add whole Imprinted list to handlePaid + CardList list = new CardList(); + for (Card c : card.getImprinted()) { + list.add(AllZoneUtil.getCardState(c)); + } + + return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier; + } else { return 0; } diff --git a/src/main/java/forge/card/trigger/Trigger.java b/src/main/java/forge/card/trigger/Trigger.java index 5e2207ccdef..94257766d71 100644 --- a/src/main/java/forge/card/trigger/Trigger.java +++ b/src/main/java/forge/card/trigger/Trigger.java @@ -5,6 +5,7 @@ import forge.AllZone; import forge.AllZoneUtil; import forge.CardList; import forge.Player; +import forge.card.abilityFactory.AbilityFactory; import forge.card.cardFactory.CardFactoryUtil; import forge.card.spellability.SpellAbility; @@ -414,33 +415,21 @@ public abstract class Trigger { } - if(mapParams.containsKey("CheckSVar")) { - String SVarName = mapParams.get("CheckSVar"); - String operator = "GE"; - String operand = "1"; - - if(mapParams.containsKey("SVarCompare")) - { - operator = mapParams.get("SVarCompare").substring(0,2); - operand = mapParams.get("SVarCompare").substring(2); + if (mapParams.containsKey("CheckSVar")) { + int sVar = AbilityFactory.calculateAmount(AllZoneUtil.getCardState(hostCard), mapParams.get("CheckSVar"), null); + String comparator = "GE1"; + if (mapParams.containsKey("SVarCompare")) { + comparator = mapParams.get("SVarCompare"); } - - int sVarResult = CardFactoryUtil.xCount(hostCard, hostCard.getSVar(SVarName)); - int operandResult = 0; - try { - operandResult = Integer.parseInt(operand); - } - catch ( Exception e) { - operandResult = CardFactoryUtil.xCount(hostCard, hostCard.getSVar(operand)); - } - - if(!AllZoneUtil.compare(sVarResult,operator,operandResult)) - { + String svarOperator = comparator.substring(0, 2); + String svarOperand = comparator.substring(2); + int operandValue = AbilityFactory.calculateAmount(AllZoneUtil.getCardState(hostCard), svarOperand, null); + if (!AllZoneUtil.compare(sVar, svarOperator, operandValue)) { return false; } - } + return true; }