mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
@@ -3,6 +3,7 @@ package forge.game.ability.effects;
|
||||
import java.util.Map;
|
||||
|
||||
import forge.game.Game;
|
||||
import forge.game.GameEntity;
|
||||
import forge.game.GameEntityCounterTable;
|
||||
import forge.game.ability.SpellAbilityEffect;
|
||||
import forge.game.card.Card;
|
||||
@@ -28,7 +29,7 @@ public class CountersMultiplyEffect extends SpellAbilityEffect {
|
||||
}
|
||||
sb.append(" on ");
|
||||
|
||||
sb.append(Lang.joinHomogenous(getTargetCards(sa)));
|
||||
sb.append(Lang.joinHomogenous(getTargetEntities(sa)));
|
||||
|
||||
sb.append(".");
|
||||
|
||||
@@ -45,19 +46,23 @@ public class CountersMultiplyEffect extends SpellAbilityEffect {
|
||||
final int n = Integer.parseInt(sa.getParamOrDefault("Multiplier", "2")) - 1;
|
||||
|
||||
GameEntityCounterTable table = new GameEntityCounterTable();
|
||||
for (final Card tgtCard : getTargetCards(sa)) {
|
||||
Card gameCard = game.getCardState(tgtCard, null);
|
||||
// gameCard is LKI in that case, the card is not in game anymore
|
||||
// or the timestamp did change
|
||||
// this should check Self too
|
||||
if (gameCard == null || !tgtCard.equalsWithGameTimestamp(gameCard)) {
|
||||
continue;
|
||||
for (GameEntity ge : getTargetEntities(sa)) {
|
||||
if (ge instanceof Card) {
|
||||
Card gameCard = game.getCardState((Card) ge, null);
|
||||
// gameCard is LKI in that case, the card is not in game anymore
|
||||
// or the timestamp did change
|
||||
// this should check Self too
|
||||
if (gameCard == null || !((Card) ge).equalsWithGameTimestamp(gameCard)) {
|
||||
continue;
|
||||
}
|
||||
ge = gameCard;
|
||||
}
|
||||
|
||||
if (counterType != null) {
|
||||
gameCard.addCounter(counterType, gameCard.getCounters(counterType) * n, player, table);
|
||||
ge.addCounter(counterType, ge.getCounters(counterType) * n, player, table);
|
||||
} else {
|
||||
for (Map.Entry<CounterType, Integer> e : gameCard.getCounters().entrySet()) {
|
||||
gameCard.addCounter(e.getKey(), e.getValue() * n, player, table);
|
||||
for (Map.Entry<CounterType, Integer> e : ge.getCounters().entrySet()) {
|
||||
ge.addCounter(e.getKey(), e.getValue() * n, player, table);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
10
forge-gui/res/cardsfolder/upcoming/adaptive_omnitool.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/adaptive_omnitool.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Adaptive Omnitool
|
||||
ManaCost:2
|
||||
Types:Artifact Equipment
|
||||
S:Mode$ Continuous | Affected$ Card.EquippedBy | AddPower$ X | AddToughness$ X | Description$ Equipped creature gets +1/+1 for each artifact you control.
|
||||
T:Mode$ Attacks | ValidCard$ Card.EquippedBy | Execute$ TrigDig | TriggerDescription$ Whenever equipped creature attacks, look at the top six cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.
|
||||
SVar:TrigDig:DB$ Dig | DigNum$ 6 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Artifact | RestRandomOrder$ True
|
||||
SVar:X:Count$Valid Artifact.YouCtrl
|
||||
SVar:BuffedBy:Artifact
|
||||
K:Equip:3
|
||||
Oracle:Equipped creature gets +1/+1 for each artifact you control.\nWhenever equipped creature attacks, look at the top six cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\nEquip {3}
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Aetherflux Conduit
|
||||
ManaCost:6
|
||||
Types:Artifact
|
||||
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | Execute$ TrigEnergy | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell, you get an amount of {E} (energy counters) equal to the amount of mana spent to cast that spell.
|
||||
SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ X
|
||||
A:AB$ Draw | Cost$ PayEnergy<50> | NumCards$ 7 | SubAbility$ DBPlay | SpellDescription$ Draw seven cards. You may cast any number of spells from your hand without paying their mana costs.
|
||||
SVar:DBPlay:DB$ Play | Valid$ Card.nonLand+YouOwn | ValidSA$ Spell | ValidZone$ Hand | WithoutManaCost$ True | Amount$ All | Controller$ You | Optional$ True
|
||||
SVar:X:TriggeredCard$CastTotalManaSpent
|
||||
Oracle:Whenever you cast a spell, you get an amount of {E} (energy counters) equal to the amount of mana spent to cast that spell.\n{T}, Pay fifty {E}: Draw seven cards. You may cast any number of spells from your hand without paying their mana costs.
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Aetheric Amplifier
|
||||
ManaCost:3
|
||||
Types:Artifact
|
||||
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color.
|
||||
A:AB$ Charm | Cost$ 4 T | Choices$ DBPermanent,DBPlayer | CharmNum$ 1 | SorcerySpeed$ True | AdditionalDescription$ . Activate only as a sorcery.
|
||||
SVar:DBPermanent:DB$ MultiplyCounter | ValidTgts$ Permanent | Multiplier$ 2 | SpellDescription$ Double the number of each kind of counter on target permanent.
|
||||
SVar:DBPlayer:DB$ MultiplyCounter | Defined$ You | Multiplier$ 2 | SpellDescription$ Double the number of each kind of counter you have.
|
||||
Oracle:{T}: Add one mana of any color.\n{4}, {T}: Choose one. Activate only as a sorcery.\n• Double the number of each kind of counter on target permanent.\n• Double the number of each kind of counter you have.
|
||||
10
forge-gui/res/cardsfolder/upcoming/marshals_pathcruiser.txt
Normal file
10
forge-gui/res/cardsfolder/upcoming/marshals_pathcruiser.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
Name:Marshals' Pathcruiser
|
||||
ManaCost:3
|
||||
Types:Artifact Vehicle
|
||||
PT:6/5
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When this Vehicle enters, search your library for a basic land card, reveal it, put it into your hand, then shuffle.
|
||||
SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic
|
||||
A:AB$ Animate | Cost$ W U B R G | Defined$ Self | Types$ Artifact,Creature | Exhaust$ True | Duration$ Permanent | SubAbility$ DBPutCounter | SpellDescription$ This Vehicle becomes an artifact creature. Put two +1/+1 counters on it. (Activate each exhaust ability only once.)
|
||||
SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 2
|
||||
K:Crew:5
|
||||
Oracle:When this Vehicle enters, search your library for a basic land card, reveal it, put it into your hand, then shuffle.\nExhaust — {W}{U}{B}{R}{G}: This Vehicle becomes an artifact creature. Put two +1/+1 counters on it. (Activate each exhaust ability only once.)\nCrew 5
|
||||
@@ -0,0 +1,8 @@
|
||||
Name:Nissa, Worldsoul Speaker
|
||||
ManaCost:3 G
|
||||
Types:Legendary Creature Elf Druid
|
||||
PT:3/3
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Land.YouCtrl | Execute$ TrigEnergy | TriggerDescription$ Landfall — Whenever a land you control enters, you get {E}{E} (two energy counters).
|
||||
SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 2
|
||||
S:Mode$ Continuous | Affected$ Card.YouCtrl+Permanent+nonLand | MayPlay$ True | MayPlayAltManaCost$ PayEnergy<8> | MayPlayDontGrantZonePermissions$ True | AffectedZone$ Hand,Graveyard,Exile,Library,Command | Description$ You may pay eight {E} rather than pay the mana cost for permanent spells you cast.
|
||||
Oracle:Landfall — Whenever a land you control enters, you get {E}{E} (two energy counters).\nYou may pay eight {E} rather than pay the mana cost for permanent spells you cast.
|
||||
12
forge-gui/res/cardsfolder/upcoming/peema_trailblazer.txt
Normal file
12
forge-gui/res/cardsfolder/upcoming/peema_trailblazer.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Name:Peema Trailblazer
|
||||
ManaCost:2 G
|
||||
Types:Creature Elephant Warrior
|
||||
PT:3/3
|
||||
K:Trample
|
||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigEnergy | TriggerDescription$ Whenever this creature deals combat damage to a player, you get that many {E} (energy counters).
|
||||
SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ TriggerCount$DamageAmount
|
||||
A:AB$ PutCounter | Cost$ PayEnergy<6> | Defined$ Self | CounterType$ P1P1 | CounterNum$ 2 | Exhaust$ True | SubAbility$ DBDraw | SpellDescription$ Put two +1/+1 counters on this creature. Then draw cards equal to the greatest power among creatures you control. (Activate each exhaust ability only once.)
|
||||
SVar:DBDraw:DB$ Draw | NumCards$ X
|
||||
SVar:X:Count$Valid Creature.YouCtrl$GreatestPower
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:Trample\nWhenever this creature deals combat damage to a player, you get that many {E} (energy counters).\nExhaust — Pay six {E}: Put two +1/+1 counters on this creature. Then draw cards equal to the greatest power among creatures you control. (Activate each exhaust ability only once.)
|
||||
9
forge-gui/res/cardsfolder/upcoming/possession_engine.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/possession_engine.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Possession Engine
|
||||
ManaCost:3 U U
|
||||
Types:Artifact Vehicle
|
||||
PT:5/5
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When this Vehicle enters, gain control of target creature an opponent controls for as long as you control this Vehicle. That creature can't attack or block for as long as you control this Vehicle.
|
||||
SVar:TrigChange:DB$ GainControl | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose target creature an opponent controls | LoseControl$ LeavesPlay,LoseControl | SubAbility$ DBPump
|
||||
SVar:DBPump:DB$ Pump | KW$ HIDDEN CARDNAME can't attack or block. | Duration$ AsLongAsControl | Defined$ Targeted
|
||||
K:Crew:3
|
||||
Oracle:When this Vehicle enters, gain control of target creature an opponent controls for as long as you control this Vehicle. That creature can't attack or block for as long as you control this Vehicle.\nCrew 3
|
||||
14
forge-gui/res/cardsfolder/upcoming/rampaging_aetherhood.txt
Normal file
14
forge-gui/res/cardsfolder/upcoming/rampaging_aetherhood.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
Name:Rampaging Aetherhood
|
||||
ManaCost:4 G
|
||||
Types:Creature Snake Hydra
|
||||
PT:4/4
|
||||
K:Trample
|
||||
K:Ward:2
|
||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigEnergy | TriggerDescription$ At the beginning of your upkeep, you get an amount of {E} (energy counters) equal to this creature's power. Then you may pay one or more {E}. If you do, put that many +1/+1 counters on this creature.
|
||||
SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ X | SubAbility$ DBChooseNumber
|
||||
SVar:DBChooseNumber:DB$ ChooseNumber | Max$ Max | ListTitle$ amount of energy to pay | SubAbility$ DBPutCounter
|
||||
SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | UnlessCost$ PayEnergy<Y> | UnlessPayer$ You | UnlessSwitched$ True | CounterType$ P1P1 | CounterNum$ Y
|
||||
SVar:X:Count$CardPower
|
||||
SVar:Max:Count$YourCountersEnergy
|
||||
SVar:Y:Count$ChosenNumber
|
||||
Oracle:Trample, ward {2}\nAt the beginning of your upkeep, you get an amount of {E} (energy counters) equal to this creature's power. Then you may pay one or more {E}. If you do, put that many +1/+1 counters on this creature.
|
||||
9
forge-gui/res/cardsfolder/upcoming/spotcycle_scouter.txt
Normal file
9
forge-gui/res/cardsfolder/upcoming/spotcycle_scouter.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
Name:Spotcycle Scouter
|
||||
ManaCost:1 W
|
||||
Types:Artifact Vehicle
|
||||
PT:3/2
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When this Vehicle enters, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom and the rest on top in any order.)
|
||||
SVar:TrigScry:DB$ Scry | ScryNum$ 2
|
||||
K:Crew:1
|
||||
DeckHas:Ability$Counters
|
||||
Oracle:When this Vehicle enters, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom and the rest on top in any order.)\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This Vehicle becomes an artifact creature until end of turn.)
|
||||
@@ -0,0 +1,9 @@
|
||||
Name:Stridehangar Automaton
|
||||
ManaCost:3
|
||||
Types:Artifact Creature Construct
|
||||
PT:1/4
|
||||
S:Mode$ Continuous | Affected$ Thopter.YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Thopters you control get +1/+1.
|
||||
R:Event$ CreateToken | ActiveZones$ Battlefield | ValidToken$ Artifact.YouCtrl | ReplaceWith$ DBReplace | Description$ If one or more artifact tokens would be created under your control, those tokens plus an additional 1/1 colorless Thopter artifact creature token with flying are created instead.
|
||||
SVar:DBReplace:DB$ ReplaceToken | Type$ AddToken | Amount$ 1 | ValidCard$ Artifact.YouCtrl | TokenScript$ c_1_1_a_thopter_flying
|
||||
DeckHas:Ability$Token
|
||||
Oracle:Thopters you control get +1/+1.\nIf one or more artifact tokens would be created under your control, those tokens plus an additional 1/1 colorless Thopter artifact creature token with flying are created instead.
|
||||
11
forge-gui/res/cardsfolder/upcoming/wreck_remover.txt
Normal file
11
forge-gui/res/cardsfolder/upcoming/wreck_remover.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
Name:Wreck Remover
|
||||
ManaCost:4
|
||||
Types:Artifact Creature Construct
|
||||
PT:3/4
|
||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ Whenever this creature enters or attacks, exile up to one target card from a graveyard. You gain 1 life.
|
||||
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever this creature enters or attacks, exile up to one target card from a graveyard. You gain 1 life.
|
||||
SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target card in a graveyard to exile | SubAbility$ DBGainLife
|
||||
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1
|
||||
K:Cycling:2
|
||||
SVar:HasAttackEffect:TRUE
|
||||
Oracle:Whenever this creature enters or attacks, exile up to one target card from a graveyard. You gain 1 life.\nCycling {2} ({2}, Discard this card: Draw a card.)
|
||||
Reference in New Issue
Block a user