ActivatedManaAbilityImpl chosenManaAbilityForHybrid; for (ActivatedManaAbilityImpl ability : useableAbilities.values()) { chosenManaAbility = getManaAbility(symbols, countColored, chosenManaAbility, ability); chosenManaAbilityForHybrid = checkRedMana(symbols, countColored, ability); chosenManaAbility = chosenManaAbilityForHybrid != null ? chosenManaAbilityForHybrid : chosenManaAbility; chosenManaAbilityForHybrid = checkBlackMana(symbols, countColored, ability); chosenManaAbility = chosenManaAbilityForHybrid != null ? chosenManaAbilityForHybrid : chosenManaAbility; chosenManaAbilityForHybrid = checkBlueMana(symbols, countColored, ability); chosenManaAbility = chosenManaAbilityForHybrid != null ? chosenManaAbilityForHybrid : chosenManaAbility; chosenManaAbilityForHybrid = checkWhiteMana(symbols, countColored, ability); chosenManaAbility = chosenManaAbilityForHybrid != null ? chosenManaAbilityForHybrid : chosenManaAbility; chosenManaAbilityForHybrid = checkGreenMana(symbols, countColored, ability); chosenManaAbility = chosenManaAbilityForHybrid != null ? chosenManaAbilityForHybrid : chosenManaAbility; return replace(useableAbilities, useableAbilities.values().iterator().next()); chosenManaAbility = getManaAbility(symbols, countColored, chosenManaAbility, ability); return replace(useableAbilities, chosenManaAbility); return replace(useableAbilities, chosenManaAbility);
@Override public boolean apply(Game game, Ability source, Ability abilityToModify) { for (Target target : abilityToModify.getTargets()) { if (target.getMaxNumberOfTargets() == Integer.MAX_VALUE) { int additionalTargets = target.getTargets().size() - 1; StringBuilder sb = new StringBuilder(); for (int i = 0; i < additionalTargets; i++) { // Build up a string of strive costs for each target sb.append(striveCosts.getText()); } String finalCost = ManaUtil.condenseManaCostString(sb.toString()); abilityToModify.getManaCostsToPay().add(new ManaCostsImpl(finalCost)); return true; } } return false; }
return getManaAbilitiesUsingManaSymbols(useableAbilities, symbols, unpaidMana); } else { return getManaAbilitiesUsingMana(unpaid, useableAbilities);
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { if (noMana) { setPaid(); return true; } Player player = game.getPlayer(controllerId); if (!player.getManaPool().isForcedToPay()) { assignPayment(game, ability, player.getManaPool(), costToPay); } game.getState().getSpecialActions().removeManaActions(); while (!isPaid()) { ManaCost unpaid = this.getUnpaid(); String promptText = ManaUtil.addSpecialManaPayAbilities(ability, game, unpaid); if (player.playMana(ability, unpaid, promptText, game)) { assignPayment(game, ability, player.getManaPool(), costToPay); } else { return false; } game.getState().getSpecialActions().removeManaActions(); } return true; }
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { if (this.isEmpty() || noMana) { setPaid(); return true; } Player player = game.getPlayer(controllerId); if (!player.getManaPool().isForcedToPay()) { assignPayment(game, ability, player.getManaPool(), this); } game.getState().getSpecialActions().removeManaActions(); while (!isPaid()) { ManaCost unpaid = this.getUnpaid(); String promptText = ManaUtil.addSpecialManaPayAbilities(ability, game, unpaid); if (player.playMana(ability, unpaid, promptText, game)) { assignPayment(game, ability, player.getManaPool(), this); } else { return false; } game.getState().getSpecialActions().removeManaActions(); } return true; }