mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Merge branch 'Card-Forge:master' into master
This commit is contained in:
@@ -15,7 +15,6 @@ import forge.card.MagicColor;
|
|||||||
import forge.card.mana.ManaAtom;
|
import forge.card.mana.ManaAtom;
|
||||||
import forge.game.Game;
|
import forge.game.Game;
|
||||||
import forge.game.GameEntity;
|
import forge.game.GameEntity;
|
||||||
import forge.game.GameObject;
|
|
||||||
import forge.game.ability.AbilityFactory;
|
import forge.game.ability.AbilityFactory;
|
||||||
import forge.game.ability.effects.DetachedCardEffect;
|
import forge.game.ability.effects.DetachedCardEffect;
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
@@ -862,9 +861,7 @@ public abstract class GameState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sa.hasParam("RememberTargets")) {
|
if (sa.hasParam("RememberTargets")) {
|
||||||
for (final GameObject o : sa.getTargets()) {
|
sa.getHostCard().addRemembered(sa.getTargets());
|
||||||
sa.getHostCard().addRemembered(o);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ public class GameAction {
|
|||||||
CardCollectionView comCards = c.getOwner().getCardsIn(ZoneType.Command);
|
CardCollectionView comCards = c.getOwner().getCardsIn(ZoneType.Command);
|
||||||
for (final Card effCard : comCards) {
|
for (final Card effCard : comCards) {
|
||||||
for (final ReplacementEffect re : effCard.getReplacementEffects()) {
|
for (final ReplacementEffect re : effCard.getReplacementEffects()) {
|
||||||
if (re.hasParam("CommanderMoveReplacement") && effCard.getEffectSource().getName().equals(c.getRealCommander().getName())) {
|
if (re.hasParam("CommanderMoveReplacement") && c.getMergedCards().contains(effCard.getEffectSource())) {
|
||||||
commanderEffect = effCard;
|
commanderEffect = effCard;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1211,6 +1211,9 @@ public class GameAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// preList means that this is run by a pre Check with LKI objects
|
||||||
|
// in that case Always trigger should not Run
|
||||||
|
if (preList.isEmpty()) {
|
||||||
for (Player p : game.getPlayers()) {
|
for (Player p : game.getPlayers()) {
|
||||||
for (Card c : p.getCardsIn(ZoneType.Battlefield).threadSafeIterable()) {
|
for (Card c : p.getCardsIn(ZoneType.Battlefield).threadSafeIterable()) {
|
||||||
if (!c.getController().equals(p)) {
|
if (!c.getController().equals(p)) {
|
||||||
@@ -1228,9 +1231,6 @@ public class GameAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// preList means that this is run by a pre Check with LKI objects
|
|
||||||
// in that case Always trigger should not Run
|
|
||||||
if (preList.isEmpty()) {
|
|
||||||
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
|
final Map<AbilityKey, Object> runParams = AbilityKey.newMap();
|
||||||
game.getTriggerHandler().runTrigger(TriggerType.Always, runParams, false);
|
game.getTriggerHandler().runTrigger(TriggerType.Always, runParams, false);
|
||||||
|
|
||||||
@@ -1245,6 +1245,8 @@ public class GameAction {
|
|||||||
c.updateAbilityTextForView(); // only update keywords and text for view to avoid flickering
|
c.updateAbilityTextForView(); // only update keywords and text for view to avoid flickering
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO filter out old copies from zone change
|
||||||
|
|
||||||
if (runEvents && !affectedCards.isEmpty()) {
|
if (runEvents && !affectedCards.isEmpty()) {
|
||||||
game.fireEvent(new GameEventCardStatsChanged(affectedCards));
|
game.fireEvent(new GameEventCardStatsChanged(affectedCards));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ public class DelayedTriggerEffect extends SpellAbilityEffect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sa.hasParam("RememberSVarAmount")) {
|
if (sa.hasParam("RememberSVarAmount")) {
|
||||||
delTrig.addRemembered(AbilityUtils.calculateAmount(host, host.getSVar(sa.getParam("RememberSVarAmount")), sa));
|
delTrig.addRemembered(AbilityUtils.calculateAmount(host, sa.getSVar(sa.getParam("RememberSVarAmount")), sa));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sa.hasAdditionalAbility("Execute")) {
|
if (sa.hasAdditionalAbility("Execute")) {
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class ImmediateTriggerEffect extends SpellAbilityEffect {
|
|||||||
|
|
||||||
if (sa.hasParam("RememberSVarAmount")) {
|
if (sa.hasParam("RememberSVarAmount")) {
|
||||||
immediateTrig.addRemembered(AbilityUtils.calculateAmount(host,
|
immediateTrig.addRemembered(AbilityUtils.calculateAmount(host,
|
||||||
host.getSVar(sa.getParam("RememberSVarAmount")), sa));
|
sa.getSVar(sa.getParam("RememberSVarAmount")), sa));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sa.hasAdditionalAbility("Execute")) {
|
if (sa.hasAdditionalAbility("Execute")) {
|
||||||
|
|||||||
@@ -503,7 +503,7 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars {
|
|||||||
if (game != null) {
|
if (game != null) {
|
||||||
// update Type, color and keywords again if they have changed
|
// update Type, color and keywords again if they have changed
|
||||||
if (!changedCardTypes.isEmpty()) {
|
if (!changedCardTypes.isEmpty()) {
|
||||||
currentState.getView().updateType(currentState);
|
updateTypesForView();;
|
||||||
}
|
}
|
||||||
updateColorForView();
|
updateColorForView();
|
||||||
|
|
||||||
|
|||||||
@@ -2680,7 +2680,7 @@ public class CardFactoryUtil {
|
|||||||
final String[] k = keyword.split(":");
|
final String[] k = keyword.split(":");
|
||||||
final Cost blitzCost = new Cost(k[1], false);
|
final Cost blitzCost = new Cost(k[1], false);
|
||||||
|
|
||||||
final SpellAbility newSA = card.getFirstSpellAbility().copyWithDefinedCost(blitzCost);
|
final SpellAbility newSA = card.getFirstSpellAbility().copyWithManaCostReplaced(host.getController(), blitzCost);
|
||||||
|
|
||||||
if (k.length > 2) {
|
if (k.length > 2) {
|
||||||
newSA.getMapParams().put("ValidAfterStack", k[2]);
|
newSA.getMapParams().put("ValidAfterStack", k[2]);
|
||||||
|
|||||||
@@ -3036,7 +3036,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
|
|
||||||
StaticAbility stAb = StaticAbility.create(addToHandAbility, eff, eff.getCurrentState(), true);
|
StaticAbility stAb = StaticAbility.create(addToHandAbility, eff, eff.getCurrentState(), true);
|
||||||
stAb.setSVar("MoveToHand", moveToHand);
|
stAb.setSVar("MoveToHand", moveToHand);
|
||||||
eff.addStaticAbility(addToHandAbility);
|
eff.addStaticAbility(stAb);
|
||||||
|
|
||||||
return eff;
|
return eff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:W
|
|||||||
Types:Creature Human Soldier
|
Types:Creature Human Soldier
|
||||||
PT:1/1
|
PT:1/1
|
||||||
K:Provoke
|
K:Provoke
|
||||||
A:AB$ Effect | Cost$ 1 W | ReplacementEffects$ RPrevent1,RPrevent2 | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SpellDescription$ Prevent all combat damage that would be dealt to and dealt by CARDNAME this turn.
|
A:AB$ Effect | Cost$ 1 W | ReplacementEffects$ RPrevent1,RPrevent2 | RememberObjects$ Self | ExileOnMoved$ Battlefield | SpellDescription$ Prevent all combat damage that would be dealt to and dealt by CARDNAME this turn.
|
||||||
SVar:RPrevent1:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidSource$ Card.IsRemembered | Description$ Prevent all combat damage that would be dealt to and dealt by EFFECTSOURCE this turn.
|
SVar:RPrevent1:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidSource$ Card.IsRemembered | Description$ Prevent all combat damage that would be dealt to and dealt by EFFECTSOURCE this turn.
|
||||||
SVar:RPrevent2:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidTarget$ Card.IsRemembered | Description$ Prevent all combat damage that would be dealt to and dealt by EFFECTSOURCE this turn. | Secondary$ True
|
SVar:RPrevent2:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidTarget$ Card.IsRemembered | Description$ Prevent all combat damage that would be dealt to and dealt by EFFECTSOURCE this turn. | Secondary$ True
|
||||||
AI:RemoveDeck:All
|
AI:RemoveDeck:All
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ PT:2/3
|
|||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile another target creature or artifact until CARDNAME leaves the battlefield. You may cast that card for as long as it remains exiled, and you may spend mana as though it were mana of any type to cast that spell.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile another target creature or artifact until CARDNAME leaves the battlefield. You may cast that card for as long as it remains exiled, and you may spend mana as though it were mana of any type to cast that spell.
|
||||||
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.Other,Artifact.Other | TgtPrompt$ Select another target creature or artifact | Duration$ UntilHostLeavesPlay | RememberChanged$ True | SubAbility$ DBEffect
|
SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.Other,Artifact.Other | TgtPrompt$ Select another target creature or artifact | Duration$ UntilHostLeavesPlay | RememberChanged$ True | SubAbility$ DBEffect
|
||||||
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnMoved$ Exile | SubAbility$ DBCleanup
|
SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnMoved$ Exile | SubAbility$ DBCleanup
|
||||||
SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreType$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may cast that card and you may spend mana as though it were mana of any type to cast it.
|
SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreType$ True | EffectZone$ Command | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Description$ You may cast that card and you may spend mana as though it were mana of any type to cast it.
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
SVar:PlayMain1:TRUE
|
SVar:PlayMain1:TRUE
|
||||||
SVar:NeedsToPlay:Artifact.OppCtrl,Creature.OppCtrl
|
SVar:NeedsToPlay:Artifact.OppCtrl,Creature.OppCtrl
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ K:Enchant creature
|
|||||||
A:SP$ Attach | Cost$ R | ValidTgts$ Creature | AILogic$ Pump
|
A:SP$ Attach | Cost$ R | ValidTgts$ Creature | AILogic$ Pump
|
||||||
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, you may put a fuse counter on CARDNAME.
|
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, you may put a fuse counter on CARDNAME.
|
||||||
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ FUSE | CounterNum$ 1
|
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ FUSE | CounterNum$ 1
|
||||||
T:Mode$ ChangesZone | ValidCard$ Card.AttachedBy | Origin$ Any | Destination$ Graveyard | Execute$ TrigDamage | TriggerDescription$ When enchanted creature dies, CARDNAME deals X damage to any target, where X is the number of fuse counters on CARDNAME.
|
T:Mode$ ChangesZone | ValidCard$ Card.AttachedBy | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigDamage | TriggerDescription$ When enchanted creature dies, CARDNAME deals X damage to any target, where X is the number of fuse counters on CARDNAME.
|
||||||
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X
|
SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X
|
||||||
SVar:X:Count$CardCounters.FUSE
|
SVar:X:Count$CardCounters.FUSE
|
||||||
Oracle:Enchant creature\nAt the beginning of your upkeep, you may put a fuse counter on Incendiary.\nWhen enchanted creature dies, Incendiary deals X damage to any target, where X is the number of fuse counters on Incendiary.
|
Oracle:Enchant creature\nAt the beginning of your upkeep, you may put a fuse counter on Incendiary.\nWhen enchanted creature dies, Incendiary deals X damage to any target, where X is the number of fuse counters on Incendiary.
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:1 B
|
|||||||
Types:Creature Nightmare Horror
|
Types:Creature Nightmare Horror
|
||||||
PT:1/1
|
PT:1/1
|
||||||
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMesmericExile | TriggerDescription$ When CARDNAME enters the battlefield, target opponent reveals their hand and you choose a nonland card from it. Exile that card.
|
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMesmericExile | TriggerDescription$ When CARDNAME enters the battlefield, target opponent reveals their hand and you choose a nonland card from it. Exile that card.
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigMesmericBounce | Secondary$ True | TriggerDescription$ When CARDNAME leaves the battlefield, return the exiled card to its owner's hand.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigMesmericBounce | TriggerDescription$ When CARDNAME leaves the battlefield, return the exiled card to its owner's hand.
|
||||||
SVar:TrigMesmericExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ValidTgts$ Opponent | DefinedPlayer$ Targeted | Chooser$ You | TgtPrompt$ Select target opponent | ChangeType$ Card.nonLand | ChangeNum$ 1 | IsCurse$ True | RememberChanged$ True
|
SVar:TrigMesmericExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ValidTgts$ Opponent | DefinedPlayer$ Targeted | Chooser$ You | TgtPrompt$ Select target opponent | ChangeType$ Card.nonLand | ChangeNum$ 1 | IsCurse$ True | RememberChanged$ True
|
||||||
SVar:TrigMesmericBounce:DB$ ChangeZone | Origin$ Exile | Destination$ Hand | Defined$ Remembered | SubAbility$ DBMesmericCleanup
|
SVar:TrigMesmericBounce:DB$ ChangeZone | Origin$ Exile | Destination$ Hand | Defined$ Remembered | SubAbility$ DBMesmericCleanup
|
||||||
SVar:DBMesmericCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBMesmericCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:2 R
|
|||||||
Types:Creature Goblin Assassin
|
Types:Creature Goblin Assassin
|
||||||
PT:2/1
|
PT:2/1
|
||||||
A:AB$ Pump | Cost$ T | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | RememberObjects$ ThisTargetedCard | IsCurse$ True | SubAbility$ DBPump | StackDescription$ You choose {c:ThisTargetedCard} | SpellDescription$ You choose target creature an opponent controls, and that opponent chooses target creature. Flip a coin. If you win the flip, destroy the creature you chose. If you lose the flip, destroy the creature your opponent chose.
|
A:AB$ Pump | Cost$ T | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | RememberObjects$ ThisTargetedCard | IsCurse$ True | SubAbility$ DBPump | StackDescription$ You choose {c:ThisTargetedCard} | SpellDescription$ You choose target creature an opponent controls, and that opponent chooses target creature. Flip a coin. If you win the flip, destroy the creature you chose. If you lose the flip, destroy the creature your opponent chose.
|
||||||
SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TargetingPlayer$ Player.Opponent | IsCurse$ True | ImprintCards$ ThisTargetedCard | SubAbility$ DBFlip | StackDescription$ That player chooses {c:ThisTargetedCard}
|
SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TargetingPlayer$ ParentTargetedController | IsCurse$ True | ImprintCards$ ThisTargetedCard | SubAbility$ DBFlip | StackDescription$ That player chooses {c:ThisTargetedCard}
|
||||||
SVar:DBFlip:DB$ FlipACoin | WinSubAbility$ DestroyRemembered | LoseSubAbility$ DestroyImprinted | SubAbility$ DBCleanup
|
SVar:DBFlip:DB$ FlipACoin | WinSubAbility$ DestroyRemembered | LoseSubAbility$ DestroyImprinted | SubAbility$ DBCleanup
|
||||||
SVar:DestroyRemembered:DB$ Destroy | Defined$ Remembered
|
SVar:DestroyRemembered:DB$ Destroy | Defined$ Remembered
|
||||||
SVar:DestroyImprinted:DB$ Destroy | Defined$ Imprinted
|
SVar:DestroyImprinted:DB$ Destroy | Defined$ Imprinted
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Searing Blaze
|
|||||||
ManaCost:R R
|
ManaCost:R R
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ DealDamage | Cost$ R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ SearingX | DamageMap$ True | SubAbility$ SearingDamage | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls. Landfall — If you had a land enter the battlefield under your control this turn, CARDNAME deals 3 damage to that player or planeswalker and 3 damage to that creature instead.
|
A:SP$ DealDamage | Cost$ R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ SearingX | DamageMap$ True | SubAbility$ SearingDamage | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls. Landfall — If you had a land enter the battlefield under your control this turn, CARDNAME deals 3 damage to that player or planeswalker and 3 damage to that creature instead.
|
||||||
SVar:SearingDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TargetedOrController | TgtPrompt$ Select target creature that player or that planeswalker's controller controls | NumDmg$ SearingX | SubAbility$ DBDamageResolve
|
SVar:SearingDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy ParentTargetedController,Creature.ControlledBy ParentTarget | TgtPrompt$ Select target creature that player or that planeswalker's controller controls | NumDmg$ SearingX | SubAbility$ DBDamageResolve
|
||||||
SVar:DBDamageResolve:DB$ DamageResolve
|
SVar:DBDamageResolve:DB$ DamageResolve
|
||||||
SVar:SearingX:Count$Landfall.3.1
|
SVar:SearingX:Count$Landfall.3.1
|
||||||
Oracle:Searing Blaze deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls.\nLandfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player or planeswalker and 3 damage to that creature instead.
|
Oracle:Searing Blaze deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls.\nLandfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player or planeswalker and 3 damage to that creature instead.
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ ManaCost:3
|
|||||||
Types:Artifact
|
Types:Artifact
|
||||||
K:ETBReplacement:Other:ChooseCT
|
K:ETBReplacement:Other:ChooseCT
|
||||||
SVar:ChooseCT:DB$ ChooseType | Defined$ You | Type$ Creature | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type.
|
SVar:ChooseCT:DB$ ChooseType | Defined$ You | Type$ Creature | AILogic$ MostProminentInComputerDeck | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type.
|
||||||
S:Mode$ ReduceCost | ValidCard$ Creature.ChosenType | Type$ Spell | Activator$ You | Amount$ 2 | Description$ Creature spells of the chosen type cost {2} less to cast.
|
S:Mode$ ReduceCost | ValidCard$ Creature.ChosenType | Type$ Spell | Amount$ 2 | Description$ Creature spells of the chosen type cost {2} less to cast.
|
||||||
AI:RemoveDeck:Random
|
AI:RemoveDeck:Random
|
||||||
Oracle:As Urza's Incubator enters the battlefield, choose a creature type.\nCreature spells of the chosen type cost {2} less to cast.
|
Oracle:As Urza's Incubator enters the battlefield, choose a creature type.\nCreature spells of the chosen type cost {2} less to cast.
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ K:Flying
|
|||||||
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigRoll | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, roll a d20. When you do, put X +1/+1 counters on each of up to two target creatures, where X is the result.
|
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigRoll | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, roll a d20. When you do, put X +1/+1 counters on each of up to two target creatures, where X is the result.
|
||||||
SVar:TrigRoll:DB$ RollDice | ResultSVar$ Result | Sides$ 20 | SubAbility$ DBImmediateTrigPutCounter
|
SVar:TrigRoll:DB$ RollDice | ResultSVar$ Result | Sides$ 20 | SubAbility$ DBImmediateTrigPutCounter
|
||||||
SVar:DBImmediateTrigPutCounter:DB$ ImmediateTrigger | Execute$ TrigPutCounter | RememberSVarAmount$ Result | TriggerDescription$ When you do, put X +1/+1 counters on each of up to two target creatures, where X is the result.
|
SVar:DBImmediateTrigPutCounter:DB$ ImmediateTrigger | Execute$ TrigPutCounter | RememberSVarAmount$ Result | TriggerDescription$ When you do, put X +1/+1 counters on each of up to two target creatures, where X is the result.
|
||||||
SVar:TrigPutCounter:DB$ PutCounter | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select up to two target creatures | CounterType$ P1P1 | CounterNum$ Result
|
SVar:TrigPutCounter:DB$ PutCounter | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select up to two target creatures | CounterType$ P1P1 | CounterNum$ X
|
||||||
|
SVar:X:Count$TriggerRememberAmount
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
Oracle:Flying\nWhenever Ancient Bronze Dragon deals combat damage to a player, roll a d20. When you do, put X +1/+1 counters on each of up to two target creatures, where X is the result.
|
Oracle:Flying\nWhenever Ancient Bronze Dragon deals combat damage to a player, roll a d20. When you do, put X +1/+1 counters on each of up to two target creatures, where X is the result.
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ Types:Legendary Creature Dragon Spirit
|
|||||||
PT:5/5
|
PT:5/5
|
||||||
K:Flying
|
K:Flying
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSkipPhase | TriggerDescription$ When CARDNAME dies, target player skips their next untap step. Tap up to five target permanents that player controls.
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSkipPhase | TriggerDescription$ When CARDNAME dies, target player skips their next untap step. Tap up to five target permanents that player controls.
|
||||||
SVar:TrigSkipPhase:DB$ SkipPhase | ValidTgts$ Player | Step$ Untap | IsCurse$ True | SubAbility$ TrigTap
|
SVar:TrigSkipPhase:DB$ SkipPhase | ValidTgts$ Player | Step$ Untap | RememberOriginalTargets$ True | IsCurse$ True | SubAbility$ TrigTap
|
||||||
SVar:TrigTap:DB$ Tap | TargetMin$ 0 | TargetMax$ 5 | TargetsWithDefinedController$ ParentTarget | ValidTgts$ Permanent
|
SVar:TrigTap:DB$ Tap | TargetMin$ 0 | TargetMax$ 5 | ValidTgts$ Permanent.ControlledBy ParentTarget,Permanent.ControlledBy Remembered
|
||||||
Oracle:Flying\nWhen Yosei, the Morning Star dies, target player skips their next untap step. Tap up to five target permanents that player controls.
|
Oracle:Flying\nWhen Yosei, the Morning Star dies, target player skips their next untap step. Tap up to five target permanents that player controls.
|
||||||
|
|||||||
@@ -717,6 +717,15 @@ public class DeckgenUtil {
|
|||||||
List<PaperCard> partners = new ArrayList<>();
|
List<PaperCard> partners = new ArrayList<>();
|
||||||
for (PaperCard c : preSelectedCards) {
|
for (PaperCard c : preSelectedCards) {
|
||||||
if (c.getRules().canBePartnerCommander()) {
|
if (c.getRules().canBePartnerCommander()) {
|
||||||
|
if (commander.getRules().hasKeyword("Partner") && commander.getRules().getPartnerWith().isEmpty() && c.getRules().hasKeyword("Partner") && c.getRules().getPartnerWith().isEmpty())
|
||||||
|
partners.add(c);
|
||||||
|
else if (commander.getRules().getPartnerWith().equals(c.getName()) && c.getRules().getPartnerWith().equals(commander.getName()))
|
||||||
|
partners.add(c);
|
||||||
|
else if (commander.getRules().hasKeyword("Friends forever") && c.getRules().hasKeyword("Friends forever"))
|
||||||
|
partners.add(c);
|
||||||
|
else if (commander.getRules().hasKeyword("Choose a Background") && c.getRules().canBeBackground())
|
||||||
|
partners.add(c);
|
||||||
|
else if (c.getRules().hasKeyword("Choose a Background") && commander.getRules().canBeBackground())
|
||||||
partners.add(c);
|
partners.add(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user