diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index e51e0d847a4..1bb38cdb467 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -19,7 +19,10 @@ package forge.ai; import com.google.common.base.Predicate; import com.google.common.base.Predicates; -import com.google.common.collect.*; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.google.common.collect.Multimap; import forge.ai.ability.ChooseGenericEffectAi; import forge.ai.ability.ProtectAi; import forge.ai.ability.TokenAi; @@ -44,7 +47,10 @@ import forge.game.player.Player; import forge.game.replacement.ReplacementEffect; import forge.game.replacement.ReplacementLayer; import forge.game.replacement.ReplacementType; -import forge.game.spellability.*; +import forge.game.spellability.AbilitySub; +import forge.game.spellability.SpellAbility; +import forge.game.spellability.SpellAbilityStackInstance; +import forge.game.spellability.TargetRestrictions; import forge.game.staticability.StaticAbility; import forge.game.trigger.Trigger; import forge.game.trigger.TriggerType; @@ -109,6 +115,10 @@ public class ComputerUtil { } final Cost cost = sa.getPayCosts(); + + // Remember the now-forgotten kicker cost? Why is this needed? + sa.getHostCard().setKickerMagnitude(source.getKickerMagnitude()); + // TODO: update mana color conversion for Daxos of Meletis if (cost == null) { if (ComputerUtilMana.payManaCost(ai, sa)) { diff --git a/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java b/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java index f3ec36f837d..fbc05b92472 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PermanentAi.java @@ -156,6 +156,7 @@ public class PermanentAi extends SpellAbilityAi { ManaCostBeingPaid mcbp = new ManaCostBeingPaid(mCost); if (!ComputerUtilMana.canPayManaCost(mcbp, sa, ai)) { card.setKickerMagnitude(i); + sa.setSVar("Multikicker", String.valueOf(i)); break; } card.setKickerMagnitude(i + 1); diff --git a/forge-gui/res/cardsfolder/b/bloodsoaked_altar.txt b/forge-gui/res/cardsfolder/b/bloodsoaked_altar.txt index ce386a4740e..85dc2f2e8e8 100644 --- a/forge-gui/res/cardsfolder/b/bloodsoaked_altar.txt +++ b/forge-gui/res/cardsfolder/b/bloodsoaked_altar.txt @@ -2,7 +2,7 @@ Name:Bloodsoaked Altar ManaCost:4 B B Types:Artifact A:AB$ Token | Cost$ T PayLife<2> Discard<1/Card> Sac<1/Creature> | LegacyImage$ b 5 5 demon flying m20 | TokenAmount$ 1 | TokenScript$ b_5_5_demon_flying | TokenOwner$ You | SorcerySpeed$ True | SpellDescription$ Create a 5/5 black Demon creature token with flying. Activate this ability only any time you could play a sorcery. -SVar:AIPreference:DiscardCost$Card +SVar:AIPreference:DiscardCost$Card | SacCost$Creature.Token,Creature.cmcLE3 DeckHas:Ability$Token AI:RemoveDeck:Random Oracle:{T}, Pay 2 life, Discard a card, Sacrifice a creature: Create a 5/5 black Demon creature token with flying. Activate this ability only any time you could play a sorcery. diff --git a/forge-gui/res/cardsfolder/b/bone_splinters.txt b/forge-gui/res/cardsfolder/b/bone_splinters.txt index 7cce439a522..00ed0903a9c 100644 --- a/forge-gui/res/cardsfolder/b/bone_splinters.txt +++ b/forge-gui/res/cardsfolder/b/bone_splinters.txt @@ -3,6 +3,6 @@ ManaCost:B Types:Sorcery A:SP$ Destroy | Cost$ B Sac<1/Creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Destroy target creature. SVar:AICostPreference:SacCost$Creature.Token,Creature.cmcLE2 -AI:RemoveDeck:All +AI:RemoveDeck:Random SVar:Picture:http://www.wizards.com/global/images/magic/general/bone_splinters.jpg Oracle:As an additional cost to cast this spell, sacrifice a creature.\nDestroy target creature. diff --git a/forge-gui/res/cardsfolder/s/saw_it_coming.txt b/forge-gui/res/cardsfolder/s/saw_it_coming.txt index c92c3bb8352..5bb90d98820 100644 --- a/forge-gui/res/cardsfolder/s/saw_it_coming.txt +++ b/forge-gui/res/cardsfolder/s/saw_it_coming.txt @@ -1,4 +1,4 @@ -Name:Saw it Coming +Name:Saw It Coming ManaCost:1 U U Types:Instant A:SP$ Counter | Cost$ 1 U U | TargetType$ Spell | ValidTgts$ Card | SpellDescription$ Counter target spell. diff --git a/forge-gui/res/cardsfolder/s/syr_konrad_the_grim.txt b/forge-gui/res/cardsfolder/s/syr_konrad_the_grim.txt index 38077851e5e..e985024d117 100644 --- a/forge-gui/res/cardsfolder/s/syr_konrad_the_grim.txt +++ b/forge-gui/res/cardsfolder/s/syr_konrad_the_grim.txt @@ -5,6 +5,5 @@ PT:5/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ Whenever another creature dies, or a creature card is put into a graveyard from anywhere than the battlefield, or a creature card leaves your graveyard, CARDNAME deals 1 damage to each opponent. T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Any | ValidCard$ Card.Creature+Other+YouOwn | TriggerZones$ Battlefield | Execute$ TrigDmg | Secondary$ True | TriggerDescription$ Whenever another creature dies, or a creature card is put into a graveyard from anywhere than the battlefield, or a creature card leaves your graveyard, CARDNAME deals 1 damage to each opponent. SVar:TrigDmg:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 1 -A:AB$ Mill | Cost$ 1 B | NumCards$ 1 | Defined$ Player | SpellDescription$ Each player mills a card. -AI:RemoveDeck:All +A:AB$ Mill | Cost$ 1 B | NumCards$ 1 | Defined$ Player | AILogic$ EndOfOppTurn | SpellDescription$ Each player mills a card. Oracle:Whenever another creature dies, or a creature card is put into a graveyard from anywhere other than the battlefield, or a creature card leaves your graveyard, Syr Konrad, the Grim deals 1 damage to each opponent.\n{1}{B}: Each player mills a card.