Merge branch 'Card-Forge:master' into master

This commit is contained in:
schnautzr
2023-06-15 20:45:37 -05:00
committed by GitHub
24 changed files with 181 additions and 5 deletions

View File

@@ -275,7 +275,7 @@ public abstract class GameEntity extends GameObject implements IIdentifiable {
tgt = sa.getTargetRestrictions(); tgt = sa.getTargetRestrictions();
} }
return !((tgt != null) && !isValid(tgt.getValidTgts(), aura.getController(), aura, sa)); return tgt != null && isValid(tgt.getValidTgts(), aura.getController(), aura, sa);
} }
// Counters! // Counters!

View File

@@ -1450,7 +1450,11 @@ public class AbilityUtils {
// Needed - Equip an untapped creature with Sword of the Paruns then cast Deadshot on it. Should deal 2 more damage. // Needed - Equip an untapped creature with Sword of the Paruns then cast Deadshot on it. Should deal 2 more damage.
game.getAction().checkStaticAbilities(); // this will refresh continuous abilities for players and permanents. game.getAction().checkStaticAbilities(); // this will refresh continuous abilities for players and permanents.
game.getTriggerHandler().collectTriggerForWaiting(); if (sa.isReplacementAbility()) {
game.getTriggerHandler().collectTriggerForWaiting();
} else {
game.getTriggerHandler().resetActiveTriggers();
}
AbilityUtils.resolveApiAbility(abSub, game); AbilityUtils.resolveApiAbility(abSub, game);
} }

View File

@@ -6340,7 +6340,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
return isValid(tgt.getValidTgts(), aura.getController(), aura, sa); return isValid(tgt.getValidTgts(), aura.getController(), aura, sa);
} }
return true; return false;
} }
@Override @Override

View File

@@ -5,8 +5,8 @@ PT:12/12
K:ETBReplacement:Other:LandTapped K:ETBReplacement:Other:LandTapped
SVar:LandTapped:DB$ Tap | Defined$ Self | SubAbility$ DBAddCounter | ETB$ True | SpellDescription$ CARDNAME enters the battlefield tapped with five slumber counters on it. SVar:LandTapped:DB$ Tap | Defined$ Self | SubAbility$ DBAddCounter | ETB$ True | SpellDescription$ CARDNAME enters the battlefield tapped with five slumber counters on it.
SVar:DBAddCounter:DB$ PutCounter | Defined$ Self | ETB$ True | CounterType$ SLUMBER | CounterNum$ 5 SVar:DBAddCounter:DB$ PutCounter | Defined$ Self | ETB$ True | CounterType$ SLUMBER | CounterNum$ 5
S:Mode$ Continuous | Affected$ Card.Self+counters_GE1_SLUMBER | AddType$ Land | RemoveCardTypes$ True | Description$ As long as CARDNAME has a slumber counter on it, it's a land. (It's not a creature.) S:Mode$ Continuous | Affected$ Card.Self+counters_GE1_SLUMBER | AddType$ Land | RemoveCardTypes$ True | Description$ As long as NICKNAME has a slumber counter on it, it's a land. (It's not a creature.)
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | Execute$ TrigRemoveCounter | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever you cast a spell, you may remove a slumber counter from CARDNAME. T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | Execute$ TrigRemoveCounter | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever you cast a spell, you may remove a slumber counter from NICKNAME.
SVar:TrigRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ SLUMBER | CounterNum$ 1 | AILogic$ Always SVar:TrigRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ SLUMBER | CounterNum$ 1 | AILogic$ Always
A:AB$ Mana | Cost$ T | Produced$ G U | SpellDescription$ Add {G}{U}. A:AB$ Mana | Cost$ T | Produced$ G U | SpellDescription$ Add {G}{U}.
Oracle:Arixmethes, Slumbering Isle enters the battlefield tapped with five slumber counters on it.\nAs long as Arixmethes has a slumber counter on it, it's a land. (It's not a creature.)\nWhenever you cast a spell, you may remove a slumber counter from Arixmethes.\n{T}: Add {G}{U}. Oracle:Arixmethes, Slumbering Isle enters the battlefield tapped with five slumber counters on it.\nAs long as Arixmethes has a slumber counter on it, it's a land. (It's not a creature.)\nWhenever you cast a spell, you may remove a slumber counter from Arixmethes.\n{T}: Add {G}{U}.

View File

@@ -0,0 +1,8 @@
Name:Elven Farsight
ManaCost:G
Types:Sorcery
A:SP$ Scry | ScryNum$ 3 | SubAbility$ DBPeekAndReveal | SpellDescription$ Scry 3, then you may reveal the top card of your library. If it's a creature card, draw a card.
SVar:DBPeekAndReveal:DB$ PeekAndReveal | RevealOptional$ True | NoPeek$ True | RememberRevealed$ True | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:Scry 3, then you may reveal the top card of your library. If it's a creature card, draw a card.

View File

@@ -0,0 +1,7 @@
Name:Ent-Draught Basin
ManaCost:2
Types:Artifact
A:AB$ PutCounter | Cost$ X | CounterType$ P1P1 | ValidTgts$ Creature.powerEQX | TgtPrompt$ Select target creature with power X | CounterNum$ 1 | SorcerySpeed$ True | SpellDescription$ Put a +1/+1 counter on target creature with power X. Activate only as a sorcery.
SVar:X:Count$xPaid
DeckHas:Ability$Counters
Oracle:{X}, {T}: Put a +1/+1 counter on target creature with power X. Activate only as a sorcery.

View File

@@ -0,0 +1,10 @@
Name:Entish Restoration
ManaCost:2 G
Types:Instant
A:SP$ Sacrifice | Defined$ You | SacValid$ Land | SubAbility$ DBChangeZone | SpellDescription$ Sacrifice a land. Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. If you control a creature with power 4 or greater, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle.
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ X | Tapped$ True
SVar:AIPreference:SacCost$Land.Basic+tapped
SVar:X:Count$Compare Y GE1.3.2
SVar:Y:Count$Valid Creature.YouCtrl+powerGE4
DeckHas:Ability$Sacrifice
Oracle:Sacrifice a land. Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. If you control a creature with power 4 or greater, instead search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle.

View File

@@ -0,0 +1,10 @@
Name:Eomer of the Riddermark
ManaCost:4 R
Types:Legendary Creature Human Knight
PT:5/4
K:Haste
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | IsPresent$ Creature.greatestPower+YouCtrl | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, if you control a creature with the greatest power among creatures on the battlefield, create a 1/1 white Human Soldier creature token.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_human_soldier | TokenOwner$ You
DeckHas:Ability$Token & Type$Soldier
SVar:HasAttackEffect:TRUE
Oracle:Haste\nWhenever Eomer of the Riddermark attacks, if you control a creature with the greatest power among creatures on the battlefield, create a 1/1 white Human Soldier creature token.

View File

@@ -0,0 +1,13 @@
Name:Eowyn, Lady of Rohan
ManaCost:2 W
Types:Legendary Creature Human Noble
PT:2/4
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of combat on your turn, target creature gains your choice of first strike or vigilance until end of turn. If that creature is equipped, it gains first strike and vigilance until end of turn instead.
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | SubAbility$ DBBranch
SVar:DBBranch:DB$ Branch | BranchConditionSVar$ X | BranchConditionSVarCompare$ EQ1 | TrueSubAbility$ Equipped | FalseSubAbility$ NotEquipped
SVar:Equipped:DB$ Pump | Defined$ Targeted | KW$ First Strike & Vigilance
SVar:NotEquipped:DB$ Pump | KWChoice$ First Strike,Vigilance | Defined$ Targeted
SVar:X:Targeted$Valid Card.equipped
S:Mode$ ReduceCost | ValidCard$ Card | ValidSpell$ Activated.Equip | Activator$ You | Amount$ 1 | Description$ Equip abilities you activate cost {1} less to activate.
DeckHints:Type$Equipment
Oracle:At the beginning of combat on your turn, target creature gains your choice of first strike or vigilance until end of turn. If that creature is equipped, it gains first strike and vigilance until end of turn instead.\nEquip abilities you activate cost {1} less to activate.

View File

@@ -0,0 +1,8 @@
Name:Erebor Flamesmith
ManaCost:1 R
Types:Creature Dwarf Artificer
PT:2/1
T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME deals 1 damage to each opponent.
SVar:TrigDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 1
DeckHints:Type$Instant|Sorcery
Oracle:Whenever you cast an instant or sorcery spell, Erebor Flamesmith deals 1 damage to each opponent.

View File

