From 9b774734c35323029ef6e60ebab0b69806e7a852 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Sun, 25 Apr 2021 22:47:54 +0200 Subject: [PATCH 1/3] Fix some cards failing to target for X=0 --- forge-gui/res/cardsfolder/f/fire_covenant.txt | 3 ++- forge-gui/res/cardsfolder/g/ghireds_belligerence.txt | 3 ++- forge-gui/res/cardsfolder/i/infernal_harvest.txt | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/f/fire_covenant.txt b/forge-gui/res/cardsfolder/f/fire_covenant.txt index a3b1729fa51..73231073dab 100644 --- a/forge-gui/res/cardsfolder/f/fire_covenant.txt +++ b/forge-gui/res/cardsfolder/f/fire_covenant.txt @@ -1,8 +1,9 @@ Name:Fire Covenant ManaCost:1 B R Types:Instant -A:SP$ DealDamage | Cost$ 1 B R PayLife | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. +A:SP$ DealDamage | Cost$ 1 B R PayLife | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. SVar:MaxTgts:Count$Valid Creature +SVar:Min:SVar$X/LimitMax.1 SVar:X:Count$xPaid AI:RemoveDeck:All Oracle:As an additional cost to cast this spell, pay X life.\nFire Covenant deals X damage divided as you choose among any number of target creatures. diff --git a/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt b/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt index 28668cc6bd1..e7e31f7fd38 100644 --- a/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt +++ b/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt @@ -1,8 +1,9 @@ Name:Ghired's Belligerence ManaCost:X R R Types:Sorcery -A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | RememberDamaged$ True | SubAbility$ DBEffect | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. Whenever a creature dealt damage this way dies this turn, populate. (Create a token that's a copy of a creature token you control.) +A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | RememberDamaged$ True | SubAbility$ DBEffect | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. Whenever a creature dealt damage this way dies this turn, populate. (Create a token that's a copy of a creature token you control.) SVar:X:Count$xPaid +SVar:Min:SVar$X/LimitMax.1 SVar:MaxTgts:Count$Valid Creature SVar:DBEffect:DB$ Effect | Triggers$ TrigDies | RememberObjects$ RememberedCard | SubAbility$ DBCleanup SVar:TrigDies:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Graveyard | Execute$ DBPopulate | TriggerDescription$ Whenever a creature dealt damage this way dies this turn, populate. diff --git a/forge-gui/res/cardsfolder/i/infernal_harvest.txt b/forge-gui/res/cardsfolder/i/infernal_harvest.txt index aa8e95091bb..4f357d42f8e 100644 --- a/forge-gui/res/cardsfolder/i/infernal_harvest.txt +++ b/forge-gui/res/cardsfolder/i/infernal_harvest.txt @@ -1,8 +1,9 @@ Name:Infernal Harvest ManaCost:1 B Types:Sorcery -A:SP$ DealDamage | Cost$ 1 B Return | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. +A:SP$ DealDamage | Cost$ 1 B Return | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. SVar:MaxTgts:Count$Valid Creature SVar:X:Count$xPaid +SVar:Min:SVar$X/LimitMax.1 AI:RemoveDeck:All Oracle:As an additional cost to cast this spell, return X Swamps you control to their owner's hand.\nInfernal Harvest deals X damage divided as you choose among any number of target creatures. From be89397e48b6539641c0575a13ecf80f61432469 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Mon, 26 Apr 2021 17:44:46 +0200 Subject: [PATCH 2/3] Fix targeting for spells with DividedValue and X=0 --- .../main/java/forge/game/spellability/TargetRestrictions.java | 2 +- forge-gui/res/cardsfolder/c/conflagrate.txt | 3 +-- forge-gui/res/cardsfolder/f/fire_covenant.txt | 3 +-- forge-gui/res/cardsfolder/g/ghireds_belligerence.txt | 3 +-- forge-gui/res/cardsfolder/i/infernal_harvest.txt | 3 +-- 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java b/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java index 000d94c5d2e..e6a509dce0f 100644 --- a/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java +++ b/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java @@ -302,7 +302,7 @@ public class TargetRestrictions { */ public final boolean isMinTargetsChosen(final Card c, final SpellAbility sa) { int min = getMinTargets(c, sa); - if (min == 0) { + if (min == 0 || sa.getDividedValue() == 0) { return true; } return min <= sa.getTargets().size(); diff --git a/forge-gui/res/cardsfolder/c/conflagrate.txt b/forge-gui/res/cardsfolder/c/conflagrate.txt index 8e4d1a5a424..c137e495ebd 100644 --- a/forge-gui/res/cardsfolder/c/conflagrate.txt +++ b/forge-gui/res/cardsfolder/c/conflagrate.txt @@ -1,10 +1,9 @@ Name:Conflagrate ManaCost:X X R Types:Sorcery -A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of targets. +A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of targets. SVar:MaxTgts:PlayerCountPlayers$Amount/Plus.NumCreatures SVar:NumCreatures:Count$Valid Creature,Planeswalker -SVar:Min:SVar$X/LimitMax.1 SVar:X:Count$xPaid K:Flashback:R R Discard Oracle:Conflagrate deals X damage divided as you choose among any number of targets.\nFlashback—{R}{R}, Discard X cards. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/f/fire_covenant.txt b/forge-gui/res/cardsfolder/f/fire_covenant.txt index 73231073dab..a3b1729fa51 100644 --- a/forge-gui/res/cardsfolder/f/fire_covenant.txt +++ b/forge-gui/res/cardsfolder/f/fire_covenant.txt @@ -1,9 +1,8 @@ Name:Fire Covenant ManaCost:1 B R Types:Instant -A:SP$ DealDamage | Cost$ 1 B R PayLife | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. +A:SP$ DealDamage | Cost$ 1 B R PayLife | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. SVar:MaxTgts:Count$Valid Creature -SVar:Min:SVar$X/LimitMax.1 SVar:X:Count$xPaid AI:RemoveDeck:All Oracle:As an additional cost to cast this spell, pay X life.\nFire Covenant deals X damage divided as you choose among any number of target creatures. diff --git a/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt b/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt index e7e31f7fd38..28668cc6bd1 100644 --- a/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt +++ b/forge-gui/res/cardsfolder/g/ghireds_belligerence.txt @@ -1,9 +1,8 @@ Name:Ghired's Belligerence ManaCost:X R R Types:Sorcery -A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | RememberDamaged$ True | SubAbility$ DBEffect | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. Whenever a creature dealt damage this way dies this turn, populate. (Create a token that's a copy of a creature token you control.) +A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | RememberDamaged$ True | SubAbility$ DBEffect | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. Whenever a creature dealt damage this way dies this turn, populate. (Create a token that's a copy of a creature token you control.) SVar:X:Count$xPaid -SVar:Min:SVar$X/LimitMax.1 SVar:MaxTgts:Count$Valid Creature SVar:DBEffect:DB$ Effect | Triggers$ TrigDies | RememberObjects$ RememberedCard | SubAbility$ DBCleanup SVar:TrigDies:Mode$ ChangesZone | ValidCard$ Creature.IsRemembered | Origin$ Battlefield | Destination$ Graveyard | Execute$ DBPopulate | TriggerDescription$ Whenever a creature dealt damage this way dies this turn, populate. diff --git a/forge-gui/res/cardsfolder/i/infernal_harvest.txt b/forge-gui/res/cardsfolder/i/infernal_harvest.txt index 4f357d42f8e..aa8e95091bb 100644 --- a/forge-gui/res/cardsfolder/i/infernal_harvest.txt +++ b/forge-gui/res/cardsfolder/i/infernal_harvest.txt @@ -1,9 +1,8 @@ Name:Infernal Harvest ManaCost:1 B Types:Sorcery -A:SP$ DealDamage | Cost$ 1 B Return | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. +A:SP$ DealDamage | Cost$ 1 B Return | ValidTgts$ Creature | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures. SVar:MaxTgts:Count$Valid Creature SVar:X:Count$xPaid -SVar:Min:SVar$X/LimitMax.1 AI:RemoveDeck:All Oracle:As an additional cost to cast this spell, return X Swamps you control to their owner's hand.\nInfernal Harvest deals X damage divided as you choose among any number of target creatures. From 703fddeb651508ddc58edd3a9c931e2f4e96f93b Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Mon, 26 Apr 2021 18:20:59 +0200 Subject: [PATCH 3/3] Check isDividedAsYouChoose --- .../main/java/forge/game/spellability/TargetRestrictions.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java b/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java index e6a509dce0f..ceda73f3627 100644 --- a/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java +++ b/forge-game/src/main/java/forge/game/spellability/TargetRestrictions.java @@ -302,7 +302,7 @@ public class TargetRestrictions { */ public final boolean isMinTargetsChosen(final Card c, final SpellAbility sa) { int min = getMinTargets(c, sa); - if (min == 0 || sa.getDividedValue() == 0) { + if (min == 0 || (sa.isDividedAsYouChoose() && sa.getDividedValue() == 0)) { return true; } return min <= sa.getTargets().size();