foul-magics/Mage/src/main/java/mage/abilities/dynamicvalue/common/SacrificeCostManaValue.java
Susucre eef8f508e4
[CMM] Implement Demon of Fate's Design (#10737)
* refactor SacrificeCostManaValue to be an enum.

* [CMM] Implement Demon of Fates Design

* Add Unit Tests, including one bug on alternative cost.

* fix alternativeCosts made from dynamicCost returning that they were not activated when paid.

* fix small issues, add hint

* cleanup tests and add a couple

* Capitalize enum instances

* Minor fixes

* simplify the ContinuousEffect

* use the ConditionPermanentHint made for the Demon

* fix text
2023-08-12 15:49:06 -04:00

56 lines
1.4 KiB
Java

package mage.abilities.dynamicvalue.common;
import mage.abilities.Ability;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.effects.Effect;
import mage.game.Game;
import mage.game.permanent.Permanent;
/**
* @author LoneFox, Susucr
*/
public enum SacrificeCostManaValue implements DynamicValue {
CREATURE("creature"),
ENCHANTMENT("enchantment"),
ARTIFACT("artifact"),
PERMANENT("permanent");
private final String type;
private SacrificeCostManaValue(String type) {
this.type = type;
}
@Override
public int calculate(Game game, Ability sourceAbility, Effect effect) {
for (Cost cost : sourceAbility.getCosts()) {
if (cost instanceof SacrificeTargetCost) {
SacrificeTargetCost sacrificeCost = (SacrificeTargetCost) cost;
int totalCMC = 0;
for (Permanent permanent : sacrificeCost.getPermanents()) {
totalCMC += permanent.getManaValue();
}
return totalCMC;
}
}
return 0;
}
@Override
public SacrificeCostManaValue copy() {
return this;
}
@Override
public String toString() {
return "X";
}
@Override
public String getMessage() {
return "the sacrificed " + type + "'s mana value";
}
}