diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index 07bba7e3c09..a8c1b86d9f3 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -305,8 +305,8 @@ public class ComputerUtil { final CostPayment pay = new CostPayment(newSA.getPayCosts(), newSA); // do this after card got added to stack - if (!sa.checkRestrictions(ai)) { - GameActionUtil.rollbackAbility(sa, fromZone, zonePosition, pay, source); + if (!newSA.checkRestrictions(ai)) { + GameActionUtil.rollbackAbility(newSA, fromZone, zonePosition, pay, source); return false; } @@ -1280,7 +1280,6 @@ public class ComputerUtil { if (cardState.hasKeyword(Keyword.SOULBOND) && buffedcard.isCreature() && !buffedcard.isPaired()) { return true; } - } // BuffedBy // there's a good chance AI will attack weak target diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java index 804c41d5b4c..d424a29c633 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java @@ -122,7 +122,6 @@ public class CountersPutAllEffect extends SpellAbilityEffect { if (sa.hasParam("RememberCards")) { // remembers whether counters actually placed or not host.addRemembered(table.columnKeySet()); } - } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index cebe69b9463..4f3b23c4a97 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -90,7 +90,7 @@ public class CountersPutEffect extends SpellAbilityEffect { } // skip the StringBuilder if no targets are chosen ("up to" scenario) if (sa.usesTargeting()) { - final List targetCards = SpellAbilityEffect.getTargetCards(sa); + final List targetCards = getTargetCards(sa); if (targetCards.size() == 0) { return stringBuilder.toString(); } @@ -132,7 +132,7 @@ public class CountersPutEffect extends SpellAbilityEffect { } // if use targeting we show all targets and corresponding counters } else if (sa.usesTargeting()) { - final List targetCards = SpellAbilityEffect.getTargetCards(sa); + final List targetCards = getTargetCards(sa); for (int i = 0; i < targetCards.size(); i++) { Card targetCard = targetCards.get(i); stringBuilder.append(targetCard); @@ -151,7 +151,7 @@ public class CountersPutEffect extends SpellAbilityEffect { String what = sa.getParamOrDefault("ChoicesDesc", sa.getParam("Choices")); stringBuilder.append(Lang.nounWithNumeralExceptOne(n, what)); } else { - final List targetCards = SpellAbilityEffect.getTargetCards(sa); + final List targetCards = getTargetCards(sa); final Iterator it = targetCards.iterator(); while (it.hasNext()) { final Card targetCard = it.next(); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 5c76ce379f7..cd9514dd5ac 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -2469,7 +2469,7 @@ public class CardFactoryUtil { String repeffstr = "Event$ Destroy | ActiveZones$ Battlefield | ValidCard$ Card.EnchantedBy | Secondary$ True" + " | Description$ Umbra armor (" + inst.getReminderText() + ")"; - String abprevDamage = "DB$ DealDamage | Defined$ ReplacedCard | Remove$ All "; + String abprevDamage = "DB$ DealDamage | Defined$ ReplacedCard | Remove$ All"; String abdestroy = "DB$ Destroy | Defined$ Self"; SpellAbility sa = AbilityFactory.getAbility(abprevDamage, card); diff --git a/forge-gui/res/cardsfolder/a/abundant_maw.txt b/forge-gui/res/cardsfolder/a/abundant_maw.txt index 39aa5fa1aa8..7277c09064b 100644 --- a/forge-gui/res/cardsfolder/a/abundant_maw.txt +++ b/forge-gui/res/cardsfolder/a/abundant_maw.txt @@ -3,7 +3,7 @@ ManaCost:8 Types:Creature Eldrazi Leech PT:6/4 K:Emerge:6 B -T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ When you cast CARDNAME, target opponent loses 3 life and you gain 3 life. +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ When you cast this spell, target opponent loses 3 life and you gain 3 life. SVar:TrigDrain:DB$ LoseLife | ValidTgts$ Opponent | LifeAmount$ 3 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 Oracle:Emerge {6}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's mana value.)\nWhen you cast this spell, target opponent loses 3 life and you gain 3 life. diff --git a/forge-gui/res/cardsfolder/c/conquering_manticore.txt b/forge-gui/res/cardsfolder/c/conquering_manticore.txt index 6d6ed679162..8c804f9dd7b 100644 --- a/forge-gui/res/cardsfolder/c/conquering_manticore.txt +++ b/forge-gui/res/cardsfolder/c/conquering_manticore.txt @@ -4,6 +4,6 @@ Types:Creature Manticore PT:5/5 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. -SVar:TrigChange:DB$ GainControl | TgtPrompt$ Choose target creature you don't control | ValidTgts$ Creature.OppCtrl | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. +SVar:TrigChange:DB$ GainControl | TgtPrompt$ Choose target creature an opponent controls | ValidTgts$ Creature.OppCtrl | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. SVar:PlayMain1:OPPONENTCREATURES Oracle:Flying\nWhen Conquering Manticore enters the battlefield, gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/f/fleshbag_marauder.txt b/forge-gui/res/cardsfolder/f/fleshbag_marauder.txt index 0637204ab7d..96c81107378 100644 --- a/forge-gui/res/cardsfolder/f/fleshbag_marauder.txt +++ b/forge-gui/res/cardsfolder/f/fleshbag_marauder.txt @@ -4,5 +4,5 @@ Types:Creature Zombie Warrior PT:3/1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME enters the battlefield, each player sacrifices a creature. SVar:TrigSac:DB$ Sacrifice | Defined$ Player | SacValid$ Creature -SVar:NeedsToPlay:Creature.YouDontCtrl +SVar:NeedsToPlay:Creature.OppCtrl Oracle:When Fleshbag Marauder enters the battlefield, each player sacrifices a creature. diff --git a/forge-gui/res/cardsfolder/g/gilraen_dunedain_protector.txt b/forge-gui/res/cardsfolder/g/gilraen_dunedain_protector.txt index dd4e1baa7b7..072aea31cda 100644 --- a/forge-gui/res/cardsfolder/g/gilraen_dunedain_protector.txt +++ b/forge-gui/res/cardsfolder/g/gilraen_dunedain_protector.txt @@ -2,9 +2,9 @@ Name:Gilraen, Dúnedain Protector ManaCost:2 W Types:Legendary Creature Human Noble PT:2/3 -A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Creature.Other+YouCtrl | Origin$ Battlefield | Destination$ Exile | TgtPrompt$ Select another target creature you control | SubAbility$ DBReturn | SpellDescription$ Exile another target creature you control. You may return that card to the battlefield under its owner's control. If you don't, at the beginning of the next end step, return that card to the battlefield under its owner's control with a vigilance counter and a lifelink counter on it. -SVar:DBReturn:DB$ ChangeZone | Defined$ Targeted | Origin$ All | Optional$ True | RememberChanged$ True | Destination$ Battlefield | SubAbility$ DBDelayedTrigger -SVar:DBDelayedTrigger:DB$ DelayedTrigger | RememberObjects$ Targeted | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | Mode$ Phase | Phase$ End Of Turn | Execute$ TrigReturn | SubAbility$ DBCleanup | SpellDescription$ If you don't, at the beginning of the next end step, return that card to the battlefield under its owner's control with a vigilance counter and a lifelink counter on it. +A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Creature.Other+YouCtrl | RememberChanged$ True | Origin$ Battlefield | Destination$ Exile | TgtPrompt$ Select another target creature you control | SubAbility$ DBReturn | SpellDescription$ Exile another target creature you control. You may return that card to the battlefield under its owner's control. If you don't, at the beginning of the next end step, return that card to the battlefield under its owner's control with a vigilance counter and a lifelink counter on it. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ All | Optional$ True | ForgetChanged$ True | Destination$ Battlefield | SubAbility$ DBDelayedTrigger +SVar:DBDelayedTrigger:DB$ DelayedTrigger | RememberObjects$ Remembered | ConditionDefined$ Remembered | ConditionPresent$ Card | Mode$ Phase | Phase$ End Of Turn | Execute$ TrigReturn | SubAbility$ DBCleanup | SpellDescription$ If you don't, at the beginning of the next end step, return that card to the battlefield under its owner's control with a vigilance counter and a lifelink counter on it. SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRemembered | Origin$ Exile | Destination$ Battlefield | AnimateSubAbility$ DBConditionEffect SVar:DBConditionEffect:DB$ Effect | RememberObjects$ RememberedLKI | ReplacementEffects$ ETBCounters SVar:ETBCounters:Event$ Moved | ReplacementResult$ Updated | Destination$ Battlefield | ValidCard$ Card.IsRemembered | ReplaceWith$ AddExtraCounter | Description$ return that card to the battlefield under its owner's control with a vigilance counter and a lifelink counter on it. diff --git a/forge-gui/res/cardsfolder/m/mnemonic_betrayal.txt b/forge-gui/res/cardsfolder/m/mnemonic_betrayal.txt index 474af62c165..9261a794da8 100644 --- a/forge-gui/res/cardsfolder/m/mnemonic_betrayal.txt +++ b/forge-gui/res/cardsfolder/m/mnemonic_betrayal.txt @@ -4,7 +4,7 @@ Types:Sorcery A:SP$ ChangeZoneAll | Defined$ Player.Opponent | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile all card from all opponents' graveyards. You may cast those cards this turn, and you may spend it as though it were mana of any type to cast those spells. At the beginning of the next end step, if any of those cards remain exiled, return them to their owner's graveyards. Exile CARDNAME. SVar:DBEffect:DB$ Effect | Duration$ Permanent | StaticAbilities$ STPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | SubAbility$ DelTrig SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreType$ True | EffectZone$ Command | Affected$ Card.nonLand+IsRemembered | AffectedZone$ Exile | Description$ You may cast those cards this turn, and you may spend mana as though it were mana of any type to cast those spells. -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ RememberedLKI | TriggerDescription$ At the beginning of the next end step, if any of those cards remain exiled, return them to their owner's graveyards. | SubAbility$ ExileSelf +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturn | RememberObjects$ RememberedLKI | IsPresent$ Card.IsTriggerRemembered | PresentZone$ Exile | TriggerDescription$ At the beginning of the next end step, if any of those cards remain exiled, return them to their owner's graveyards. | SubAbility$ ExileSelf SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Exile | Destination$ Graveyard SVar:ExileSelf:DB$ ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Exile Oracle:Exile all cards from all opponents' graveyards. You may cast spells from among those cards this turn, and you may spend mana as though it were mana of any type to cast those spells. At the beginning of the next end step, if any of those cards remain exiled, return them to their owners' graveyards.\nExile Mnemonic Betrayal. diff --git a/forge-gui/res/cardsfolder/upcoming/arcbound_marauder.txt b/forge-gui/res/cardsfolder/upcoming/arcbound_condor.txt similarity index 98% rename from forge-gui/res/cardsfolder/upcoming/arcbound_marauder.txt rename to forge-gui/res/cardsfolder/upcoming/arcbound_condor.txt index f54f07a11b3..bfa6d6a7e91 100644 --- a/forge-gui/res/cardsfolder/upcoming/arcbound_marauder.txt +++ b/forge-gui/res/cardsfolder/upcoming/arcbound_condor.txt @@ -1,11 +1,11 @@ -Name:Arcbound Condor -ManaCost:2 B B -Types:Artifact Creature Bird -PT:0/0 -K:Flying -K:Modular:3 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Artifact.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever another artifact enters the battlefield under your control, target creature an opponent controls gets -1/-1 until end of turn. -SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True -DeckHas:Ability$Counters -DeckNeeds:Type$Artifact -Oracle:Flying\nModular 3 (This creature enters the battlefield with three +1/+1 counters on it. When it dies, you may put its +1/+1 counters on target artifact creature.)\nWhenever another artifact enters the battlefield under your control, target creature an opponent controls gets -1/-1 until end of turn. +Name:Arcbound Condor +ManaCost:2 B B +Types:Artifact Creature Bird +PT:0/0 +K:Flying +K:Modular:3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Artifact.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever another artifact enters the battlefield under your control, target creature an opponent controls gets -1/-1 until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True +DeckHas:Ability$Counters +DeckNeeds:Type$Artifact +Oracle:Flying\nModular 3 (This creature enters the battlefield with three +1/+1 counters on it. When it dies, you may put its +1/+1 counters on target artifact creature.)\nWhenever another artifact enters the battlefield under your control, target creature an opponent controls gets -1/-1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/fell_the_profane_fell_mire.txt b/forge-gui/res/cardsfolder/upcoming/fell_the_profane_fell_mire.txt index 1a3a641a9b0..2ed14824fe9 100644 --- a/forge-gui/res/cardsfolder/upcoming/fell_the_profane_fell_mire.txt +++ b/forge-gui/res/cardsfolder/upcoming/fell_the_profane_fell_mire.txt @@ -13,4 +13,4 @@ Types:Land K:ETBReplacement:Other:DBTap SVar:DBTap:DB$ Tap | ETB$ True | Defined$ Self | UnlessCost$ PayLife<3> | UnlessPayer$ You | StackDescription$ enters the battlefield tapped. | SpellDescription$ As CARDNAME enters the battlefield, you may pay 3 life. If you don't, it enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}. -Oracle:As Fell Mire enters the battlefield, you may pay 3 life. If you don't, it enters the battlefield tapped.\n{T}: Add {G}. +Oracle:As Fell Mire enters the battlefield, you may pay 3 life. If you don't, it enters the battlefield tapped.\n{T}: Add {B}. diff --git a/forge-gui/res/cardsfolder/upcoming/legion_leadership_legion_stronghold.txt b/forge-gui/res/cardsfolder/upcoming/legion_leadership_legion_stronghold.txt index ef84c329361..18861e5d3c3 100644 --- a/forge-gui/res/cardsfolder/upcoming/legion_leadership_legion_stronghold.txt +++ b/forge-gui/res/cardsfolder/upcoming/legion_leadership_legion_stronghold.txt @@ -1,5 +1,5 @@ Name:Legion Leadership -ManaCost:1 BW +ManaCost:1 RW Types:Instant A:SP$ Pump | ValidTgts$ Creature | NumAtt$ Double | KW$ First Strike | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ Until end of turn, double target creature's power and it gains first strike. Oracle:Until end of turn, double target creature’s power and it gains first strike.