mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Checkstyle fixes in StaticAbility_Continuous
This commit is contained in:
@@ -18,270 +18,302 @@ import forge.card.trigger.Trigger;
|
|||||||
import forge.card.trigger.TriggerHandler;
|
import forge.card.trigger.TriggerHandler;
|
||||||
|
|
||||||
public class StaticAbility_Continuous {
|
public class StaticAbility_Continuous {
|
||||||
|
|
||||||
public static void applyContinuousAbility(StaticAbility stAb) {
|
/**
|
||||||
HashMap<String, String> params = stAb.getMapParams();
|
*
|
||||||
Card hostCard = stAb.getHostCard();
|
* TODO Write javadoc for this method.
|
||||||
|
* @param stAb a StaticAbility
|
||||||
StaticEffect se = new StaticEffect();
|
*/
|
||||||
CardList affectedCards = getAffectedCards(stAb);
|
public static void applyContinuousAbility(final StaticAbility stAb) {
|
||||||
ArrayList<Player> affectedPlayers = getAffectedPlayers(stAb);
|
HashMap<String, String> params = stAb.getMapParams();
|
||||||
|
Card hostCard = stAb.getHostCard();
|
||||||
se.setAffectedCards(affectedCards);
|
|
||||||
se.setAffectedPlayers(affectedPlayers);
|
StaticEffect se = new StaticEffect();
|
||||||
se.setParams(params);
|
CardList affectedCards = getAffectedCards(stAb);
|
||||||
se.setTimestamp(hostCard.getTimestamp());
|
ArrayList<Player> affectedPlayers = getAffectedPlayers(stAb);
|
||||||
AllZone.getStaticEffects().addStaticEffect(se);
|
|
||||||
|
se.setAffectedCards(affectedCards);
|
||||||
int powerBonus = 0;
|
se.setAffectedPlayers(affectedPlayers);
|
||||||
int toughnessBonus = 0;
|
se.setParams(params);
|
||||||
int setPower = -1;
|
se.setTimestamp(hostCard.getTimestamp());
|
||||||
int setToughness = -1;
|
AllZone.getStaticEffects().addStaticEffect(se);
|
||||||
String addKeywords[] = null;
|
|
||||||
String addAbilities[] = null;
|
int powerBonus = 0;
|
||||||
String addSVars[] = null;
|
int toughnessBonus = 0;
|
||||||
String addTypes[] = null;
|
int setPower = -1;
|
||||||
String removeTypes[] = null;
|
int setToughness = -1;
|
||||||
String addColors = null;
|
String[] addKeywords = null;
|
||||||
String addTriggers[] = null;
|
String[] addAbilities = null;
|
||||||
boolean removeSuperTypes = false;
|
String[] addSVars = null;
|
||||||
boolean removeCardTypes = false;
|
String[] addTypes = null;
|
||||||
boolean removeSubTypes = false;
|
String[] removeTypes = null;
|
||||||
boolean removeCreatureTypes = false;
|
String addColors = null;
|
||||||
|
String[] addTriggers = null;
|
||||||
if (params.containsKey("SetPower")) {
|
boolean removeSuperTypes = false;
|
||||||
String setP = params.get("SetPower");
|
boolean removeCardTypes = false;
|
||||||
setPower = setP.matches("[0-9][0-9]?") ? Integer.parseInt(setP)
|
boolean removeSubTypes = false;
|
||||||
: CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setP));
|
boolean removeCreatureTypes = false;
|
||||||
}
|
|
||||||
|
if (params.containsKey("SetPower")) {
|
||||||
if (params.containsKey("SetToughness")) {
|
String setP = params.get("SetPower");
|
||||||
String setT = params.get("SetToughness");
|
setPower = setP.matches("[0-9][0-9]?") ? Integer.parseInt(setP)
|
||||||
setToughness = setT.matches("[0-9][0-9]?") ? Integer.parseInt(setT)
|
: CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setP));
|
||||||
: CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setT));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.containsKey("AddPower")) {
|
|
||||||
if (params.get("AddPower").equals("X")) {
|
|
||||||
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
|
|
||||||
se.setXValue(powerBonus);
|
|
||||||
}
|
|
||||||
else if (params.get("AddPower").equals("Y")) {
|
|
||||||
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
|
|
||||||
se.setYValue(powerBonus);
|
|
||||||
}
|
|
||||||
else powerBonus = Integer.valueOf(params.get("AddPower"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.containsKey("AddToughness")) {
|
|
||||||
if (params.get("AddToughness").equals("X")) {
|
|
||||||
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
|
|
||||||
se.setXValue(toughnessBonus);
|
|
||||||
}
|
|
||||||
else if (params.get("AddToughness").equals("Y")) {
|
|
||||||
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
|
|
||||||
se.setYValue(toughnessBonus);
|
|
||||||
}
|
|
||||||
else toughnessBonus = Integer.valueOf(params.get("AddToughness"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.containsKey("AddKeyword"))
|
|
||||||
addKeywords = params.get("AddKeyword").split(" & ");
|
|
||||||
|
|
||||||
if (params.containsKey("AddAbility")) {
|
|
||||||
String sVars[] = params.get("AddAbility").split(" & ");
|
|
||||||
for(int i = 0 ; i < sVars.length ; i++)
|
|
||||||
sVars[i] = hostCard.getSVar(sVars[i]);
|
|
||||||
addAbilities = sVars;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (params.containsKey("AddSVar"))
|
|
||||||
addSVars = params.get("AddSVar").split(" & ");
|
|
||||||
|
|
||||||
if (params.containsKey("AddType")) {
|
|
||||||
addTypes = params.get("AddType").split(" & ");
|
|
||||||
if(addTypes[0].equals("ChosenType")) {
|
|
||||||
String chosenType = hostCard.getChosenType();
|
|
||||||
addTypes[0] = chosenType;
|
|
||||||
se.setChosenType(chosenType);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("RemoveType")) {
|
if (params.containsKey("SetToughness")) {
|
||||||
removeTypes = params.get("RemoveType").split(" & ");
|
String setT = params.get("SetToughness");
|
||||||
if(removeTypes[0].equals("ChosenType")) {
|
setToughness = setT.matches("[0-9][0-9]?") ? Integer.parseInt(setT)
|
||||||
String chosenType = hostCard.getChosenType();
|
: CardFactoryUtil.xCount(hostCard, hostCard.getSVar(setT));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("AddPower")) {
|
||||||
|
if (params.get("AddPower").equals("X")) {
|
||||||
|
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
|
||||||
|
se.setXValue(powerBonus);
|
||||||
|
}
|
||||||
|
else if (params.get("AddPower").equals("Y")) {
|
||||||
|
powerBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
|
||||||
|
se.setYValue(powerBonus);
|
||||||
|
} else {
|
||||||
|
powerBonus = Integer.valueOf(params.get("AddPower"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("AddToughness")) {
|
||||||
|
if (params.get("AddToughness").equals("X")) {
|
||||||
|
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("X"));
|
||||||
|
se.setXValue(toughnessBonus);
|
||||||
|
}
|
||||||
|
else if (params.get("AddToughness").equals("Y")) {
|
||||||
|
toughnessBonus = CardFactoryUtil.xCount(hostCard, hostCard.getSVar("Y"));
|
||||||
|
se.setYValue(toughnessBonus);
|
||||||
|
} else {
|
||||||
|
toughnessBonus = Integer.valueOf(params.get("AddToughness"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("AddKeyword")) {
|
||||||
|
addKeywords = params.get("AddKeyword").split(" & ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("AddAbility")) {
|
||||||
|
String[] sVars = params.get("AddAbility").split(" & ");
|
||||||
|
for (int i = 0; i < sVars.length; i++) {
|
||||||
|
sVars[i] = hostCard.getSVar(sVars[i]);
|
||||||
|
}
|
||||||
|
addAbilities = sVars;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("AddSVar")) {
|
||||||
|
addSVars = params.get("AddSVar").split(" & ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("AddType")) {
|
||||||
|
addTypes = params.get("AddType").split(" & ");
|
||||||
|
if (addTypes[0].equals("ChosenType")) {
|
||||||
|
String chosenType = hostCard.getChosenType();
|
||||||
|
addTypes[0] = chosenType;
|
||||||
|
se.setChosenType(chosenType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.containsKey("RemoveType")) {
|
||||||
|
removeTypes = params.get("RemoveType").split(" & ");
|
||||||
|
if (removeTypes[0].equals("ChosenType")) {
|
||||||
|
String chosenType = hostCard.getChosenType();
|
||||||
removeTypes[0] = chosenType;
|
removeTypes[0] = chosenType;
|
||||||
se.setChosenType(chosenType);
|
se.setChosenType(chosenType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("RemoveSuperTypes")) {
|
if (params.containsKey("RemoveSuperTypes")) {
|
||||||
removeSuperTypes = true;
|
removeSuperTypes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("RemoveCardTypes")) {
|
if (params.containsKey("RemoveCardTypes")) {
|
||||||
removeCardTypes = true;
|
removeCardTypes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("RemoveSubTypes")) {
|
if (params.containsKey("RemoveSubTypes")) {
|
||||||
removeSubTypes = true;
|
removeSubTypes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("RemoveCreatureTypes")) {
|
if (params.containsKey("RemoveCreatureTypes")) {
|
||||||
removeCreatureTypes = true;
|
removeCreatureTypes = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("AddColor"))
|
if (params.containsKey("AddColor")) {
|
||||||
addColors = CardUtil.getShortColorsString(new ArrayList<String>(Arrays.asList(params.get("AddColor").split(" & "))));
|
addColors = CardUtil.getShortColorsString(
|
||||||
|
new ArrayList<String>(Arrays.asList(params.get("AddColor").split(" & "))));
|
||||||
if (params.containsKey("SetColor")) {
|
}
|
||||||
addColors = CardUtil.getShortColorsString(new ArrayList<String>(Arrays.asList(params.get("SetColor").split(" & "))));
|
|
||||||
se.setOverwriteColors(true);
|
if (params.containsKey("SetColor")) {
|
||||||
}
|
addColors = CardUtil.getShortColorsString(
|
||||||
|
new ArrayList<String>(Arrays.asList(params.get("SetColor").split(" & "))));
|
||||||
if (params.containsKey("AddTrigger")) {
|
se.setOverwriteColors(true);
|
||||||
String sVars[] = params.get("AddTrigger").split(" & ");
|
}
|
||||||
for(int i = 0 ; i < sVars.length ; i++)
|
|
||||||
sVars[i] = hostCard.getSVar(sVars[i]);
|
if (params.containsKey("AddTrigger")) {
|
||||||
addTriggers = sVars;
|
String[] sVars = params.get("AddTrigger").split(" & ");
|
||||||
}
|
for (int i = 0; i < sVars.length; i++) {
|
||||||
|
sVars[i] = hostCard.getSVar(sVars[i]);
|
||||||
//modify players
|
}
|
||||||
for (Player p : affectedPlayers) {
|
addTriggers = sVars;
|
||||||
|
}
|
||||||
|
|
||||||
|
//modify players
|
||||||
|
for (Player p : affectedPlayers) {
|
||||||
|
|
||||||
// add keywords
|
// add keywords
|
||||||
if (addKeywords != null)
|
if (addKeywords != null) {
|
||||||
for (String keyword : addKeywords)
|
for (String keyword : addKeywords) {
|
||||||
p.addKeyword(keyword);
|
p.addKeyword(keyword);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//start modifying the cards
|
}
|
||||||
for (int i = 0; i < affectedCards.size(); i++) {
|
|
||||||
|
//start modifying the cards
|
||||||
|
for (int i = 0; i < affectedCards.size(); i++) {
|
||||||
Card affectedCard = affectedCards.get(i);
|
Card affectedCard = affectedCards.get(i);
|
||||||
|
|
||||||
// set P/T
|
// set P/T
|
||||||
if(params.containsKey("CharacteristicDefining")) {
|
if (params.containsKey("CharacteristicDefining")) {
|
||||||
if (setPower != -1)
|
if (setPower != -1) {
|
||||||
affectedCard.setBaseAttack(setPower);
|
affectedCard.setBaseAttack(setPower);
|
||||||
if (setToughness != -1)
|
}
|
||||||
affectedCard.setBaseDefense(setToughness);
|
if (setToughness != -1) {
|
||||||
|
affectedCard.setBaseDefense(setToughness);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else //non CharacteristicDefining
|
else //non CharacteristicDefining
|
||||||
if (setPower != -1 || setToughness != -1)
|
if (setPower != -1 || setToughness != -1) {
|
||||||
affectedCard.addNewPT(setPower, setToughness, hostCard.getTimestamp());
|
affectedCard.addNewPT(setPower, setToughness, hostCard.getTimestamp());
|
||||||
|
}
|
||||||
|
|
||||||
// add P/T bonus
|
// add P/T bonus
|
||||||
affectedCard.addSemiPermanentAttackBoost(powerBonus);
|
affectedCard.addSemiPermanentAttackBoost(powerBonus);
|
||||||
affectedCard.addSemiPermanentDefenseBoost(toughnessBonus);
|
affectedCard.addSemiPermanentDefenseBoost(toughnessBonus);
|
||||||
|
|
||||||
// add keywords
|
// add keywords
|
||||||
if (addKeywords != null)
|
if (addKeywords != null) {
|
||||||
for (String keyword : addKeywords)
|
for (String keyword : addKeywords) {
|
||||||
affectedCard.addExtrinsicKeyword(keyword);
|
affectedCard.addExtrinsicKeyword(keyword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// add abilities
|
// add abilities
|
||||||
if (addAbilities != null)
|
if (addAbilities != null) {
|
||||||
for (String abilty : addAbilities)
|
for (String abilty : addAbilities) {
|
||||||
if (abilty.startsWith("AB")) { // grant the ability
|
if (abilty.startsWith("AB")) { // grant the ability
|
||||||
AbilityFactory AF = new AbilityFactory();
|
AbilityFactory af = new AbilityFactory();
|
||||||
SpellAbility sa = AF.getAbility(abilty, affectedCard);
|
SpellAbility sa = af.getAbility(abilty, affectedCard);
|
||||||
sa.setType("Temporary");
|
sa.setType("Temporary");
|
||||||
affectedCard.addSpellAbility(sa);
|
affectedCard.addSpellAbility(sa);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// add SVars
|
// add SVars
|
||||||
if (addSVars != null)
|
if (addSVars != null) {
|
||||||
for (String sVar : addSVars)
|
for (String sVar : addSVars) {
|
||||||
affectedCard.setSVar(sVar, hostCard.getSVar(sVar));
|
affectedCard.setSVar(sVar, hostCard.getSVar(sVar));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// add Types
|
// add Types
|
||||||
if (addTypes != null || removeTypes != null)
|
if (addTypes != null || removeTypes != null) {
|
||||||
affectedCard.addChangedCardTypes(addTypes, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes,
|
affectedCard.addChangedCardTypes(addTypes, removeTypes, removeSuperTypes, removeCardTypes,
|
||||||
removeCreatureTypes, hostCard.getTimestamp());
|
removeSubTypes, removeCreatureTypes, hostCard.getTimestamp());
|
||||||
|
}
|
||||||
|
|
||||||
// add colors
|
// add colors
|
||||||
if (addColors != null) {
|
if (addColors != null) {
|
||||||
long t = affectedCard.addColor(addColors, affectedCard, !se.isOverwriteColors(), true);
|
long t = affectedCard.addColor(addColors, affectedCard, !se.isOverwriteColors(), true);
|
||||||
se.addTimestamp(affectedCard, t);
|
se.addTimestamp(affectedCard, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
// add triggers
|
// add triggers
|
||||||
if (addTriggers != null)
|
if (addTriggers != null) {
|
||||||
for (String trigger : addTriggers) {
|
for (String trigger : addTriggers) {
|
||||||
Trigger actualTrigger = TriggerHandler.parseTrigger(trigger,affectedCard, false);
|
Trigger actualTrigger = TriggerHandler.parseTrigger(trigger, affectedCard, false);
|
||||||
actualTrigger.setTemporary(true);
|
actualTrigger.setTemporary(true);
|
||||||
affectedCard.addTrigger(actualTrigger);
|
affectedCard.addTrigger(actualTrigger);
|
||||||
AllZone.getTriggerHandler().registerTrigger(actualTrigger);
|
AllZone.getTriggerHandler().registerTrigger(actualTrigger);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// remove triggers
|
|
||||||
if (params.containsKey("RemoveTriggers") || params.containsKey("RemoveAllAbilities")) {
|
// remove triggers
|
||||||
ArrayList<Trigger> triggers = affectedCard.getTriggers();
|
if (params.containsKey("RemoveTriggers") || params.containsKey("RemoveAllAbilities")) {
|
||||||
for (Trigger trigger : triggers) {
|
ArrayList<Trigger> triggers = affectedCard.getTriggers();
|
||||||
trigger.setSuppressed(true);
|
for (Trigger trigger : triggers) {
|
||||||
}
|
trigger.setSuppressed(true);
|
||||||
}
|
}
|
||||||
//affectedCard.updateObservers();
|
}
|
||||||
}
|
//affectedCard.updateObservers();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private static ArrayList<Player> getAffectedPlayers(StaticAbility stAb) {
|
|
||||||
HashMap<String, String> params = stAb.getMapParams();
|
private static ArrayList<Player> getAffectedPlayers(final StaticAbility stAb) {
|
||||||
Card hostCard = stAb.getHostCard();
|
HashMap<String, String> params = stAb.getMapParams();
|
||||||
Player controller = hostCard.getController();
|
Card hostCard = stAb.getHostCard();
|
||||||
|
Player controller = hostCard.getController();
|
||||||
ArrayList<Player> players = new ArrayList<Player>();
|
|
||||||
|
ArrayList<Player> players = new ArrayList<Player>();
|
||||||
if(!params.containsKey("Affected")) {
|
|
||||||
return players;
|
if (!params.containsKey("Affected")) {
|
||||||
}
|
return players;
|
||||||
|
}
|
||||||
String[] strngs = params.get("Affected").split(",");
|
|
||||||
|
String[] strngs = params.get("Affected").split(",");
|
||||||
for (String str : strngs) {
|
|
||||||
if(str.equals("Player") || str.equals("You")) {
|
for (String str : strngs) {
|
||||||
players.add(controller);
|
if (str.equals("Player") || str.equals("You")) {
|
||||||
}
|
players.add(controller);
|
||||||
|
}
|
||||||
if(str.equals("Player") || str.equals("Opponent")) {
|
|
||||||
players.add(controller.getOpponent());
|
if (str.equals("Player") || str.equals("Opponent")) {
|
||||||
}
|
players.add(controller.getOpponent());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return players;
|
|
||||||
}
|
return players;
|
||||||
|
}
|
||||||
private static CardList getAffectedCards(StaticAbility stAb) {
|
|
||||||
HashMap<String, String> params = stAb.getMapParams();
|
private static CardList getAffectedCards(final StaticAbility stAb) {
|
||||||
Card hostCard = stAb.getHostCard();
|
HashMap<String, String> params = stAb.getMapParams();
|
||||||
Player controller = hostCard.getController();
|
Card hostCard = stAb.getHostCard();
|
||||||
|
Player controller = hostCard.getController();
|
||||||
if(params.containsKey("CharacteristicDefining"))
|
|
||||||
return new CardList(hostCard); // will always be the card itself
|
if (params.containsKey("CharacteristicDefining")) {
|
||||||
|
return new CardList(hostCard); // will always be the card itself
|
||||||
// non - CharacteristicDefining
|
}
|
||||||
CardList affectedCards;
|
|
||||||
String affectedZone = "Battlefield"; // default
|
// non - CharacteristicDefining
|
||||||
|
CardList affectedCards;
|
||||||
if (params.containsKey("AffectedZone"))
|
String affectedZone = "Battlefield"; // default
|
||||||
affectedZone = params.get("AffectedZone");
|
|
||||||
|
if (params.containsKey("AffectedZone")) {
|
||||||
affectedCards = AllZoneUtil.getCardsInZone(affectedZone);
|
affectedZone = params.get("AffectedZone");
|
||||||
|
}
|
||||||
if (params.containsKey("Affected") && !params.get("Affected").contains(",")) {
|
|
||||||
if (params.get("Affected").contains("Self"))
|
affectedCards = AllZoneUtil.getCardsInZone(affectedZone);
|
||||||
affectedCards = new CardList(hostCard);
|
|
||||||
else if (params.get("Affected").contains("EnchantedBy"))
|
if (params.containsKey("Affected") && !params.get("Affected").contains(",")) {
|
||||||
affectedCards = new CardList(hostCard.getEnchantingCard());
|
if (params.get("Affected").contains("Self")) {
|
||||||
else if (params.get("Affected").contains("EquippedBy"))
|
affectedCards = new CardList(hostCard);
|
||||||
affectedCards = new CardList(hostCard.getEquippingCard());
|
} else if (params.get("Affected").contains("EnchantedBy")) {
|
||||||
}
|
affectedCards = new CardList(hostCard.getEnchantingCard());
|
||||||
|
} else if (params.get("Affected").contains("EquippedBy")) {
|
||||||
if (params.containsKey("Affected"))
|
affectedCards = new CardList(hostCard.getEquippingCard());
|
||||||
affectedCards = affectedCards.getValidCards(params.get("Affected").split(","), controller, hostCard);
|
}
|
||||||
|
}
|
||||||
return affectedCards;
|
|
||||||
}
|
if (params.containsKey("Affected")) {
|
||||||
|
affectedCards = affectedCards.getValidCards(
|
||||||
|
params.get("Affected").split(","), controller, hostCard);
|
||||||
|
}
|
||||||
|
|
||||||
|
return affectedCards;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user