forked from External/mage
[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
This commit is contained in:
parent
0ce21d12a5
commit
eef8f508e4
22 changed files with 707 additions and 111 deletions
|
|
@ -0,0 +1,56 @@
|
|||
|
||||
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";
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue