From 9544d2073e9e16a045cd11f6c54a2772c5b4c027 Mon Sep 17 00:00:00 2001 From: tool4ever Date: Sun, 27 Aug 2023 14:05:50 +0200 Subject: [PATCH] Flash fix (#3704) Co-authored-by: tool4EvEr --- forge-ai/src/main/java/forge/ai/ability/TokenAi.java | 2 -- .../src/main/java/forge/game/ability/AbilityUtils.java | 7 ++++++- .../game/staticability/StaticAbilityNumLoyaltyAct.java | 5 ++--- forge-gui/res/cardsfolder/f/flash.txt | 2 +- forge-gui/res/cardsfolder/t/training_grounds.txt | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/TokenAi.java b/forge-ai/src/main/java/forge/ai/ability/TokenAi.java index f1d89d1ce2e..cb3050ba623 100644 --- a/forge-ai/src/main/java/forge/ai/ability/TokenAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/TokenAi.java @@ -351,8 +351,6 @@ public class TokenAi extends SpellAbilityAi { throw new RuntimeException("don't find Token for TokenScript: " + sa.getParam("TokenScript")); } - result.setOwner(ai); - // Apply static abilities final Game game = ai.getGame(); ComputerUtilCard.applyStaticContPT(game, result, null); diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index aa50861ceb3..35644120956 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -30,6 +30,7 @@ import forge.game.trigger.TriggerType; import forge.game.zone.ZoneType; import forge.util.Aggregates; import forge.util.Expressions; +import forge.util.Localizer; import forge.util.MyRandom; import forge.util.TextUtil; import forge.util.collect.FCollection; @@ -1473,7 +1474,11 @@ public class AbilityUtils { if (unlessCost.split("_").length == 3) { String modifier = unlessCost.split("_")[2]; if (modifier.startsWith("Minus")) { - newCost.decreaseGenericMana(Integer.parseInt(modifier.substring(5))); + int max = Integer.parseInt(modifier.substring(5)); + if (sa.hasParam("UnlessUpTo")) { // Flash + max = allPayers.get(0).getController().chooseNumber(sa, Localizer.getInstance().getMessage("lblChooseNumber"), 0, max); + } + newCost.decreaseGenericMana(max); } else { newCost.increaseGenericMana(Integer.parseInt(modifier.substring(4))); } diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityNumLoyaltyAct.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityNumLoyaltyAct.java index 57b8c6be333..37f79533609 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityNumLoyaltyAct.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityNumLoyaltyAct.java @@ -52,12 +52,11 @@ public class StaticAbilityNumLoyaltyAct { } if (stAb.hasParam("Additional")) { if (stAb.hasParam("OnlySourceAbs")) { - if (!stAb.getHostCard().getEffectSourceAbility().getRootAbility().equals(sa)) { + if (!stAb.getHostCard().getEffectSourceAbility().getRootAbility().getOriginalAbility().equals(sa)) { continue; } } - int more = AbilityUtils.calculateAmount(card, stAb.getParam("Additional"), stAb); - addl += more; + addl += AbilityUtils.calculateAmount(card, stAb.getParam("Additional"), stAb); } } } diff --git a/forge-gui/res/cardsfolder/f/flash.txt b/forge-gui/res/cardsfolder/f/flash.txt index 4b2ddd374da..a12c7a4cda8 100644 --- a/forge-gui/res/cardsfolder/f/flash.txt +++ b/forge-gui/res/cardsfolder/f/flash.txt @@ -2,7 +2,7 @@ Name:Flash ManaCost:1 U Types:Instant A:SP$ ChangeZone | Cost$ 1 U | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | SubAbility$ DBSac | RememberChanged$ True | SpellDescription$ You may put a creature card from your hand onto the battlefield. If you do, sacrifice it unless you pay its mana cost reduced by up to {2}. -SVar:DBSac:DB$ SacrificeAll | Defined$ Remembered | UnlessCost$ DefinedCost_Remembered_Minus2 | UnlessPayer$ You | SubAbility$ DBCleanup +SVar:DBSac:DB$ SacrificeAll | Defined$ Remembered | UnlessCost$ DefinedCost_Remembered_Minus2 | UnlessPayer$ You | UnlessUpTo$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True AI:RemoveDeck:All Oracle:You may put a creature card from your hand onto the battlefield. If you do, sacrifice it unless you pay its mana cost reduced by up to {2}. diff --git a/forge-gui/res/cardsfolder/t/training_grounds.txt b/forge-gui/res/cardsfolder/t/training_grounds.txt index 82dc7497592..e62454d56ee 100644 --- a/forge-gui/res/cardsfolder/t/training_grounds.txt +++ b/forge-gui/res/cardsfolder/t/training_grounds.txt @@ -2,4 +2,4 @@ Name:Training Grounds ManaCost:U Types:Enchantment S:Mode$ ReduceCost | ValidCard$ Creature.YouCtrl | Type$ Ability | Amount$ 2 | MinMana$ 1 | AffectedZone$ Battlefield | Description$ Activated abilities of creatures you control cost {2} less to activate. This effect can't reduce the mana in that cost to less than one mana. -Oracle:Activated abilities of creatures you control cost up to {2} less to activate. This effect can't reduce the mana in that cost to less than one mana. +Oracle:Activated abilities of creatures you control cost {2} less to activate. This effect can't reduce the mana in that cost to less than one mana.