forked from External/mage
[DFT] Implement Cloudspire Captain
This commit is contained in:
parent
59115c631e
commit
4b5bf3e1de
8 changed files with 140 additions and 20 deletions
|
|
@ -1,8 +1,8 @@
|
|||
package mage.abilities.keyword;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CrewSaddleIncreasedPowerAbility;
|
||||
import mage.abilities.common.CrewSaddleWithToughnessAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.condition.common.SaddledCondition;
|
||||
import mage.abilities.costs.Cost;
|
||||
|
|
@ -118,8 +118,7 @@ class SaddleCost extends CostImpl {
|
|||
int selectedPower = this.targets.keySet().stream()
|
||||
.map(game::getPermanent)
|
||||
.filter(Objects::nonNull)
|
||||
.map(MageObject::getPower)
|
||||
.mapToInt(MageInt::getValue)
|
||||
.mapToInt(p -> getSaddlePower(p, game))
|
||||
.sum();
|
||||
String extraInfo = "(selected power " + selectedPower + " of " + value + ")";
|
||||
if (selectedPower >= value) {
|
||||
|
|
@ -137,7 +136,7 @@ class SaddleCost extends CostImpl {
|
|||
if (!game.replaceEvent(event)) {
|
||||
Permanent permanent = game.getPermanent(targetId);
|
||||
if (permanent != null && permanent.tap(source, game)) {
|
||||
sumPower += permanent.getPower().getValue();
|
||||
sumPower += getSaddlePower(permanent, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -158,7 +157,7 @@ class SaddleCost extends CostImpl {
|
|||
public boolean canPay(Ability ability, Ability source, UUID controllerId, Game game) {
|
||||
int sumPower = 0;
|
||||
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, controllerId, game)) {
|
||||
sumPower += Math.max(permanent.getPower().getValue(), 0);
|
||||
sumPower += Math.max(getSaddlePower(permanent, game), 0);
|
||||
if (sumPower >= value) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -170,4 +169,14 @@ class SaddleCost extends CostImpl {
|
|||
public SaddleCost copy() {
|
||||
return new SaddleCost(this);
|
||||
}
|
||||
|
||||
private static int getSaddlePower(Permanent permanent, Game game) {
|
||||
if (permanent.hasAbility(CrewSaddleWithToughnessAbility.getInstance(), game)) {
|
||||
return permanent.getToughness().getValue();
|
||||
} else if (permanent.getAbilities(game).containsClass(CrewSaddleIncreasedPowerAbility.class)) {
|
||||
return permanent.getPower().getValue() + 2;
|
||||
} else {
|
||||
return permanent.getPower().getValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue