mirror of
https://github.com/correl/mage.git
synced 2024-11-25 11:09:53 +00:00
[AFR] fixed Bruenor Battlehammer (fixes #8055)
This commit is contained in:
parent
9233b5c7d7
commit
806eba9691
2 changed files with 64 additions and 9 deletions
|
@ -21,8 +21,6 @@ import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import static mage.constants.Outcome.Benefit;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
*/
|
*/
|
||||||
|
@ -91,7 +89,7 @@ class BruenorBattlehammerBoostEffect extends ContinuousEffectImpl {
|
||||||
class BruenorBattlehammerCostEffect extends CostModificationEffectImpl {
|
class BruenorBattlehammerCostEffect extends CostModificationEffectImpl {
|
||||||
|
|
||||||
BruenorBattlehammerCostEffect() {
|
BruenorBattlehammerCostEffect() {
|
||||||
super(Duration.Custom, Benefit, CostModificationType.SET_COST);
|
super(Duration.WhileOnBattlefield, Outcome.Benefit, CostModificationType.SET_COST);
|
||||||
this.staticText = "you may pay {0} rather than pay the equip cost " +
|
this.staticText = "you may pay {0} rather than pay the equip cost " +
|
||||||
"of the first equip ability you activate each turn.";
|
"of the first equip ability you activate each turn.";
|
||||||
}
|
}
|
||||||
|
@ -102,16 +100,13 @@ class BruenorBattlehammerCostEffect extends CostModificationEffectImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
||||||
return source.isControlledBy(abilityToModify.getControllerId())
|
return abilityToModify instanceof EquipAbility
|
||||||
&& !BruenorBattlehammerWatcher.checkPlayer(abilityToModify.getControllerId(), game)
|
&& source.isControlledBy(abilityToModify.getControllerId())
|
||||||
&& abilityToModify instanceof EquipAbility;
|
&& !BruenorBattlehammerWatcher.checkPlayer(abilityToModify.getControllerId(), game);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(Game game, Ability source, Ability abilityToModify) {
|
public boolean apply(Game game, Ability source, Ability abilityToModify) {
|
||||||
if (!game.inCheckPlayableState()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Player controller = game.getPlayer(abilityToModify.getControllerId());
|
Player controller = game.getPlayer(abilityToModify.getControllerId());
|
||||||
if (controller == null || !controller.chooseUse(
|
if (controller == null || !controller.chooseUse(
|
||||||
Outcome.PlayForFree, "Pay {0} to equip?", source, game
|
Outcome.PlayForFree, "Pay {0} to equip?", source, game
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
package org.mage.test.cards.single.afr;
|
||||||
|
|
||||||
|
import mage.constants.PhaseStep;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author TheElk801
|
||||||
|
*/
|
||||||
|
public class BruenorBattlehammerTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
|
private static final String bruenor = "Bruenor Battlehammer";
|
||||||
|
private static final String lion = "Silvercoat Lion";
|
||||||
|
private static final String bonesplitter = "Bonesplitter";
|
||||||
|
private static final String morningstar = "Vulshok Morningstar";
|
||||||
|
private static final String hauberk = "Demonmail Hauberk";
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testModifyOnce() {
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Plains");
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, lion);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, bruenor);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, bonesplitter);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, morningstar);
|
||||||
|
|
||||||
|
setChoice(playerA, true);
|
||||||
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip {2}", lion);
|
||||||
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip {1}", lion);
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.END_TURN);
|
||||||
|
execute();
|
||||||
|
assertAllCommandsUsed();
|
||||||
|
|
||||||
|
assertTapped("Plains", true);
|
||||||
|
assertPermanentCount(playerA, bruenor, 1);
|
||||||
|
assertPermanentCount(playerA, bonesplitter, 1);
|
||||||
|
assertPermanentCount(playerA, morningstar, 1);
|
||||||
|
// +2 from each equipment, +2x2 from Bruenor
|
||||||
|
assertPowerToughness(playerA, lion, 2 + 2 + 2 + (2 * 2), 2 + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHauberk() {
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, lion);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, bruenor);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, hauberk);
|
||||||
|
|
||||||
|
setChoice(playerA, true);
|
||||||
|
activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip", lion);
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.END_TURN);
|
||||||
|
execute();
|
||||||
|
assertAllCommandsUsed();
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.END_TURN);
|
||||||
|
assertPermanentCount(playerA, bruenor, 1);
|
||||||
|
assertPowerToughness(playerA, lion, 2 + 4 + (1 * 2), 2 + 2);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue