SLD 11 cards + support for new partner variants (#8797)

This commit is contained in:
Simisays
2025-09-28 21:07:54 +02:00
committed by GitHub
parent cd84663bed
commit a21a61cb05
15 changed files with 142 additions and 0 deletions

View File

@@ -324,6 +324,12 @@ public final class CardRules implements ICardCharacteristics {
} }
if (hasKeyword("Friends forever") && b.hasKeyword("Friends forever")) { if (hasKeyword("Friends forever") && b.hasKeyword("Friends forever")) {
legal = true; // Stranger Things Secret Lair gimmick partner commander legal = true; // Stranger Things Secret Lair gimmick partner commander
}
if (hasKeyword("Partner - Survivors") && b.hasKeyword("Partner - Survivors")) {
legal = true; // The Last of Us Secret Lair gimmick partner commander
}
if (hasKeyword("Partner - Father & Son") && b.hasKeyword("Partner - Father & Son")) {
legal = true; // God of War Secret Lair gimmick partner commander
} }
if (hasKeyword("Choose a Background") && b.canBeBackground() if (hasKeyword("Choose a Background") && b.canBeBackground()
|| b.hasKeyword("Choose a Background") && canBeBackground()) { || b.hasKeyword("Choose a Background") && canBeBackground()) {
@@ -342,6 +348,7 @@ public final class CardRules implements ICardCharacteristics {
} }
return canBeCommander() && (hasKeyword("Partner") || !this.partnerWith.isEmpty() || return canBeCommander() && (hasKeyword("Partner") || !this.partnerWith.isEmpty() ||
hasKeyword("Friends forever") || hasKeyword("Choose a Background") || hasKeyword("Friends forever") || hasKeyword("Choose a Background") ||
hasKeyword("Partner - Father & Son") || hasKeyword("Partner - Survivors") ||
hasKeyword("Doctor's companion") || isDoctor()); hasKeyword("Doctor's companion") || isDoctor());
} }

View File

