From ddb952ea3063b5646ce7c1cce6a23244407d60df Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Wed, 27 Mar 2013 19:38:24 +0000 Subject: [PATCH] in payCostDuringAbilityResolve used CostPartWithList overloads to execute the action needed to pay. addListToHash - removed second parameter, since it can be obtained from the same instance. --- .../java/forge/card/cost/CostPartWithList.java | 3 ++- src/main/java/forge/card/cost/CostPayment.java | 2 +- src/main/java/forge/card/cost/CostSacrifice.java | 2 +- src/main/java/forge/card/cost/CostUnattach.java | 2 +- src/main/java/forge/game/GameActionUtil.java | 15 ++++++++++----- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/forge/card/cost/CostPartWithList.java b/src/main/java/forge/card/cost/CostPartWithList.java index 3a5274dfed4..b73cc179ff1 100644 --- a/src/main/java/forge/card/cost/CostPartWithList.java +++ b/src/main/java/forge/card/cost/CostPartWithList.java @@ -80,7 +80,8 @@ public abstract class CostPartWithList extends CostPart { * @param hash * the hash */ - public final void addListToHash(final SpellAbility sa, final String hash) { + public final void addListToHash(final SpellAbility sa) { + final String hash = getHashForList(); for (final Card card : this.getList()) { Card copy = CardUtil.getLKICopy(card); sa.addCostToHashList(copy, hash); diff --git a/src/main/java/forge/card/cost/CostPayment.java b/src/main/java/forge/card/cost/CostPayment.java index a24d60b970b..17a2e7fb7e8 100644 --- a/src/main/java/forge/card/cost/CostPayment.java +++ b/src/main/java/forge/card/cost/CostPayment.java @@ -215,7 +215,7 @@ public class CostPayment { return; } if( part instanceof CostPartWithList ) - ((CostPartWithList) part).addListToHash(ability, ((CostPartWithList) part).getHashForList()); + ((CostPartWithList) part).addListToHash(ability); setPaidPart(part); } this.resetUndoList(); diff --git a/src/main/java/forge/card/cost/CostSacrifice.java b/src/main/java/forge/card/cost/CostSacrifice.java index 01c3156e397..89a0d61c3af 100644 --- a/src/main/java/forge/card/cost/CostSacrifice.java +++ b/src/main/java/forge/card/cost/CostSacrifice.java @@ -192,7 +192,7 @@ public class CostSacrifice extends CostPartWithList { */ @Override public final void payAI(final AIPlayer ai, final SpellAbility ability, final Card source, final CostPayment payment, final GameState game) { - this.addListToHash(ability, "Sacrificed"); + this.addListToHash(ability); for (final Card c : this.getList()) { executePayment(ability, c); } diff --git a/src/main/java/forge/card/cost/CostUnattach.java b/src/main/java/forge/card/cost/CostUnattach.java index df8b5cfd548..e1da452e539 100644 --- a/src/main/java/forge/card/cost/CostUnattach.java +++ b/src/main/java/forge/card/cost/CostUnattach.java @@ -103,7 +103,7 @@ public class CostUnattach extends CostPartWithList { Card equippingCard = cardToUnattach.getEquipping().get(0); cardToUnattach.unEquipCard(equippingCard); this.addToList(cardToUnattach); - this.addListToHash(ability, "Unattached"); + this.addListToHash(ability); } /* diff --git a/src/main/java/forge/game/GameActionUtil.java b/src/main/java/forge/game/GameActionUtil.java index dfbcc7edb9c..822b8fb41fa 100644 --- a/src/main/java/forge/game/GameActionUtil.java +++ b/src/main/java/forge/game/GameActionUtil.java @@ -45,6 +45,7 @@ import forge.card.cost.CostDiscard; import forge.card.cost.CostExile; import forge.card.cost.CostPart; import forge.card.cost.CostPartMana; +import forge.card.cost.CostPartWithList; import forge.card.cost.CostPayLife; import forge.card.cost.CostPutCounter; import forge.card.cost.CostRemoveCounter; @@ -526,9 +527,11 @@ public final class GameActionUtil { hasPaid = false; break; } + CostPartWithList cpl = (CostPartWithList)part; for(Card c : toSac) { - p.getGame().getAction().sacrifice(c, ability); + cpl.executePayment(ability, c); } + cpl.addListToHash(ability); } else if (part instanceof CostReturn) { @@ -544,10 +547,11 @@ public final class GameActionUtil { hasPaid = false; break; } - ((CostReturn)part).addListToHash(ability, "Returned"); + CostPartWithList cpl = (CostPartWithList)part; for(Card c : inp.getSelected()) { - p.getGame().getAction().moveTo(ZoneType.Hand, c); + cpl.executePayment(ability, c); } + cpl.addListToHash(ability); } else if (part instanceof CostDiscard) { @@ -563,10 +567,11 @@ public final class GameActionUtil { hasPaid = false; break; } - ((CostDiscard)part).addListToHash(ability, "Discarded"); + CostPartWithList cpl = (CostPartWithList)part; for(Card c : inp.getSelected()) { - p.discard(c, ability); + cpl.executePayment(ability, c); } + cpl.addListToHash(ability); } else if (part instanceof CostPartMana ) {