mirror of
https://github.com/correl/mage.git
synced 2024-12-25 11:11:16 +00:00
fix various issues with OrCost (fixes #9424)
This commit is contained in:
parent
12a20d07f4
commit
a09c14083e
1 changed files with 16 additions and 6 deletions
|
@ -8,6 +8,7 @@ import mage.constants.Outcome;
|
|||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.Targets;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
|
@ -78,14 +79,18 @@ public class OrCost implements Cost {
|
|||
StringBuilder sb = new StringBuilder();
|
||||
if (usable.get(0) instanceof ManaCost) {
|
||||
sb.append("Pay ");
|
||||
}
|
||||
sb.append(usable.get(0).getText());
|
||||
} else {
|
||||
sb.append(CardUtil.getTextWithFirstCharUpperCase(usable.get(0).getText()));
|
||||
}
|
||||
sb.append(" or ");
|
||||
sb.append(usable.get(1));
|
||||
sb.append(usable.get(1).getText());
|
||||
sb.append('?');
|
||||
if (controller.chooseUse(
|
||||
Outcome.Detriment, sb.toString(), null,
|
||||
usable.get(0).getText(), usable.get(1).getText(), ability, game
|
||||
CardUtil.getTextWithFirstCharUpperCase(usable.get(0).getText()),
|
||||
CardUtil.getTextWithFirstCharUpperCase(usable.get(1).getText()),
|
||||
ability, game
|
||||
)) {
|
||||
selectedCost = usable.get(0);
|
||||
} else {
|
||||
|
@ -98,15 +103,20 @@ public class OrCost implements Cost {
|
|||
.collect(Collectors.toMap(Cost::getText, Function.identity()));
|
||||
Choice choice = new ChoiceImpl(true);
|
||||
choice.setMessage("Choose a cost to pay");
|
||||
choice.setChoices(costMap.keySet());
|
||||
choice.setChoices(costMap
|
||||
.keySet()
|
||||
.stream()
|
||||
.map(CardUtil::getTextWithFirstCharUpperCase)
|
||||
.collect(Collectors.toSet()));
|
||||
controller.choose(Outcome.Neutral, choice, game);
|
||||
selectedCost = costMap.getOrDefault(choice.getChoice(), null);
|
||||
selectedCost = costMap.getOrDefault(
|
||||
CardUtil.getTextWithFirstCharLowerCase(choice.getChoice()), null
|
||||
);
|
||||
}
|
||||
if (selectedCost == null) {
|
||||
return false;
|
||||
}
|
||||
return selectedCost.pay(ability, game, source, controllerId, noMana, costToPay);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue