From f9fd4ddbd7fea1e0d9035dc9dbe1ccd1de804f1b Mon Sep 17 00:00:00 2001 From: Simisays <67333662+Simisays@users.noreply.github.com> Date: Mon, 25 Sep 2023 05:18:19 +0200 Subject: [PATCH] LTC 8 cards 23/09 (#3808) * update * Update minas_morgul_dark_fortress.txt * update * Update mists_of_lorien.txt * Update minas_morgul_dark_fortress.txt * Update gandalf_of_the_secret_fire.txt --- .../main/java/forge/game/ability/AbilityUtils.java | 2 +- .../upcoming/galadriel_light_of_valinor.txt | 13 +++++++++++++ .../cardsfolder/upcoming/galadriels_dismissal.txt | 9 +++++++++ .../upcoming/gandalf_of_the_secret_fire.txt | 12 ++++++++++++ .../cardsfolder/upcoming/gimlis_reckless_might.txt | 12 ++++++++++++ .../res/cardsfolder/upcoming/isengard_unleashed.txt | 11 +++++++++++ .../upcoming/legolass_quick_reflexes.txt | 11 +++++++++++ .../upcoming/minas_morgul_dark_fortress.txt | 10 ++++++++++ .../res/cardsfolder/upcoming/mists_of_lorien.txt | 8 ++++++++ 9 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/galadriel_light_of_valinor.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/galadriels_dismissal.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/gandalf_of_the_secret_fire.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/gimlis_reckless_might.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/isengard_unleashed.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/legolass_quick_reflexes.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/minas_morgul_dark_fortress.txt create mode 100644 forge-gui/res/cardsfolder/upcoming/mists_of_lorien.txt diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 15d9a8c98e8..73c2aa47e7f 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -926,7 +926,7 @@ public class AbilityUtils { if (index >= 0) { char reference = valid.charAt(index + 2); // take whatever goes after EQ if (Character.isLetter(reference)) { - String varName = valid.split(",")[0].split(t)[1].split("\\+")[0]; + String varName = valid.substring(index).split(",")[0].split(t)[1].split("\\+")[0]; if (!sa.getSVar(varName).isEmpty() || source.hasSVar(varName)) { valid = TextUtil.fastReplace(valid, TextUtil.concatNoSpace(t, varName), TextUtil.concatNoSpace(t, Integer.toString(calculateAmount(source, varName, sa)))); diff --git a/forge-gui/res/cardsfolder/upcoming/galadriel_light_of_valinor.txt b/forge-gui/res/cardsfolder/upcoming/galadriel_light_of_valinor.txt new file mode 100644 index 00000000000..abc8637c488 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/galadriel_light_of_valinor.txt @@ -0,0 +1,13 @@ +Name:Galadriel, Light of Valinor +ManaCost:2 G W U +Types:Legendary Creature Elf Noble +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Alliance — Whenever another creature enters the battlefield under your control, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DBRamp,DBPutCounterAll,DBScry | ChoiceRestriction$ ThisTurn | CharmNum$ 1 +SVar:DBRamp:DB$ Mana | Produced$ G | Amount$ 3 | SpellDescription$ Add {G}{G}{G}. +SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on each creature you control. +SVar:DBScry:DB$ Scry | ScryNum$ 2 | SubAbility$ DBDraw | SpellDescription$ Scry 2, then draw a card. +SVar:DBDraw:DB$ Draw | NumCards$ 1 +SVar:BuffedBy:Creature +DeckHas:Ability$Counters +Oracle:Alliance — Whenever another creature enters the battlefield under your control, choose one that hasn't been chosen this turn —\n• Add {G}{G}{G}.\n• Put a +1/+1 counter on each creature you control.\n• Scry 2, then draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/galadriels_dismissal.txt b/forge-gui/res/cardsfolder/upcoming/galadriels_dismissal.txt new file mode 100644 index 00000000000..9d5e0a50a71 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/galadriels_dismissal.txt @@ -0,0 +1,9 @@ +Name:Galadriel's Dismissal +ManaCost:W +Types:Instant +K:Kicker:2 W +A:SP$ Phases | ValidTgts$ Creature | TargetMin$ X | TargetMax$ X | IsCurse$ True | SubAbility$ DBPhaseOutAll | SpellDescription$ Target creature phases out. If this spell was kicked, each creature target player controls phases out instead. (Treat phased-out creatures and anything attached to them as though they don't exist until their controller's next turn.) +SVar:DBPhaseOutAll:DB$ Phases | ValidTgts$ Player | TargetMin$ Y | TargetMax$ Y | AllValid$ Creature.TargetedPlayerCtrl | Condition$ Kicked +SVar:X:Count$Kicked.0.1 +SVar:Y:Count$Kicked.1.0 +Oracle:Kicker {2}{W} (You may pay an additional {2}{W} as you cast this spell.)\nTarget creature phases out. If this spell was kicked, each creature target player controls phases out instead. (Treat phased-out creatures and anything attached to them as though they don't exist until their controller's next turn.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/gandalf_of_the_secret_fire.txt b/forge-gui/res/cardsfolder/upcoming/gandalf_of_the_secret_fire.txt new file mode 100644 index 00000000000..49b9cd1d0ab --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gandalf_of_the_secret_fire.txt @@ -0,0 +1,12 @@ +Name:Gandalf of the Secret Fire +ManaCost:1 U R W +Types:Legendary Creature Avatar Wizard +PT:3/4 +T:Mode$ SpellCast | ValidCard$ Card.wasCastFromYourHandByYou | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | OpponentTurn$ True | Execute$ TrigEffect | TriggerDescription$ Whenever you cast an instant or sorcery spell from your hand during an opponent's turn, exile that card with three time counters on it instead of putting it into your graveyard as it resolves. Then if the exiled card doesn't have suspend, it gains suspend. (At the beginning of your upkeep, remove a time counter from that card. When the last is removed, play it without paying its mana cost.) +SVar:TrigEffect:DB$ Effect | ReplacementEffects$ MoveToExileReplace | RememberObjects$ TriggeredCard | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.inZoneStack | ExileOnMoved$ Stack +SVar:MoveToExileReplace:Event$ Moved | ValidCard$ Card.IsRemembered+YouOwn | Origin$ Stack | Destination$ Graveyard | Fizzle$ False | ReplaceWith$ ReplaceExile +SVar:ReplaceExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile | RememberChanged$ True | WithCountersType$ TIME | WithCountersAmount$ 3 | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ Remembered | ConditionDefined$ Remembered | ConditionPresent$ Card.withoutSuspend | PumpZone$ Exile | KW$ Suspend | Duration$ Permanent | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHints:Type$Instant +Oracle:Whenever you cast an instant or sorcery spell from your hand during an opponent's turn, exile that card with three time counters on it instead of putting it into your graveyard as it resolves. Then if the exiled card doesn't have suspend, it gains suspend. (At the beginning of your upkeep, remove a time counter from that card. When the last is removed, play it without paying its mana cost.) diff --git a/forge-gui/res/cardsfolder/upcoming/gimlis_reckless_might.txt b/forge-gui/res/cardsfolder/upcoming/gimlis_reckless_might.txt new file mode 100644 index 00000000000..644e0f3dfcb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gimlis_reckless_might.txt @@ -0,0 +1,12 @@ +Name:Gimli's Reckless Might +ManaCost:3 R +Types:Enchantment +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddKeyword$ Haste | Description$ Creatures you control have haste. +T:Mode$ AttackersDeclared | AttackingPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE8 | Execute$ TrigFight | TriggerDescription$ Formidable — Whenever you attack, if creatures you control have total power 8 or greater, target attacking creature you control fights up to one target creature you don't control. +SVar:TrigFight:DB$ Pump | ValidTgts$ Creature.YouCtrl+attacking | AILogic$ Fight | TgtPrompt$ Select target attacking creature you control | SubAbility$ DBFight +SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature you don't control +SVar:X:Count$SumPower_Creature.YouCtrl +SVar:BuffedBy:Creature +SVar:NonStackingEffect:True +SVar:PlayMain1:TRUE +Oracle:Creatures you control have haste.\nFormidable — Whenever you attack, if creatures you control have total power 8 or greater, target attacking creature you control fights up to one target creature you don't control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/isengard_unleashed.txt b/forge-gui/res/cardsfolder/upcoming/isengard_unleashed.txt new file mode 100644 index 00000000000..a499e6945de --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/isengard_unleashed.txt @@ -0,0 +1,11 @@ +Name:Isengard Unleashed +ManaCost:2 R R R +Types:Sorcery +A:SP$ Effect | ReplacementEffects$ DamageEvent | StaticAbilities$ STCantPrevent | SpellDescription$ Damage can't be prevented this turn. If a source you control would deal damage this turn to an opponent or a permanent an opponent controls, it deals triple that damage instead. +SVar:STCantPrevent:Mode$ CantPreventDamage | EffectZone$ Command | Description$ Damage can't be prevented this turn. +SVar:DamageEvent:Event$ DamageDone | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Permanent.OppCtrl,Opponent | ReplaceWith$ DmgTrice | Description$ If a source you control would deal damage this turn to an opponent or a permanent an opponent controls, it deals triple that damage instead. +SVar:DmgTrice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X +SVar:X:ReplaceCount$DamageAmount/Thrice +SVar:PlayMain1:TRUE +K:Flashback:4 R R R +Oracle:Damage can't be prevented this turn. If a source you control would deal damage this turn to an opponent or a permanent an opponent controls, it deals triple that damage instead.\nFlashback {4}{R}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/legolass_quick_reflexes.txt b/forge-gui/res/cardsfolder/upcoming/legolass_quick_reflexes.txt new file mode 100644 index 00000000000..face7812cfd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/legolass_quick_reflexes.txt @@ -0,0 +1,11 @@ +Name:Legolas's Quick Reflexes +ManaCost:G +Types:Instant +K:Split Second +A:SP$ Untap | ValidTgts$ Creature | SubAbility$ DBEffect | SpellDescription$ Untap target creature. Until end of turn, it gains hexproof, reach, and "Whenever this creature becomes tapped, it deals damage equal to its power to up to one target creature." +SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | StaticAbilities$ PumpStatic +SVar:PumpStatic:Mode$ Continuous | AddKeyword$ Hexproof & Reach | AddTrigger$ BecomesTapped | Affected$ Card.IsRemembered | EffectZone$ Command | Description$ Until end of turn, it gains hexproof, reach, and "Whenever this creature becomes tapped, it deals damage equal to its power to up to one target creature.”" +SVar:BecomesTapped:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigFight | TriggerDescription$ Whenever this creature becomes tapped, it deals damage equal to its power to up to one target creature +SVar:TrigFight:DB$ DealDamage | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | AILogic$ PowerDmg | NumDmg$ X | DamageSource$ Self +SVar:X:Count$CardPower +Oracle:Split second (As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)\nUntap target creature. Until end of turn, it gains hexproof, reach, and "Whenever this creature becomes tapped, it deals damage equal to its power to up to one target creature." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/minas_morgul_dark_fortress.txt b/forge-gui/res/cardsfolder/upcoming/minas_morgul_dark_fortress.txt new file mode 100644 index 00000000000..b13dae6e487 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/minas_morgul_dark_fortress.txt @@ -0,0 +1,10 @@ +Name:Minas Morgul, Dark Fortress +ManaCost:no cost +Types:Legendary Land +K:CARDNAME enters the battlefield tapped. +A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}. +A:AB$ PutCounter | Cost$ 3 B T | ValidTgts$ Creature | CounterType$ Shadow | CounterNum$ 1 | SubAbility$ DBEffect | SpellDescription$ Put a shadow counter on target creature. For as long as that creature has a shadow counter on it, it’s a Wraith in addition to its other types. (A creature with shadow can block or be blocked by only creatures with shadow.) +SVar:DBEffect:DB$ Effect | RememberObjects$ Targeted | StaticAbilities$ ShadowStatic | ForgetOnMoved$ Battlefield | ForgetCounter$ Shadow | Duration$ Permanent +SVar:ShadowStatic:Mode$ Continuous | Affected$ Card.IsRemembered | AddType$ Wraith | Description$ For as long as this creature has a shadow counter on it, it's a Wraith in addition to its other types. +DeckHas:Ability$Counters & Type$Wraith +Oracle:Minas Morgul, Dark Fortress enters the battlefield tapped.\n{T}: Add {B}.\n{3}{B}, {T}: Put a shadow counter on target creature. For as long as that creature has a shadow counter on it, it's a Wraith in addition to its other types. (A creature with shadow can block or be blocked by only creatures with shadow.) diff --git a/forge-gui/res/cardsfolder/upcoming/mists_of_lorien.txt b/forge-gui/res/cardsfolder/upcoming/mists_of_lorien.txt new file mode 100644 index 00000000000..7a63e3171b5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mists_of_lorien.txt @@ -0,0 +1,8 @@ +Name:Mists of Lorien +ManaCost:2 U +Types:Sorcery +K:Replicate:U +A:SP$ Pump | ValidTgts$ Permanent.nonLand | StackDescription$ REP target nonland permanent_{c:Targeted} | TgtPrompt$ Select target nonland permanent | SubAbility$ DBChangeZoneAll | SpellDescription$ Return target nonland permanent and each other nonland permanent with the same mana value as that permanent to their owners' hands. +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Hand | ChangeType$ TargetedCard.Self,Permanent.nonLand+NotDefinedTargeted+cmcEQX +SVar:X:Targeted$CardManaCost +Oracle:Replicate {U} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nReturn target nonland permanent and each other nonland permanent with the same mana value as that permanent to their owners' hands. \ No newline at end of file