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

View file

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