From 82dfd76ee3b09709db454c828b03a181d554ff62 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 27 Jul 2020 22:27:11 +0200 Subject: [PATCH] * Fervent Champion - Fixed that it's possible to equip the Champion also without having the regular mana (#6698). --- .../src/mage/cards/f/FerventChampion.java | 16 +++++-- .../src/mage/cards/s/SwordOfFireAndIce.java | 2 +- .../modification/FerventChampionTest.java | 44 +++++++++++++++++++ .../main/java/mage/players/PlayerImpl.java | 9 +--- 4 files changed, 58 insertions(+), 13 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/FerventChampionTest.java diff --git a/Mage.Sets/src/mage/cards/f/FerventChampion.java b/Mage.Sets/src/mage/cards/f/FerventChampion.java index e6122045a49..3dc095ea406 100644 --- a/Mage.Sets/src/mage/cards/f/FerventChampion.java +++ b/Mage.Sets/src/mage/cards/f/FerventChampion.java @@ -90,14 +90,22 @@ class FerventChampionEffect extends CostModificationEffectImpl { @Override public boolean applies(Ability abilityToModify, Ability source, Game game) { - return abilityToModify instanceof EquipAbility - && abilityToModify.isControlledBy(source.getControllerId()) - && abilityToModify + if (abilityToModify instanceof EquipAbility + && abilityToModify.isControlledBy(source.getControllerId())) { + if (game != null && game.inCheckPlayableState()) { + return !abilityToModify.getTargets().isEmpty() && + abilityToModify.getTargets().get(0).canTarget(source.getSourceId(), abilityToModify, game); + } else { + return abilityToModify .getTargets() .stream() .map(Target::getTargets) .flatMap(Collection::stream) - .anyMatch(source.getSourceId()::equals); + .anyMatch(source.getSourceId()::equals); + } + + } + return false; } @Override diff --git a/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java b/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java index 79ab6a37d11..2fa4c805c4a 100644 --- a/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java +++ b/Mage.Sets/src/mage/cards/s/SwordOfFireAndIce.java @@ -41,7 +41,7 @@ public final class SwordOfFireAndIce extends CardImpl { // Whenever equipped creature deals combat damage to a player, Sword of Fire // and Ice deals 2 damage to any target and you draw a card. this.addAbility(new SwordOfFireAndIceAbility()); - // Equip + // Equip {2} this.addAbility(new EquipAbility(Outcome.Benefit, new GenericManaCost(2))); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/FerventChampionTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/FerventChampionTest.java new file mode 100644 index 00000000000..974e818df22 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/FerventChampionTest.java @@ -0,0 +1,44 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.mage.test.cards.cost.modification; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ + +public class FerventChampionTest extends CardTestPlayerBase { + + @Test + public void testFerventChampion() { + setStrictChooseMode(true); + // First strike, Haste + // Whenever Fervent Champion attacks, another target attacking Knight you control gets +1/+0 until end of turn. + // Equip abilities you activate that target Fervent Champion cost {3} less to activate. + addCard(Zone.BATTLEFIELD, playerA, "Fervent Champion"); + + // Equipped creature gets +2/+2 and has protection from red and from blue. + // Whenever equipped creature deals combat damage to a player, Sword of Fire + // and Ice deals 2 damage to any target and you draw a card. + // Equip {2} + addCard(Zone.BATTLEFIELD, playerA, "Sword of Fire and Ice", 1); + + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Equip"); + addTarget(playerA, "Fervent Champion"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertAllCommandsUsed(); + + assertPowerToughness(playerA, "Fervent Champion", 3,3); + } +} \ No newline at end of file diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 4db2e874db4..22fca1dfb83 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -3420,14 +3420,7 @@ public abstract class PlayerImpl implements Player, Serializable { boolean previousState = game.inCheckPlayableState(); game.setCheckPlayableState(true); try { - // basic mana - ManaOptions availableMana = getManaAvailable(game); - // availableMana.addMana(manaPool.getMana()); - // conditional mana -// for (ConditionalMana conditionalMana : manaPool.getConditionalMana()) { -// availableMana.addMana(conditionalMana); -// } - + ManaOptions availableMana = getManaAvailable(game); // get available mana options (mana pool and conditional mana added (but conditional still lose condition)) boolean fromAll = fromZone.equals(Zone.ALL); if (hidden && (fromAll || fromZone == Zone.HAND)) { for (Card card : hand.getCards(game)) {