Replace first withContext call with more stable AI prediction (#7261)

This commit is contained in:
tool4ever
2025-03-25 19:08:36 +01:00
committed by GitHub
parent fcd8b8fd35
commit ac67a36ccf
29 changed files with 43 additions and 35 deletions

View File

@@ -111,6 +111,7 @@ public enum AbilityKey {
OriginalDefender("OriginalDefender"),
OriginalParams("OriginalParams"),
PayingMana("PayingMana"),
Phase("Phase"),
Player("Player"),
PreventedAmount("PreventedAmount"),
Produced("Produced"),

View File

@@ -58,7 +58,7 @@ public class SkipPhaseEffect extends SpellAbilityEffect {
final Card eff = createEffect(sa, player, name, image);
final StringBuilder sb = new StringBuilder();
sb.append("Event$ BeginPhase | ActiveZones$ Command | PlayerTurn$ You | ActivePhases$ ");
sb.append("Event$ BeginPhase | ActiveZones$ Command | ValidPlayer$ You | Phase$ ");
sb.append(phase != null ? phase : step);
if (duration != null && !isNextThisTurn) {
sb.append(" | Skip$ True");

View File

@@ -203,6 +203,7 @@ public class PhaseHandler implements java.io.Serializable {
}
final Map<AbilityKey, Object> repRunParams = AbilityKey.mapFromAffected(playerTurn);
repRunParams.put(AbilityKey.Phase, phase);
ReplacementResult repres = game.getReplacementHandler().run(ReplacementType.BeginPhase, repRunParams);
if (repres != ReplacementResult.NotReplaced) {
// Currently there is no effect to skip entire beginning phase

View File

@@ -4,6 +4,7 @@ import java.util.Map;
import forge.game.ability.AbilityKey;
import forge.game.card.Card;
import forge.game.phase.PhaseType;
import forge.game.spellability.SpellAbility;
public class ReplaceBeginPhase extends ReplacementEffect {
@@ -18,6 +19,14 @@ public class ReplaceBeginPhase extends ReplacementEffect {
@Override
public boolean canReplace(Map<AbilityKey, Object> runParams) {
if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Affected))) {
return false;
}
if (hasParam("Phase") && !PhaseType.parseRange(getParam("Phase")).contains(runParams.get(AbilityKey.Phase))) {
return false;
}
return true;
}

View File

@@ -18,7 +18,6 @@
package forge.game.replacement;
import java.util.*;
import java.util.concurrent.Callable;
import com.google.common.base.MoreObjects;
import forge.game.card.*;
@@ -856,15 +855,13 @@ public class ReplacementHandler {
* Helper function to check if a phase would be skipped for AI.
*/
public boolean wouldPhaseBeSkipped(final Player player, final PhaseType phase) {
Callable<Boolean> proc = () -> {
final Map<AbilityKey, Object> repParams = AbilityKey.newMap();
List<ReplacementEffect> list = getReplacementList(ReplacementType.BeginPhase, repParams, ReplacementLayer.Control);
if (list.isEmpty()) {
return false;
}
return true;
};
return player.getGame().getPhaseHandler().withContext(proc, player, phase);
final Map<AbilityKey, Object> repParams = AbilityKey.mapFromAffected(player);
repParams.put(AbilityKey.Phase, phase);
List<ReplacementEffect> list = getReplacementList(ReplacementType.BeginPhase, repParams, ReplacementLayer.Control);
if (list.isEmpty()) {
return false;
}
return true;
}
/**

View File

@@ -4,7 +4,7 @@ Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters, exile the top seven cards of your library face down. You may look at the cards exiled with CARDNAME, and you may play lands and cast spells from among those cards.
SVar:TrigExile:DB$ Dig | Defined$ You | DigNum$ 7 | ChangeNum$ All | DestinationZone$ Exile | ExileFaceDown$ True | NoReveal$ True
S:Mode$ Continuous | Affected$ Card.ExiledWithSource | AffectedZone$ Exile | MayPlay$ True | MayLookAt$ You | Description$ You may look at the cards exiled with CARDNAME, and you may play lands and cast spells from among those cards.
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ CantBeCast | ValidCard$ Card | Caster$ You | NumLimitEachTurn$ 1 | Description$ You can't cast more than one spell each turn.
AI:RemoveDeck:All
Oracle:When Colfenor's Plans enters, exile the top seven cards of your library face down.\nYou may look at the cards exiled with Colfenor's Plans, and you may play lands and cast spells from among those cards.\nSkip your draw step.\nYou can't cast more than one spell each turn.

View File

@@ -3,7 +3,7 @@ ManaCost:4 B G U
Types:Legendary Creature Gorgon Wizard
PT:4/4
K:Deathtouch
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ LT7 | Execute$ TrigDraw | TriggerDescription$ At the beginning of your upkeep, if you have fewer than seven cards in hand, draw cards equal to the difference.
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ Difference
SVar:X:Count$InYourHand

View File

@@ -6,7 +6,7 @@ K:Flying
K:Kicker:W W
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroyYourLand | TriggerDescription$ When CARDNAME enters, destroy all lands you control. If it was kicked, destroy all lands instead.
SVar:TrigDestroyYourLand:DB$ DestroyAll | ValidCards$ Land.YouCtrl | ConditionDefined$ Self | ConditionPresent$ Card.!kicked | SubAbility$ TrigKicker
SVar:TrigKicker:DB$ DestroyAll | ValidCards$ Land | Condition$ Kicked
SVar:TrigKicker:DB$ DestroyAll | ValidCards$ Land | ConditionDefined$ Self | ConditionPresent$ Card.kicked
AI:RemoveDeck:Random
DeckNeeds:Color$White
Oracle:Kicker {W}{W} (You may pay an additional {W}{W} as you cast this spell.)\nFlying\nWhen Desolation Angel enters, destroy all lands you control. If it was kicked, destroy all lands instead.

View File

@@ -5,7 +5,7 @@ PT:3/3
K:Kicker:W W
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters, destroy all other creatures you control. If it was kicked, destroy all other creatures instead.
SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Creature.StrictlyOther+YouCtrl | ConditionDefined$ Self | ConditionPresent$ Card.!kicked | SubAbility$ TrigKicker
SVar:TrigKicker:DB$ DestroyAll | ValidCards$ Creature.StrictlyOther | Condition$ Kicked
SVar:TrigKicker:DB$ DestroyAll | ValidCards$ Creature.StrictlyOther | ConditionDefined$ Self | ConditionPresent$ Card.kicked
AI:RemoveDeck:All
AI:RemoveDeck:Random
DeckNeeds:Color$White

View File

@@ -1,7 +1,7 @@
Name:Dragon Appeasement
ManaCost:3 B R G
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Sacrificed | ValidCard$ Creature.YouCtrl | Execute$ TrigDrawCard | OptionalDecider$ You | TriggerZones$ Battlefield | TriggerDescription$ Whenever you sacrifice a creature, you may draw a card.
SVar:TrigDrawCard:DB$ Draw | Defined$ You | NumCards$ 1
AI:RemoveDeck:Random

View File

@@ -1,7 +1,7 @@
Name:Eon Hub
ManaCost:5
Types:Artifact
R:Event$ BeginPhase | ActiveZones$ Battlefield | ActivePhases$ Upkeep | Skip$ True | Description$ Players skip their upkeep steps.
R:Event$ BeginPhase | ActiveZones$ Battlefield | Phase$ Upkeep | Skip$ True | Description$ Players skip their upkeep steps.
SVar:NonStackingEffect:True
AI:RemoveDeck:Random
Oracle:Players skip their upkeep steps.

View File

@@ -4,7 +4,7 @@ Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutHunger | TriggerDescription$ At the beginning of your upkeep, put a hunger counter on CARDNAME. Then destroy CARDNAME if it has five or more hunger counters on it.
SVar:TrigPutHunger:DB$ PutCounter | Defined$ Self | CounterType$ HUNGER | CounterNum$ 1 | SubAbility$ DBDestroyHunger
SVar:DBDestroyHunger:DB$ Destroy | Defined$ Self | ConditionDefined$ Self | ConditionPresent$ Card.counters_GE5_HUNGER
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Layer$ Other | Optional$ True | ReplaceWith$ DBGainLife | Description$ If you would begin your draw step, you may skip that step instead. If you do, you gain 2 life.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Layer$ Other | Optional$ True | ReplaceWith$ DBGainLife | Description$ If you would begin your draw step, you may skip that step instead. If you do, you gain 2 life.
SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2
T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ DBDestroySelf | TriggerDescription$ When you draw a card, destroy CARDNAME.
SVar:DBDestroySelf:DB$ Destroy | Defined$ Self

View File

@@ -2,7 +2,7 @@ Name:Gibbering Descent
ManaCost:4 B B
Types:Enchantment
K:Madness:2 B B
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Upkeep | Skip$ True | Hellbent$ True | Description$ Hellbent — Skip your upkeep step if you have no cards in hand.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Upkeep | Skip$ True | Hellbent$ True | Description$ Hellbent — Skip your upkeep step if you have no cards in hand.
T:Mode$ Phase | Phase$ Upkeep | Execute$ TrigLoseLifeDiscard | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, that player loses 1 life and discards a card.
SVar:TrigLoseLifeDiscard:DB$ LoseLife | Defined$ TriggeredPlayer | LifeAmount$ 1 | SubAbility$ DBDiscard
SVar:DBDiscard:DB$ Discard | Defined$ TriggeredPlayer | NumCards$ 1 | Mode$ TgtChoose

View File

@@ -4,7 +4,7 @@ Types:Creature Demon
PT:6/6
K:Flying
K:Trample
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you play a land or cast a spell, you draw a card and you lose 1 life.
T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever you play a land or cast a spell, you draw a card and you lose 1 life.
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBLoseLife

View File

@@ -4,7 +4,7 @@ Types:Creature Leech Horror
PT:*/*
K:Kicker:U
K:ETBReplacement:Other:TrigMill
SVar:TrigMill:DB$ Mill | NumCards$ 4 | Defined$ You | Condition$ Kicked | SpellDescription$ As CARDNAME enters, if it was kicked, mill four cards. (To mill a card, put the top card of your library into your graveyard.)
SVar:TrigMill:DB$ Mill | NumCards$ 4 | Defined$ You | ConditionDefined$ Self | ConditionPresent$ Card.kicked | SpellDescription$ As CARDNAME enters, if it was kicked, mill four cards. (To mill a card, put the top card of your library into your graveyard.)
S:Mode$ Continuous | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the highest mana value among cards in your graveyard.
SVar:X:Count$ValidGraveyard Card.YouOwn$GreatestCMC
SVar:NoZeroToughnessAI:True

View File

@@ -1,7 +1,7 @@
Name:Necrodominance
ManaCost:B B B
Types:Legendary Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ At the beginning of your end step, you may pay any amount of life. If you do, draw that many cards.
SVar:TrigDraw:AB$ Draw | Cost$ PayLife<X> | NumCards$ X
SVar:X:Count$xPaid

View File

@@ -1,7 +1,7 @@
Name:Necropotence
ManaCost:B B B
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Discarded | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigChange | TriggerDescription$ Whenever you discard a card, exile that card from your graveyard.
SVar:TrigChange:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile
A:AB$ ChangeZone | Cost$ PayLife<1> | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | ExileFaceDown$ True | RememberChanged$ True | SubAbility$ DelayedReturn | AILogic$ Necropotence | AILifeThreshold$ 1 | SpellDescription$ Exile the top card of your library face down. Put that card into your hand at the beginning of your next end step.

View File

@@ -2,7 +2,7 @@ Name:Necropotence Avatar
ManaCost:no cost
Types:Vanguard
HandLifeModifier:+0/+4
R:Event$ BeginPhase | ActiveZones$ Command | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Command | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ End Of Turn | ValidPlayer$ You | TriggerZones$ Command | CheckSVar$ Turns | SVarCompare$ GT1 | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if it's not the first turn of the game, put a death counter on CARDNAME. You draw X cards and you lose X life, where X is the number of death counters on CARDNAME.
SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ DEATH | CounterNum$ 1 | SubAbility$ TrigDraw
SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ X | SubAbility$ DBLoseLife

View File

@@ -1,7 +1,7 @@
Name:Null Profusion
ManaCost:4 B B
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ 2 | Description$ Your maximum hand size is 2.
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you play a card, draw a card.
T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever you play a card, draw a card.

View File

@@ -3,7 +3,7 @@ ManaCost:2 U U
Types:Enchantment Aura
K:Enchant opponent
A:SP$ Attach | ValidTgts$ Opponent | AILogic$ Curse
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Drawn | ValidCard$ Card.OwnedBy Player.EnchantedBy | TriggerZones$ Battlefield | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever enchanted opponent draws a card, you may draw a card.
SVar:TrigDraw:DB$ Draw | NumCards$ 1
AI:RemoveDeck:All

View File

@@ -1,7 +1,7 @@
Name:Recycle
ManaCost:4 G G
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ Continuous | Affected$ You | SetMaxHandSize$ 2 | Description$ Your maximum hand size is 2.
T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you play a card, draw a card.
T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Whenever you play a card, draw a card.

View File

@@ -1,7 +1,7 @@
Name:Sands of Time
ManaCost:4
Types:Artifact
R:Event$ BeginPhase | ActiveZones$ Battlefield | ActivePhases$ Untap | Skip$ True | Description$ Each player skips their untap step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | Phase$ Untap | Skip$ True | Description$ Each player skips their untap step.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigSands | TriggerDescription$ At the beginning of each player's upkeep, that player simultaneously untaps each tapped artifact, creature, and land they control and taps each untapped artifact, creature, and land they control.
SVar:TrigSands:DB$ UntapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.tapped,Creature.tapped,Land.tapped | RememberUntapped$ True | SubAbility$ DBTap
SVar:DBTap:DB$ TapAll | Defined$ TriggeredPlayer | ValidCards$ Artifact.untapped+IsNotRemembered,Creature.untapped+IsNotRemembered,Land.untapped+IsNotRemembered | TapperController$ True | SubAbility$ DBCleanup

View File

@@ -3,7 +3,7 @@ ManaCost:2 W
Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUpkeep | TriggerDescription$ At the beginning of your upkeep, sacrifice CARDNAME unless you discard a card.
SVar:TrigUpkeep:DB$ Sacrifice | UnlessPayer$ You | UnlessCost$ Discard<1/Card>
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
S:Mode$ Continuous | Affected$ You | AddKeyword$ Shroud | Description$ You have shroud. (You can't be the target of spells or abilities.)
R:Event$ DamageDone | ActiveZones$ Battlefield | Prevent$ True | ValidTarget$ You | Description$ Prevent all damage that would be dealt to you.
AI:RemoveDeck:All

View File

@@ -1,7 +1,7 @@
Name:Stasis
ManaCost:1 U
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | ActivePhases$ Untap | Skip$ True | Description$ Players skip their untap steps.
R:Event$ BeginPhase | ActiveZones$ Battlefield | Phase$ Untap | Skip$ True | Description$ Players skip their untap steps.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUpkeep | TriggerDescription$ At the beginning of your upkeep, sacrifice CARDNAME unless you pay {U}.
SVar:TrigUpkeep:DB$ Sacrifice | UnlessPayer$ You | UnlessCost$ U
AI:RemoveDeck:Random

View File

@@ -1,7 +1,7 @@
Name:Symbiotic Deployment
ManaCost:2 G
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
A:AB$ Draw | Cost$ 1 tapXType<2/Creature> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card.
AI:RemoveDeck:Random
SVar:NonStackingEffect:True

View File

@@ -2,7 +2,7 @@ Name:Taigam, Sidisi's Hand
ManaCost:3 U B
Types:Legendary Creature Human Wizard
PT:3/4
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard.
SVar:TrigDig:DB$ Dig | DigNum$ 3 | DestinationZone2$ Graveyard | NoReveal$ True | SpellDescription$ Look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard.
A:AB$ Pump | Cost$ B T ExileFromGrave<X/Card> | CostDesc$ {B}, {T}, Exile X cards from your graveyard: | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -X | NumDef$ -X | IsCurse$ True | SpellDescription$ Target creature gets -X/-X until end of turn.

View File

@@ -1,7 +1,7 @@
Name:The Eon Fog
ManaCost:no cost
Types:Plane Equilor
R:Event$ BeginPhase | ActiveZones$ Command | ActivePhases$ Untap | Skip$ True | Description$ Players skip their untap steps.
R:Event$ BeginPhase | ActiveZones$ Command | Phase$ Untap | Skip$ True | Description$ Players skip their untap steps.
T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all permanents you control.
SVar:RolledChaos:DB$ UntapAll | ValidCards$ Permanent.YouCtrl
SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9

View File

@@ -1,7 +1,7 @@
Name:Wild Wasteland
ManaCost:2 R
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ ExileTwo | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, exile the top two cards of your library. You may play those cards this turn.
SVar:ExileTwo:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect
SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | Duration$ EndOfTurn

View File

@@ -1,7 +1,7 @@
Name:Yawgmoth's Bargain
ManaCost:4 B B
Types:Enchantment
R:Event$ BeginPhase | ActiveZones$ Battlefield | PlayerTurn$ You | ActivePhases$ Draw | Skip$ True | Description$ Skip your draw step.
R:Event$ BeginPhase | ActiveZones$ Battlefield | ValidPlayer$ You | Phase$ Draw | Skip$ True | Description$ Skip your draw step.
A:AB$ Draw | Cost$ PayLife<1> | NumCards$ 1 | AILogic$ YawgmothsBargain | AILifeThreshold$ 1 | SpellDescription$ Draw a card.
SVar:AICastPreference:NeverCastIfLifeBelow$ 7
AI:RemoveDeck:Random