mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
remove some playertype checks
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
package forge.game.ability.effects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import forge.ai.ComputerUtilCard;
|
||||
import forge.card.ColorSet;
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.mana.ManaCostShard;
|
||||
@@ -19,7 +17,6 @@ import forge.game.player.Player;
|
||||
import forge.game.spellability.AbilityManaPart;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.spellability.TargetRestrictions;
|
||||
import forge.game.zone.ZoneType;
|
||||
|
||||
public class ManaEffect extends SpellAbilityEffect {
|
||||
|
||||
@@ -45,8 +42,6 @@ public class ManaEffect extends SpellAbilityEffect {
|
||||
int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(card, sa.getParam("Amount"), sa) : 1;
|
||||
if (tgt == null || p.canBeTargetedBy(sa)) {
|
||||
Player activator = sa.getActivatingPlayer();
|
||||
// AI color choice is set in ComputerUtils so only human players need to make a choice
|
||||
if (activator.isHuman()) {
|
||||
//String colorsNeeded = abMana.getExpressChoice();
|
||||
String[] colorsProduced = abMana.getComboColors().split(" ");
|
||||
|
||||
@@ -62,43 +57,18 @@ public class ManaEffect extends SpellAbilityEffect {
|
||||
for (int nMana = 1; nMana <= amount; nMana++) {
|
||||
String choice = "";
|
||||
byte chosenColor = activator.getController().chooseColor("Select Mana to Produce", sa, colorOptions);
|
||||
if (chosenColor == 0) {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("AbilityFactoryMana::manaResolve() - Human color mana choice is empty for ");
|
||||
sb.append(card.getName());
|
||||
throw new RuntimeException(sb.toString());
|
||||
} else {
|
||||
if (chosenColor == 0)
|
||||
throw new RuntimeException("AbilityFactoryMana::manaResolve() - " + activator + " color mana choice is empty for " + card.getName());
|
||||
|
||||
choice = MagicColor.toShortString(chosenColor);
|
||||
if (nMana != 1) {
|
||||
choiceString.append(" ");
|
||||
}
|
||||
choiceString.append(choice);
|
||||
}
|
||||
}
|
||||
game.action.nofityOfValue(sa, card, activator + " picked" + choiceString, activator);
|
||||
abMana.setExpressChoice(choiceString.toString());
|
||||
}
|
||||
else {
|
||||
// TODO: Add some logic for AI choice (ArsenalNut 2012/09/16)
|
||||
if (!sa.hasParam("AILogic") || sa.getParam("AILogic").equals("MostProminentInComputerHand")) {
|
||||
String chosen = MagicColor.Constant.BLACK;
|
||||
List<Card> hand = new ArrayList<Card>(activator.getCardsIn(ZoneType.Hand));
|
||||
hand.addAll(activator.getCardsIn(ZoneType.Stack));
|
||||
chosen = ComputerUtilCard.getMostProminentColor(hand);
|
||||
if (chosen.equals("")) {
|
||||
chosen = MagicColor.Constant.BLACK;
|
||||
}
|
||||
game.action.nofityOfValue(sa, card, "Computer picked" + chosen, activator);
|
||||
String manaString = "";
|
||||
for (int i = 0; i < amount; i++) {
|
||||
manaString = manaString + MagicColor.toShortString(chosen) + " ";
|
||||
}
|
||||
abMana.setExpressChoice(manaString);
|
||||
}
|
||||
if (abMana.getExpressChoice().isEmpty() && amount > 0) {
|
||||
System.out.println("AbilityFactoryMana::manaResolve() - combo mana color choice is empty for " + card.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (abMana.isAnyMana()) {
|
||||
@@ -106,57 +76,26 @@ public class ManaEffect extends SpellAbilityEffect {
|
||||
if (tgt == null || p.canBeTargetedBy(sa)) {
|
||||
Player act = sa.getActivatingPlayer();
|
||||
// AI color choice is set in ComputerUtils so only human players need to make a choice
|
||||
if (act.isHuman()) {
|
||||
|
||||
String colorsNeeded = abMana.getExpressChoice();
|
||||
String choice = "";
|
||||
if (colorsNeeded.length() == 1) {
|
||||
choice = colorsNeeded;
|
||||
}
|
||||
else {
|
||||
|
||||
ColorSet colorMenu = null;
|
||||
if (colorsNeeded.length() > 1 && colorsNeeded.length() < 5) {
|
||||
byte mask = 0;
|
||||
//loop through colors to make menu
|
||||
for (int nChar = 0; nChar < colorsNeeded.length(); nChar++) {
|
||||
mask |= forge.card.MagicColor.fromName(colorsNeeded.substring(nChar, nChar + 1));
|
||||
mask |= MagicColor.fromName(colorsNeeded.charAt(nChar));
|
||||
}
|
||||
colorMenu = ColorSet.fromMask(mask);
|
||||
}
|
||||
else {
|
||||
colorMenu = ColorSet.fromNames(MagicColor.Constant.ONLY_COLORS);
|
||||
}
|
||||
byte val = act.getController().chooseColor("Select Mana to Produce", sa, colorMenu);
|
||||
if (0 == val) {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("AbilityFactoryMana::manaResolve() - Human color mana choice is empty for ");
|
||||
sb.append(card.getName());
|
||||
throw new RuntimeException(sb.toString());
|
||||
throw new RuntimeException("AbilityFactoryMana::manaResolve() - " + act + " color mana choice is empty for " + card.getName());
|
||||
}
|
||||
choice = MagicColor.toShortString(val);
|
||||
}
|
||||
|
||||
game.action.nofityOfValue(sa, card, act + " picked " + choice, act);
|
||||
abMana.setExpressChoice(choice);
|
||||
}
|
||||
else {
|
||||
if (abMana.getExpressChoice().isEmpty()) {
|
||||
final String logic = sa.hasParam("AILogic") ? sa.getParam("AILogic") : null;
|
||||
String chosen = MagicColor.Constant.BLACK;
|
||||
if (logic == null || logic.equals("MostProminentInComputerHand")) {
|
||||
chosen = ComputerUtilCard.getMostProminentColor(act.getCardsIn(ZoneType.Hand));
|
||||
}
|
||||
if (chosen.equals("")) {
|
||||
chosen = MagicColor.Constant.GREEN;
|
||||
}
|
||||
game.action.nofityOfValue(sa, card, "Computer picked " + chosen, act);
|
||||
abMana.setExpressChoice(MagicColor.toShortString(chosen));
|
||||
}
|
||||
if (abMana.getExpressChoice().isEmpty()) {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("AbilityFactoryMana::manaResolve() - any color mana choice is empty for ");
|
||||
sb.append(card.getName());
|
||||
throw new RuntimeException(sb.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (abMana.isSpecialMana()) {
|
||||
@@ -166,7 +105,8 @@ public class ManaEffect extends SpellAbilityEffect {
|
||||
|
||||
if (type.equals("EnchantedManaCost")) {
|
||||
Card enchanted = card.getEnchantingCard();
|
||||
if (enchanted != null ) {
|
||||
if (enchanted == null )
|
||||
continue;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int generic = enchanted.getManaCost().getGenericCost();
|
||||
@@ -187,8 +127,6 @@ public class ManaEffect extends SpellAbilityEffect {
|
||||
}
|
||||
abMana.setExpressChoice(sb.toString().trim());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (abMana.getExpressChoice().isEmpty()) {
|
||||
System.out.println("AbilityFactoryMana::manaResolve() - special mana effect is empty for " + sa.getSourceCard().getName());
|
||||
|
||||
@@ -53,7 +53,7 @@ public class ManaReflectedEffect extends SpellAbilityEffect {
|
||||
* a {@link forge.game.player.Player} object.
|
||||
* @return a {@link java.lang.String} object.
|
||||
*/
|
||||
private static String generatedReflectedMana(final SpellAbility sa, final Collection<String> colors, final Player player) {
|
||||
private String generatedReflectedMana(final SpellAbility sa, final Collection<String> colors, final Player player) {
|
||||
// Calculate generated mana here for stack description and resolving
|
||||
final int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(sa.getSourceCard(), sa.getParam("Amount"), sa) : 1;
|
||||
|
||||
@@ -64,12 +64,7 @@ public class ManaReflectedEffect extends SpellAbilityEffect {
|
||||
} else if (colors.size() == 1) {
|
||||
baseMana = MagicColor.toShortString(colors.iterator().next());
|
||||
} else {
|
||||
if (player.isHuman()) {
|
||||
baseMana = MagicColor.toShortString(player.getController().chooseColor("Select Mana to Produce", sa, ColorSet.fromNames(colors)));
|
||||
} else {
|
||||
// AI doesn't really have anything here yet
|
||||
baseMana = sa.getManaPart().getExpressChoice();
|
||||
}
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
|
||||
@@ -551,8 +551,14 @@ public class PlayerControllerAi extends PlayerController {
|
||||
|
||||
@Override
|
||||
public byte chooseColor(String message, SpellAbility sa, ColorSet colors) {
|
||||
final String c = ComputerUtilCard.getMostProminentColor(player.getCardsIn(ZoneType.Hand));
|
||||
// You may switch on sa.getApi() here and use sa.getParam("AILogic")
|
||||
List<Card> hand = new ArrayList<Card>(player.getCardsIn(ZoneType.Hand));
|
||||
if( sa.getApi() == ApiType.Mana )
|
||||
hand.addAll(player.getCardsIn(ZoneType.Stack));
|
||||
final String c = ComputerUtilCard.getMostProminentColor(hand);
|
||||
byte chosenColorMask = MagicColor.fromName(c);
|
||||
|
||||
|
||||
if ((colors.getColor() & chosenColorMask) != 0) {
|
||||
return chosenColorMask;
|
||||
} else {
|
||||
|
||||
@@ -224,21 +224,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
||||
this.frozenStack.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* removeFromFrozenStack.
|
||||
* </p>
|
||||
* @param sa
|
||||
* a SpellAbility.
|
||||
*/
|
||||
public final void removeFromFrozenStack(SpellAbility sa) {
|
||||
SpellAbilityStackInstance si = this.getInstanceFromSpellAbility(sa);
|
||||
this.frozenStack.remove(si);
|
||||
if (this.frozenStack.isEmpty()) {
|
||||
clearFrozen();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setResolving.
|
||||
@@ -484,8 +469,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
||||
|
||||
if (!this.simultaneousStackEntryList.isEmpty()) {
|
||||
chooseOrderOfSimultaneousStackEntryAll();
|
||||
// Why should we pass priority after adding something to a stack?
|
||||
// game.getPhaseHandler().passPriority();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user