diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 00b37e7cf31..fb562b0e1af 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -2283,10 +2283,8 @@ public class Card extends GameEntity implements Comparable, IHasSVars { if (manifested) { sb.append("Manifested\r\n"); } - sb.append(keywordsToText(getUnhiddenKeywords(state))); - if ((keywordsToText(getUnhiddenKeywords(state))).length() > 0) { - sb.append(linebreak); - } + String keywordText = keywordsToText(getUnhiddenKeywords(state)); + sb.append(keywordText).append(keywordText.length() > 0 ? linebreak : ""); // Process replacement effects first so that "enters the battlefield tapped" // and "as ~ enters the battlefield, choose...", etc can be printed diff --git a/forge-gui/res/cardsfolder/a/ali_from_cairo.txt b/forge-gui/res/cardsfolder/a/ali_from_cairo.txt index 606975bad21..aacf2a9adbc 100644 --- a/forge-gui/res/cardsfolder/a/ali_from_cairo.txt +++ b/forge-gui/res/cardsfolder/a/ali_from_cairo.txt @@ -2,7 +2,7 @@ Name:Ali from Cairo ManaCost:2 R R Types:Creature Human PT:0/1 -R:Event$ LifeReduced | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Damage that would reduce your life total to less than 1 reduces it to 1 instead. +R:Event$ LifeReduced | ActiveZones$ Battlefield | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.1 SVar:YourLife:Count$YourLifeTotal diff --git a/forge-gui/res/cardsfolder/a/angel_of_grace.txt b/forge-gui/res/cardsfolder/a/angel_of_grace.txt index ab3dd9356a0..9170fd03087 100644 --- a/forge-gui/res/cardsfolder/a/angel_of_grace.txt +++ b/forge-gui/res/cardsfolder/a/angel_of_grace.txt @@ -6,7 +6,7 @@ K:Flash K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:TrigEffect:DB$ Effect | Name$ Angel of Grace Effect | ReplacementEffects$ SelflessDamage | Description$ Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. -SVar:SelflessDamage:Event$ LifeReduced | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. +SVar:SelflessDamage:Event$ LifeReduced | ActiveZones$ Command | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.1 SVar:YourLife:Count$YourLifeTotal diff --git a/forge-gui/res/cardsfolder/a/angels_grace.txt b/forge-gui/res/cardsfolder/a/angels_grace.txt index 96c153b0902..2a3016354af 100644 --- a/forge-gui/res/cardsfolder/a/angels_grace.txt +++ b/forge-gui/res/cardsfolder/a/angels_grace.txt @@ -4,7 +4,7 @@ Types:Instant K:Split second A:SP$ Effect | Cost$ W | Name$ Angel's Grace Effect | StaticAbilities$ STCantLose | ReplacementEffects$ SelflessDamage | AILogic$ Fog | SpellDescription$ You can't lose the game this turn and your opponents can't win the game this turn. Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:STCantLose:Mode$ Continuous | Affected$ You | AddKeyword$ You can't lose the game. & Your opponents can't win the game. | Description$ You can't lose the game. Your opponents can't win the game. -SVar:SelflessDamage:Event$ LifeReduced | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. +SVar:SelflessDamage:Event$ LifeReduced | ActiveZones$ Command | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Until end of turn, damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.1 SVar:YourLife:Count$YourLifeTotal diff --git a/forge-gui/res/cardsfolder/e/elderscale_wurm.txt b/forge-gui/res/cardsfolder/e/elderscale_wurm.txt index ce397fbde5a..3df78eb1612 100644 --- a/forge-gui/res/cardsfolder/e/elderscale_wurm.txt +++ b/forge-gui/res/cardsfolder/e/elderscale_wurm.txt @@ -5,7 +5,7 @@ PT:7/7 K:Trample T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigLife | CheckSVar$ ElderscaleCondition | SVarCompare$ LT7 | TriggerDescription$ When CARDNAME enters the battlefield, if your life total is less than 7, your life total becomes 7. SVar:TrigLife:DB$ SetLife | Defined$ You | LifeAmount$ 7 -R:Event$ LifeReduced | ValidPlayer$ You | Result$ LT7 | IsDamage$ True | CheckSVar$ ElderscaleCondition | SVarCompare$ GE7 | ReplaceWith$ ReduceLoss | Description$ As long as you have 7 or more life, damage that would reduce your life total to less than 7 reduces it to 7 instead. +R:Event$ LifeReduced | ActiveZones$ Battlefield | ValidPlayer$ You | Result$ LT7 | IsDamage$ True | CheckSVar$ ElderscaleCondition | SVarCompare$ GE7 | ReplaceWith$ ReduceLoss | Description$ As long as you have 7 or more life, damage that would reduce your life total to less than 7 reduces it to 7 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.7 SVar:ElderscaleCondition:Count$YourLifeTotal diff --git a/forge-gui/res/cardsfolder/f/fortune_thief.txt b/forge-gui/res/cardsfolder/f/fortune_thief.txt index b8508a7c630..a6b915c684f 100644 --- a/forge-gui/res/cardsfolder/f/fortune_thief.txt +++ b/forge-gui/res/cardsfolder/f/fortune_thief.txt @@ -3,7 +3,7 @@ ManaCost:4 R Types:Creature Human Rogue PT:0/1 K:Morph:R R -R:Event$ LifeReduced | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Damage that would reduce your life total to less than 1 reduces it to 1 instead. +R:Event$ LifeReduced | ActiveZones$ Battlefield | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.1 SVar:YourLife:Count$YourLifeTotal diff --git a/forge-gui/res/cardsfolder/r/rowan_scholar_of_sparks_will_scholar_of_frost.txt b/forge-gui/res/cardsfolder/r/rowan_scholar_of_sparks_will_scholar_of_frost.txt index db2e3c7a657..460107f9999 100644 --- a/forge-gui/res/cardsfolder/r/rowan_scholar_of_sparks_will_scholar_of_frost.txt +++ b/forge-gui/res/cardsfolder/r/rowan_scholar_of_sparks_will_scholar_of_frost.txt @@ -21,10 +21,10 @@ Types:Legendary Planeswalker Will Loyalty:4 S:Mode$ ReduceCost | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Instant and sorcery spells you cast cost {1} less to cast. A:AB$ Animate | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select up to one target creature | TargetMin$ 0 | TargetMax$ 1 | Power$ 0 | Toughness$ 2 | Duration$ UntilYourNextTurn | SpellDescription$ Up to one target creature has base power and toughness 0/2 until your next turn. -A:AB$ Draw | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | NumCards$ 3 | SpellDescription$ Draw three cards. +A:AB$ Draw | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | NumCards$ 2 | SpellDescription$ Draw two cards. A:AB$ ChangeZone | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Permanent | TgtPrompt$ Select up to five target permanents | TargetMin$ 0 | TargetMax$ 5 | Origin$ Battlefield | Destination$ Exile | RememberLKI$ True | SubAbility$ DBRepeat | SpellDescription$ Exile up to five target permanents. For each permanent exiled this way, its controller creates a 4/4 blue and red Elemental creature token. SVar:DBRepeat:DB$ RepeatEach | DefinedCards$ DirectRemembered | UseImprinted$ True | RepeatSubAbility$ DBToken | SubAbility$ DBCleanup | ChangeZoneTables$ True SVar:DBToken:DB$ Token | TokenScript$ ur_4_4_elemental | TokenOwner$ ImprintedController SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -DeckHas:Ability$Tokens +DeckHas:Ability$Token Oracle:Instant and sorcery spells you cast cost {1} less to cast.\n[+1]: Up to one target creature has base power and toughness 0/2 until your next turn.\n[−3]: Draw two cards.\n[−7]: Exile up to five target permanents. For each permanent exiled this way, its controller creates a 4/4 blue and red Elemental creature token. diff --git a/forge-gui/res/cardsfolder/s/serra_the_benevolent.txt b/forge-gui/res/cardsfolder/s/serra_the_benevolent.txt index e6d1c2d1db5..e54f936d46d 100644 --- a/forge-gui/res/cardsfolder/s/serra_the_benevolent.txt +++ b/forge-gui/res/cardsfolder/s/serra_the_benevolent.txt @@ -5,7 +5,7 @@ Loyalty:4 A:AB$ PumpAll | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidCards$ Creature.withFlying+YouCtrl | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ Creatures you control with flying get +1/+1 until end of turn. A:AB$ Token | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | TokenScript$ w_4_4_angel_flying_vigilance | TokenOwner$ You | LegacyImage$ w 4 4 angel flying vigilance mh1 | SpellDescription$ Create a 4/4 white Angel creature token with flying and vigilance. A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Name$ Emblem - Serra the Benevolent | Image$ emblem_serra_the_benevolent | ReplacementEffects$ STWorship | Planeswalker$ True | Ultimate$ True | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "If you control a creature, damage that would reduce your life total to less than 1 reduces it to 1 instead." -SVar:STWorship:Event$ LifeReduced | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | IsPresent$ Creature.YouCtrl | ReplaceWith$ ReduceLoss | Description$ If you control a creature, damage that would reduce your life total to less than 1 reduces it to 1 instead. +SVar:STWorship:Event$ LifeReduced | ActiveZones$ Command | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | IsPresent$ Creature.YouCtrl | ReplaceWith$ ReduceLoss | Description$ If you control a creature, damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.1 SVar:YourLife:Count$YourLifeTotal diff --git a/forge-gui/res/cardsfolder/s/stonewise_fortifier.txt b/forge-gui/res/cardsfolder/s/stonewise_fortifier.txt index 4d9176c4618..a11f97678c6 100644 --- a/forge-gui/res/cardsfolder/s/stonewise_fortifier.txt +++ b/forge-gui/res/cardsfolder/s/stonewise_fortifier.txt @@ -3,7 +3,6 @@ ManaCost:1 W Types:Creature Human Wizard PT:2/2 A:AB$ Effect | Cost$ 4 W | ValidTgts$ Creature | RememberObjects$ Targeted | ImprintCards$ Self | ForgetOnMoved$ Battlefield | ReplacementEffects$ RPrevent | Duration$ UntilHostLeavesPlayOrEOT | SpellDescription$ Prevent all damage that would be dealt to CARDNAME by target creature this turn. -SVar:RPrevent:Event$ DamageDone | Prevent$ True | IsCombat$ True | ActiveZones$ Command | ValidTarget$ Card.IsImprinted | ValidSource$ Creature.IsRemembered | Description$ Prevent all damage that would be dealt to CARDNAME by target creature this turn. +SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Card.IsImprinted | ValidSource$ Creature.IsRemembered | Description$ Prevent all damage that would be dealt to CARDNAME by target creature this turn. AI:RemoveDeck:All -SVar:Picture:http://www.wizards.com/global/images/magic/general/stonewise_fortifier.jpg Oracle:{4}{W}: Prevent all damage that would be dealt to Stonewise Fortifier by target creature this turn. diff --git a/forge-gui/res/cardsfolder/s/sustaining_spirit.txt b/forge-gui/res/cardsfolder/s/sustaining_spirit.txt index 4cee48cd900..cbced08a0ff 100644 --- a/forge-gui/res/cardsfolder/s/sustaining_spirit.txt +++ b/forge-gui/res/cardsfolder/s/sustaining_spirit.txt @@ -3,7 +3,7 @@ ManaCost:1 W Types:Creature Angel Spirit PT:0/3 K:Cumulative upkeep:1 W -R:Event$ LifeReduced | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Damage that would reduce your life total to less than 1 reduces it to 1 instead. +R:Event$ LifeReduced | ActiveZones$ Battlefield | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | ReplaceWith$ ReduceLoss | Description$ Damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.1 SVar:YourLife:Count$YourLifeTotal diff --git a/forge-gui/res/cardsfolder/upcoming/kurbis_harvest_celebrant.txt b/forge-gui/res/cardsfolder/upcoming/kurbis_harvest_celebrant.txt index 5c979f3f465..4cccc017486 100644 --- a/forge-gui/res/cardsfolder/upcoming/kurbis_harvest_celebrant.txt +++ b/forge-gui/res/cardsfolder/upcoming/kurbis_harvest_celebrant.txt @@ -3,7 +3,8 @@ ManaCost:X G G Types:Legendary Creature Treefolk PT:0/0 K:etbCounter:P1P1:Y:no Condition:CARDNAME enters the battlefield with a number of +1/+1 counters on it equal to the amount of mana spent to cast it. -A:AB$ Pump | Cost$ SubCounter<1/P1P1/CARDNAME/NICKNAME> | TgtPrompt$ Select another target creature with a +1/+1 counter on it | ValidTgts$ Creature.Other+counters_GE1_P1P1 | KW$ Prevent all damage that would be dealt to CARDNAME. | StackDescription$ Prevent all damage that would be dealt this turn to {c:Targeted}. | SpellDescription$ Prevent all damage that would be dealt this turn to another target creature with a +1/+1 counter on it. +A:AB$ Effect | Cost$ SubCounter<1/P1P1/CARDNAME/NICKNAME> | TgtPrompt$ Select another target creature with a +1/+1 counter on it | ValidTgts$ Creature.Other+counters_GE1_P1P1 | RememberObjects$ Targeted | ReplacementEffects$ RPrevent | StackDescription$ Prevent all damage that would be dealt this turn to {c:Targeted}. | SpellDescription$ Prevent all damage that would be dealt this turn to another target creature with a +1/+1 counter on it. +SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Creature.IsRemembered | Description$ Prevent all damage that would be dealt to this creature this turn. SVar:X:Count$xPaid SVar:Y:Count$CastTotalManaSpent DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/w/worship.txt b/forge-gui/res/cardsfolder/w/worship.txt index 2097e3a96c4..29e901aa74f 100644 --- a/forge-gui/res/cardsfolder/w/worship.txt +++ b/forge-gui/res/cardsfolder/w/worship.txt @@ -1,7 +1,7 @@ Name:Worship ManaCost:3 W Types:Enchantment -R:Event$ LifeReduced | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | IsPresent$ Creature.YouCtrl | ReplaceWith$ ReduceLoss | Description$ If you control a creature, damage that would reduce your life total to less than 1 reduces it to 1 instead. +R:Event$ LifeReduced | ActiveZones$ Battlefield | ValidPlayer$ You | Result$ LT1 | IsDamage$ True | CheckSVar$ YourLife | SVarCompare$ GE1 | IsPresent$ Creature.YouCtrl | ReplaceWith$ ReduceLoss | Description$ If you control a creature, damage that would reduce your life total to less than 1 reduces it to 1 instead. SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ X SVar:X:ReplaceCount$Result/NMinus.1 SVar:YourLife:Count$YourLifeTotal