diff --git a/.gitattributes b/.gitattributes index 121d23a2b5a..7e343eb9194 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3416,6 +3416,7 @@ res/cardsfolder/f/fiend_of_the_shadows.txt -text res/cardsfolder/f/fierce_empath.txt svneol=native#text/plain res/cardsfolder/f/fiery_conclusion.txt svneol=native#text/plain res/cardsfolder/f/fiery_fall.txt svneol=native#text/plain +res/cardsfolder/f/fiery_gambit.txt -text res/cardsfolder/f/fiery_hellhound.txt svneol=native#text/plain res/cardsfolder/f/fiery_mantle.txt svneol=native#text/plain res/cardsfolder/f/fiery_temper.txt svneol=native#text/plain diff --git a/res/cardsfolder/f/fiery_gambit.txt b/res/cardsfolder/f/fiery_gambit.txt new file mode 100644 index 00000000000..6543f10f3dd --- /dev/null +++ b/res/cardsfolder/f/fiery_gambit.txt @@ -0,0 +1,27 @@ +Name:Fiery Gambit +ManaCost:2 R +Types:Sorcery +Text:no text +# Target a creature for three damage +A:SP$ Pump | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Choose target creature for 3 damage | SubAbility$ RepeatFlip | StackDescription$ None | SpellDescription$ Flip a coin until you lose a flip or choose to stop flipping. If you lose a flip, CARDNAME has no effect. If you win one or more flips, CARDNAME deals 3 damage to target creature. If you win two or more flips, CARDNAME deals 6 damage to each opponent. If you win three or more flips, draw nine cards and untap all lands you control. +# Repeat Flip +SVar:RepeatFlip:DB$ Repeat | RepeatSubAbility$ FlipAgain | RepeatCheckSVar$ Tails | RepeatSVarCompare$ EQ0 | RepeatOptional$ True | SubAbility$ DamageCreature +SVar:FlipAgain:DB$ FlipACoin | FlipOnly$ True | WinSubAbility$ IncrementHeads | LoseSubAbility$ IncrementTails +SVar:IncrementHeads:DB$ StoreSVar | SVar$ Heads | Type$ CountSVar | Expression$ Heads/Plus.1 +SVar:IncrementTails:DB$ StoreSVar | SVar$ Tails | Type$ CountSVar | Expression$ Tails/Plus.1 | SubAbility$ ResetHeads +SVar:ResetHeads:DB$ StoreSVar | SVar$ Heads | Type$ Number | Expression$ 0 +# Damage target creature +SVar:DamageCreature:DB$ DealDamage | Defined$ Targeted | NumDmg$ 3 | ConditionCheckSVar$ Heads | ConditionSVarCompare$ GE1 | SubAbility$ DamageOpponents +# Damage each opponent +SVar:DamageOpponents:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 6 | ConditionCheckSVar$ Heads | ConditionSVarCompare$ GE2 | SubAbility$ DrawNine +# Draw Nine Cards +SVar:DrawNine:DB$ Draw | Defined$ You | NumCards$ 9 | ConditionCheckSVar$ Heads | ConditionSVarCompare$ GE3 | SubAbility$ UntapLands +# Untap Lands +SVar:UntapLands:DB$ UntapAll | ValidCards$ Land.YouCtrl | ConditionCheckSVar$ Heads | ConditionSVarCompare$ GE3 +SVar:Heads:Number$0 +SVar:Tails:Number$0 +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/fiery_gambit.jpg +SetInfo:MRD|Rare|http://magiccards.info/scans/en/mi/90.jpg +Oracle:Flip a coin until you lose a flip or choose to stop flipping. If you lose a flip, Fiery Gambit has no effect. If you win one or more flips, Fiery Gambit deals 3 damage to target creature. If you win two or more flips, Fiery Gambit deals 6 damage to each opponent. If you win three or more flips, draw nine cards and untap all lands you control. +End \ No newline at end of file diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java index b2e2a248132..0a30eca2c31 100644 --- a/src/main/java/forge/GameActionUtil.java +++ b/src/main/java/forge/GameActionUtil.java @@ -664,20 +664,35 @@ public final class GameActionUtil { final String[] choices = { "heads", "tails" }; final boolean flip = MyRandom.getRandom().nextBoolean(); - if (caller.isHuman()) { + if (null == caller) { + choice = "heads"; + } + else if (caller.isHuman()) { choice = GuiChoose.one(source.getName() + " - Call coin flip", choices); } else { choice = choices[MyRandom.getRandom().nextInt(2)]; } final boolean winFlip = flip == choice.equals("heads"); - final String winMsg = winFlip ? " wins flip." : " loses flip."; + String winMsg = ""; + if (null == caller) { + winMsg = flip ? "heads." : "tails."; + } + else { + winMsg = winFlip ? " wins flip." : " loses flip."; + } // Play the Flip A Coin sound Singletons.getModel().getGame().getEvents().post(new FlipCoinEvent()); - JOptionPane.showMessageDialog(null, source.getName() + " - " + caller + winMsg, source.getName(), - JOptionPane.PLAIN_MESSAGE); + if (null == caller) { + JOptionPane.showMessageDialog(null, source.getName() + " - Coin flip was " + winMsg, source.getName(), + JOptionPane.PLAIN_MESSAGE); + } + else { + JOptionPane.showMessageDialog(null, source.getName() + " - " + caller + winMsg, source.getName(), + JOptionPane.PLAIN_MESSAGE); + } return winFlip; } diff --git a/src/main/java/forge/card/abilityfactory/effects/FlipCoinEffect.java b/src/main/java/forge/card/abilityfactory/effects/FlipCoinEffect.java index 8d757b0427b..9b1ea0049fd 100644 --- a/src/main/java/forge/card/abilityfactory/effects/FlipCoinEffect.java +++ b/src/main/java/forge/card/abilityfactory/effects/FlipCoinEffect.java @@ -38,7 +38,13 @@ public class FlipCoinEffect extends SpellEffect { } final AbilityFactory afOutcomes = new AbilityFactory(); - final boolean victory = GameActionUtil.flipACoin(caller.get(0), sa.getSourceCard()); + boolean victory; + if (sa.hasParam("FlipOnly")) { + victory = GameActionUtil.flipACoin(null, sa.getSourceCard()); + } + else { + victory = GameActionUtil.flipACoin(caller.get(0), sa.getSourceCard()); + } // Run triggers // HashMap runParams = new HashMap();