diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java index f6f5954cdc7..8db30682a19 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityCondition.java @@ -197,6 +197,10 @@ public class SpellAbilityCondition extends SpellAbilityVariables { this.setManaSpent(params.get("ConditionManaSpent")); } + if (params.containsKey("ConditionManaNotSpent")) { + this.setManaNotSpent(params.get("ConditionManaNotSpent")); + } + if (params.containsKey("ConditionCheckSVar")) { this.setSvarToCheck(params.get("ConditionCheckSVar")); } @@ -432,10 +436,21 @@ public class SpellAbilityCondition extends SpellAbilityVariables { } } - if (StringUtils.isNotEmpty(this.getManaSpent())) { - byte manaSpent = MagicColor.fromName(getManaSpent()); // they always check for single color - if( 0 == (manaSpent & sa.getHostCard().getColorsPaid())) // no match of colors + if (StringUtils.isNotEmpty(getManaSpent())) { + for (String s : getManaSpent().split(" ")) { + byte manaSpent = MagicColor.fromName(s); + if( 0 == (manaSpent & sa.getHostCard().getColorsPaid())) // no match of colors + return false; + } + } + if (StringUtils.isNotEmpty(getManaNotSpent())) { + byte toPay = 0; + for (String s : getManaNotSpent().split(" ")) { + toPay |= MagicColor.fromName(s); + } + if (0 != (toPay & sa.getHostCard().getColorsPaid())) { return false; + } } if (this.getsVarToCheck() != null) { diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java index a40263e218f..11a6c93a998 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java @@ -89,6 +89,7 @@ public class SpellAbilityVariables implements Cloneable { this.lifeTotal = sav.getLifeTotal(); this.lifeAmount = sav.getLifeAmount(); this.manaSpent = sav.getManaSpent(); + this.manaNotSpent = sav.getManaNotSpent(); this.targetValidTargeting = sav.getTargetValidTargeting(); this.targetsSingleTarget = sav.targetsSingleTarget(); this.presenceCondition = sav.getPresenceCondition(); @@ -193,6 +194,7 @@ public class SpellAbilityVariables implements Cloneable { /** The mana spent. */ private String manaSpent = ""; + private String manaNotSpent = ""; /** The chosen colors string. */ private String chosenColors = null; @@ -229,6 +231,13 @@ public class SpellAbilityVariables implements Cloneable { return this.manaSpent; } + public final void setManaNotSpent(final String s) { + this.manaNotSpent = s; + } + public final String getManaNotSpent() { + return this.manaNotSpent; + } + /** *

* Setter for the field zone. diff --git a/forge-gui/res/cardsfolder/upcoming/mythos_of_brokkos.txt b/forge-gui/res/cardsfolder/upcoming/mythos_of_brokkos.txt new file mode 100644 index 00000000000..020019207a3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mythos_of_brokkos.txt @@ -0,0 +1,6 @@ +Name:Mythos of Brokkos +ManaCost:2 G G +Types:Sorcery +A:SP$ ChangeZone | Cost$ 2 G G | Origin$ Library | Destination$ Graveyard | ChangeNum$ 1 | ChangeType$ Card | ConditionManaSpent$ U B | SubAbility$ DBChangeZone | | StackDescription$ SpellDescription | SpellDescription$ If {U}{B} was spent to cast this spell, search your library for a card, put that card into your graveyard, then shuffle your library. Return up to two permanent cards from your graveyard to your hand. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ChangeNum$ 2 | ChangeType$ Permanent.YouOwn | Hidden$ True | StackDescription$ None +Oracle:If {U}{B} was spent to cast this spell, search your library for a card, put that card into your graveyard, then shuffle your library.\nReturn up to two permanent cards from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/mythos_of_illuna.txt b/forge-gui/res/cardsfolder/upcoming/mythos_of_illuna.txt new file mode 100644 index 00000000000..3b29314656b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mythos_of_illuna.txt @@ -0,0 +1,8 @@ +Name:Mythos of Illuna +ManaCost:2 U U +Types:Sorcery +A:SP$ CopyPermanent | Cost$ 2 U U | ValidTgts$ Permanent | TgtPrompt$ Select target Permanent | ConditionManaNotSpent$ R G | SubAbility$ CopyFight | StackDescription$ SpellDescription | SpellDescription$ Create a token that’s a copy of target permanent. If {R}{G} was spent to cast this spell, instead create a token that’s a copy of that permanent, except the token has “When this permanent enters the battlefield, if it’s a creature, it fights up to one target creature you don’t control.” +SVar:CopyFight:DB$ CopyPermanent | Defined$ Targeted | ConditionManaSpent$ R G | AddTriggers$ TrigChange | AddSVars$ TrigFight,TrigChange | StackDescription$ None +SVar:TrigChange:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigFight | TriggerDescription$ When CARDNAME enters the battlefield, if it’s a creature, it fights up to one target creature you don't control. (Each deals damage equal to its power to the other.) +SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control | TargetMin$ 0 | TargetMax$ 1 +Oracle:Create a token that’s a copy of target permanent. If {R}{G} was spent to cast this spell, instead create a token that’s a copy of that permanent, except the token has “When this permanent enters the battlefield, if it’s a creature, it fights up to one target creature you don’t control.” diff --git a/forge-gui/res/cardsfolder/upcoming/mythos_of_nethroi.txt b/forge-gui/res/cardsfolder/upcoming/mythos_of_nethroi.txt new file mode 100644 index 00000000000..ef3876b50db --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mythos_of_nethroi.txt @@ -0,0 +1,6 @@ +Name:Mythos of Nethroi +ManaCost:2 B +Types:Instant +A:SP$ Destroy | Cost$ 2 B | ValidTgts$ Permanent.nonLand | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ1 | ConditionManaNotSpent$ G W | SubAbility$ DBDestroy | StackDescription$ SpellDescription | SpellDescription$ Destroy target nonland permanent if it's a creature or if {G}{W} was spent to cast this spell. +SVar:DBDestroy:DB$ Destroy | Defined$ Targeted | ConditionManaSpent$ G W | StackDescription$ None +Oracle:Destroy target nonland permanent if it's a creature or if {G}{W} was spent to cast this spell. diff --git a/forge-gui/res/cardsfolder/upcoming/mythos_of_snapdax.txt b/forge-gui/res/cardsfolder/upcoming/mythos_of_snapdax.txt new file mode 100644 index 00000000000..5e0ef989d20 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mythos_of_snapdax.txt @@ -0,0 +1,17 @@ +Name:Mythos of Snapdax +ManaCost:2 W W +Types:Sorcery +A:SP$ RepeatEach | Cost$ 2 W W | ConditionManaSpent$ B R | RepeatPlayers$ Player | RepeatSubAbility$ ChooseArtfYou | SubAbility$ AllChoose | SpellDescription$ Each player chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. If {B}{R} was spent to cast this spell, you choose the permanents for each player instead. +SVar:ChooseArtfYou:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Artifact.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose an artifact to keep | SubAbility$ ChooseCrtrYou | RememberChosen$ True | Mandatory$ True +SVar:ChooseCrtrYou:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose a creature to keep | SubAbility$ ChooseEnchYou | RememberChosen$ True | Mandatory$ True +SVar:ChooseEnchYou:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Enchantment.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose an enchantment to keep | SubAbility$ ChooseWalkYou | RememberChosen$ True | Mandatory$ True +SVar:ChooseWalkYou:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Planeswalker.RememberedPlayerCtrl | ChoiceTitle$ Choose a planeswalker to keep | RememberChosen$ True | Mandatory$ True +SVar:AllChoose:DB$ RepeatEach | ConditionManaNotSpent$ B R | RepeatPlayers$ Player | RepeatSubAbility$ ChooseArtf | SubAbility$ SacAllOthers +SVar:ChooseArtf:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Artifact.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose an artifact to keep | SubAbility$ ChooseCrtr | RememberChosen$ True | Mandatory$ True +SVar:ChooseCrtr:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose a creature to keep | SubAbility$ ChooseEnch | RememberChosen$ True | Mandatory$ True +SVar:ChooseEnch:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Enchantment.nonLand+RememberedPlayerCtrl | ChoiceTitle$ Choose an enchantment to keep | SubAbility$ ChooseWalk | RememberChosen$ True | Mandatory$ True +SVar:ChooseWalk:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Planeswalker.RememberedPlayerCtrl | ChoiceTitle$ Choose a planeswalker to keep | RememberChosen$ True | Mandatory$ True +SVar:SacAllOthers:DB$ SacrificeAll | ValidCards$ Permanent.nonLand+IsNotRemembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True +AI:RemoveDeck:All +Oracle:Each player chooses an artifact, a creature, an enchantment, and a planeswalker from among the nonland permanents they control, then sacrifices the rest. If {B}{R} was spent to cast this spell, you choose the permanents for each player instead. diff --git a/forge-gui/res/cardsfolder/upcoming/mythos_of_vadrok.txt b/forge-gui/res/cardsfolder/upcoming/mythos_of_vadrok.txt new file mode 100644 index 00000000000..fba033545cd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mythos_of_vadrok.txt @@ -0,0 +1,6 @@ +Name:Mythos of Vadrok +ManaCost:2 R R +Types:Sorcery +A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SubAbility$ DBPump | SpellDescription$ CARDNAME deals 5 damage divided as you choose among any number of target creatures and/or planeswalkers. If {W}{U} was spent to cast this spell, until your next turn, those permanents can’t attack or block and their activated abilities can’t be activated. +SVar:DBPump:DB$ Pump | Defined$ Targeted | UntilYourNextTurn$ True | KW$ HIDDEN CARDNAME can't attack or block. & HIDDEN CARDNAME's activated abilities can't be activated. | ConditionManaSpent W U | SpellDescription$ None +Oracle:Mythos of Vadrok deals 5 damage divided as you choose among any number of target creatures and/or planeswalkers. If {W}{U} was spent to cast this spell, until your next turn, those permanents can’t attack or block and their activated abilities can’t be activated.