* Treasonous Ogre - Fixed available mana generation (#6698).

This commit is contained in:
LevelX2 2020-08-02 11:34:19 +02:00
parent 67dd45c1c7
commit 516a4104f1
3 changed files with 73 additions and 3 deletions

View file

@ -5,6 +5,8 @@ import java.util.UUID;
import mage.MageInt;
import mage.Mana;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.dynamicvalue.common.ControllerLifeDividedValue;
import mage.abilities.effects.mana.BasicManaEffect;
import mage.abilities.keyword.DethroneAbility;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
@ -31,7 +33,10 @@ public final class TreasonousOgre extends CardImpl {
// Dethrone
this.addAbility(new DethroneAbility());
// Pay 3 life: Add {R}.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(ColoredManaSymbol.R), new PayLifeCost(3)));
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD,
new BasicManaEffect(new Mana(ColoredManaSymbol.R), new ControllerLifeDividedValue(3)),
new PayLifeCost(3)));
}
public TreasonousOgre(final TreasonousOgre card) {

View file

@ -255,4 +255,21 @@ public class NonTappingManaAbilitiesTest extends CardTestPlayerBase {
Assert.assertEquals("mana variations don't fit", 1, manaOptions.size());
assertManaOptions("{G}{Any}{Any}", manaOptions);
}
@Test
public void TestTreasonousOgre() {
setStrictChooseMode(true);
// Dethrone
// Pay 3 life: Add {R}.
addCard(Zone.BATTLEFIELD, playerA, "Treasonous Ogre", 1);
setStopAt(1, PhaseStep.PRECOMBAT_MAIN);
execute();
assertAllCommandsUsed();
ManaOptions manaOptions = playerA.getAvailableManaTest(currentGame);
Assert.assertEquals("mana variations don't fit", 1, manaOptions.size());
assertManaOptions("{R}{R}{R}{R}{R}{R}", manaOptions);
}
}

View file

@ -0,0 +1,48 @@
package mage.abilities.dynamicvalue.common;
import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.game.Game;
import mage.players.Player;
/**
*
* @author LevelX2
*/
public class ControllerLifeDividedValue implements DynamicValue {
private final Integer divider;
public ControllerLifeDividedValue(Integer divider) {
this.divider = divider;
}
public ControllerLifeDividedValue(final ControllerLifeDividedValue dynamicValue) {
this.divider = dynamicValue.divider;
}
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
Player p = game.getPlayer(sourceAbility.getControllerId());
if (p != null) {
return p.getLife() / divider;
}
return 0;
}
@Override
public ControllerLifeDividedValue copy() {
return new ControllerLifeDividedValue(this);
}
@Override
public String toString() {
return "X";
}
@Override
public String getMessage() {
return "";
}
}