- Added a way to count the number of coin flips in AF FlipACoin without the need for recursive counting script (which no longer works in the current engine).

- Fixed Crazed Firecat.
This commit is contained in:
Agetian
2017-01-11 15:25:37 +00:00
parent f14de08c20
commit ea4057a08c
2 changed files with 51 additions and 28 deletions

View File

@@ -122,15 +122,27 @@ public class FlipCoinEffect extends SpellAbilityEffect {
* @return a boolean. * @return a boolean.
*/ */
public boolean flipCoinNoCall(final SpellAbility sa, final Player flipper, final int multiplier) { public boolean flipCoinNoCall(final SpellAbility sa, final Player flipper, final int multiplier) {
boolean result = false;
int numSuccesses = 0;
do {
boolean[] results = new boolean[multiplier]; boolean[] results = new boolean[multiplier];
for (int i = 0; i < multiplier; i++) { for (int i = 0; i < multiplier; i++) {
final boolean resultIsHeads = MyRandom.getRandom().nextBoolean(); final boolean resultIsHeads = MyRandom.getRandom().nextBoolean();
flipper.getGame().fireEvent(new GameEventFlipCoin()); flipper.getGame().fireEvent(new GameEventFlipCoin());
results[i] = resultIsHeads; results[i] = resultIsHeads;
} }
boolean result = multiplier == 1 ? results[0] : flipper.getController().chooseFlipResult(sa, flipper, results, false); result = multiplier == 1 ? results[0] : flipper.getController().chooseFlipResult(sa, flipper, results, false);
if (result) {
numSuccesses++;
}
flipper.getGame().getAction().nofityOfValue(sa, flipper, result ? "heads" : "tails", null); flipper.getGame().getAction().nofityOfValue(sa, flipper, result ? "heads" : "tails", null);
} while (sa.hasParam("FlipUntilYouLose") && result != false);
if (sa.hasParam("FlipUntilYouLose")) {
sa.getAdditonalAbility("LoseSubAbility").setSVar(sa.hasParam("SaveNumFlipsToSVar") ? sa.getParam("SaveNumFlipsToSVar") : "X", "Number$" + numSuccesses);
}
return result; return result;
} }
@@ -147,6 +159,10 @@ public class FlipCoinEffect extends SpellAbilityEffect {
* @return a boolean. * @return a boolean.
*/ */
public static boolean flipCoinCall(final Player caller, final SpellAbility sa, final int multiplier) { public static boolean flipCoinCall(final Player caller, final SpellAbility sa, final int multiplier) {
boolean result = false;
int numSuccesses = 0;
do {
boolean [] results = new boolean [multiplier]; boolean [] results = new boolean [multiplier];
final boolean choice = caller.getController().chooseBinary(sa, sa.getHostCard().getName() + " - Call coin flip", PlayerController.BinaryChoiceType.HeadsOrTails); final boolean choice = caller.getController().chooseBinary(sa, sa.getHostCard().getName() + " - Call coin flip", PlayerController.BinaryChoiceType.HeadsOrTails);
for (int i = 0; i < multiplier; i++) { for (int i = 0; i < multiplier; i++) {
@@ -155,7 +171,10 @@ public class FlipCoinEffect extends SpellAbilityEffect {
final boolean flip = MyRandom.getRandom().nextBoolean(); final boolean flip = MyRandom.getRandom().nextBoolean();
results[i] = flip == choice; results[i] = flip == choice;
} }
boolean result = multiplier == 1 ? results[0] : caller.getController().chooseFlipResult(sa, caller, results, true); result = multiplier == 1 ? results[0] : caller.getController().chooseFlipResult(sa, caller, results, true);
if (result) {
numSuccesses++;
}
caller.getGame().getAction().nofityOfValue(sa, caller, result ? "win" : "lose", null); caller.getGame().getAction().nofityOfValue(sa, caller, result ? "win" : "lose", null);
@@ -164,6 +183,12 @@ public class FlipCoinEffect extends SpellAbilityEffect {
runParams.put("Player", caller); runParams.put("Player", caller);
runParams.put("Result", Boolean.valueOf(result)); runParams.put("Result", Boolean.valueOf(result));
caller.getGame().getTriggerHandler().runTrigger(TriggerType.FlippedCoin, runParams, false); caller.getGame().getTriggerHandler().runTrigger(TriggerType.FlippedCoin, runParams, false);
} while (sa.hasParam("FlipUntilYouLose") && result != false);
if (sa.hasParam("FlipUntilYouLose")) {
sa.getAdditonalAbility("LoseSubAbility").setSVar(sa.hasParam("SaveNumFlipsToSVar") ? sa.getParam("SaveNumFlipsToSVar") : "X", "Number$" + numSuccesses);
}
return result; return result;
} }

View File

@@ -3,10 +3,8 @@ ManaCost:5 R R
Types:Creature Elemental Cat Types:Creature Elemental Cat
PT:4/4 PT:4/4
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFlip | TriggerDescription$ When CARDNAME enters the battlefield, flip a coin until you lose a flip. Put a +1/+1 counter on CARDNAME for each flip you win. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFlip | TriggerDescription$ When CARDNAME enters the battlefield, flip a coin until you lose a flip. Put a +1/+1 counter on CARDNAME for each flip you win.
SVar:TrigFlip:AB$ FlipACoin | Cost$ 0 | WinSubAbility$ DBCountAndFlipAgain SVar:TrigFlip:DB$ FlipACoin | FlipUntilYouLose$ True | SaveNumFlipsToSVar$ X | LoseSubAbility$ DBPutCounter
SVar:DBCountAndFlipAgain:DB$ StoreSVar | SVar$ X | Type$ CountSVar | Expression$ X/Plus.1 | SubAbility$ DBFlipAgain SVar:DBPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ X | References$ X
SVar:DBFlipAgain:DB$ FlipACoin | Cost$ 0 | WinSubAbility$ DBCountAndFlipAgain | LoseSubAbility$ DBPutCounter
SVar:DBPutCounter:DB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ X | References$ X
SVar:X:Number$0 SVar:X:Number$0
SVar:Picture:http://www.wizards.com/global/images/magic/general/crazed_firecat.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/crazed_firecat.jpg
Oracle:When Crazed Firecat enters the battlefield, flip a coin until you lose a flip. Put a +1/+1 counter on Crazed Firecat for each flip you win. Oracle:When Crazed Firecat enters the battlefield, flip a coin until you lose a flip. Put a +1/+1 counter on Crazed Firecat for each flip you win.