diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 5ce53af9984..5eebcf0539e 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1678,6 +1678,7 @@ public class GameAction { } /** Delivers a message to all players. (use reveal to show Cards) */ + // TODO: Refactor for spelling public void nofityOfValue(SpellAbility saSource, GameObject relatedTarget, String value, Player playerExcept) { for (Player p : game.getPlayers()) { if (playerExcept == p) continue; diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index 71ff441dae3..1d65a388948 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -76,7 +76,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect { String chosenValue = chosenSA.getDescription(); if (sa.hasParam("ShowChoice")) { boolean dontNotifySelf = sa.getParam("ShowChoice").equals("ExceptSelf"); - p.getGame().getAction().nofityOfValue(sa, p, chosenValue, dontNotifySelf ? sa.getActivatingPlayer() : null); + p.getGame().getAction().nofityOfValue(sa, p, chosenValue, dontNotifySelf ? p : null); } if (sa.hasParam("SetChosenMode")) { sa.getHostCard().setChosenMode(chosenValue); diff --git a/forge-gui/res/cardsfolder/b/buzzing_whack_a_doodle.txt b/forge-gui/res/cardsfolder/b/buzzing_whack_a_doodle.txt new file mode 100644 index 00000000000..c01a4b5a5a9 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/buzzing_whack_a_doodle.txt @@ -0,0 +1,21 @@ +Name:Buzzing Whack-a-Doodle +ManaCost:4 +Types:Artifact +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ ChooseOpp | Static$ True | TriggerDescription$ As Buzzing Whack-a-Doodle enters the battlefield, you and an opponent each secretly choose Whack or Doodle. Then those choices are revealed. If the choices match, Buzzing Whack-a-Doodle has that ability. Otherwise, it has Buzz. • Whack — {T}: Target player loses 2 life. • Doodle — {T}: You gain 3 life. • Buzz — {2}, {T}: Draw a card. +SVar:ChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent | SubAbility$ YouChoice +SVar:YouChoice:DB$ GenericChoice | Choices$ YouWhack,YouDoodle | Defined$ You | AILogic$ Random | SubAbility$ StoreYou +SVar:YouWhack:DB$ StoreSVar | SVar$ Doodles | Type$ Number | Expression$ 0 | SpellDescription$ Whack +SVar:YouDoodle:DB$ StoreSVar | SVar$ Doodles | Type$ Number | Expression$ 1 | SpellDescription$ Doodle +SVar:StoreYou:DB$ StoreSVar | SVar$ YouChose | Type$ CountSVar | Expression$ Doodles | SubAbility$ OppChoice +SVar:OppChoice:DB$ GenericChoice | Choices$ AniWhack,OppDoodle | Defined$ Player.Chosen | AILogic$ Random | ShowChoice$ ExceptSelf +SVar:OppDoodle:DB$ StoreSVar | SVar$ Doodles | Type$ CountSVar | Expression$ Doodles/Plus.1 | SubAbility$ AniBuzz | SpellDescription$ Doodle +SVar:AniWhack:DB$ Animate | Defined$ Self | Abilities$ ABWhack | Permanent$ True | SpellDescription$ Whack | ConditionCheckSVar$ Doodles | ConditionSVarCompare$ EQ0 | SubAbility$ AniBuzz +SVar:AniBuzz:DB$ Animate | Defined$ Self | Abilities$ ABBuzz | Permanent$ True | ConditionCheckSVar$ Doodles | ConditionSVarCompare$ EQ1 | SubAbility$ AniDoodle +SVar:AniDoodle:DB$ Animate | Defined$ Self | Abilities$ ABDoodle | Permanent$ True | ConditionCheckSVar$ Doodles | ConditionSVarCompare$ EQ2 | SubAbility$ NotifyWhack +SVar:NotifyWhack:DB$ GenericChoice | Choices$ YouWhack | AtRandom$ True | Defined$ You | ShowChoice$ ExceptSelf | ConditionCheckSVar$ YouChose | ConditionSVarCompare$ EQ0 | SubAbility$ NotifyDoodle +SVar:NotifyDoodle:DB$ GenericChoice | Choices$ YouDoodle | AtRandom$ True | Defined$ You | ShowChoice$ ExceptSelf | ConditionCheckSVar$ YouChose | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearChosenPlayer$ True +SVar:ABWhack:AB$ LoseLife | Cost$ T | ValidTgts$ Player | LifeAmount$ 2 | SpellDescription$ Target player loses 2 life. +SVar:ABBuzz:AB$ Draw | Cost$ 2 T | SpellDescription$ Draw a card. +SVar:ABDoodle:AB$ GainLife | Cost$ T | LifeAmount$ 3 | SpellDescription$ You gain 3 life. +Oracle:As Buzzing Whack-a-Doodle enters the battlefield, you and an opponent each secretly choose Whack or Doodle. Then those choices are revealed. If the choices match, Buzzing Whack-a-Doodle has that ability. Otherwise, it has Buzz.\n• Whack — {T}: Target player loses 2 life.\n• Doodle — {T}: You gain 3 life.\n• Buzz — {2}, {T}: Draw a card. diff --git a/forge-gui/res/cardsfolder/f/face_to_face.txt b/forge-gui/res/cardsfolder/f/face_to_face.txt new file mode 100644 index 00000000000..495e12ff6f0 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/face_to_face.txt @@ -0,0 +1,25 @@ +Name:Face to Face +ManaCost:1 R +Types:Sorcery +A:SP$ Pump | ValidTgts$ Opponent | SubAbility$ ResetWin | IsCurse$ True | StackDescription$ You and target opponent play a best two-out-of-three Rock, Paper, Scissors match. +SVar:ResetWin:DB$ StoreSVar | SVar$ Wins | Type$ Number | Expression$ 0 | SubAbility$ ResetLoss +SVar:ResetLoss:DB$ StoreSVar | SVar$ Losses | Type$ Number | Expression$ 0 | SubAbility$ RepeatPlay +SVar:Total:SVar$Wins/LimitMin.Losses +SVar:RepeatPlay:DB$ Repeat | RepeatSubAbility$ Play | RepeatCheckSVar$ Total | RepeatSVarCompare$ LT2 | SubAbility$ DamageTarget | StackDescription$ If you win, +SVar:Play:DB$ GenericChoice | Choices$ YouRock,YouPape,YouScis | Defined$ You | AILogic$ Random | SubAbility$ OppChoice +SVar:YouRock:DB$ StoreSVar | SVar$ YouChose | Type$ Number | Expression$ 0 | SpellDescription$ Rock +SVar:YouPape:DB$ StoreSVar | SVar$ YouChose | Type$ Number | Expression$ 1 | SpellDescription$ Paper +SVar:YouScis:DB$ StoreSVar | SVar$ YouChose | Type$ Number | Expression$ 2 | SpellDescription$ Scissors +SVar:OppChoice:DB$ GenericChoice | Choices$ OppRock,OppPape,OppScis | Defined$ TargetedPlayer | AILogic$ Random | ShowChoice$ ExceptSelf | SubAbility$ ScoreWin +SVar:OppRock:DB$ StoreSVar | SVar$ OppChose | Type$ Number | Expression$ 2 | SpellDescription$ Rock +SVar:OppPape:DB$ StoreSVar | SVar$ OppChose | Type$ Number | Expression$ 1 | SpellDescription$ Paper +SVar:OppScis:DB$ StoreSVar | SVar$ OppChose | Type$ Number | Expression$ 0 | SpellDescription$ Scissors +SVar:Sum:SVar$YouChose/Plus.OppChose +SVar:GameMod:SVar$Sum/Mod.3 +SVar:ScoreWin:DB$ StoreSVar | SVar$ Wins | Type$ CountSVar | Expression$ Wins/Plus.1 | ConditionCheckSVar$ GameMod | ConditionSVarCompare$ EQ0 | SubAbility$ ScoreLoss +SVar:ScoreLoss:DB$ StoreSVar | SVar$ Losses | Type$ CountSVar | Expression$ Losses/Plus.1 | ConditionCheckSVar$ GameMod | ConditionSVarCompare$ EQ1 | SubAbility$ NotifyRock +SVar:NotifyRock:DB$ GenericChoice | Choices$ YouRock | AtRandom$ True | Defined$ You | ShowChoice$ ExceptSelf | ConditionCheckSVar$ YouChose | ConditionSVarCompare$ EQ0 | SubAbility$ NotifyPape +SVar:NotifyPape:DB$ GenericChoice | Choices$ YouPape | AtRandom$ True | Defined$ You | ShowChoice$ ExceptSelf | ConditionCheckSVar$ YouChose | ConditionSVarCompare$ EQ1 | SubAbility$ NotifyScis +SVar:NotifyScis:DB$ GenericChoice | Choices$ YouScis | AtRandom$ True | Defined$ You | ShowChoice$ ExceptSelf | ConditionCheckSVar$ YouChose | ConditionSVarCompare$ EQ2 +SVar:DamageTarget:DB$ DealDamage | Defined$ TargetedPlayer | NumDmg$ 5 | ConditionCheckSVar$ Wins | ConditionSVarCompare$ EQ2 +Oracle:You and target opponent play a best two-out-of-three Rock, Paper, Scissors match. If you win, Face to Face deals 5 damage to that player.