From 6049a681e8957142729db3736e07c5c75ec9e486 Mon Sep 17 00:00:00 2001 From: swordshine Date: Fri, 26 Jun 2020 12:04:15 +0800 Subject: [PATCH 1/2] Update CostMill --- .../main/java/forge/game/cost/CostMill.java | 26 ++++++------------- .../java/forge/player/HumanCostDecision.java | 10 ++----- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/forge-game/src/main/java/forge/game/cost/CostMill.java b/forge-game/src/main/java/forge/game/cost/CostMill.java index 310e96cb9ce..6cdaec69f2b 100644 --- a/forge-game/src/main/java/forge/game/cost/CostMill.java +++ b/forge-game/src/main/java/forge/game/cost/CostMill.java @@ -19,6 +19,8 @@ package forge.game.cost; import forge.game.ability.AbilityUtils; import forge.game.card.Card; +import forge.game.card.CardCollection; +import forge.game.card.CardZoneTable; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.PlayerZone; @@ -29,7 +31,7 @@ import forge.game.zone.ZoneType; * your graveyard as a cost. This Cost doesn't appear on very many cards, but * might appear in more in the future. This will show up in the form of Mill<1> */ -public class CostMill extends CostPartWithList { +public class CostMill extends CostPart { /** * Serializables need a version ID. @@ -49,18 +51,6 @@ public class CostMill extends CostPartWithList { @Override public int paymentOrder() { return 10; } - /* (non-Javadoc) - * @see forge.card.cost.CostPartWithList#getHashForList() - */ - @Override - public String getHashForLKIList() { - return "Milled"; - } - @Override - public String getHashForCardList() { - return "MilledCards"; - } - /* * (non-Javadoc) * @@ -112,12 +102,12 @@ public class CostMill extends CostPartWithList { return sb.toString(); } - /* (non-Javadoc) - * @see forge.card.cost.CostPartWithList#executePayment(forge.card.spellability.SpellAbility, forge.Card) - */ @Override - protected Card doPayment(SpellAbility ability, Card targetCard) { - return targetCard.getGame().getAction().moveToGraveyard(targetCard, null); + public final boolean payAsDecided(final Player ai, final PaymentDecision decision, SpellAbility ability) { + CardZoneTable table = new CardZoneTable(); + ability.getPaidHash().put("Milled", (CardCollection) ai.mill(decision.c, ZoneType.Graveyard, false, ability, table)); + table.triggerChangesZoneAll(ai.getGame()); + return true; } public T accept(ICostVisitor visitor) { diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index 0bcac737676..cedcf02018e 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -581,19 +581,13 @@ public class HumanCostDecision extends CostDecisionMakerBase { Integer c = cost.convertAmount(); if (c == null) { - final String sVar = ability.getSVar(amount); - // Generalize this - if (sVar.equals("XChoice")) { - c = chooseXValue(cost.getLKIList().size()); - } else { - c = AbilityUtils.calculateAmount(source, amount, ability); - } + c = AbilityUtils.calculateAmount(source, amount, ability); } if (!player.getController().confirmPayment(cost, Localizer.getInstance().getMessage("lblMillNCardsFromYourLibraryConfirm", String.valueOf(c)), ability)) { return null; } - return PaymentDecision.card(player.getCardsIn(ZoneType.Library, c)); + return PaymentDecision.number(c); } @Override From 088062a93ecd5a35917f03cf26ef4c940c4729a7 Mon Sep 17 00:00:00 2001 From: swordshine Date: Fri, 26 Jun 2020 12:14:27 +0800 Subject: [PATCH 2/2] Update Ai PaymentDecision --- forge-ai/src/main/java/forge/ai/AiCostDecision.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/AiCostDecision.java b/forge-ai/src/main/java/forge/ai/AiCostDecision.java index ee480003207..0fc16198dbd 100644 --- a/forge-ai/src/main/java/forge/ai/AiCostDecision.java +++ b/forge-ai/src/main/java/forge/ai/AiCostDecision.java @@ -330,7 +330,7 @@ public class AiCostDecision extends CostDecisionMakerBase { } CardCollectionView topLib = player.getCardsIn(ZoneType.Library, c); - return topLib.size() < c ? null : PaymentDecision.card(topLib); + return topLib.size() < c ? null : PaymentDecision.number(c); } @Override