This commit is contained in:
Alex W. Jackson 2022-09-20 21:05:01 -04:00 committed by GitHub
parent 39bf4bf0bc
commit 41fb3d14cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 31 deletions

View file

@ -947,22 +947,12 @@ public abstract class AbilityImpl implements Ability {
@Override
public boolean canChooseTarget(Game game, UUID playerId) {
if (this instanceof SpellAbility) {
if (SpellAbilityType.SPLIT_FUSED.equals(((SpellAbility) this).getSpellAbilityType())) {
Card card = game.getCard(getSourceId());
if (card != null) {
return canChooseTargetAbility(((SplitCard) card).getLeftHalfCard().getSpellAbility(), game, playerId)
&& canChooseTargetAbility(((SplitCard) card).getRightHalfCard().getSpellAbility(), game, playerId);
}
return false;
}
}
return canChooseTargetAbility(this, game, playerId);
return canChooseTargetAbility(this, getModes(), game, playerId);
}
private static boolean canChooseTargetAbility(Ability ability, Game game, UUID controllerId) {
protected static boolean canChooseTargetAbility(Ability ability, Modes modes, Game game, UUID controllerId) {
int found = 0;
for (Mode mode : ability.getModes().values()) {
for (Mode mode : modes.values()) {
boolean validTargets = true;
for (Target target : mode.getTargets()) {
UUID abilityControllerId = controllerId;
@ -977,10 +967,10 @@ public abstract class AbilityImpl implements Ability {
if (validTargets) {
found++;
if (ability.getModes().isEachModeMoreThanOnce()) {
if (modes.isEachModeMoreThanOnce()) {
return true;
}
if (found >= ability.getModes().getMinModes()) {
if (found >= modes.getMinModes()) {
return true;
}
}