@@ -0,0 +1,9 @@
Name:Errand-Rider of Gondor
ManaCost:2 W
Types:Creature Human Soldier
PT:3/2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. Then if you don't control a legendary creature, put a card from your hand on the bottom of your library.
SVar:TrigDraw:DB$ Draw | SubAbility$ DBChangeZone
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Library | ChangeNum$ 1 | Mandatory$ True | LibraryPosition$ -1 | ConditionPresent$ Creature.Legendary+YouCtrl | ConditionCompare$ EQ0
DeckHints:Type$Legendary & Type$Creature
Oracle:When Errand-Rider of Gondor enters the battlefield, draw a card. Then if you don't control a legendary creature, put a card from your hand on the bottom of your library.

View File

@@ -0,0 +1,6 @@
Name:Escape from Orthanc
ManaCost:2 W
Types:Instant
A:SP$ Pump | ValidTgts$ Creature | NumAtt$ 1 | NumDef$ 3 | KW$ Flying | SubAbility$ DBUntap | SpellDescription$ Target creature gets +1/+3 and gains flying until end of turn. Untap it.
SVar:DBUntap:DB$ Untap | Defined$ Targeted
Oracle:Target creature gets +1/+3 and gains flying until end of turn. Untap it.

View File

@@ -0,0 +1,10 @@
Name:Esquire of the King
ManaCost:W
Types:Creature Human Soldier
PT:1/1
K:Flying
A:AB$ PumpAll | NumAtt$ +1 | NumDef$ +1 | Cost$ 4 W T | ValidCards$ Creature.YouCtrl | ReduceCost$ X | SpellDescription$ Creatures you control get +1/+1 until end of turn. This ability costs {2} less to activate if you control a legendary creature.
SVar:X:Count$Compare Y GE1.2.0
SVar:Y:Count$Valid Creature.Legendary+YouCtrl
DeckHints:Type$Legendary & Type$Creature
Oracle:{4}{W}, {T}: Creatures you control get +1/+1 until end of turn. This ability costs {2} less to activate if you control a legendary creature.

View File

@@ -0,0 +1,9 @@
Name:Fall of Cair Andros
ManaCost:2 R
Types:Enchantment
T:Mode$ ExcessDamage | ValidTarget$ Creature.OppCtrl | CombatDamage$ False | TriggerZones$ Battlefield | Execute$ TrigAmass | TriggerDescription$ Whenever a creature an opponent controls is dealt excess noncombat damage, amass Orcs X, where X is that excess damage. (Put X +1/+1 counters on an Army you control. It's also an Orc. If you don't control an Army, create a 0/0 black Orc Army creature token first.)
SVar:TrigAmass:DB$ Amass | Type$ Orc | Num$ X
SVar:X:TriggerCount$DamageAmount
A:AB$ DealDamage | Cost$ 7 R | ValidTgts$ Creature | NumDmg$ 7 | SpellDescription$ CARDNAME deals 7 damage to target creature.
DeckHas:Ability$Token|Counters & Type$Orc|Army
Oracle:Whenever a creature an opponent controls is dealt excess noncombat damage, amass Orcs X, where X is that excess damage. (Put X +1/+1 counters on an Army you control. It's also an Orc. If you don't control an Army, create a 0/0 black Orc Army creature token first.)\n{7}{R}: Fall of Cair Andros deals 7 damage to target creature.

View File

@@ -0,0 +1,8 @@
Name:Grey Havens Navigator
ManaCost:2 U
Types:Creature Elf Pilot
PT:3/2
K:Flash
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When CARDNAME enters the battlefield, scry 1.
SVar:TrigScry:DB$ Scry | ScryNum$ 1
Oracle:Flash\nWhen Grey Havens Navigator enters the battlefield, scry 1.

View File

@@ -0,0 +1,9 @@
Name:Haradrim Spearmaster
ManaCost:2 R
Types:Creature Human Warrior
PT:2/3
K:Reach
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, another target creature you control gets +1/+0 until end of turn.
SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select another target creature you control | NumAtt$ 1
SVar:PlayMain1:TRUE
Oracle:Reach\nAt the beginning of combat on your turn, another target creature you control gets +1/+0 until end of turn.

View File

@@ -0,0 +1,7 @@
Name:Hithlain Knots
ManaCost:1 U
Types:Instant
A:SP$ Tap | ValidTgts$ Creature | SubAbility$ DBScry | SpellDescription$ Tap target creature. Scry 1.
SVar:DBScry:DB$ Scry | ScryNum$ 1 | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card.
Oracle:Tap target creature. Scry 1.\nDraw a card.

