Merge branch 'c21_7' into 'master'

C21 - 7 April

See merge request core-developers/forge!4422
This commit is contained in:
Michael Kamensky
2021-04-08 04:10:42 +00:00
11 changed files with 129 additions and 1 deletions

View File

@@ -392,6 +392,14 @@ public class CardFactoryUtil {
int n = 0;
if (l[0].startsWith("TotalCommanderCastFromCommandZone")) {
int totCast = 0;
for (Player p : players) {
totCast += p.getTotalCommanderCast();
}
return doXMath(totCast, m, source);
}
// methods for getting the highest/lowest playerXCount from a range of players
if (l[0].startsWith("Highest")) {
for (final Player player : players) {
@@ -1286,9 +1294,13 @@ public class CardFactoryUtil {
}
// Count$SumCMC_valid
if (sq[0].contains("SumCMC")) {
ZoneType zone = ZoneType.Battlefield;
//graveyard support for Inferno Project (may need other zones or multi-zone in future)
if (sq[0].contains("Graveyard"))
zone = ZoneType.Graveyard;
final String[] restrictions = l[0].split("_");
final String[] rest = restrictions[1].split(",");
CardCollectionView cardsonbattlefield = game.getCardsIn(ZoneType.Battlefield);
CardCollectionView cardsonbattlefield = game.getCardsIn(zone);
CardCollection filteredCards = CardLists.getValidCards(cardsonbattlefield, rest, cc, c, null);
return Aggregates.sum(filteredCards, CardPredicates.Accessors.fnGetCmc);
}

View File

@@ -0,0 +1,9 @@
Name:Commander's Insight
ManaCost:X U U U
Types:Instant
A:SP$ Draw | Cost$ X U U U | NumCards$ Z | ValidTgts$ Player | TgtPrompt$ Choose target player | SpellDescription$ Target player draws X cards plus an additional card for each time they've cast a commander from the command zone this game.
SVar:X:Count$xPaid
SVar:Y:TargetedPlayer$TotalCommanderCastFromCommandZone
SVar:Z:SVar$Y/Plus.X
AI:RemoveDeck:NonCommander
Oracle:Target player draws X cards plus an additional card for each time they've cast a commander from the command zone this game.

View File

@@ -0,0 +1,8 @@
Name:Creative Technique
ManaCost:4 R
Types:Sorcery
K:Demonstrate
A:SP$ Shuffle | SubAbility$ DBDigUntil | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library,
SVar:DBDigUntil:DB$ DigUntil | Defined$ You | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | RememberFound$ True | SubAbility$ DBPlay | StackDescription$ then reveals cards from the top of it until they reveal a nonland card. {p:You} exiles that card and puts the rest on the bottom of their library in a random order. | SpellDescription$ then reveal cards from the top of it until you reveal a nonland card. Exile that card and put the rest on the bottom of your library in a random order.
SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | StackDescription$ {p:You} may cast the exiled card without paying its mana cost. | SpellDescription$ You may cast the exiled card without paying its mana cost.
Oracle:Demonstrate (When you cast this spell, you may copy it. If you do, choose an opponent to also copy it.)\nShuffle your library, then reveal cards from the top of it until you reveal a nonland card. Exile that card and put the rest on the bottom of your library in a random order. You may cast the exiled card without paying its mana cost.

View File

@@ -0,0 +1,13 @@
Name:Deekah, Fractal Theorist
ManaCost:4 U
Types:Legendary Creature Human Wizard
PT:3/3
T:Mode$ SpellCastOrCopy | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Magecraft — Whenever you cast or copy an instant or sorcery spell, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is that spell's mana value.
SVar:TrigToken:DB$ Token | TokenScript$ gu_0_0_fractal | RememberTokens$ True | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ P1P1 | CounterNum$ X | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:TriggerCount$CastSACMC
A:AB$ Pump | Cost$ 3 U | KW$ HIDDEN Unblockable | TgtPrompt$ Select target creature token | ValidTgts$ Creature.token | SpellDescription$ Target creature token can't be blocked this turn.
DeckHas:Ability$Token & Ability$Counters
DeckNeeds:Type$Instant|Sorcery
Oracle:Magecraft - Whenever you cast or copy an instant or sorcery spell, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is that spell's mana value.\n{3}{U}: Target creature token can't be blocked this turn.

View File

@@ -0,0 +1,16 @@
Name:Fractal Harness
ManaCost:X 2 G
Types:Artifact Equipment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it and attach CARDNAME to it.
SVar:TrigToken:DB$ Token | TokenScript$ gu_0_0_fractal | RememberTokens$ True | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ P1P1 | CounterNum$ X | SubAbility$ DBAttach
SVar:DBAttach:DB$ Attach | Defined$ Remembered | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$xPaid
T:Mode$ Attacks | ValidCard$ Card.EquippedBy | Execute$ TrigDoubleCounters | TriggerDescription$ Whenever equipped creature attacks, double the number of +1/+1 counters on it.
SVar:TrigDoubleCounters:DB$ MultiplyCounter | Defined$ TriggeredAttackerLKICopy | CounterType$ P1P1
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddSVar$ AE | Secondary$ True | Description$ Add attack effect to attached
SVar:AE:SVar:HasAttackEffect:TRUE
K:Equip:2
DeckHas:Ability$Token & Ability$Counters
Oracle:When Fractal Harness enters the battlefield, create a 0/0 blue and green Fractal creature token. Put X +1/+1 counters on it and attach Fractal Harness to it.\nWhenever equipped creature attacks, double the number of +1/+1 counters on it.\nEquip {2}

View File

@@ -0,0 +1,13 @@
Name:Geometric Nexus
ManaCost:2
Types:Artifact
T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts an instant or sorcery spell, put a number of charge counters on CARDNAME equal to that spell's mana value.
SVar:TrigPutCounter:DB$ PutCounter | CounterType$ CHARGE | CounterNum$ Y
SVar:Y:TriggerCount$CastSACMC
A:AB$ Token | Cost$ 6 T SubCounter<All/CHARGE> | CostDesc$ {6}, {T}, Remove all charge counters from CARDNAME: | TokenScript$ gu_0_0_fractal | RememberTokens$ True | SubAbility$ DBPutCounter | SpellDescription$ Create a 0/0 green and blue Fractal creature token.
SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ P1P1 | CounterNum$ X | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ Put X +1/+1 counters on it, where X is the number of charge counters removed this way.
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:SVar$CostCountersRemoved
DeckHas:Ability$Token & Ability$Counters
DeckNeeds:Type$Instant|Sorcery
Oracle:Whenever a player casts an instant or sorcery spell, put a number of charge counters on Geometric Nexus equal to that spell's mana value.\n{6}, {T}, Remove all charge counters from Geometric Nexus: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of charge counters removed this way.

View File

@@ -0,0 +1,12 @@
Name:Inferno Project
ManaCost:6 R
Types:Creature Elemental
PT:0/0
K:Trample
K:etbCounter:P1P1:X:no Condition:CARDNAME enters the battlefield with X +1/+1 counters on it, where X is the total mana value of instant and sorcery cards in your graveyard.
SVar:X:Count$SumCMCGraveyard_Instant.YouOwn,Sorcery.YouOwn
DeckHas:Ability$Counters
DeckNeeds:Type$Instant|Sorcery
AI:RemoveDeck:Random
SVar:NeedsToPlayVar:X GE7
Oracle:Trample\nInferno Project enters the battlefield with X +1/+1 counters on it, where X is the total mana value of instant and sorcery cards in your graveyard.

View File

@@ -0,0 +1,12 @@
Name:Muse Vortex
ManaCost:X U U
Types:Sorcery
A:SP$ Dig | Cost$ X U U | Defined$ You | DigNum$ X | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBPlay | StackDescription$ SpellDescription | SpellDescription$ Exile the top X cards of your library. You may cast an instant or sorcery spell with mana value X or less from among them without paying its mana cost. Then put the exiled instant or sorcery cards that werent cast this way into your hand the rest on the bottom of your library in a random order.
SVar:DBPlay:DB$ Play | Valid$ Instant.cmcLEX+IsRemembered+YouOwn,Sorcery.cmcLEX+IsRemembered+YouOwn | ValidZone$ Exile | Controller$ You | WithoutManaCost$ True | Optional$ True | ForgetTargetRemembered$ True | Amount$ 1 | SubAbility$ DBHand | StackDescription$ None
SVar:DBHand:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Hand | ChangeType$ Instant.IsRemembered+YouOwn,Sorcery.IsRemembered+YouOwn | ForgetChanged$ True | SubAbility$ DBLibrary
SVar:DBLibrary:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Library | ChangeType$ Card.IsRemembered+YouOwn | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Count$xPaid
DeckNeeds:Type$Instant|Sorcery
AI:RemoveDeck:Random
Oracle:Exile the top X cards of your library. You may cast an instant or sorcery spell with mana value X or less from among them without paying its mana cost. Then put the exiled instant or sorcery cards that werent cast this way into your hand the rest on the bottom of your library in a random order.

View File

@@ -0,0 +1,12 @@
Name:Oversimplify
ManaCost:3 G U
Types:Sorcery
A:SP$ ChangeZoneAll | ChangeType$ Creature | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBRepeatEach | SpellDescription$ Exile all creatures.
SVar:DBRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBToken | SubAbility$ DBCleanup | SpellDescription$ Each player creates a 0/0 green and blue Fractal creature token and puts a number of +1/+1 counters on it equal to the total power of creatures they controlled that were exiled this way.
SVar:DBToken:DB$ Token | TokenScript$ gu_0_0_fractal | TokenOwner$ Player.IsRemembered | ImprintTokens$ True | SubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Defined$ Imprinted | CounterType$ P1P1 | CounterNum$ X | Placer$ Player.IsRemembered | SubAbility$ DBCleanImprinted
SVar:DBCleanImprinted:DB$ Cleanup | ClearImprinted$ True
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:RememberedLKI$FilterControlledByRemembered_Number$1
DeckHas:Ability$Token & Ability$Counters
Oracle:Exile all creatures. Each player creates a 0/0 green and blue Fractal creature token and puts a number of +1/+1 counters on it equal to the total power of creatures they controlled that were exiled this way.

View File

@@ -0,0 +1,10 @@
Name:Rionya, Fire Dancer
ManaCost:3 R R
Types:Legendary Creature Human Wizard
PT:3/4
T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigCopy | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, create X tokens that are copies of another target creature you control, where X is one plus the number of instant and sorcery spells youve cast this turn. They gain haste. Exile them at the beginning of the next end step.
SVar:TrigCopy:DB$ CopyPermanent | NumCopies$ X | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control | AddKeywords$ Haste | AtEOT$ Exile
SVar:X:Count$ThisTurnCast_Instant.YouCtrl,Sorcery.YouCtrl/Plus.1
DeckNeeds:Type$Instant|Sorcery
DeckHas:Ability$Token
Oracle:At the beginning of combat on your turn, create X tokens that are copies of another target creature you control, where X is one plus the number of instant and sorcery spells youve cast this turn. They gain haste. Exile them at the beginning of the next end step.

View File

@@ -0,0 +1,11 @@
Name:Ruxa, Patient Professor
ManaCost:2 G G
Types:Legendary Creature Bear Druid
PT:4/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, return target creature card with no abilities from your graveyard to your hand.
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChange | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, return target creature card with no abilities from your graveyard to your hand.
SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.NoAbilities+YouOwn
S:Mode$ Continuous | Affected$ Creature.NoAbilities+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Creatures you control with no abilities get +1/+1.
S:Mode$ Continuous | Affected$ Creature.NoAbilities+YouCtrl | AddHiddenKeyword$ You may have CARDNAME assign its combat damage as though it weren't blocked. | Description$ You may have creatures you control with no abilities assign their combat damage as though they weren't blocked.
SVar:HasAttackEffect:TRUE
Oracle:Whenever Ruxa, Patient Professor enters the battlefield or attacks, return target creature card with no abilities from your graveyard to your hand.\nCreatures you control with no abilities get +1/+1.\nYou may have creatures you control with no abilities assign their combat damage as though they weren't blocked.