mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Merge branch 'c21_7' into 'master'
C21 - 7 April See merge request core-developers/forge!4422
This commit is contained in:
@@ -392,6 +392,14 @@ public class CardFactoryUtil {
|
|||||||
|
|
||||||
int n = 0;
|
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
|
// methods for getting the highest/lowest playerXCount from a range of players
|
||||||
if (l[0].startsWith("Highest")) {
|
if (l[0].startsWith("Highest")) {
|
||||||
for (final Player player : players) {
|
for (final Player player : players) {
|
||||||
@@ -1286,9 +1294,13 @@ public class CardFactoryUtil {
|
|||||||
}
|
}
|
||||||
// Count$SumCMC_valid
|
// Count$SumCMC_valid
|
||||||
if (sq[0].contains("SumCMC")) {
|
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[] restrictions = l[0].split("_");
|
||||||
final String[] rest = restrictions[1].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);
|
CardCollection filteredCards = CardLists.getValidCards(cardsonbattlefield, rest, cc, c, null);
|
||||||
return Aggregates.sum(filteredCards, CardPredicates.Accessors.fnGetCmc);
|
return Aggregates.sum(filteredCards, CardPredicates.Accessors.fnGetCmc);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
@@ -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.
|
||||||
16
forge-gui/res/cardsfolder/upcoming/fractal_harness.txt
Normal file
16
forge-gui/res/cardsfolder/upcoming/fractal_harness.txt
Normal 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}
|
||||||
13
forge-gui/res/cardsfolder/upcoming/geometric_nexus.txt
Normal file
13
forge-gui/res/cardsfolder/upcoming/geometric_nexus.txt
Normal 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.
|
||||||
12
forge-gui/res/cardsfolder/upcoming/inferno_project.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/inferno_project.txt
Normal 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.
|
||||||
12
forge-gui/res/cardsfolder/upcoming/muse_vortex.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/muse_vortex.txt
Normal 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 weren’t 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 weren’t cast this way into your hand the rest on the bottom of your library in a random order.
|
||||||
12
forge-gui/res/cardsfolder/upcoming/oversimplify.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/oversimplify.txt
Normal 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.
|
||||||
10
forge-gui/res/cardsfolder/upcoming/rionya_fire_dancer.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/rionya_fire_dancer.txt
Normal 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 you’ve 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 you’ve cast this turn. They gain haste. Exile them at the beginning of the next end step.
|
||||||
@@ -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.
|
||||||
Reference in New Issue
Block a user