diff --git a/forge-game/src/main/java/forge/game/cost/CostAdjustment.java b/forge-game/src/main/java/forge/game/cost/CostAdjustment.java index 7bad854935a..b69a6aab3c0 100644 --- a/forge-game/src/main/java/forge/game/cost/CostAdjustment.java +++ b/forge-game/src/main/java/forge/game/cost/CostAdjustment.java @@ -541,7 +541,11 @@ public class CostAdjustment { } curSa = curSa.getSubAbility(); } - if (!targetValid) { + if (st.hasParam("UnlessValidTarget")) { + if (targetValid) { + return false; + } + } else if (!targetValid) { return false; } } diff --git a/forge-gui/res/cardsfolder/upcoming/blex_vexing_pest_search_for_blex.txt b/forge-gui/res/cardsfolder/upcoming/blex_vexing_pest_search_for_blex.txt new file mode 100644 index 00000000000..df54fb2d26d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/blex_vexing_pest_search_for_blex.txt @@ -0,0 +1,23 @@ +Name:Blex, Vexing Pest +ManaCost:2 G +Types:Legendary Creature Pest +PT:3/2 +S:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Pest.Other+YouCtrl,Bat.Other+YouCtrl,Insect.Other+YouCtrl,Snake.Other+YouCtrl,Spider.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Pests, Bats, Insects, Snakes, and Spiders you control get +1/+1. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME dies, you gain 4 life. +SVar:TrigGainLife:DB$ GainLife | Defined$ TriggeredCardController | LifeAmount$ 4 +DeckHas:Ability$LifeGain +DeckHints:Type$Pest|Bat|Insect|Snake|Spider +AlternateMode:Modal +Oracle:Other Pests, Bats, Insects, Snakes, and Spiders you control get +1/+1.\nWhen Blex, Vexing Pest dies, you gain 4 life. + +ALTERNATE + +Name:Search for Blex +ManaCost:2 B B +Types:Sorcery +A:SP$ Dig | DigNum$ 5 | AnyNumber$ True | DestinationZone$ Hand | RememberChanged$ True | DestinationZone2$ Graveyard | SubAbility$ DBLoseLife | StackDescription$ SpellDescription | SpellDescription$ Look at the top five cards of your library. You may put any number of them into your hand and the rest into your graveyard. +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | Defined$ You | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ You lose 3 life for each card you put into your hand this way. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Valid Card/Times.3 +DeckHas:Ability$Graveyard +Oracle:Look at the top five cards of your library. You may put any number of them into your hand and the rest into your graveyard. You lose 3 life for each card you put into your hand this way. diff --git a/forge-gui/res/cardsfolder/upcoming/mavinda_students_advocate.txt b/forge-gui/res/cardsfolder/upcoming/mavinda_students_advocate.txt new file mode 100644 index 00000000000..d20cb8cd8cc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mavinda_students_advocate.txt @@ -0,0 +1,15 @@ +Name:Mavinda, Students' Advocate +ManaCost:2 W +Types:Legendary Creature Bird Advisor +PT:2/3 +K:Flying +A:AB$ Effect | Cost$ 0 | ValidTgts$ Instant.YouOwn,Sorcery.YouOwn | TgtZone$ Graveyard | TgtPrompt$ Select target instant or sorcery card in your graveyard | ActivationLimit$ 1 | RememberObjects$ Targeted | StaticAbilities$ MayPlay,RaiseCost | ReplacementEffects$ ReplaceGraveyard | SubAbility$ DBCleanup | SpellDescription$ You may cast target instant or sorcery card from your graveyard this turn. If that spell doesn't target a creature you control, it costs {8} more to cast this way. If that spell would be put into your graveyard, exile it instead. Activate only once each turn. (You still pay the spell's costs. Timing rules for the spell still apply.) +SVar:MayPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may cast target instant or sorcery card from your graveyard this turn. (You still pay the spell's costs. Timing rules for the spell still apply.) +SVar:RaiseCost:Mode$ RaiseCost | ValidCard$ Card.IsRemembered | ValidTarget$ Creature.YouCtrl | UnlessValidTarget$ True | Activator$ You | Type$ Spell | Amount$ 8 | EffectZone$ Command | Description$ If that spell doesn't target a creature you control, it costs {8} more to cast this way. +SVar:ReplaceGraveyard:Event$ Moved | ValidCard$ Card.IsRemembered | Destination$ Graveyard | ReplaceWith$ MoveExile | Description$ If that spell would be put into your graveyard, exile it instead. +SVar:MoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ All | Destination$ Exile | SubAbility$ ExileSelf +SVar:ExileSelf:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Graveyard +DeckNeeds:Types$Instant|Sorcery +Oracle:Flying\n{0}: You may cast target instant or sorcery card from your graveyard this turn. If that spell doesn't target a creature you control, it costs {8} more to cast this way. If that spell would be put into your graveyard, exile it instead. Activate only once each turn. (You still pay the spell's costs. Timing rules for the spell still apply.) diff --git a/forge-gui/res/cardsfolder/upcoming/necrotic_fumes.txt b/forge-gui/res/cardsfolder/upcoming/necrotic_fumes.txt index 2b164b3aa9b..afdb06dd847 100644 --- a/forge-gui/res/cardsfolder/upcoming/necrotic_fumes.txt +++ b/forge-gui/res/cardsfolder/upcoming/necrotic_fumes.txt @@ -1,5 +1,5 @@ Name:Necrotic Fumes ManaCost:1 B B Types:Sorcery Lesson -A:SP$ ChangeZone | Cost$ B B Exile<1/Creature> | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target creature or planeswalker. -Oracle:As an additional cost to cast this spell, exile a creature you control.\nExile target creature or planeswalker. +A:SP$ ChangeZone | Cost$ B B Exile<1/Creature> | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target creature or planeswalker. +Oracle:As an additional cost to cast this spell, exile a creature you control.\nExile target creature or planeswalker. diff --git a/forge-gui/res/cardsfolder/upcoming/selfless_glyphweaver_deadly_vanity.txt b/forge-gui/res/cardsfolder/upcoming/selfless_glyphweaver_deadly_vanity.txt new file mode 100644 index 00000000000..37719611329 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/selfless_glyphweaver_deadly_vanity.txt @@ -0,0 +1,17 @@ +Name:Selfless Glyphweaver +ManaCost:2 W +Types:Creature Human Cleric +PT:2/3 +A:AB$ PumpAll | Cost$ Exile<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Indestructible | SpellDescription$ Creatures you control gain indestructible until end of turn. +AlternateMode:Modal +Oracle:Exile Selfless Glyphweaver: Creatures you control gain indestructible until end of turn. + +ALTERNATE + +Name:Deadly Vanity +ManaCost:5 B B B +Types:Sorcery +A:SP$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature,Planeswalker | ChoiceTitle$ Choose a creature or planeswalker | Mandatory$ True | ChoiceZone$ Battlefield | SubAbility$ DBDestroyAll | RememberChosen$ True | AILogic$ BestCard | StackDescription$ SpellDescription | SpellDescription$ Choose a creature or planeswalker, +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.IsNotRemembered,Planeswalker.IsNotRemembered | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ then destroy all other creatures and planeswalkers. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Choose a creature or planeswalker, then destroy all other creatures and planeswalkers.