View File

@@ -0,0 +1,8 @@
Name:Ioreth of the Healing House
ManaCost:2 U
Types:Legendary Creature Human Cleric
PT:1/4
A:AB$ Untap | Cost$ T | ValidTgts$ Permanent.Other | TgtPrompt$ Select another target permanent | SpellDescription$ Untap another target permanent.
A:AB$ Untap | Cost$ T | ValidTgts$ Creature.Legendary | TgtPrompt$ Select two other legendary creatures | SpellDescription$ Untap two other target legendary creatures.
DeckHints:Type$Legendary & Type$Creature
Oracle:{T}: Untap another target permanent.\n{T}: Untap two other target legendary creatures.

View File

@@ -0,0 +1,5 @@
Name:Isolation at Orthanc
ManaCost:3 U
Types:Instant
A:SP$ ChangeZone | Origin$ Battlefield | Destination$ Library | ValidTgts$ Creature | LibraryPosition$ 1 | SpellDescription$ Put target creature into its owner's library second from the top.
Oracle:Put target creature into its owner's library second from the top.

View File

@@ -0,0 +1,9 @@
Name:Ithilien Kingfisher
ManaCost:2 U
Types:Creature Bird
PT:2/1
K:Flying
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME dies, draw a card.
SVar:TrigDraw:DB$ Draw | Defined$ TriggeredCardController | NumCards$ 1
SVar:SacMe:1
Oracle:Flying\nWhen Ithilien Kingfisher dies, draw a card.

View File

@@ -0,0 +1,7 @@
Name:Lorien Revealed
ManaCost:3 U U
Types:Sorcery
A:SP$ Draw | NumCards$ 3 | SpellDescription$ Draw three cards.
K:TypeCycling:Island:1
DeckHas:Ability$Discard
Oracle:Draw three cards.\nIslandcycling {1} ({1}, Discard this card: Search your library for an Island card, reveal it, put it into your hand, then shuffle.)

View File

@@ -0,0 +1,8 @@
Name:The Balrog, Flame of Udun
ManaCost:3 B R
Types:Legendary Creature Avatar Demon
PT:7/7
K:Trample
T:Mode$ ChangesZone | Origin$ Battlefield | TriggerZones$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Legendary+OppCtrl | Execute$ TrigChange | TriggerDescription$ When a legendary creature an opponent controls dies, put CARDNAME on the bottom of its owner's library.
SVar:TrigChange:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Library | LibraryPosition$ -1
Oracle:Trample\nWhen a legendary creature an opponent controls dies, put The Balrog, Flame of Udûn on the bottom of its owner's library.

View File

@@ -0,0 +1,11 @@
Name:The Bath Song
ManaCost:3 U
Types:Enchantment Saga
K:Saga:3:DBDraw,DBDraw,DBShuffle
SVar:DBDraw:DB$ Draw | NumCards$ 2 | SubAbility$ DBDiscard | SpellDescription$ Draw two cards, then discard a card.
SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose
SVar:DBShuffle:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ X | Origin$ Graveyard | Destination$ Library | Shuffle$ True | SubAbility$ DBAdd | TgtPrompt$ Choose any target cards in your graveyard | ValidTgts$ Card.YouCtrl | SpellDescription$ Shuffle any number of target cards from your graveyard into your library. Add {U}{U}.
SVar:DBAdd:DB$ Mana | Produced$ U | Amount$ 2
SVar:X:Count$InYourYard
DeckHas:Ability$Discard|Graveyard
Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Draw two cards, then discard a card.\nIII — Shuffle any number of target cards from your graveyard into your library. Add {U}{U}.

View File

@@ -0,0 +1,10 @@
Name:Witch-king, Bringer of Ruin
ManaCost:4 B B
Types:Legendary Creature Wraith Noble
PT:5/3
K:Flying
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ Whenever CARDNAME attacks, defending player sacrifices a creature with the least power among creatures they control.
SVar:TrigSac:DB$ Sacrifice | Defined$ TriggeredDefendingPlayer | SacValid$ Creature.leastPowerControlledBy TriggeredDefendingPlayer
SVar:HasAttackEffect:True
DeckHas:Ability$Sacrifice
Oracle:Flying\nWhenever Witch-king, Bringer of Ruin attacks, defending player sacrifices a creature with the least power among creatures they control.