- RemAIDeck update: next iteration.

This commit is contained in:
Agetian
2017-10-06 05:54:29 +00:00
parent 0733f7a69a
commit 3613cb704e
13 changed files with 34 additions and 18 deletions

View File

@@ -513,6 +513,21 @@ public class ComputerUtilMana {
// extraMana, sa.getHostCard(), sa.toUnsuppressedString(), StringUtils.join(paymentPlan, "\n\t")); // extraMana, sa.getHostCard(), sa.toUnsuppressedString(), StringUtils.join(paymentPlan, "\n\t"));
// } // }
// See if it's possible to pay with something that was left in the mana pool in corner cases,
// e.g. Gemstone Caverns with a Luck counter on it generating colored mana (which fails to be
// processed correctly on a per-ability basis, leaving floating mana in the pool)
if (!cost.isPaid() && !manapool.isEmpty()) {
for (ManaCostShard shard : cost.getDistinctShards()) {
for (byte color : MagicColor.WUBRGC) {
manapool.tryPayCostWithColor(color, sa, cost);
}
if (cost.isPaid()) {
break;
}
}
}
// The cost is still unpaid, so refund the mana and report
if (!cost.isPaid()) { if (!cost.isPaid()) {
refundMana(manaSpentToPay, ai, sa); refundMana(manaSpentToPay, ai, sa);
if (test) { if (test) {

View File

@@ -3,6 +3,8 @@ ManaCost:R
Types:Sorcery Types:Sorcery
A:SP$ ChangeZone | Cost$ R | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | SubAbility$ DBDiscard | Mandatory$ True | SpellDescription$ Search your library for a card, put that card into your hand, discard a card at random, then shuffle your library. A:SP$ ChangeZone | Cost$ R | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | SubAbility$ DBDiscard | Mandatory$ True | SpellDescription$ Search your library for a card, put that card into your hand, discard a card at random, then shuffle your library.
SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 1 | Mode$ Random SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 1 | Mode$ Random
SVar:RemAIDeck:True SVar:NeedsToPlayVar:Z GE2
SVar:Z:Count$InYourHand
SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/gamble.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/gamble.jpg
Oracle:Search your library for a card, put that card into your hand, discard a card at random, then shuffle your library. Oracle:Search your library for a card, put that card into your hand, discard a card at random, then shuffle your library.

View File

@@ -3,6 +3,6 @@ ManaCost:3 B B
Types:Creature Zombie Giant Types:Creature Zombie Giant
PT:4/4 PT:4/4
A:AB$ ChangeZone | Cost$tapXType<3/Cleric> | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to your hand. A:AB$ ChangeZone | Cost$tapXType<3/Cleric> | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to your hand.
Var:RemAIDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/gangrenous_goliath.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/gangrenous_goliath.jpg
Oracle:Tap three untapped Clerics you control: Return Gangrenous Goliath from your graveyard to your hand. Oracle:Tap three untapped Clerics you control: Return Gangrenous Goliath from your graveyard to your hand.

View File

@@ -5,7 +5,6 @@ Text:CARDNAME can be attached only to a creature with toughness 4 or greater.
K:Equip 3 K:Equip 3
K:CantEquip Creature.toughnessLT4 K:CantEquip Creature.toughnessLT4
S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 3 | AddKeyword$ Trample | Description$ Equipped creature gets +3/+0 and has trample. S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 3 | AddKeyword$ Trample | Description$ Equipped creature gets +3/+0 and has trample.
SVar:RemAIDeck:True
SVar:RemRandomDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/gate_smasher.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/gate_smasher.jpg
Oracle:Gate Smasher can be attached only to a creature with toughness 4 or greater.\nEquipped creature gets +3/+0 and has trample.\nEquip {3} Oracle:Gate Smasher can be attached only to a creature with toughness 4 or greater.\nEquipped creature gets +3/+0 and has trample.\nEquip {3}

View File

@@ -2,12 +2,13 @@ Name:Gemstone Caverns
ManaCost:no cost ManaCost:no cost
Types:Legendary Land Types:Legendary Land
K:MayEffectFromOpeningHand:FromOpeningHand:!PlayFirst K:MayEffectFromOpeningHand:FromOpeningHand:!PlayFirst
SVar:FromOpeningHand:AB$ ChangeZone | Cost$ 0 | Defined$ Self | Origin$ Hand | Destination$ Battlefield | SubAbility$ LuckCounter | SpellDescription$ If CARDNAME is in your opening hand and you're not playing first, you may begin the game with CARDNAME on the battlefield with a luck counter on it. SVar:FromOpeningHand:DB$ ChangeZone | Defined$ Self | Origin$ Hand | Destination$ Battlefield | SubAbility$ LuckCounter | SpellDescription$ If CARDNAME is in your opening hand and you're not playing first, you may begin the game with CARDNAME on the battlefield with a luck counter on it.
SVar:LuckCounter:DB$ PutCounter | CounterType$ LUCK | CounterNum$ 1 | Defined$ Self | SubAbility$ ExileFromHand SVar:LuckCounter:DB$ PutCounter | CounterType$ LUCK | CounterNum$ 1 | Defined$ Self | SubAbility$ ExileFromHand
SVar:ExileFromHand:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | SpellDescription$ If you do, exile a card from your hand. SVar:ExileFromHand:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | SpellDescription$ If you do, exile a card from your hand.
A:AB$ Mana | Cost$ T | Produced$ C | ConditionCheckSVar$ CheckCounter | ConditionSVarCompare$ EQ0 | SubAbility$ DBMana | SpellDescription$ Add {C} to your mana pool. If CARDNAME has a luck counter on it, instead add one mana of any color to your mana pool. A:AB$ Mana | Cost$ T | Produced$ C | ConditionCheckSVar$ CheckCounter | ConditionSVarCompare$ EQ0 | SubAbility$ DBMana | References$ CheckCounter | SpellDescription$ Add {C} to your mana pool. If CARDNAME has a luck counter on it, instead add one mana of any color to your mana pool.
SVar:DBMana:DB$ Mana | Produced$ Any | ConditionCheckSVar$ CheckCounter | ConditionSVarCompare$ GE1 SVar:DBMana:DB$ Mana | Produced$ Any | ConditionCheckSVar$ CheckCounter | ConditionSVarCompare$ GE1 | References$ CheckCounter
SVar:CheckCounter:Count$CardCounters.LUCK SVar:CheckCounter:Count$CardCounters.LUCK
#TODO: The AI is not yet fully aware that this card can generate any color of mana at any time if it has a luck counter on it.
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/gemstone_caverns.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/gemstone_caverns.jpg
Oracle:If Gemstone Caverns is in your opening hand and you're not playing first, you may begin the game with Gemstone Caverns on the battlefield with a luck counter on it. If you do, exile a card from your hand.\n{T}: Add {C} to your mana pool. If Gemstone Caverns has a luck counter on it, instead add one mana of any color to your mana pool. Oracle:If Gemstone Caverns is in your opening hand and you're not playing first, you may begin the game with Gemstone Caverns on the battlefield with a luck counter on it. If you do, exile a card from your hand.\n{T}: Add {C} to your mana pool. If Gemstone Caverns has a luck counter on it, instead add one mana of any color to your mana pool.

View File

@@ -3,6 +3,7 @@ ManaCost:X G G G
Types:Sorcery Types:Sorcery
A:SP$ Dig | Cost$ X G G G | DigNum$ X | Reveal$ True | AnyNumber$ True | ChangeValid$ Permanent.cmcLEX | DestinationZone$ Battlefield | DestinationZone2$ Graveyard | References$ X | SpellDescription$ Reveal the top X cards of your library. You may put any number of permanent cards with converted mana cost X or less from among them onto the battlefield. Then put all cards revealed this way that weren't put onto the battlefield into your graveyard. A:SP$ Dig | Cost$ X G G G | DigNum$ X | Reveal$ True | AnyNumber$ True | ChangeValid$ Permanent.cmcLEX | DestinationZone$ Battlefield | DestinationZone2$ Graveyard | References$ X | SpellDescription$ Reveal the top X cards of your library. You may put any number of permanent cards with converted mana cost X or less from among them onto the battlefield. Then put all cards revealed this way that weren't put onto the battlefield into your graveyard.
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:RemAIDeck:True SVar:NeedsToPlayVar:Z GE6
SVar:Z:Count$Valid Land.YouCtrl+untapped
SVar:Picture:http://www.wizards.com/global/images/magic/general/genesis_wave.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/genesis_wave.jpg
Oracle:Reveal the top X cards of your library. You may put any number of permanent cards with converted mana cost X or less from among them onto the battlefield. Then put all cards revealed this way that weren't put onto the battlefield into your graveyard. Oracle:Reveal the top X cards of your library. You may put any number of permanent cards with converted mana cost X or less from among them onto the battlefield. Then put all cards revealed this way that weren't put onto the battlefield into your graveyard.

View File

@@ -6,5 +6,5 @@ R:Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Player,Creature |
SVar:DmgHalfDown:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:DmgHalfDown:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X
SVar:X:ReplaceCount$DamageAmount/HalfDown SVar:X:ReplaceCount$DamageAmount/HalfDown
SVar:Picture:http://www.wizards.com/global/images/magic/general/ghosts_of_the_innocent.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/ghosts_of_the_innocent.jpg
SVar:RemAIDeck:True SVar:RemRandomDeck:True
Oracle:If a source would deal damage to a creature or player, it deals half that damage, rounded down, to that creature or player instead. Oracle:If a source would deal damage to a creature or player, it deals half that damage, rounded down, to that creature or player instead.

View File

@@ -2,6 +2,5 @@ Name:Gilded Lotus
ManaCost:5 ManaCost:5
Types:Artifact Types:Artifact
A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 3 | SpellDescription$ Add three mana of any one color to your mana pool. A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 3 | SpellDescription$ Add three mana of any one color to your mana pool.
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/gilded_lotus.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/gilded_lotus.jpg
Oracle:{T}: Add three mana of any one color to your mana pool. Oracle:{T}: Add three mana of any one color to your mana pool.

View File

@@ -8,6 +8,5 @@ SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.Other | Mandatory$ True | T
SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigBounce | TriggerDescription$ Return exiled permanent to the battlefield. | RememberObjects$ Remembered | SubAbility$ DBCleanup SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigBounce | TriggerDescription$ Return exiled permanent to the battlefield. | RememberObjects$ Remembered | SubAbility$ DBCleanup
SVar:TrigBounce:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ DelayTriggerRemembered SVar:TrigBounce:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | Defined$ DelayTriggerRemembered
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/glimmerpoint_stag.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/glimmerpoint_stag.jpg
Oracle:Vigilance\nWhen Glimmerpoint Stag enters the battlefield, exile another target permanent. Return that card to the battlefield under its owner's control at the beginning of the next end step. Oracle:Vigilance\nWhen Glimmerpoint Stag enters the battlefield, exile another target permanent. Return that card to the battlefield under its owner's control at the beginning of the next end step.

View File

@@ -2,8 +2,8 @@ Name:Goblin Lyre
ManaCost:3 ManaCost:3
Types:Artifact Types:Artifact
A:AB$ FlipACoin | Cost$ Sac<1/CARDNAME> | WinSubAbility$ DBDamageOpp | LoseSubAbility$ DBDamageYou | ValidTgts$ Opponent | TgtPrompt$ Choose target opponent | SpellDescription$ Flip a coin. If you win the flip, Goblin Lyre deals damage to target opponent equal to the number of creatures you control. If you lose the flip, Goblin Lyre deals damage to you equal to the number of creatures that opponent controls. A:AB$ FlipACoin | Cost$ Sac<1/CARDNAME> | WinSubAbility$ DBDamageOpp | LoseSubAbility$ DBDamageYou | ValidTgts$ Opponent | TgtPrompt$ Choose target opponent | SpellDescription$ Flip a coin. If you win the flip, Goblin Lyre deals damage to target opponent equal to the number of creatures you control. If you lose the flip, Goblin Lyre deals damage to you equal to the number of creatures that opponent controls.
SVar:DBDamageOpp:DB$ DealDamage | Cost$ 0 | Defined$ Targeted | NumDmg$ X | References$ X SVar:DBDamageOpp:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | References$ X
SVar:DBDamageYou:DB$ DealDamage | Cost$ 0 | Defined$ You | NumDmg$ Y | References$ Y SVar:DBDamageYou:DB$ DealDamage | Defined$ You | NumDmg$ Y | References$ Y
SVar:X:Count$Valid Creature.YouCtrl SVar:X:Count$Valid Creature.YouCtrl
SVar:Y:Count$Valid Creature.OppCtrl SVar:Y:Count$Valid Creature.OppCtrl
SVar:RemAIDeck:True SVar:RemAIDeck:True

View File

@@ -10,6 +10,6 @@ SVar:EventDamageDone:Event$ DamageDone | ValidSource$ Card.EffectSource | Replac
SVar:DamageYou:DB$ ReplaceEffect | VarName$ Affected | VarValue$ You | VarType$ Player | SubAbility$ ExileEffect SVar:DamageYou:DB$ ReplaceEffect | VarName$ Affected | VarValue$ You | VarType$ Player | SubAbility$ ExileEffect
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
SVar:PsychoX:ReplaceCount$DamageAmount SVar:PsychoX:ReplaceCount$DamageAmount
SVar:RemAIDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_psychopath.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_psychopath.jpg
Oracle:Whenever Goblin Psychopath attacks or blocks, flip a coin. If you lose the flip, the next time it would deal combat damage this turn, it deals that damage to you instead. Oracle:Whenever Goblin Psychopath attacks or blocks, flip a coin. If you lose the flip, the next time it would deal combat damage this turn, it deals that damage to you instead.

View File

@@ -2,9 +2,9 @@ Name:Grave Peril
ManaCost:1 B ManaCost:1 B
Types:Enchantment Types:Enchantment
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonBlack |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When a nonblack creature enters the battlefield, sacrifice Grave Peril. If you do, destroy that creature. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonBlack |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When a nonblack creature enters the battlefield, sacrifice Grave Peril. If you do, destroy that creature.
SVar:TrigSac:AB$SacrificeAll | Cost$ 0 | ValidCards$ Card.Self | SubAbility$ DBDestroy | RememberSacrificed$ True SVar:TrigSac:DB$ SacrificeAll | ValidCards$ Card.Self | SubAbility$ DBDestroy | RememberSacrificed$ True
SVar:DBDestroy:DB$Destroy | Cost$ 0 | Defined$ TriggeredCard | ConditionDefined$ Remembered | ConditionPresent$ Card SVar:DBDestroy:DB$ Destroy | Defined$ TriggeredCard | ConditionDefined$ Remembered | ConditionPresent$ Card
SVar:NonStackingEffect:True SVar:NonStackingEffect:True
SVar:RemAIDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_peril.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_peril.jpg
Oracle:When a nonblack creature enters the battlefield, sacrifice Grave Peril. If you do, destroy that creature. Oracle:When a nonblack creature enters the battlefield, sacrifice Grave Peril. If you do, destroy that creature.

View File

@@ -3,8 +3,8 @@ ManaCost:2 B
Types:Creature Beast Types:Creature Beast
PT:3/3 PT:3/3
T:Mode$ DamageDoneOnce | ValidTarget$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, each opponent gains that much life. T:Mode$ DamageDoneOnce | ValidTarget$ Card.Self | Execute$ TrigGain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, each opponent gains that much life.
SVar:TrigGain:AB$ GainLife | Cost$ 0 | Defined$ Player.Opponent | LifeAmount$ X | References$ X SVar:TrigGain:DB$ GainLife | Defined$ Player.Opponent | LifeAmount$ X | References$ X
SVar:X:TriggerCount$DamageAmount SVar:X:TriggerCount$DamageAmount
SVar:RemAIDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/grollub.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/grollub.jpg
Oracle:Whenever Grollub is dealt damage, each opponent gains that much life. Oracle:Whenever Grollub is dealt damage, each opponent gains that much life.