From db451886ad62e4c5d6d50146d41d8d65eb932b1a Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Sat, 20 Mar 2021 21:16:13 +0100 Subject: [PATCH] Fix Blazing Torch ability --- forge-ai/src/main/java/forge/ai/AiCostDecision.java | 3 +++ .../src/main/java/forge/game/cost/CostSacrifice.java | 7 +++++-- .../src/main/java/forge/player/HumanCostDecision.java | 10 ++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/AiCostDecision.java b/forge-ai/src/main/java/forge/ai/AiCostDecision.java index 87603e59988..cd65766da72 100644 --- a/forge-ai/src/main/java/forge/ai/AiCostDecision.java +++ b/forge-ai/src/main/java/forge/ai/AiCostDecision.java @@ -510,6 +510,9 @@ public class AiCostDecision extends CostDecisionMakerBase { if (cost.payCostFromSource()) { return PaymentDecision.card(source); } + if (cost.getType().equals("OriginalHost")) { + return PaymentDecision.card(ability.getHostCard()); + } if (cost.getAmount().equals("All")) { // Does the AI want to use Sacrifice All? return null; diff --git a/forge-game/src/main/java/forge/game/cost/CostSacrifice.java b/forge-game/src/main/java/forge/game/cost/CostSacrifice.java index 9e312ae765c..65a536890d8 100644 --- a/forge-game/src/main/java/forge/game/cost/CostSacrifice.java +++ b/forge-game/src/main/java/forge/game/cost/CostSacrifice.java @@ -97,8 +97,11 @@ public class CostSacrifice extends CostPartWithList { public final boolean canPay(final SpellAbility ability, final Player activator) { final Card source = ability.getHostCard(); - // You can always sac all - if (!payCostFromSource()) { + if (getType().equals("OriginalHost")) { + Card originalEquipment = ability.getOriginalHost(); + return originalEquipment.isEquipping(); + } + else if (!payCostFromSource()) { // You can always sac all if ("All".equalsIgnoreCase(getAmount())) { CardCollectionView typeList = activator.getCardsIn(ZoneType.Battlefield); typeList = CardLists.getValidCards(typeList, getType().split(";"), activator, source, ability); diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index 0c7ad980b8d..841897a13a8 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -1051,6 +1051,16 @@ public class HumanCostDecision extends CostDecisionMakerBase { } } + if (type.equals("OriginalHost")) { + Card host = ability.getOriginalHost(); + if (host.getController() == ability.getActivatingPlayer() && host.isInPlay()) { + return player.getController().confirmPayment(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(host.getName())), ability) ? PaymentDecision.card(host) : null; + } + else { + return null; + } + } + if (amount.equals("All")) { return PaymentDecision.card(list); }