From 0b70fd0724fce88108358a9bd5f12b73e39e396d Mon Sep 17 00:00:00 2001 From: Xavier Date: Tue, 5 Jul 2022 22:44:02 -0400 Subject: [PATCH 1/6] Draft of Call to the Void. --- .../res/cardsfolder/upcoming/call_to_the_void.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt diff --git a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt new file mode 100644 index 00000000000..a7888a1978d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt @@ -0,0 +1,10 @@ +Name:Call to the Void +ManaCost:4 B +Types:Sorcery +A:SP$ RepeatEach | Cost$ 4 B | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseCreatureYouCtrl | SubAbility$ DBRevealChosen +SVar:DBChooseCreatureYouCtrl:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.RememberedPlayerCtrl | ChoiceTitle$ Secretly choose a creature you control | SubAbility$ DBChooseCreatureYouDontCtrl | RememberChosen$ True | Mandatory$ True +SVar:DBChooseCreatureYouDontCtrl:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.nonRememberedPlayerCtrl | ChoiceTitle$ Secretly choose a creature you don't control | RememberChosen$ True | Mandatory$ True +SVar:DBRevealChosen:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBRevealToEachPlayer | SubAbility$ DBDestroyChosen +SVar:DBRevealToEachPlayer:DB$ Reveal | Defined$ RememberedPlayer | RevealDefined$ ChosenCard +SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.IsRemembered | SubAbility$ DBCleanUp +SVar:DBCleanUp:DB$ CleanUp | ClearRemembered$ True From 54ed9790ccb959ecca715cb60aaa028ac7e88151 Mon Sep 17 00:00:00 2001 From: Xavier Date: Wed, 6 Jul 2022 17:11:31 -0400 Subject: [PATCH 2/6] CleanUp -> Cleanup --- forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt index a7888a1978d..5459cb9bd9e 100644 --- a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt +++ b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt @@ -7,4 +7,4 @@ SVar:DBChooseCreatureYouDontCtrl:DB$ ChooseCard | Defined$ Remembered | Amount$ SVar:DBRevealChosen:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBRevealToEachPlayer | SubAbility$ DBDestroyChosen SVar:DBRevealToEachPlayer:DB$ Reveal | Defined$ RememberedPlayer | RevealDefined$ ChosenCard SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.IsRemembered | SubAbility$ DBCleanUp -SVar:DBCleanUp:DB$ CleanUp | ClearRemembered$ True +SVar:DBCleanUp:DB$ Cleanup | ClearRemembered$ True From 901a7bd670d48c116e4f1f1b23e7a463e2021667 Mon Sep 17 00:00:00 2001 From: Xavier Date: Thu, 7 Jul 2022 00:57:06 -0400 Subject: [PATCH 3/6] First working draft. --- forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt index 5459cb9bd9e..0908ba5a65e 100644 --- a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt +++ b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt @@ -1,10 +1,9 @@ Name:Call to the Void ManaCost:4 B Types:Sorcery -A:SP$ RepeatEach | Cost$ 4 B | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseCreatureYouCtrl | SubAbility$ DBRevealChosen +A:SP$ RepeatEach | Cost$ 4 B | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseCreatureYouCtrl | SubAbility$ DBRevealChosenToAll SVar:DBChooseCreatureYouCtrl:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.RememberedPlayerCtrl | ChoiceTitle$ Secretly choose a creature you control | SubAbility$ DBChooseCreatureYouDontCtrl | RememberChosen$ True | Mandatory$ True SVar:DBChooseCreatureYouDontCtrl:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.nonRememberedPlayerCtrl | ChoiceTitle$ Secretly choose a creature you don't control | RememberChosen$ True | Mandatory$ True -SVar:DBRevealChosen:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBRevealToEachPlayer | SubAbility$ DBDestroyChosen -SVar:DBRevealToEachPlayer:DB$ Reveal | Defined$ RememberedPlayer | RevealDefined$ ChosenCard +SVar:DBRevealChosenToAll:DB$ Reveal | Defined$ CardOwner | RevealDefined$ RememberedCard | RevealToAll$ True | RevealTitle$ OVERRIDE Creatures chosen. They will be destroyed. | Description$ Test | SubAbility$ DBDestroyChosen SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.IsRemembered | SubAbility$ DBCleanUp SVar:DBCleanUp:DB$ Cleanup | ClearRemembered$ True From be885d8656ba9b53a79a4dd0cc49ed2f86f8ef36 Mon Sep 17 00:00:00 2001 From: Xavier Date: Sun, 10 Jul 2022 01:55:52 -0400 Subject: [PATCH 4/6] CardScript for Call to the Void and changes to ChooseCardEffect - Created CardScript for call to the void. - Added "ControlAndNot" parameter to ChooseCardEffect as suggested by @northmoc on discord (https://discord.com/channels/267367946135928833/994588726254633090/994610830815539370) - Added and implemented "SecretlyChoose". - Added RevealTitle. --- .../ability/effects/ChooseCardEffect.java | 23 ++++++++++++++++--- .../cardsfolder/upcoming/call_to_the_void.txt | 7 ++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java index d60a1bd5532..ec78e6e598e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java @@ -83,7 +83,7 @@ public class ChooseCardEffect extends SpellAbilityEffect { combined.addAll(choices); choices = combined; } - + final String amountValue = sa.getParamOrDefault("Amount", "1"); int validAmount; if (StringUtils.isNumeric(amountValue)) { @@ -187,6 +187,18 @@ public class ChooseCardEffect extends SpellAbilityEffect { chosenPool.add(choice); } chosen.addAll(chosenPool); + } else if (sa.hasParam("ControlAndNot")) { + String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseCreature"); + // Targeted player (p) chooses N creatures that belongs to them + CardCollection tgtPlayerCtrl = CardLists.filterControlledBy(choices, p); + chosen.addAll(p.getController().chooseCardsForEffect(tgtPlayerCtrl, sa, title + " " + "you control", minAmount, validAmount, + !sa.hasParam("Mandatory"), null)); + // Targeted player (p) chooses N creatures that don't belong to them + CardCollection notTgtPlayerCtrl = new CardCollection(choices); + notTgtPlayerCtrl.removeAll(tgtPlayerCtrl); + chosen.addAll(p.getController().chooseCardsForEffect(notTgtPlayerCtrl, sa, title + " " + "you don't control", minAmount, validAmount, + !sa.hasParam("Mandatory"), null)); + } else if ((tgt == null) || p.canBeTargetedBy(sa)) { if (sa.hasParam("AtRandom") && !choices.isEmpty()) { Aggregates.random(choices, validAmount, chosen); @@ -217,8 +229,13 @@ public class ChooseCardEffect extends SpellAbilityEffect { } } } - if (sa.hasParam("Reveal")) { - game.getAction().reveal(chosen, p, true, Localizer.getInstance().getMessage("lblChosenCards") + " "); + if (sa.hasParam("Reveal") && !sa.hasParam("SecretlyChoose")) { + game.getAction().reveal(chosen, p, true, sa.hasParam("RevealTitle") ? sa.getParam("RevealTitle") : Localizer.getInstance().getMessage("lblChosenCards") + " "); + } + } + if(sa.hasParam("Reveal") && sa.hasParam("SecretlyChoose")) { + for (final Player p : tgtPlayers) { + game.getAction().reveal(chosen, p, true, sa.hasParam("RevealTitle") ? sa.getParam("RevealTitle") : Localizer.getInstance().getMessage("lblChosenCards") + " "); } } host.setChosenCards(chosen); diff --git a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt index 0908ba5a65e..df3a6c7e2bb 100644 --- a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt +++ b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt @@ -1,9 +1,6 @@ Name:Call to the Void ManaCost:4 B Types:Sorcery -A:SP$ RepeatEach | Cost$ 4 B | RepeatPlayers$ Player | RepeatSubAbility$ DBChooseCreatureYouCtrl | SubAbility$ DBRevealChosenToAll -SVar:DBChooseCreatureYouCtrl:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.RememberedPlayerCtrl | ChoiceTitle$ Secretly choose a creature you control | SubAbility$ DBChooseCreatureYouDontCtrl | RememberChosen$ True | Mandatory$ True -SVar:DBChooseCreatureYouDontCtrl:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.nonRememberedPlayerCtrl | ChoiceTitle$ Secretly choose a creature you don't control | RememberChosen$ True | Mandatory$ True -SVar:DBRevealChosenToAll:DB$ Reveal | Defined$ CardOwner | RevealDefined$ RememberedCard | RevealToAll$ True | RevealTitle$ OVERRIDE Creatures chosen. They will be destroyed. | Description$ Test | SubAbility$ DBDestroyChosen +A:SP$ ChooseCard | Defined$ Player | Choices$ Creature | SecretlyChoose$ True | Amount$ 1 | ControlAndNot$ True | ChoiceTitle$ Secretly choose a creature | Reveal$ True | RevealTitle$ OVERRIDE Chosen creatures. They will be destroyed. | SubAbility$ DBDestroyChosen | RememberChosen$ True | Mandatory$ True SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.IsRemembered | SubAbility$ DBCleanUp -SVar:DBCleanUp:DB$ Cleanup | ClearRemembered$ True +SVar:DBCleanUp:DB$ Cleanup | ClearRemembered$ True From eb4400a8bf0d4c42b840dc17166667962eeb3ac1 Mon Sep 17 00:00:00 2001 From: Xavier Date: Sun, 10 Jul 2022 12:10:44 -0400 Subject: [PATCH 5/6] Added Oracle, removed remembered, and removed unnecessary spaces. --- .../java/forge/game/ability/effects/ChooseCardEffect.java | 2 +- forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java index ec78e6e598e..0d61a333e83 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardEffect.java @@ -83,7 +83,7 @@ public class ChooseCardEffect extends SpellAbilityEffect { combined.addAll(choices); choices = combined; } - + final String amountValue = sa.getParamOrDefault("Amount", "1"); int validAmount; if (StringUtils.isNumeric(amountValue)) { diff --git a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt index df3a6c7e2bb..ae36055dc48 100644 --- a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt +++ b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt @@ -1,6 +1,7 @@ Name:Call to the Void ManaCost:4 B Types:Sorcery -A:SP$ ChooseCard | Defined$ Player | Choices$ Creature | SecretlyChoose$ True | Amount$ 1 | ControlAndNot$ True | ChoiceTitle$ Secretly choose a creature | Reveal$ True | RevealTitle$ OVERRIDE Chosen creatures. They will be destroyed. | SubAbility$ DBDestroyChosen | RememberChosen$ True | Mandatory$ True -SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.IsRemembered | SubAbility$ DBCleanUp +A:SP$ ChooseCard | Defined$ Player | Choices$ Creature | SecretlyChoose$ True | Amount$ 1 | ControlAndNot$ True | ChoiceTitle$ Secretly choose a creature | Reveal$ True | RevealTitle$ OVERRIDE Chosen creatures. They will be destroyed. | SubAbility$ DBDestroyChosen | Mandatory$ True +SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.ChosenCard | SubAbility$ DBCleanUp SVar:DBCleanUp:DB$ Cleanup | ClearRemembered$ True +Oracle:Each player secretly chooses a creature they control and a creature they don't control. Then those choices are revealed. Destroy each creature chosen this way. From b6063933444019d1c90749e431a3732405c05249 Mon Sep 17 00:00:00 2001 From: Xavier Date: Sun, 10 Jul 2022 12:16:56 -0400 Subject: [PATCH 6/6] Removed Cleanup --- forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt index ae36055dc48..1d3cdcd9124 100644 --- a/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt +++ b/forge-gui/res/cardsfolder/upcoming/call_to_the_void.txt @@ -2,6 +2,5 @@ Name:Call to the Void ManaCost:4 B Types:Sorcery A:SP$ ChooseCard | Defined$ Player | Choices$ Creature | SecretlyChoose$ True | Amount$ 1 | ControlAndNot$ True | ChoiceTitle$ Secretly choose a creature | Reveal$ True | RevealTitle$ OVERRIDE Chosen creatures. They will be destroyed. | SubAbility$ DBDestroyChosen | Mandatory$ True -SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.ChosenCard | SubAbility$ DBCleanUp -SVar:DBCleanUp:DB$ Cleanup | ClearRemembered$ True +SVar:DBDestroyChosen:DB$ DestroyAll | ValidCards$ Creature.ChosenCard Oracle:Each player secretly chooses a creature they control and a creature they don't control. Then those choices are revealed. Destroy each creature chosen this way.