@@ -2598,6 +2598,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
|| keyword.equals("Battle cry") || keyword.equals("Devoid") || keyword.equals("Riot") || keyword.equals("Battle cry") || keyword.equals("Devoid") || keyword.equals("Riot")
|| keyword.equals("Daybound") || keyword.equals("Nightbound") || keyword.equals("Daybound") || keyword.equals("Nightbound")
|| keyword.equals("Friends forever") || keyword.equals("Choose a Background") || keyword.equals("Friends forever") || keyword.equals("Choose a Background")
|| keyword.equals("Partner - Father & Son") || keyword.equals("Partner - Survivors")
|| keyword.equals("Space sculptor") || keyword.equals("Doctor's companion") || keyword.equals("Space sculptor") || keyword.equals("Doctor's companion")
|| keyword.equals("Start your engines")) { || keyword.equals("Start your engines")) {
sbLong.append(keyword).append(" (").append(inst.getReminderText()).append(")"); sbLong.append(keyword).append(" (").append(inst.getReminderText()).append(")");

View File

@@ -141,6 +141,8 @@ public enum Keyword {
OFFSPRING("Offspring", KeywordWithCost.class, false, "You may pay an additional %s as you cast this spell. If you do, when this creature enters, create a 1/1 token copy of it."), OFFSPRING("Offspring", KeywordWithCost.class, false, "You may pay an additional %s as you cast this spell. If you do, when this creature enters, create a 1/1 token copy of it."),
OVERLOAD("Overload", KeywordWithCost.class, false, "You may cast this spell for its overload cost. If you do, change its text by replacing all instances of \"target\" with \"each.\""), OVERLOAD("Overload", KeywordWithCost.class, false, "You may cast this spell for its overload cost. If you do, change its text by replacing all instances of \"target\" with \"each.\""),
PARTNER("Partner", Partner.class, true, "You can have two commanders if both have partner."), PARTNER("Partner", Partner.class, true, "You can have two commanders if both have partner."),
PARTNER_SURVIVOR("Partner - Survivors", Partner.class, true, "You can have two commanders if both have this ability."),
PARTNER_FATHER_AND_SON("Partner - Father & Son", Partner.class, true, "You can have two commanders if both have this ability."),
PERSIST("Persist", SimpleKeyword.class, false, "When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it."), PERSIST("Persist", SimpleKeyword.class, false, "When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it."),
PHASING("Phasing", SimpleKeyword.class, true, "This phases in or out before you untap during each of your untap steps. While it's phased out, it's treated as though it doesn't exist."), PHASING("Phasing", SimpleKeyword.class, true, "This phases in or out before you untap during each of your untap steps. While it's phased out, it's treated as though it doesn't exist."),
PLOT("Plot", KeywordWithCost.class, false, "You may pay %s and exile this card from your hand. Cast it as a sorcery on a later turn without paying its mana cost. Plot only as a sorcery."), PLOT("Plot", KeywordWithCost.class, false, "You may pay %s and exile this card from your hand. Cast it as a sorcery on a later turn without paying its mana cost. Plot only as a sorcery."),

View File

@@ -0,0 +1,13 @@
Name:Abby, Merciless Soldier
ManaCost:1 R G
Types:Legendary Creature Human Survivor
PT:4/4
K:Partner - Survivors
T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you cast this spell, create a number of 1/1 black Fungus Zombie creature tokens named Cordyceps Infected equal to the amount of mana spent to cast it.
SVar:TrigToken:DB$ Token | TokenAmount$ X | TokenScript$ cordyceps_infected | TokenOwner$ You
SVar:X:Count$CastTotalManaSpent
R:Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplaceWith$ DBChooseOpp | Layer$ Control | Description$ NICKNAME enters under the control of an opponent of your choice.
SVar:DBChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent to give control to | AILogic$ Curse | SubAbility$ MoveToPlay
SVar:MoveToPlay:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard | GainControl$ ChosenPlayer
DeckHas:Ability$Token & Type$Zombie|Fungus
Oracle:When you cast this spell, create a number of 1/1 black Fungus Zombie creature tokens named Cordyceps Infected equal to the amount of mana spent to cast it.\nAbby enters under the control of an opponent of your choice.\nPartner—Survivors (You can have two commanders if both have this ability.)

View File

@@ -0,0 +1,11 @@
Name:Aloy, Savior of Meridian
ManaCost:3 G U
Types:Legendary Creature Human Warrior
PT:3/5
K:Vigilance
K:Reach
T:Mode$ AttackersDeclared | AttackingPlayer$ You | ValidAttackers$ Creature.Artifact+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDiscover | TriggerDescription$ In You, All Things Are Possible — Whenever one or more artifact creatures you control attack, discover X, where X is the greatest power among them. (Exile cards from the top of your library until you exile a nonland card with that mana value or less. Cast it without paying its mana cost or put it into your hand. Put the rest on the bottom in a random order.)
SVar:TrigDiscover:DB$ Discover | Num$ X
SVar:X:TriggerObjectsAttackers$GreatestPower
DeckNeeds:Type$Artifact & Type$Creature
Oracle:Vigilance, reach\nIn You, All Things Are Possible — Whenever one or more artifact creatures you control attack, discover X, where X is the greatest power among them. (Exile cards from the top of your library until you exile a nonland card with that mana value or less. Cast it without paying its mana cost or put it into your hand. Put the rest on the bottom in a random order.)

View File

@@ -0,0 +1,10 @@
Name:Atreus, Impulsive Son
ManaCost:1 U R
Types:Legendary Creature God Archer
PT:2/4
K:Reach
K:Partner - Father & Son
A:AB$ Draw | Cost$ 3 T | NumCards$ X | SubAbility$ DBDamage | SpellDescription$ Draw a card for each experience counter you have, then discard a card.
SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | Defined$ Opponent | SpellDescription$ CARDNAME deals 2 damage to each opponent.
SVar:X:Count$YourCountersExperience
Oracle:Reach\n{3}, {T}: Draw a card for each experience counter you have, then discard a card. Atreus, Impulsive Son deals 2 damage to each opponent.\nPartner-Father & son

View File

@@ -0,0 +1,9 @@
Name:Ellie, Brick Master
ManaCost:1 R
Types:Legendary Creature Human Survivor
PT:2/1
K:Partner - Survivors
T:Mode$ AttackersDeclaredOneTarget | AttackedTarget$ Opponent | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Distract the Horde - Whenever a player attacks one of your opponents, that attacking player creates a tapped 1/1 black Fungus Zombie creature token named Cordyceps Infected that's attacking that opponent.
SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ cordyceps_infected | TokenOwner$ TriggeredAttackingPlayer | TokenTapped$ True | TokenAttacking$ TriggeredAttackedTarget
DeckHas:Ability$Token & Type$Zombie|Fungus
Oracle:Distract the Horde - Whenever a player attacks one of your opponents, that attacking player creates a tapped 1/1 black Fungus Zombie creature token named Cordyceps Infected that's attacking that opponent.\nPartner — Survivors (You can have two commanders if both have this ability.)

View File

@@ -0,0 +1,9 @@
Name:Ellie, Vengeful Hunter
ManaCost:1 B R
Types:Legendary Creature Human Survivor
PT:3/1
K:Partner - Survivors
A:AB$ DealDamage | Cost$ PayLife<2> Sac<1/Creature.Other/another creature> | NumDmg$ 2 | ValidTgts$ Player | SubAbility$ DBPump | SpellDescription$ NICKNAME deals 2 damage to target player and gains indestructible until end of turn.
SVar:DBPump:DB$ Pump | Defined$ Self | KW$ Indestructible
DeckHas:Ability$Sacrifice
Oracle:Pay 2 life, Sacrifice another creature: Ellie deals 2 damage to target player and gains indestructible until end of turn.\nPartner - Survivors (You can have two commanders if both have this ability.)

View File

@@ -0,0 +1,15 @@
Name:Jaws, Relentless Predator
ManaCost:3 R R
Types:Legendary Creature Shark
PT:5/5
K:Trample
K:Haste
T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever NICKNAME deals combat damage to a player, create that many Blood tokens.
SVar:TrigToken:DB$ Token | TokenAmount$ X | TokenScript$ c_a_blood_draw | TokenOwner$ You
SVar:X:TriggerCount$DamageAmount
T:Mode$ Sacrificed | ValidCard$ Artifact.nonCreature | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever a noncreature artifact is sacrificed or destroyed, NICKNAME deals 1 damage to each opponent.
T:Mode$ Destroyed | ValidCard$ Artifact.nonCreature | Execute$ TrigDamage | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever a noncreature artifact is sacrificed or destroyed, NICKNAME deals 1 damage to each opponent.
SVar:TrigDamage:DB$ DealDamage | NumDmg$ 1 | Defined$ Opponent
DeckHints:Ability$Sacrifice|Token & Type$Blood|Treasure|Map|Clue
DeckHas:Ability$Token|Sacrifice & Type$Artifact|Blood
Oracle:Trample, haste\nWhenever Jaws deals combat damage to a player, create that many Blood tokens.\nWhenever a noncreature artifact is sacrificed or destroyed, Jaws deals 1 damage to each opponent.

View File

@@ -0,0 +1,12 @@
Name:Jin Sakai, Ghost of Tsushima
ManaCost:1 W U B
Types:Legendary Creature Human Samurai
PT:2/4
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDraw | TriggerDescription$ Whenever NICKNAME deals combat damage to a player, draw a card.
SVar:TrigDraw:DB$ Draw | NumCards$ 1
T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Alone$ True | TriggerZones$ Battlefield | Execute$ TrigCharm | IsPresent$ Creature.attacking+Other | NoResolvingCheck$ True | PresentCompare$ EQ0 | TriggerDescription$ Whenever a creature you control attacks a player, if no other creatures are attacking that player, ABILITY
SVar:TrigCharm:DB$ Charm | Choices$ Standoff,Ghost
SVar:Standoff:DB$ Pump | Defined$ TriggeredAttackerLKICopy | KW$ Double Strike | SpellDescription$ Standoff — It gains double strike until end of turn.
SVar:Ghost:DB$ Effect | RememberObjects$ Self | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | SpellDescription$ Ghost — It can't be blocked this turn.
SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ EFFECTSOURCE can't be blocked this turn.
Oracle:Whenever Jin Sakai deals combat damage to a player, draw a card.\nWhenever a creature you control attacks a player, if no other creatures are attacking that player, choose one —-\n• Standoff — It gains double strike until end of turn.\n• Ghost — It can't be blocked this turn.

View File

@@ -0,0 +1,12 @@
Name:Joel, Resolute Survivor
ManaCost:3 B G
Types:Legendary Creature Human Survivor
PT:4/4
K:Menace
K:Partner - Survivors
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.token | Execute$ TrigPutCounter | ActivationLimit$ 1 | TriggerDescription$ Whenever a creature token dies, put a +1/+1 counter on NICKNAME and draw a card. This ability triggers only once each turn.
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterNum$ 1 | CounterType$ P1P1 | SubAbility$ DBDraw
SVar:TrigDraw:DB$ Draw
DeckHas:Ability$Counters
DeckHints:Ability$Sacrifice|Token
Oracle:Menace\nWhenever a creature token dies, put a +1/+1 counter on Joel and draw a card. This ability triggers only once each turn.\nPartner — Survivors (You can have two commanders if both have this ability.)

View File

@@ -0,0 +1,10 @@
Name:Kratos, God of War
ManaCost:R R R
Types:Legendary Creature God Warrior
PT:2/3
K:Double Strike
S:Mode$ Continuous | Affected$ Creature | AddKeyword$ Haste | Description$ All creatures have haste.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of each player's end step, NICKNAME deals damage to that player equal to the number of creatures that player controls that didn't attack this turn.
SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ X
SVar:X:Count$Valid Creature.!attackedThisTurn+ActivePlayerCtrl
Oracle:Double strike\nAll creatures have haste.\nAt the beginning of each player's end step, Kratos deals damage to that player equal to the number of creatures that player controls that didn't attack this turn.

View File

@@ -0,0 +1,14 @@
Name:Kratos, Stoic Father
ManaCost:2 R W
Types:Legendary Creature God Warrior
PT:4/4
K:Partner - Father & Son
T:Mode$ AttackersDeclared | ValidAttackers$ God.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigExperience | TriggerDescription$ Whenever you attack with one or more Gods and whenever a God dies, you get an experience counter.
T:Mode$ ChangesZone | ValidCard$ God | TriggerZones$ Battlefield | Secondary$ True | Destination$ Graveyard | Execute$ TrigExperience | TriggerDescription$ Whenever you attack with one or more Gods and whenever a God dies, you get an experience counter.
SVar:TrigExperience:DB$ PutCounter | Defined$ You | CounterType$ Experience | CounterNum$ 1
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a number of +1/+1 counters on target creature equal to the number of experience counters you have.
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ X
SVar:X:Count$YourCountersExperience
DeckHas:Ability$Counters
DeckHints:Type$God
Oracle:Whenever you attack with one or more Gods and whenever a God dies, you get an experience counter.\nAt the beginning of your end step, put a number of +1/+1 counters on target creature equal to the number of experience counters you have.\nPartner-Father & son (You can have two commanders if both have this ability.)

View File

@@ -0,0 +1,11 @@
Name:Nathan Drake, Treasure Hunter
ManaCost:U B R
Types:Legendary Creature Human Rogue
PT:3/2
K:First Strike
S:Mode$ ManaConvert | ValidPlayer$ You | ValidCard$ Card.YouDontOwn+YouCtrl | ValidSA$ Spell,Activated | ManaConversion$ AnyType->AnyColor | Description$ You may spend mana as though it were mana of any color to cast spells you don't own or to activate abilities of permanents you control but don't own.
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ Whenever NICKNAME attacks, exile the top card of each player's library. You may cast a spell from among those cards.
SVar:TrigExile:DB$ Dig | Defined$ Player | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay
SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidSA$ Spell | ValidZone$ Exile | Controller$ You | Optional$ True | Amount$ 1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
Oracle:First strike\nYou may spend mana as though it were mana of any color to cast spells you don't own or to activate abilities of permanents you control but don't own.\nWhenever Nathan Drake attacks, exile the top card of each player's library. You may cast a spell from among those cards.

View File

@@ -0,0 +1,6 @@
Name:Cordyceps Infected
ManaCost:no cost
Colors:black
Types:Creature Fungus Zombie
PT:1/1
Oracle: