[AFR] fixed Bruenor Battlehammer - correct tests, getPlayable support, additional info in choose pay dialog;

This commit is contained in:
Oleg Agafonov 2021-07-27 18:30:24 +04:00
parent 806eba9691
commit c4dc83dec9
2 changed files with 25 additions and 9 deletions

View file

@ -107,15 +107,27 @@ class BruenorBattlehammerCostEffect extends CostModificationEffectImpl {
@Override @Override
public boolean apply(Game game, Ability source, Ability abilityToModify) { public boolean apply(Game game, Ability source, Ability abilityToModify) {
Player controller = game.getPlayer(abilityToModify.getControllerId()); boolean applyReduce = false;
if (controller == null || !controller.chooseUse( if (game.inCheckPlayableState()) {
Outcome.PlayForFree, "Pay {0} to equip?", source, game // getPlayable use - apply all the time
)) { applyReduce = true;
return false; } else {
// real use - ask the player
Player controller = game.getPlayer(abilityToModify.getControllerId());
if (controller != null
&& controller.chooseUse(Outcome.PlayForFree,
String.format("Pay {0} to equip instead %s?", abilityToModify.getManaCostsToPay().getText()), source, game)) {
applyReduce = true;
}
} }
abilityToModify.getCosts().clear();
abilityToModify.getManaCostsToPay().clear(); if (applyReduce) {
return true; abilityToModify.getCosts().clear();
abilityToModify.getManaCostsToPay().clear();
return true;
}
return false;
} }
@Override @Override

View file

@ -24,10 +24,13 @@ public class BruenorBattlehammerTest extends CardTestPlayerBase {
addCard(Zone.BATTLEFIELD, playerA, bonesplitter); addCard(Zone.BATTLEFIELD, playerA, bonesplitter);
addCard(Zone.BATTLEFIELD, playerA, morningstar); addCard(Zone.BATTLEFIELD, playerA, morningstar);
setChoice(playerA, true); // activate {2} for free
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip {2}", lion); activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip {2}", lion);
setChoice(playerA, true); // use for free
// activate {1} for mana
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip {1}", lion); activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip {1}", lion);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN); setStopAt(1, PhaseStep.END_TURN);
execute(); execute();
assertAllCommandsUsed(); assertAllCommandsUsed();
@ -49,6 +52,7 @@ public class BruenorBattlehammerTest extends CardTestPlayerBase {
setChoice(playerA, true); setChoice(playerA, true);
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip", lion); activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip", lion);
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN); setStopAt(1, PhaseStep.END_TURN);
execute(); execute();
assertAllCommandsUsed(); assertAllCommandsUsed();