diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory.java b/src/main/java/forge/card/abilityFactory/AbilityFactory.java index b72d7ebdf59..70d5bdae983 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory.java @@ -44,7 +44,7 @@ public class AbilityFactory { * @return a {@link forge.Card} object. */ public final Card getHostCard() { - return hostC; + return this.hostC; } private HashMap mapParams = new HashMap(); @@ -57,7 +57,7 @@ public class AbilityFactory { * @return a {@link java.util.HashMap} object. */ public final HashMap getMapParams() { - return mapParams; + return this.mapParams; } private boolean isAb = false; @@ -72,7 +72,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean isAbility() { - return isAb; + return this.isAb; } /** @@ -83,7 +83,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean isSpell() { - return isSp; + return this.isSp; } /** @@ -94,7 +94,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean isDrawback() { - return isDb; + return this.isDb; } private Cost abCost = null; @@ -107,7 +107,7 @@ public class AbilityFactory { * @return a {@link forge.card.cost.Cost} object. */ public final Cost getAbCost() { - return abCost; + return this.abCost; } private boolean isTargeted = false; @@ -122,7 +122,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean isTargeted() { - return isTargeted; + return this.isTargeted; } /** @@ -133,7 +133,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean hasValid() { - return hasValid; + return this.hasValid; } /** @@ -144,7 +144,7 @@ public class AbilityFactory { * @return a {@link forge.card.spellability.Target} object. */ public final Target getAbTgt() { - return abTgt; + return this.abTgt; } /** @@ -155,7 +155,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean isCurse() { - return mapParams.containsKey("IsCurse"); + return this.mapParams.containsKey("IsCurse"); } private boolean hasSubAb = false; @@ -168,7 +168,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean hasSubAbility() { - return hasSubAb; + return this.hasSubAb; } private boolean hasSpDesc = false; @@ -181,7 +181,7 @@ public class AbilityFactory { * @return a boolean. */ public final boolean hasSpDescription() { - return hasSpDesc; + return this.hasSpDesc; } private String api = ""; @@ -194,7 +194,7 @@ public class AbilityFactory { * @return a {@link java.lang.String} object. */ public final String getAPI() { - return api; + return this.api; } // ******************************************************* @@ -211,14 +211,14 @@ public class AbilityFactory { * @return a {@link java.util.HashMap} object. */ public final HashMap getMapParams(final String abString, final Card hostCard) { - HashMap mapParameters = new HashMap(); + final HashMap mapParameters = new HashMap(); if (!(abString.length() > 0)) { throw new RuntimeException("AbilityFactory : getAbility -- abString too short in " + hostCard.getName() + ": [" + abString + "]"); } - String[] a = abString.split("\\|"); + final String[] a = abString.split("\\|"); for (int aCnt = 0; aCnt < a.length; aCnt++) { a[aCnt] = a[aCnt].trim(); @@ -228,17 +228,17 @@ public class AbilityFactory { throw new RuntimeException("AbilityFactory : getAbility -- a[] too short in " + hostCard.getName()); } - for (int i = 0; i < a.length; i++) { - String[] aa = a[i].split("\\$"); + for (final String element : a) { + final String[] aa = element.split("\\$"); for (int aaCnt = 0; aaCnt < aa.length; aaCnt++) { aa[aaCnt] = aa[aaCnt].trim(); } if (aa.length != 2) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append("AbilityFactory Parsing Error in getAbility() : Split length of "); - sb.append(a[i]).append(" in ").append(hostCard.getName()).append(" is not 2."); + sb.append(element).append(" in ").append(hostCard.getName()).append(" is not 2."); throw new RuntimeException(sb.toString()); } @@ -263,888 +263,893 @@ public class AbilityFactory { SpellAbility spellAbility = null; - hostC = hostCard; + this.hostC = hostCard; - mapParams = getMapParams(abString, hostCard); + this.mapParams = this.getMapParams(abString, hostCard); // parse universal parameters - if (mapParams.containsKey("AB")) { - isAb = true; - api = mapParams.get("AB"); - } else if (mapParams.containsKey("SP")) { - isSp = true; - api = mapParams.get("SP"); - } else if (mapParams.containsKey("DB")) { - isDb = true; - api = mapParams.get("DB"); + if (this.mapParams.containsKey("AB")) { + this.isAb = true; + this.api = this.mapParams.get("AB"); + } else if (this.mapParams.containsKey("SP")) { + this.isSp = true; + this.api = this.mapParams.get("SP"); + } else if (this.mapParams.containsKey("DB")) { + this.isDb = true; + this.api = this.mapParams.get("DB"); } else { throw new RuntimeException("AbilityFactory : getAbility -- no API in " + hostCard.getName()); } - if (!isDb) { - if (!mapParams.containsKey("Cost")) { + if (!this.isDb) { + if (!this.mapParams.containsKey("Cost")) { throw new RuntimeException("AbilityFactory : getAbility -- no Cost in " + hostCard.getName()); } - abCost = new Cost(mapParams.get("Cost"), hostCard.getName(), isAb); + this.abCost = new Cost(this.mapParams.get("Cost"), hostCard.getName(), this.isAb); } - if (mapParams.containsKey("ValidTgts")) { - hasValid = true; - isTargeted = true; + if (this.mapParams.containsKey("ValidTgts")) { + this.hasValid = true; + this.isTargeted = true; } - if (mapParams.containsKey("Tgt")) { - isTargeted = true; + if (this.mapParams.containsKey("Tgt")) { + this.isTargeted = true; } - if (isTargeted) { - String min = mapParams.containsKey("TargetMin") ? mapParams.get("TargetMin") : "1"; - String max = mapParams.containsKey("TargetMax") ? mapParams.get("TargetMax") : "1"; + if (this.isTargeted) { + final String min = this.mapParams.containsKey("TargetMin") ? this.mapParams.get("TargetMin") : "1"; + final String max = this.mapParams.containsKey("TargetMax") ? this.mapParams.get("TargetMax") : "1"; - if (hasValid) { + if (this.hasValid) { // TgtPrompt now optional - StringBuilder sb = new StringBuilder(); - if (hostC != null) { - sb.append(hostC + " - "); + final StringBuilder sb = new StringBuilder(); + if (this.hostC != null) { + sb.append(this.hostC + " - "); } - String prompt = mapParams.containsKey("TgtPrompt") ? mapParams.get("TgtPrompt") : "Select target " - + mapParams.get("ValidTgts"); + final String prompt = this.mapParams.containsKey("TgtPrompt") ? this.mapParams.get("TgtPrompt") + : "Select target " + this.mapParams.get("ValidTgts"); sb.append(prompt); - abTgt = new Target(hostC, sb.toString(), mapParams.get("ValidTgts").split(","), min, max); + this.abTgt = new Target(this.hostC, sb.toString(), this.mapParams.get("ValidTgts").split(","), min, max); } else { - abTgt = new Target(hostC, mapParams.get("Tgt"), min, max); + this.abTgt = new Target(this.hostC, this.mapParams.get("Tgt"), min, max); } - if (mapParams.containsKey("TgtZone")) { // if Targeting something - // not in play, this Key - // should be set - abTgt.setZone(Zone.listValueOf(mapParams.get("TgtZone"))); + if (this.mapParams.containsKey("TgtZone")) { // if Targeting + // something + // not in play, this Key + // should be set + this.abTgt.setZone(Zone.listValueOf(this.mapParams.get("TgtZone"))); } // Target Type mostly for Counter: Spell,Activated,Triggered,Ability // (or any combination of) // Ability = both activated and triggered abilities - if (mapParams.containsKey("TargetType")) { - abTgt.setTargetSpellAbilityType(mapParams.get("TargetType")); + if (this.mapParams.containsKey("TargetType")) { + this.abTgt.setTargetSpellAbilityType(this.mapParams.get("TargetType")); } // TargetValidTargeting most for Counter: e.g. target spell that // targets X. - if (mapParams.containsKey("TargetValidTargeting")) { - abTgt.setSAValidTargeting(mapParams.get("TargetValidTargeting")); + if (this.mapParams.containsKey("TargetValidTargeting")) { + this.abTgt.setSAValidTargeting(this.mapParams.get("TargetValidTargeting")); } - if (mapParams.containsKey("TargetUnique")) { - abTgt.setUniqueTargets(true); + if (this.mapParams.containsKey("TargetUnique")) { + this.abTgt.setUniqueTargets(true); } } - hasSubAb = mapParams.containsKey("SubAbility"); + this.hasSubAb = this.mapParams.containsKey("SubAbility"); - hasSpDesc = mapParams.containsKey("SpellDescription"); + this.hasSpDesc = this.mapParams.containsKey("SpellDescription"); // *********************************** // Match API keywords - if (api.equals("DealDamage")) { - AbilityFactory_DealDamage dd = new AbilityFactory_DealDamage(this); + if (this.api.equals("DealDamage")) { + final AbilityFactory_DealDamage dd = new AbilityFactory_DealDamage(this); - if (isAb) { + if (this.isAb) { spellAbility = dd.getAbility(); - } else if (isSp) { + } else if (this.isSp) { spellAbility = dd.getSpell(); - } else if (isDb) { + } else if (this.isDb) { spellAbility = dd.getDrawback(); } } - else if (api.equals("DamageAll")) { - AbilityFactory_DealDamage dd = new AbilityFactory_DealDamage(this); - if (isAb) { + else if (this.api.equals("DamageAll")) { + final AbilityFactory_DealDamage dd = new AbilityFactory_DealDamage(this); + if (this.isAb) { spellAbility = dd.getAbilityDamageAll(); - } else if (isSp) { + } else if (this.isSp) { spellAbility = dd.getSpellDamageAll(); - } else if (isDb) { + } else if (this.isDb) { spellAbility = dd.getDrawbackDamageAll(); } } - else if (api.equals("PutCounter")) { - if (isAb) { + else if (this.api.equals("PutCounter")) { + if (this.isAb) { spellAbility = AbilityFactory_Counters.createAbilityPutCounters(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Counters.createSpellPutCounters(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Counters.createDrawbackPutCounters(this); } } - else if (api.equals("PutCounterAll")) { - if (isAb) { + else if (this.api.equals("PutCounterAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Counters.createAbilityPutCounterAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Counters.createSpellPutCounterAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Counters.createDrawbackPutCounterAll(this); } } - else if (api.equals("RemoveCounter")) { - if (isAb) { + else if (this.api.equals("RemoveCounter")) { + if (this.isAb) { spellAbility = AbilityFactory_Counters.createAbilityRemoveCounters(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Counters.createSpellRemoveCounters(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Counters.createDrawbackRemoveCounters(this); } } - else if (api.equals("RemoveCounterAll")) { - if (isAb) { + else if (this.api.equals("RemoveCounterAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Counters.createAbilityRemoveCounterAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Counters.createSpellRemoveCounterAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Counters.createDrawbackRemoveCounterAll(this); } } - else if (api.equals("Proliferate")) { - if (isAb) { + else if (this.api.equals("Proliferate")) { + if (this.isAb) { spellAbility = AbilityFactory_Counters.createAbilityProliferate(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Counters.createSpellProliferate(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Counters.createDrawbackProliferate(this); } } - else if (api.equals("MoveCounter")) { - if (isAb) { + else if (this.api.equals("MoveCounter")) { + if (this.isAb) { spellAbility = AbilityFactory_Counters.createAbilityMoveCounters(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Counters.createSpellMoveCounters(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Counters.createDrawbackMoveCounters(this); } } - else if (api.equals("ChangeZone")) { - if (isAb) { + else if (this.api.equals("ChangeZone")) { + if (this.isAb) { spellAbility = AbilityFactory_ChangeZone.createAbilityChangeZone(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ChangeZone.createSpellChangeZone(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ChangeZone.createDrawbackChangeZone(this); } } - else if (api.equals("ChangeZoneAll")) { - if (isAb) { + else if (this.api.equals("ChangeZoneAll")) { + if (this.isAb) { spellAbility = AbilityFactory_ChangeZone.createAbilityChangeZoneAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ChangeZone.createSpellChangeZoneAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ChangeZone.createDrawbackChangeZoneAll(this); } } - else if (api.equals("Pump")) { - AbilityFactory_Pump afPump = new AbilityFactory_Pump(this); + else if (this.api.equals("Pump")) { + final AbilityFactory_Pump afPump = new AbilityFactory_Pump(this); - if (isAb) { + if (this.isAb) { spellAbility = afPump.getAbilityPump(); - } else if (isSp) { + } else if (this.isSp) { spellAbility = afPump.getSpellPump(); - } else if (isDb) { + } else if (this.isDb) { spellAbility = afPump.getDrawbackPump(); } - if (isAb || isSp) { + if (this.isAb || this.isSp) { hostCard.setSVar("PlayMain1", "TRUE"); } } - else if (api.equals("PumpAll")) { - AbilityFactory_Pump afPump = new AbilityFactory_Pump(this); + else if (this.api.equals("PumpAll")) { + final AbilityFactory_Pump afPump = new AbilityFactory_Pump(this); - if (isAb) { + if (this.isAb) { spellAbility = afPump.getAbilityPumpAll(); - } else if (isSp) { + } else if (this.isSp) { spellAbility = afPump.getSpellPumpAll(); - } else if (isDb) { + } else if (this.isDb) { spellAbility = afPump.getDrawbackPumpAll(); } - if (isAb || isSp) { + if (this.isAb || this.isSp) { hostCard.setSVar("PlayMain1", "TRUE"); } } - else if (api.equals("GainLife")) { - if (isAb) { + else if (this.api.equals("GainLife")) { + if (this.isAb) { spellAbility = AbilityFactory_AlterLife.createAbilityGainLife(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_AlterLife.createSpellGainLife(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_AlterLife.createDrawbackGainLife(this); } } - else if (api.equals("LoseLife")) { - if (isAb) { + else if (this.api.equals("LoseLife")) { + if (this.isAb) { spellAbility = AbilityFactory_AlterLife.createAbilityLoseLife(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_AlterLife.createSpellLoseLife(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_AlterLife.createDrawbackLoseLife(this); } } - else if (api.equals("SetLife")) { - if (isAb) { + else if (this.api.equals("SetLife")) { + if (this.isAb) { spellAbility = AbilityFactory_AlterLife.createAbilitySetLife(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_AlterLife.createSpellSetLife(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_AlterLife.createDrawbackSetLife(this); } } - else if (api.equals("ExchangeLife")) { - if (isAb) { + else if (this.api.equals("ExchangeLife")) { + if (this.isAb) { spellAbility = AbilityFactory_AlterLife.createAbilityExchangeLife(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_AlterLife.createSpellExchangeLife(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_AlterLife.createDrawbackExchangeLife(this); } } - else if (api.equals("Poison")) { - if (isAb) { + else if (this.api.equals("Poison")) { + if (this.isAb) { spellAbility = AbilityFactory_AlterLife.createAbilityPoison(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_AlterLife.createSpellPoison(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_AlterLife.createDrawbackPoison(this); } } - else if (api.equals("Fog")) { - if (isAb) { + else if (this.api.equals("Fog")) { + if (this.isAb) { spellAbility = AbilityFactory_Combat.createAbilityFog(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Combat.createSpellFog(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Combat.createDrawbackFog(this); } } - else if (api.equals("RemoveFromCombat")) { - if (isAb) { + else if (this.api.equals("RemoveFromCombat")) { + if (this.isAb) { spellAbility = AbilityFactory_Combat.createAbilityRemoveFromCombat(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Combat.createSpellRemoveFromCombat(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Combat.createDrawbackRemoveFromCombat(this); } } - else if (api.equals("Untap")) { - if (isAb) { + else if (this.api.equals("Untap")) { + if (this.isAb) { spellAbility = AbilityFactory_PermanentState.createAbilityUntap(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_PermanentState.createSpellUntap(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_PermanentState.createDrawbackUntap(this); } } - else if (api.equals("UntapAll")) { - if (isAb) { + else if (this.api.equals("UntapAll")) { + if (this.isAb) { spellAbility = AbilityFactory_PermanentState.createAbilityUntapAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_PermanentState.createSpellUntapAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_PermanentState.createDrawbackUntapAll(this); } } - else if (api.equals("Tap")) { - if (isAb) { + else if (this.api.equals("Tap")) { + if (this.isAb) { spellAbility = AbilityFactory_PermanentState.createAbilityTap(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_PermanentState.createSpellTap(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_PermanentState.createDrawbackTap(this); } } - else if (api.equals("TapAll")) { - if (isAb) { + else if (this.api.equals("TapAll")) { + if (this.isAb) { spellAbility = AbilityFactory_PermanentState.createAbilityTapAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_PermanentState.createSpellTapAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_PermanentState.createDrawbackTapAll(this); } } - else if (api.equals("TapOrUntap")) { - if (isAb) { + else if (this.api.equals("TapOrUntap")) { + if (this.isAb) { spellAbility = AbilityFactory_PermanentState.createAbilityTapOrUntap(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_PermanentState.createSpellTapOrUntap(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_PermanentState.createDrawbackTapOrUntap(this); } } - else if (api.equals("Phases")) { - if (isAb) { + else if (this.api.equals("Phases")) { + if (this.isAb) { spellAbility = AbilityFactory_PermanentState.createAbilityPhases(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_PermanentState.createSpellPhases(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_PermanentState.createDrawbackPhases(this); } } - else if (api.equals("PreventDamage")) { - if (isAb) { + else if (this.api.equals("PreventDamage")) { + if (this.isAb) { spellAbility = AbilityFactory_PreventDamage.getAbilityPreventDamage(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_PreventDamage.getSpellPreventDamage(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_PreventDamage.createDrawbackPreventDamage(this); } } - else if (api.equals("Regenerate")) { - if (isAb) { + else if (this.api.equals("Regenerate")) { + if (this.isAb) { spellAbility = AbilityFactory_Regenerate.getAbilityRegenerate(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Regenerate.getSpellRegenerate(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Regenerate.createDrawbackRegenerate(this); } } - else if (api.equals("Draw")) { - if (isAb) { + else if (this.api.equals("Draw")) { + if (this.isAb) { spellAbility = AbilityFactory_ZoneAffecting.createAbilityDraw(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ZoneAffecting.createSpellDraw(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ZoneAffecting.createDrawbackDraw(this); } } - else if (api.equals("Mill")) { - if (isAb) { + else if (this.api.equals("Mill")) { + if (this.isAb) { spellAbility = AbilityFactory_ZoneAffecting.createAbilityMill(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ZoneAffecting.createSpellMill(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ZoneAffecting.createDrawbackMill(this); } } - else if (api.equals("Scry")) { - if (isAb) { + else if (this.api.equals("Scry")) { + if (this.isAb) { spellAbility = AbilityFactory_Reveal.createAbilityScry(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Reveal.createSpellScry(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Reveal.createDrawbackScry(this); } } - else if (api.equals("RearrangeTopOfLibrary")) { - if (isAb) { + else if (this.api.equals("RearrangeTopOfLibrary")) { + if (this.isAb) { spellAbility = AbilityFactory_Reveal.createRearrangeTopOfLibraryAbility(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Reveal.createRearrangeTopOfLibrarySpell(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Reveal.createRearrangeTopOfLibraryDrawback(this); } } - else if (api.equals("Sacrifice")) { - if (isAb) { + else if (this.api.equals("Sacrifice")) { + if (this.isAb) { spellAbility = AbilityFactory_Sacrifice.createAbilitySacrifice(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Sacrifice.createSpellSacrifice(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Sacrifice.createDrawbackSacrifice(this); } } - else if (api.equals("SacrificeAll")) { - if (isAb) { + else if (this.api.equals("SacrificeAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Sacrifice.createAbilitySacrificeAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Sacrifice.createSpellSacrificeAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Sacrifice.createDrawbackSacrificeAll(this); } } - else if (api.equals("Destroy")) { - if (isAb) { + else if (this.api.equals("Destroy")) { + if (this.isAb) { spellAbility = AbilityFactory_Destroy.createAbilityDestroy(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Destroy.createSpellDestroy(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Destroy.createDrawbackDestroy(this); } } - else if (api.equals("DestroyAll")) { - if (isAb) { + else if (this.api.equals("DestroyAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Destroy.createAbilityDestroyAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Destroy.createSpellDestroyAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Destroy.createDrawbackDestroyAll(this); } } - else if (api.equals("Mana")) { - String produced = mapParams.get("Produced"); - if (isAb) { + else if (this.api.equals("Mana")) { + final String produced = this.mapParams.get("Produced"); + if (this.isAb) { spellAbility = AbilityFactory_Mana.createAbilityMana(this, produced); } - if (isSp) { + if (this.isSp) { spellAbility = AbilityFactory_Mana.createSpellMana(this, produced); } - if (isDb) { + if (this.isDb) { spellAbility = AbilityFactory_Mana.createDrawbackMana(this, produced); } } - else if (api.equals("ManaReflected")) { + else if (this.api.equals("ManaReflected")) { // Reflected mana will have a filler for produced of "1" - if (isAb) { + if (this.isAb) { spellAbility = AbilityFactory_Mana.createAbilityManaReflected(this, "1"); } - if (isSp) { // shouldn't really happen i think? + if (this.isSp) { // shouldn't really happen i think? spellAbility = AbilityFactory_Mana.createSpellManaReflected(this, "1"); } } - else if (api.equals("Token")) { - AbilityFactory_Token aft = new AbilityFactory_Token(this); + else if (this.api.equals("Token")) { + final AbilityFactory_Token aft = new AbilityFactory_Token(this); - if (isAb) { + if (this.isAb) { spellAbility = aft.getAbility(); - } else if (isSp) { + } else if (this.isSp) { spellAbility = aft.getSpell(); - } else if (isDb) { + } else if (this.isDb) { spellAbility = aft.getDrawback(); } } - else if (api.equals("GainControl")) { - AbilityFactory_GainControl afControl = new AbilityFactory_GainControl(this); + else if (this.api.equals("GainControl")) { + final AbilityFactory_GainControl afControl = new AbilityFactory_GainControl(this); - if (isAb) { + if (this.isAb) { spellAbility = afControl.getAbilityGainControl(); - } else if (isSp) { + } else if (this.isSp) { spellAbility = afControl.getSpellGainControl(); - } else if (isDb) { + } else if (this.isDb) { spellAbility = afControl.getDrawbackGainControl(); } } - else if (api.equals("Discard")) { - if (isAb) { + else if (this.api.equals("Discard")) { + if (this.isAb) { spellAbility = AbilityFactory_ZoneAffecting.createAbilityDiscard(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ZoneAffecting.createSpellDiscard(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ZoneAffecting.createDrawbackDiscard(this); } } - else if (api.equals("Counter")) { - AbilityFactory_CounterMagic c = new AbilityFactory_CounterMagic(this); + else if (this.api.equals("Counter")) { + final AbilityFactory_CounterMagic c = new AbilityFactory_CounterMagic(this); - if (isTargeted) { // Since all "Counter" ABs Counter things on the - // Stack no need for it to be everywhere - abTgt.setZone(Zone.Stack); + if (this.isTargeted) { // Since all "Counter" ABs Counter things on + // the + // Stack no need for it to be everywhere + this.abTgt.setZone(Zone.Stack); } - if (isAb) { + if (this.isAb) { spellAbility = c.getAbilityCounter(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = c.getSpellCounter(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = c.getDrawbackCounter(this); } } - else if (api.equals("AddTurn")) { - if (isAb) { + else if (this.api.equals("AddTurn")) { + if (this.isAb) { spellAbility = AbilityFactory_Turns.createAbilityAddTurn(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Turns.createSpellAddTurn(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Turns.createDrawbackAddTurn(this); } } - else if (api.equals("Clash")) { - if (isAb) { + else if (this.api.equals("Clash")) { + if (this.isAb) { spellAbility = AbilityFactory_Clash.getAbilityClash(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Clash.getSpellClash(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Clash.getDrawbackClash(this); } } - else if (api.equals("Animate")) { - if (isAb) { + else if (this.api.equals("Animate")) { + if (this.isAb) { spellAbility = AbilityFactory_Animate.createAbilityAnimate(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Animate.createSpellAnimate(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Animate.createDrawbackAnimate(this); } } - else if (api.equals("Effect")) { - if (isAb) { + else if (this.api.equals("Effect")) { + if (this.isAb) { spellAbility = AbilityFactory_Effect.createAbilityEffect(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Effect.createSpellEffect(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Effect.createDrawbackEffect(this); } } - else if (api.equals("WinsGame")) { - if (isAb) { + else if (this.api.equals("WinsGame")) { + if (this.isAb) { spellAbility = AbilityFactory_EndGameCondition.createAbilityWinsGame(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_EndGameCondition.createSpellWinsGame(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_EndGameCondition.createDrawbackWinsGame(this); } } - else if (api.equals("LosesGame")) { - if (isAb) { + else if (this.api.equals("LosesGame")) { + if (this.isAb) { spellAbility = AbilityFactory_EndGameCondition.createAbilityLosesGame(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_EndGameCondition.createSpellLosesGame(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_EndGameCondition.createDrawbackLosesGame(this); } } - else if (api.equals("RevealHand")) { - if (isAb) { + else if (this.api.equals("RevealHand")) { + if (this.isAb) { spellAbility = AbilityFactory_Reveal.createAbilityRevealHand(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Reveal.createSpellRevealHand(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Reveal.createDrawbackRevealHand(this); } } - else if (api.equals("Reveal")) { - if (isAb) { + else if (this.api.equals("Reveal")) { + if (this.isAb) { spellAbility = AbilityFactory_Reveal.createAbilityReveal(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Reveal.createSpellReveal(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Reveal.createDrawbackReveal(this); } } - else if (api.equals("Dig")) { - if (isAb) { + else if (this.api.equals("Dig")) { + if (this.isAb) { spellAbility = AbilityFactory_Reveal.createAbilityDig(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Reveal.createSpellDig(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Reveal.createDrawbackDig(this); } } - else if (api.equals("DigUntil")) { - if (isAb) { + else if (this.api.equals("DigUntil")) { + if (this.isAb) { spellAbility = AbilityFactory_Reveal.createAbilityDigUntil(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Reveal.createSpellDigUntil(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Reveal.createDrawbackDigUntil(this); } } - else if (api.equals("Shuffle")) { - if (isAb) { + else if (this.api.equals("Shuffle")) { + if (this.isAb) { spellAbility = AbilityFactory_ZoneAffecting.createAbilityShuffle(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ZoneAffecting.createSpellShuffle(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ZoneAffecting.createDrawbackShuffle(this); } } - else if (api.equals("ChooseType")) { - if (isAb) { + else if (this.api.equals("ChooseType")) { + if (this.isAb) { spellAbility = AbilityFactory_Choose.createAbilityChooseType(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Choose.createSpellChooseType(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Choose.createDrawbackChooseType(this); } } - else if (api.equals("ChooseColor")) { - if (isAb) { + else if (this.api.equals("ChooseColor")) { + if (this.isAb) { spellAbility = AbilityFactory_Choose.createAbilityChooseColor(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Choose.createSpellChooseColor(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Choose.createDrawbackChooseColor(this); } } - else if (api.equals("ChooseNumber")) { - if (isAb) { + else if (this.api.equals("ChooseNumber")) { + if (this.isAb) { spellAbility = AbilityFactory_Choose.createAbilityChooseNumber(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Choose.createSpellChooseNumber(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Choose.createDrawbackChooseNumber(this); } } - else if (api.equals("ChoosePlayer")) { - if (isAb) { + else if (this.api.equals("ChoosePlayer")) { + if (this.isAb) { spellAbility = AbilityFactory_Choose.createAbilityChoosePlayer(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Choose.createSpellChoosePlayer(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Choose.createDrawbackChoosePlayer(this); } } - else if (api.equals("NameCard")) { - if (isAb) { + else if (this.api.equals("NameCard")) { + if (this.isAb) { spellAbility = AbilityFactory_Choose.createAbilityNameCard(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Choose.createSpellNameCard(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Choose.createDrawbackNameCard(this); } } - else if (api.equals("CopyPermanent")) { - if (isAb) { + else if (this.api.equals("CopyPermanent")) { + if (this.isAb) { spellAbility = AbilityFactory_Copy.createAbilityCopyPermanent(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Copy.createSpellCopyPermanent(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Copy.createDrawbackCopyPermanent(this); } } - else if (api.equals("CopySpell")) { - if (isTargeted) { // Since all "CopySpell" ABs copy things on the - // Stack no need for it to be everywhere - abTgt.setZone(Zone.Stack); + else if (this.api.equals("CopySpell")) { + if (this.isTargeted) { // Since all "CopySpell" ABs copy things on + // the + // Stack no need for it to be everywhere + this.abTgt.setZone(Zone.Stack); } - if (isAb) { + if (this.isAb) { spellAbility = AbilityFactory_Copy.createAbilityCopySpell(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Copy.createSpellCopySpell(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Copy.createDrawbackCopySpell(this); } hostCard.setCopiesSpells(true); } - else if (api.equals("FlipACoin")) { - if (isAb) { + else if (this.api.equals("FlipACoin")) { + if (this.isAb) { spellAbility = AbilityFactory_Clash.createAbilityFlip(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Clash.createSpellFlip(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Clash.createDrawbackFlip(this); } } - else if (api.equals("DelayedTrigger")) { - if (isAb) { + else if (this.api.equals("DelayedTrigger")) { + if (this.isAb) { spellAbility = AbilityFactory_DelayedTrigger.getAbility(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_DelayedTrigger.getSpell(this); } - if (isDb) { + if (this.isDb) { spellAbility = AbilityFactory_DelayedTrigger.getDrawback(this); } } - else if (api.equals("Cleanup")) { - if (isDb) { + else if (this.api.equals("Cleanup")) { + if (this.isDb) { spellAbility = AbilityFactory_Cleanup.getDrawback(this); } } - else if (api.equals("RegenerateAll")) { - if (isAb) { + else if (this.api.equals("RegenerateAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Regenerate.getAbilityRegenerateAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Regenerate.getSpellRegenerateAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Regenerate.createDrawbackRegenerateAll(this); } } - else if (api.equals("AnimateAll")) { - if (isAb) { + else if (this.api.equals("AnimateAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Animate.createAbilityAnimateAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Animate.createSpellAnimateAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Animate.createDrawbackAnimateAll(this); } } - else if (api.equals("Debuff")) { - if (isAb) { + else if (this.api.equals("Debuff")) { + if (this.isAb) { spellAbility = AbilityFactory_Debuff.createAbilityDebuff(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Debuff.createSpellDebuff(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Debuff.createDrawbackDebuff(this); } } - else if (api.equals("DebuffAll")) { - if (isAb) { + else if (this.api.equals("DebuffAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Debuff.createAbilityDebuffAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Debuff.createSpellDebuffAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Debuff.createDrawbackDebuffAll(this); } } - else if (api.equals("DrainMana")) { - if (isAb) { + else if (this.api.equals("DrainMana")) { + if (this.isAb) { spellAbility = AbilityFactory_Mana.createAbilityDrainMana(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Mana.createSpellDrainMana(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Mana.createDrawbackDrainMana(this); } } - else if (api.equals("Protection")) { - if (isAb) { + else if (this.api.equals("Protection")) { + if (this.isAb) { spellAbility = AbilityFactory_Protection.createAbilityProtection(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Protection.createSpellProtection(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Protection.createDrawbackProtection(this); } } - else if (api.equals("Attach")) { - if (isAb) { + else if (this.api.equals("Attach")) { + if (this.isAb) { spellAbility = AbilityFactory_Attach.createAbilityAttach(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Attach.createSpellAttach(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Attach.createDrawbackAttach(this); } } - else if (api.equals("ProtectionAll")) { - if (isAb) { + else if (this.api.equals("ProtectionAll")) { + if (this.isAb) { spellAbility = AbilityFactory_Protection.createAbilityProtectionAll(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Protection.createSpellProtectionAll(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Protection.createDrawbackProtectionAll(this); } } - else if (api.equals("MustAttack")) { - if (isAb) { + else if (this.api.equals("MustAttack")) { + if (this.isAb) { spellAbility = AbilityFactory_Combat.createAbilityMustAttack(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Combat.createSpellMustAttack(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Combat.createDrawbackMustAttack(this); } } - else if (api.equals("MustBlock")) { - if (isAb) { + else if (this.api.equals("MustBlock")) { + if (this.isAb) { spellAbility = AbilityFactory_Combat.createAbilityMustBlock(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Combat.createSpellMustBlock(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_Combat.createDrawbackMustBlock(this); } } - else if (api.equals("Charm")) { - if (isAb) { + else if (this.api.equals("Charm")) { + if (this.isAb) { spellAbility = AbilityFactory_Charm.createAbilityCharm(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_Charm.createSpellCharm(this); } spellAbility.setIsCharm(true); - int num = Integer.parseInt(mapParams.containsKey("CharmNum") ? mapParams.get("CharmNum") : "1"); + final int num = Integer.parseInt(this.mapParams.containsKey("CharmNum") ? this.mapParams.get("CharmNum") + : "1"); spellAbility.setCharmNumber(num); - int min = mapParams.containsKey("MinCharmNum") ? Integer.parseInt(mapParams.get("MinCharmNum")) : num; + final int min = this.mapParams.containsKey("MinCharmNum") ? Integer.parseInt(this.mapParams + .get("MinCharmNum")) : num; spellAbility.setMinCharmNumber(min); - String[] saChoices = mapParams.get("Choices").split(","); - for (int i = 0; i < saChoices.length; i++) { - String ab = hostC.getSVar(saChoices[i]); - AbilityFactory charmAF = new AbilityFactory(); - spellAbility.addCharmChoice(charmAF.getAbility(ab, hostC)); + final String[] saChoices = this.mapParams.get("Choices").split(","); + for (final String saChoice : saChoices) { + final String ab = this.hostC.getSVar(saChoice); + final AbilityFactory charmAF = new AbilityFactory(); + spellAbility.addCharmChoice(charmAF.getAbility(ab, this.hostC)); } } - else if (api.equals("ChangeState")) { - if (isAb) { + else if (this.api.equals("ChangeState")) { + if (this.isAb) { spellAbility = AbilityFactory_ChangeState.getChangeStateAbility(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ChangeState.getChangeStateSpell(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ChangeState.getChangeStateDrawback(this); } } - else if (api.equals("ChangeStateAll")) { - if (isAb) { + else if (this.api.equals("ChangeStateAll")) { + if (this.isAb) { spellAbility = AbilityFactory_ChangeState.getChangeStateAllAbility(this); - } else if (isSp) { + } else if (this.isSp) { spellAbility = AbilityFactory_ChangeState.getChangeStateAllSpell(this); - } else if (isDb) { + } else if (this.isDb) { spellAbility = AbilityFactory_ChangeState.getChangeStateAllDrawback(this); } } if (spellAbility == null) { - StringBuilder msg = new StringBuilder(); + final StringBuilder msg = new StringBuilder(); msg.append("AbilityFactory : SpellAbility was not created for "); msg.append(hostCard.getName()); - msg.append(". Looking for API: ").append(api); + msg.append(". Looking for API: ").append(this.api); throw new RuntimeException(msg.toString()); } @@ -1153,27 +1158,28 @@ public class AbilityFactory { spellAbility.setAbilityFactory(this); - if (hasSubAbility()) { - spellAbility.setSubAbility(getSubAbility()); + if (this.hasSubAbility()) { + spellAbility.setSubAbility(this.getSubAbility()); } if (spellAbility instanceof Spell_Permanent) { spellAbility.setDescription(spellAbility.getSourceCard().getName()); - } else if (hasSpDesc) { - StringBuilder sb = new StringBuilder(); + } else if (this.hasSpDesc) { + final StringBuilder sb = new StringBuilder(); - if (!isDb) { // SubAbilities don't have Costs or Cost descriptors - if (mapParams.containsKey("PrecostDesc")) { - sb.append(mapParams.get("PrecostDesc")).append(" "); + if (!this.isDb) { // SubAbilities don't have Costs or Cost + // descriptors + if (this.mapParams.containsKey("PrecostDesc")) { + sb.append(this.mapParams.get("PrecostDesc")).append(" "); } - if (mapParams.containsKey("CostDesc")) { - sb.append(mapParams.get("CostDesc")).append(" "); + if (this.mapParams.containsKey("CostDesc")) { + sb.append(this.mapParams.get("CostDesc")).append(" "); } else { - sb.append(abCost.toString()); + sb.append(this.abCost.toString()); } } - sb.append(mapParams.get("SpellDescription")); + sb.append(this.mapParams.get("SpellDescription")); spellAbility.setDescription(sb.toString()); } else { @@ -1185,8 +1191,8 @@ public class AbilityFactory { // if (!isTargeted) // SA.setStackDescription(hostCard.getName()); - makeRestrictions(spellAbility); - makeConditions(spellAbility); + this.makeRestrictions(spellAbility); + this.makeConditions(spellAbility); return spellAbility; } @@ -1201,11 +1207,11 @@ public class AbilityFactory { */ private void makeRestrictions(final SpellAbility sa) { // SpellAbility_Restrictions should be added in here - SpellAbility_Restriction restrict = sa.getRestrictions(); - if (mapParams.containsKey("Flashback")) { + final SpellAbility_Restriction restrict = sa.getRestrictions(); + if (this.mapParams.containsKey("Flashback")) { sa.setFlashBackAbility(true); } - restrict.setRestrictions(mapParams); + restrict.setRestrictions(this.mapParams); } /** @@ -1218,11 +1224,11 @@ public class AbilityFactory { */ private void makeConditions(final SpellAbility sa) { // SpellAbility_Restrictions should be added in here - SpellAbility_Condition condition = sa.getConditions(); - if (mapParams.containsKey("Flashback")) { + final SpellAbility_Condition condition = sa.getConditions(); + if (this.mapParams.containsKey("Flashback")) { sa.setFlashBackAbility(true); } - condition.setConditions(mapParams); + condition.setConditions(this.mapParams); } /** @@ -1249,20 +1255,20 @@ public class AbilityFactory { public final Ability_Sub getSubAbility() { Ability_Sub abSub = null; - String sSub = getMapParams().get("SubAbility"); + String sSub = this.getMapParams().get("SubAbility"); if (sSub.startsWith("SVar=")) { sSub = sSub.replace("SVar=", ""); } - sSub = getHostCard().getSVar(sSub); + sSub = this.getHostCard().getSVar(sSub); if (!sSub.equals("")) { // Older style Drawback no longer supported - AbilityFactory afDB = new AbilityFactory(); - abSub = (Ability_Sub) afDB.getAbility(sSub, getHostCard()); + final AbilityFactory afDB = new AbilityFactory(); + abSub = (Ability_Sub) afDB.getAbility(sSub, this.getHostCard()); } else { - System.out.println("SubAbility not found for: " + getHostCard()); + System.out.println("SubAbility not found for: " + this.getHostCard()); } return abSub; @@ -1362,8 +1368,8 @@ public class AbilityFactory { } if (!card.getSVar(amount).equals("")) { - String[] calcX = card.getSVar(amount).split("\\$"); - if (calcX.length == 1 || calcX[1].equals("none")) { + final String[] calcX = card.getSVar(amount).split("\\$"); + if ((calcX.length == 1) || calcX[1].equals("none")) { return 0; } @@ -1374,13 +1380,14 @@ public class AbilityFactory { if (calcX[0].startsWith("Number")) { return CardFactoryUtil.xCount(card, card.getSVar(amount)) * multiplier; } else if (calcX[0].startsWith("SVar")) { - String[] l = calcX[1].split("/"); - String[] m = CardFactoryUtil.parseMath(l); - return CardFactoryUtil.doXMath(calculateAmount(card, l[0], ability), m, card) * multiplier; + final String[] l = calcX[1].split("/"); + final String[] m = CardFactoryUtil.parseMath(l); + return CardFactoryUtil.doXMath(AbilityFactory.calculateAmount(card, l[0], ability), m, card) + * multiplier; } else if (calcX[0].startsWith("Remembered")) { // Add whole Remembered list to handlePaid - CardList list = new CardList(); - for (Object o : card.getRemembered()) { + final CardList list = new CardList(); + for (final Object o : card.getRemembered()) { if (o instanceof Card) { list.add(AllZoneUtil.getCardState((Card) o)); } @@ -1389,8 +1396,8 @@ public class AbilityFactory { return CardFactoryUtil.handlePaid(list, calcX[1], card) * multiplier; } else if (calcX[0].startsWith("Imprinted")) { // Add whole Imprinted list to handlePaid - CardList list = new CardList(); - for (Card c : card.getImprinted()) { + final CardList list = new CardList(); + for (final Card c : card.getImprinted()) { list.add(AllZoneUtil.getCardState(c)); } @@ -1398,30 +1405,31 @@ public class AbilityFactory { } else if (ability != null) { // Player attribute counting if (calcX[0].startsWith("TargetedPlayer")) { - ArrayList players = new ArrayList(); - SpellAbility saTargeting = (ability.getTarget() == null) ? findParentsTargetedPlayer(ability) - : ability; + final ArrayList players = new ArrayList(); + final SpellAbility saTargeting = (ability.getTarget() == null) ? AbilityFactory + .findParentsTargetedPlayer(ability) : ability; if (saTargeting.getTarget() != null) { players.addAll(saTargeting.getTarget().getTargetPlayers()); } else { - players.addAll(getDefinedPlayers(card, - saTargeting.getAbilityFactory().getMapParams().get("Defined"), saTargeting)); + players.addAll(AbilityFactory.getDefinedPlayers(card, saTargeting.getAbilityFactory() + .getMapParams().get("Defined"), saTargeting)); } return CardFactoryUtil.playerXCount(players, calcX[1], card) * multiplier; } if (calcX[0].startsWith("TargetedController")) { - ArrayList players = new ArrayList(); - ArrayList list = getDefinedCards(card, "Targeted", ability); - ArrayList sas = getDefinedSpellAbilities(card, "Targeted", ability); + final ArrayList players = new ArrayList(); + final ArrayList list = AbilityFactory.getDefinedCards(card, "Targeted", ability); + final ArrayList sas = AbilityFactory.getDefinedSpellAbilities(card, "Targeted", + ability); - for (Card c : list) { - Player p = c.getController(); + for (final Card c : list) { + final Player p = c.getController(); if (!players.contains(p)) { players.add(p); } } - for (SpellAbility s : sas) { - Player p = s.getSourceCard().getController(); + for (final SpellAbility s : sas) { + final Player p = s.getSourceCard().getController(); if (!players.contains(p)) { players.add(p); } @@ -1431,56 +1439,56 @@ public class AbilityFactory { CardList list = new CardList(); if (calcX[0].startsWith("Sacrificed")) { - list = findRootAbility(ability).getPaidList("Sacrificed"); + list = AbilityFactory.findRootAbility(ability).getPaidList("Sacrificed"); } else if (calcX[0].startsWith("Discarded")) { - list = findRootAbility(ability).getPaidList("Discarded"); + list = AbilityFactory.findRootAbility(ability).getPaidList("Discarded"); } else if (calcX[0].startsWith("Exiled")) { - list = findRootAbility(ability).getPaidList("Exiled"); + list = AbilityFactory.findRootAbility(ability).getPaidList("Exiled"); } else if (calcX[0].startsWith("Tapped")) { - list = findRootAbility(ability).getPaidList("Tapped"); + list = AbilityFactory.findRootAbility(ability).getPaidList("Tapped"); } else if (calcX[0].startsWith("Revealed")) { - list = findRootAbility(ability).getPaidList("Revealed"); + list = AbilityFactory.findRootAbility(ability).getPaidList("Revealed"); } else if (calcX[0].startsWith("Targeted")) { - Target t = ability.getTarget(); + final Target t = ability.getTarget(); if (null != t) { - ArrayList all = t.getTargets(); - if (!all.isEmpty() && all.get(0) instanceof SpellAbility) { - SpellAbility saTargeting = findParentsTargetedSpellAbility(ability); + final ArrayList all = t.getTargets(); + if (!all.isEmpty() && (all.get(0) instanceof SpellAbility)) { + final SpellAbility saTargeting = AbilityFactory.findParentsTargetedSpellAbility(ability); list = new CardList(); - ArrayList sas = saTargeting.getTarget().getTargetSAs(); - for (SpellAbility sa : sas) { + final ArrayList sas = saTargeting.getTarget().getTargetSAs(); + for (final SpellAbility sa : sas) { list.add(sa.getSourceCard()); } } else { - SpellAbility saTargeting = findParentsTargetedCard(ability); + final SpellAbility saTargeting = AbilityFactory.findParentsTargetedCard(ability); list = new CardList(saTargeting.getTarget().getTargetCards().toArray()); } } else { - SpellAbility parent = findParentsTargetedCard(ability); + final SpellAbility parent = AbilityFactory.findParentsTargetedCard(ability); - ArrayList all = parent.getTarget().getTargets(); - if (!all.isEmpty() && all.get(0) instanceof SpellAbility) { + final ArrayList all = parent.getTarget().getTargets(); + if (!all.isEmpty() && (all.get(0) instanceof SpellAbility)) { list = new CardList(); - ArrayList sas = parent.getTarget().getTargetSAs(); - for (SpellAbility sa : sas) { + final ArrayList sas = parent.getTarget().getTargetSAs(); + for (final SpellAbility sa : sas) { list.add(sa.getSourceCard()); } } else { - SpellAbility saTargeting = findParentsTargetedCard(ability); + final SpellAbility saTargeting = AbilityFactory.findParentsTargetedCard(ability); list = new CardList(saTargeting.getTarget().getTargetCards().toArray()); } } } else if (calcX[0].startsWith("Triggered")) { - SpellAbility root = ability.getRootSpellAbility(); + final SpellAbility root = ability.getRootSpellAbility(); list = new CardList(); list.add((Card) root.getTriggeringObject(calcX[0].substring(9))); } else if (calcX[0].startsWith("TriggerCount")) { // TriggerCount is similar to a regular Count, but just // pulls Integer Values from Trigger objects - SpellAbility root = ability.getRootSpellAbility(); - String[] l = calcX[1].split("/"); - String[] m = CardFactoryUtil.parseMath(l); - int count = (Integer) root.getTriggeringObject(l[0]); + final SpellAbility root = ability.getRootSpellAbility(); + final String[] l = calcX[1].split("/"); + final String[] m = CardFactoryUtil.parseMath(l); + final int count = (Integer) root.getTriggeringObject(l[0]); return CardFactoryUtil.doXMath(count, m, card) * multiplier; } else { @@ -1523,8 +1531,8 @@ public class AbilityFactory { * @return a {@link java.util.ArrayList} object. */ public static ArrayList getDefinedCards(final Card hostCard, final String def, final SpellAbility sa) { - ArrayList cards = new ArrayList(); - String defined = (def == null) ? "Self" : def; // default to Self + final ArrayList cards = new ArrayList(); + final String defined = (def == null) ? "Self" : def; // default to Self Card c = null; @@ -1539,7 +1547,7 @@ public class AbilityFactory { else if (defined.equals("Enchanted")) { c = hostCard.getEnchantingCard(); } else if (defined.equals("TopOfLibrary")) { - CardList lib = hostCard.getController().getCardsIn(Constant.Zone.Library); + final CardList lib = hostCard.getController().getCardsIn(Constant.Zone.Library); if (lib.size() > 0) { c = lib.get(0); } else { @@ -1549,34 +1557,34 @@ public class AbilityFactory { } else if (defined.equals("Targeted")) { - SpellAbility parent = findParentsTargetedCard(sa); + final SpellAbility parent = AbilityFactory.findParentsTargetedCard(sa); cards.addAll(parent.getTarget().getTargetCards()); - } else if (defined.startsWith("Triggered") && sa != null) { - SpellAbility root = sa.getRootSpellAbility(); - Object crd = root.getTriggeringObject(defined.substring(9)); + } else if (defined.startsWith("Triggered") && (sa != null)) { + final SpellAbility root = sa.getRootSpellAbility(); + final Object crd = root.getTriggeringObject(defined.substring(9)); if (crd instanceof Card) { c = AllZoneUtil.getCardState((Card) crd); } else if (crd instanceof CardList) { - for (Card cardItem : (CardList) crd) { + for (final Card cardItem : (CardList) crd) { cards.add(cardItem); } } } else if (defined.equals("Remembered")) { - for (Object o : hostCard.getRemembered()) { + for (final Object o : hostCard.getRemembered()) { if (o instanceof Card) { cards.add(AllZoneUtil.getCardState((Card) o)); } } } else if (defined.equals("Clones")) { - for (Card clone : hostCard.getClones()) { + for (final Card clone : hostCard.getClones()) { cards.add(AllZoneUtil.getCardState(clone)); } } else if (defined.equals("Imprinted")) { - for (Card imprint : hostCard.getImprinted()) { + for (final Card imprint : hostCard.getImprinted()) { cards.add(AllZoneUtil.getCardState(imprint)); } } else if (defined.startsWith("ThisTurnEntered")) { - String[] workingCopy = defined.split(" "); + final String[] workingCopy = defined.split(" "); Zone destination, origin; String validFilter; @@ -1588,32 +1596,32 @@ public class AbilityFactory { origin = null; validFilter = workingCopy[2]; } - for (Card cl : CardUtil.getThisTurnEntered(destination, origin, validFilter, hostCard)) { + for (final Card cl : CardUtil.getThisTurnEntered(destination, origin, validFilter, hostCard)) { cards.add(cl); } } else { CardList list = null; if (defined.startsWith("Sacrificed")) { - list = findRootAbility(sa).getPaidList("Sacrificed"); + list = AbilityFactory.findRootAbility(sa).getPaidList("Sacrificed"); } else if (defined.startsWith("Discarded")) { - list = findRootAbility(sa).getPaidList("Discarded"); + list = AbilityFactory.findRootAbility(sa).getPaidList("Discarded"); } else if (defined.startsWith("Exiled")) { - list = findRootAbility(sa).getPaidList("Exiled"); + list = AbilityFactory.findRootAbility(sa).getPaidList("Exiled"); } else if (defined.startsWith("Tapped")) { - list = findRootAbility(sa).getPaidList("Tapped"); + list = AbilityFactory.findRootAbility(sa).getPaidList("Tapped"); } else { return cards; } - for (Card cl : list) { + for (final Card cl : list) { cards.add(cl); } } @@ -1639,8 +1647,8 @@ public class AbilityFactory { * @return a {@link java.util.ArrayList} object. */ public static ArrayList getDefinedPlayers(final Card card, final String def, final SpellAbility sa) { - ArrayList players = new ArrayList(); - String defined = (def == null) ? "You" : def; + final ArrayList players = new ArrayList(); + final String defined = (def == null) ? "You" : def; if (defined.equals("Targeted")) { Target tgt = sa.getTarget(); @@ -1654,47 +1662,47 @@ public class AbilityFactory { } parent = ((Ability_Sub) parent).getParent(); tgt = parent.getTarget(); - } while (tgt == null || tgt.getTargetPlayers().size() == 0); + } while ((tgt == null) || (tgt.getTargetPlayers().size() == 0)); players.addAll(tgt.getTargetPlayers()); } else if (defined.equals("TargetedController")) { - ArrayList list = getDefinedCards(card, "Targeted", sa); - ArrayList sas = getDefinedSpellAbilities(card, "Targeted", sa); + final ArrayList list = AbilityFactory.getDefinedCards(card, "Targeted", sa); + final ArrayList sas = AbilityFactory.getDefinedSpellAbilities(card, "Targeted", sa); - for (Card c : list) { - Player p = c.getController(); + for (final Card c : list) { + final Player p = c.getController(); if (!players.contains(p)) { players.add(p); } } - for (SpellAbility s : sas) { - Player p = s.getSourceCard().getController(); + for (final SpellAbility s : sas) { + final Player p = s.getSourceCard().getController(); if (!players.contains(p)) { players.add(p); } } } else if (defined.equals("TargetedOwner")) { - ArrayList list = getDefinedCards(card, "Targeted", sa); + final ArrayList list = AbilityFactory.getDefinedCards(card, "Targeted", sa); - for (Card c : list) { - Player p = c.getOwner(); + for (final Card c : list) { + final Player p = c.getOwner(); if (!players.contains(p)) { players.add(p); } } } else if (defined.equals("Remembered")) { - for (Object rem : card.getRemembered()) { + for (final Object rem : card.getRemembered()) { if (rem instanceof Player) { players.add((Player) rem); } } } else if (defined.startsWith("Triggered")) { - SpellAbility root = sa.getRootSpellAbility(); + final SpellAbility root = sa.getRootSpellAbility(); Object o = null; if (defined.endsWith("Controller")) { String triggeringType = defined.substring(9); triggeringType = triggeringType.substring(0, triggeringType.length() - 10); - Object c = root.getTriggeringObject(triggeringType); + final Object c = root.getTriggeringObject(triggeringType); if (c instanceof Card) { o = ((Card) c).getController(); } @@ -1704,51 +1712,51 @@ public class AbilityFactory { } else if (defined.endsWith("Owner")) { String triggeringType = defined.substring(9); triggeringType = triggeringType.substring(0, triggeringType.length() - 5); - Object c = root.getTriggeringObject(triggeringType); + final Object c = root.getTriggeringObject(triggeringType); if (c instanceof Card) { o = ((Card) c).getOwner(); } } else { - String triggeringType = defined.substring(9); + final String triggeringType = defined.substring(9); o = root.getTriggeringObject(triggeringType); } if (o != null) { if (o instanceof Player) { - Player p = (Player) o; + final Player p = (Player) o; if (!players.contains(p)) { players.add(p); } } } } else if (defined.equals("EnchantedController")) { - Player p = card.getEnchantingCard().getController(); + final Player p = card.getEnchantingCard().getController(); if (!players.contains(p)) { players.add(p); } } else if (defined.equals("EnchantedOwner")) { - Player p = card.getEnchantingCard().getOwner(); + final Player p = card.getEnchantingCard().getOwner(); if (!players.contains(p)) { players.add(p); } } else if (defined.equals("EnchantedPlayer")) { - Object o = sa.getSourceCard().getEnchanting(); + final Object o = sa.getSourceCard().getEnchanting(); if (o instanceof Player) { - if (!players.contains((Player) o)) { + if (!players.contains(o)) { players.add((Player) o); } } } else if (defined.equals("AttackingPlayer")) { - Player p = AllZone.getCombat().getAttackingPlayer(); + final Player p = AllZone.getCombat().getAttackingPlayer(); if (!players.contains(p)) { players.add(p); } } else if (defined.equals("DefendingPlayer")) { - Player p = AllZone.getCombat().getDefendingPlayer(); + final Player p = AllZone.getCombat().getDefendingPlayer(); if (!players.contains(p)) { players.add(p); } } else if (defined.equals("ChosenPlayer")) { - Player p = card.getChosenPlayer(); + final Player p = card.getChosenPlayer(); if (!players.contains(p)) { players.add(p); } @@ -1779,8 +1787,8 @@ public class AbilityFactory { */ public static ArrayList getDefinedSpellAbilities(final Card card, final String def, final SpellAbility sa) { - ArrayList sas = new ArrayList(); - String defined = (def == null) ? "Self" : def; // default to Self + final ArrayList sas = new ArrayList(); + final String defined = (def == null) ? "Self" : def; // default to Self SpellAbility s = null; @@ -1789,18 +1797,18 @@ public class AbilityFactory { if (defined.equals("Self")) { s = sa; } else if (defined.equals("Targeted")) { - SpellAbility parent = findParentsTargetedSpellAbility(sa); + final SpellAbility parent = AbilityFactory.findParentsTargetedSpellAbility(sa); sas.addAll(parent.getTarget().getTargetSAs()); } else if (defined.startsWith("Triggered")) { - SpellAbility root = sa.getRootSpellAbility(); + final SpellAbility root = sa.getRootSpellAbility(); - String triggeringType = defined.substring(9); - Object o = root.getTriggeringObject(triggeringType); + final String triggeringType = defined.substring(9); + final Object o = root.getTriggeringObject(triggeringType); if (o instanceof SpellAbility) { s = (SpellAbility) o; } } else if (defined.startsWith("Imprinted")) { - for (Card imp : card.getImprinted()) { + for (final Card imp : card.getImprinted()) { sas.addAll(imp.getSpellAbilities()); } } @@ -1826,12 +1834,12 @@ public class AbilityFactory { * @return a {@link java.util.ArrayList} object. */ public static ArrayList getDefinedObjects(final Card card, final String def, final SpellAbility sa) { - ArrayList objects = new ArrayList(); - String defined = (def == null) ? "Self" : def; + final ArrayList objects = new ArrayList(); + final String defined = (def == null) ? "Self" : def; - objects.addAll(getDefinedPlayers(card, defined, sa)); - objects.addAll(getDefinedCards(card, defined, sa)); - objects.addAll(getDefinedSpellAbilities(card, defined, sa)); + objects.addAll(AbilityFactory.getDefinedPlayers(card, defined, sa)); + objects.addAll(AbilityFactory.getDefinedCards(card, defined, sa)); + objects.addAll(AbilityFactory.getDefinedSpellAbilities(card, defined, sa)); return objects; } @@ -1870,7 +1878,7 @@ public class AbilityFactory { return parent; } parent = ((Ability_Sub) parent).getParent(); - } while (parent.getTarget() == null || parent.getTarget().getTargetCards().size() == 0); + } while ((parent.getTarget() == null) || (parent.getTarget().getTargetCards().size() == 0)); return parent; } @@ -1892,7 +1900,7 @@ public class AbilityFactory { return parent; } parent = ((Ability_Sub) parent).getParent(); - } while (parent.getTarget() == null || parent.getTarget().getTargetSAs().size() == 0); + } while ((parent.getTarget() == null) || (parent.getTarget().getTargetSAs().size() == 0)); return parent; } @@ -1914,7 +1922,7 @@ public class AbilityFactory { return parent; } parent = ((Ability_Sub) parent).getParent(); - } while (parent.getTarget() == null || parent.getTarget().getTargetPlayers().size() == 0); + } while ((parent.getTarget() == null) || (parent.getTarget().getTargetPlayers().size() == 0)); return parent; } @@ -1930,14 +1938,14 @@ public class AbilityFactory { * @since 1.0.15 */ public static ArrayList predictThreatenedObjects(final AbilityFactory saviourAf) { - ArrayList objects = new ArrayList(); + final ArrayList objects = new ArrayList(); if (AllZone.getStack().size() == 0) { return objects; } // check stack for something that will kill this - SpellAbility topStack = AllZone.getStack().peekAbility(); - objects.addAll(predictThreatenedObjects(saviourAf, topStack)); + final SpellAbility topStack = AllZone.getStack().peekAbility(); + objects.addAll(AbilityFactory.predictThreatenedObjects(saviourAf, topStack)); return objects; } @@ -1956,7 +1964,7 @@ public class AbilityFactory { */ public static ArrayList predictThreatenedObjects(final AbilityFactory saviourAf, final SpellAbility topStack) { ArrayList objects = new ArrayList(); - ArrayList threatened = new ArrayList(); + final ArrayList threatened = new ArrayList(); String saviourApi = ""; if (saviourAf != null) { saviourApi = saviourAf.getAPI(); @@ -1966,15 +1974,15 @@ public class AbilityFactory { return objects; } - Card source = topStack.getSourceCard(); - AbilityFactory topAf = topStack.getAbilityFactory(); + final Card source = topStack.getSourceCard(); + final AbilityFactory topAf = topStack.getAbilityFactory(); // Can only Predict things from AFs if (topAf != null) { - Target tgt = topStack.getTarget(); + final Target tgt = topStack.getTarget(); if (tgt == null) { - objects = getDefinedObjects(source, topAf.getMapParams().get("Defined"), topStack); + objects = AbilityFactory.getDefinedObjects(source, topAf.getMapParams().get("Defined"), topStack); } else { objects = tgt.getTargets(); } @@ -1982,17 +1990,17 @@ public class AbilityFactory { // Determine if Defined Objects are "threatened" will be destroyed // due to this SA - String threatApi = topAf.getAPI(); - HashMap threatParams = topAf.getMapParams(); + final String threatApi = topAf.getAPI(); + final HashMap threatParams = topAf.getMapParams(); // Lethal Damage => prevent damage/regeneration/bounce if (threatApi.equals("DealDamage") || threatApi.equals("DamageAll")) { // If PredictDamage is >= Lethal Damage - int dmg = AbilityFactory.calculateAmount(topStack.getSourceCard(), topAf.getMapParams().get("NumDmg"), - topStack); - for (Object o : objects) { + final int dmg = AbilityFactory.calculateAmount(topStack.getSourceCard(), + topAf.getMapParams().get("NumDmg"), topStack); + for (final Object o : objects) { if (o instanceof Card) { - Card c = (Card) o; + final Card c = (Card) o; // indestructible if (c.hasKeyword("Indestructible")) { @@ -2019,7 +2027,7 @@ public class AbilityFactory { threatened.add(c); } } else if (o instanceof Player) { - Player p = (Player) o; + final Player p = (Player) o; if (source.hasKeyword("Infect")) { if (p.predictDamage(dmg, source, false) >= p.getPoisonCounters()) { @@ -2034,11 +2042,10 @@ public class AbilityFactory { // Destroy => regeneration/bounce else if ((threatApi.equals("Destroy") || threatApi.equals("DestroyAll")) && ((saviourApi.equals("Regenerate") && !threatParams.containsKey("NoRegen")) || saviourApi - .equals("ChangeZone"))) - { - for (Object o : objects) { + .equals("ChangeZone"))) { + for (final Object o : objects) { if (o instanceof Card) { - Card c = (Card) o; + final Card c = (Card) o; // indestructible if (c.hasKeyword("Indestructible")) { continue; @@ -2066,11 +2073,10 @@ public class AbilityFactory { // Exiling => bounce else if ((threatApi.equals("ChangeZone") || threatApi.equals("ChangeZoneAll")) && saviourApi.equals("ChangeZone") && threatParams.containsKey("Destination") - && threatParams.get("Destination").equals("Exile")) - { - for (Object o : objects) { + && threatParams.get("Destination").equals("Exile")) { + for (final Object o : objects) { if (o instanceof Card) { - Card c = (Card) o; + final Card c = (Card) o; // don't bounce or blink a permanent that the human // player owns or is a token if (saviourApi.equals("ChangeZone") && (c.getOwner().isHuman() || c.isToken())) { @@ -2083,7 +2089,7 @@ public class AbilityFactory { } } - threatened.addAll(predictThreatenedObjects(saviourAf, topStack.getSubAbility())); + threatened.addAll(AbilityFactory.predictThreatenedObjects(saviourAf, topStack.getSubAbility())); return threatened; } @@ -2096,7 +2102,7 @@ public class AbilityFactory { * a {@link forge.card.abilityFactory.AbilityFactory} object. */ public static void handleRemembering(final AbilityFactory af) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); Card host; if (!params.containsKey("RememberTargets")) { @@ -2109,11 +2115,11 @@ public class AbilityFactory { host.clearRemembered(); } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (params.containsKey("RememberTargets")) { - ArrayList tgts = (tgt == null) ? new ArrayList() : tgt.getTargets(); - for (Object o : tgts) { + final ArrayList tgts = (tgt == null) ? new ArrayList() : tgt.getTargets(); + for (final Object o : tgts) { host.addRemembered(o); } } @@ -2140,7 +2146,7 @@ public class AbilityFactory { Card source = sa.getSourceCard(); if (type.contains("Triggered")) { - Object o = sa.getTriggeringObject("Card"); + final Object o = sa.getTriggeringObject("Card"); // I won't the card attached to the Triggering object if (!(o instanceof Card)) { @@ -2151,7 +2157,7 @@ public class AbilityFactory { type = type.replace("Triggered", "Card"); } else if (type.startsWith("Remembered")) { boolean hasRememberedCard = false; - for (Object o : source.getRemembered()) { + for (final Object o : source.getRemembered()) { if (o instanceof Card) { hasRememberedCard = true; source = (Card) o; @@ -2179,8 +2185,8 @@ public class AbilityFactory { * a boolean. */ public static void passUnlessCost(final SpellAbility sa, final boolean usedStack) { - Card source = sa.getSourceCard(); - AbilityFactory af = sa.getAbilityFactory(); + final Card source = sa.getSourceCard(); + final AbilityFactory af = sa.getAbilityFactory(); final HashMap params = af.getMapParams(); // Nothing to do @@ -2190,8 +2196,8 @@ public class AbilityFactory { } // The player who has the chance to cancel the ability - String pays = params.containsKey("UnlessPayer") ? params.get("UnlessPayer") : "TargetedController"; - Player payer = getDefinedPlayers(sa.getSourceCard(), pays, sa).get(0); + final String pays = params.containsKey("UnlessPayer") ? params.get("UnlessPayer") : "TargetedController"; + final Player payer = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), pays, sa).get(0); // The cost String unlessCost = params.get("UnlessCost").trim(); @@ -2199,7 +2205,7 @@ public class AbilityFactory { unlessCost = Integer.toString(AbilityFactory.calculateAmount(source, params.get("UnlessCost"), sa)); } - Ability ability = new Ability(source, unlessCost) { + final Ability ability = new Ability(source, unlessCost) { @Override public void resolve() { // nothing to do @@ -2209,8 +2215,9 @@ public class AbilityFactory { final Command paidCommand = new Command() { private static final long serialVersionUID = 8094833091127334678L; + @Override public void execute() { - resolveSubAbilities(sa); + AbilityFactory.resolveSubAbilities(sa); if (usedStack) { AllZone.getStack().finishResolving(sa, false); } @@ -2220,12 +2227,13 @@ public class AbilityFactory { final Command unpaidCommand = new Command() { private static final long serialVersionUID = 8094833091127334678L; + @Override public void execute() { sa.resolve(); if (params.containsKey("PowerSink")) { GameActionUtil.doPowerSink(AllZone.getHumanPlayer()); } - resolveSubAbilities(sa); + AbilityFactory.resolveSubAbilities(sa); if (usedStack) { AllZone.getStack().finishResolving(sa, false); } @@ -2239,7 +2247,7 @@ public class AbilityFactory { if (ComputerUtil.canPayCost(ability)) { ComputerUtil.playNoStack(ability); // Unless cost was payed - no // resolve - resolveSubAbilities(sa); + AbilityFactory.resolveSubAbilities(sa); if (usedStack) { AllZone.getStack().finishResolving(sa, false); } @@ -2248,7 +2256,7 @@ public class AbilityFactory { if (params.containsKey("PowerSink")) { GameActionUtil.doPowerSink(AllZone.getComputerPlayer()); } - resolveSubAbilities(sa); + AbilityFactory.resolveSubAbilities(sa); if (usedStack) { AllZone.getStack().finishResolving(sa, false); } @@ -2270,28 +2278,28 @@ public class AbilityFactory { if (sa == null) { return; } - AbilityFactory af = sa.getAbilityFactory(); + final AbilityFactory af = sa.getAbilityFactory(); if (af == null) { sa.resolve(); return; } - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); // check conditions if (AbilityFactory.checkConditional(sa)) { - if (params.get("UnlessCost") == null || sa.isWrapper()) { + if ((params.get("UnlessCost") == null) || sa.isWrapper()) { sa.resolve(); // try to resolve subabilities (see null check above) - resolveSubAbilities(sa); + AbilityFactory.resolveSubAbilities(sa); if (usedStack) { AllZone.getStack().finishResolving(sa, false); } } else { - passUnlessCost(sa, usedStack); + AbilityFactory.passUnlessCost(sa, usedStack); } } else { - resolveSubAbilities(sa); + AbilityFactory.resolveSubAbilities(sa); if (usedStack) { AllZone.getStack().finishResolving(sa, false); } @@ -2308,15 +2316,15 @@ public class AbilityFactory { * @since 1.0.15 */ public static void resolveSubAbilities(final SpellAbility sa) { - Ability_Sub abSub = sa.getSubAbility(); - if (abSub == null || sa.isWrapper()) { + final Ability_Sub abSub = sa.getSubAbility(); + if ((abSub == null) || sa.isWrapper()) { return; } // check conditions if (AbilityFactory.checkConditional(abSub)) { abSub.resolve(); } - resolveSubAbilities(abSub); + AbilityFactory.resolveSubAbilities(abSub); } } // end class AbilityFactory diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java index da22b5e2b34..72fef830e01 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_AlterLife.java @@ -47,8 +47,8 @@ public class AbilityFactory_AlterLife { */ public static SpellAbility createAbilityGainLife(final AbilityFactory abilityFactory) { - final SpellAbility abGainLife = new Ability_Activated(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility abGainLife = new Ability_Activated(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = 8869422603616247307L; private final AbilityFactory af = abilityFactory; @@ -57,22 +57,22 @@ public class AbilityFactory_AlterLife { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return gainLifeStackDescription(af, this); + return AbilityFactory_AlterLife.gainLifeStackDescription(this.af, this); } @Override public boolean canPlayAI() { - return gainLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.gainLifeCanPlayAI(this.af, this); } @Override public void resolve() { - gainLifeResolve(af, this); + AbilityFactory_AlterLife.gainLifeResolve(this.af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return gainLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.gainLifeDoTriggerAI(this.af, this, mandatory); } }; @@ -89,8 +89,8 @@ public class AbilityFactory_AlterLife { * @return a {@link forge.card.spellability.SpellAbility} object. */ public static SpellAbility createSpellGainLife(final AbilityFactory abilityFactory) { - final SpellAbility spGainLife = new Spell(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility spGainLife = new Spell(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = 6631124959690157874L; private final AbilityFactory af = abilityFactory; @@ -99,7 +99,7 @@ public class AbilityFactory_AlterLife { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return gainLifeStackDescription(af, this); + return AbilityFactory_AlterLife.gainLifeStackDescription(this.af, this); } @Override @@ -109,12 +109,12 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return gainLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.gainLifeCanPlayAI(this.af, this); } @Override public void resolve() { - gainLifeResolve(af, this); + AbilityFactory_AlterLife.gainLifeResolve(this.af, this); } }; @@ -140,7 +140,7 @@ public class AbilityFactory_AlterLife { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return gainLifeStackDescription(af, this); + return AbilityFactory_AlterLife.gainLifeStackDescription(this.af, this); } @Override @@ -150,12 +150,12 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return gainLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.gainLifeCanPlayAI(this.af, this); } @Override public void resolve() { - gainLifeResolve(af, this); + AbilityFactory_AlterLife.gainLifeResolve(this.af, this); } @Override @@ -165,7 +165,7 @@ public class AbilityFactory_AlterLife { @Override public boolean doTrigger(final boolean mandatory) { - return gainLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.gainLifeDoTriggerAI(this.af, this, mandatory); } }; @@ -184,9 +184,9 @@ public class AbilityFactory_AlterLife { * @return a {@link java.lang.String} object. */ public static String gainLifeStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -194,27 +194,27 @@ public class AbilityFactory_AlterLife { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player player : tgtPlayers) { + for (final Player player : tgtPlayers) { sb.append(player).append(" "); } sb.append("gains ").append(amount).append(" life."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -234,13 +234,13 @@ public class AbilityFactory_AlterLife { * @return a boolean. */ public static boolean gainLifeCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Random r = MyRandom.getRandom(); - HashMap params = af.getMapParams(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final HashMap params = af.getMapParams(); + final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); - int life = AllZone.getComputerPlayer().getLife(); - int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); - String amountStr = params.get("LifeAmount"); + final int life = AllZone.getComputerPlayer().getLife(); + final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); + final String amountStr = params.get("LifeAmount"); // don't use it if no life to gain if (lifeAmount <= 0) { @@ -286,9 +286,9 @@ public class AbilityFactory_AlterLife { // final int amount = calculateAmount(af.getHostCard(), amountStr, sa); // prevent run-away activations - first time will always return true - boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); + final boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); if (tgt.canOnlyTgtOpponent()) { @@ -300,7 +300,7 @@ public class AbilityFactory_AlterLife { if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); } @@ -328,16 +328,16 @@ public class AbilityFactory_AlterLife { public static boolean gainLifeDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { if (!ComputerUtil.canPayCost(sa) && !mandatory) { // payment it's usually - // not mandatory + // not mandatory return false; } - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); // If the Target is gaining life, target self. // if the Target is modifying how much life is gained, this needs to be // handled better - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); if (tgt.canOnlyTgtOpponent()) { @@ -347,16 +347,16 @@ public class AbilityFactory_AlterLife { } } - Card source = sa.getSourceCard(); - String amountStr = params.get("LifeAmount"); + final Card source = sa.getSourceCard(); + final String amountStr = params.get("LifeAmount"); if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -375,20 +375,20 @@ public class AbilityFactory_AlterLife { * a {@link forge.card.spellability.SpellAbility} object. */ public static void gainLifeResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); + final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); - if (tgt != null && !params.containsKey("Defined")) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && !params.containsKey("Defined")) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { p.gainLife(lifeAmount, sa.getSourceCard()); } } @@ -408,8 +408,8 @@ public class AbilityFactory_AlterLife { * @return a {@link forge.card.spellability.SpellAbility} object. */ public static SpellAbility createAbilityLoseLife(final AbilityFactory abilityFactory) { - final SpellAbility abLoseLife = new Ability_Activated(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility abLoseLife = new Ability_Activated(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = 1129762905315395160L; private final AbilityFactory af = abilityFactory; @@ -418,7 +418,7 @@ public class AbilityFactory_AlterLife { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return loseLifeStackDescription(af, this); + return AbilityFactory_AlterLife.loseLifeStackDescription(this.af, this); } @Override @@ -428,17 +428,17 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return loseLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.loseLifeCanPlayAI(this.af, this); } @Override public void resolve() { - loseLifeResolve(af, this); + AbilityFactory_AlterLife.loseLifeResolve(this.af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return loseLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.loseLifeDoTriggerAI(this.af, this, mandatory); } }; return abLoseLife; @@ -454,8 +454,8 @@ public class AbilityFactory_AlterLife { * @return a {@link forge.card.spellability.SpellAbility} object. */ public static SpellAbility createSpellLoseLife(final AbilityFactory abilityFactory) { - final SpellAbility spLoseLife = new Spell(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility spLoseLife = new Spell(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = -2966932725306192437L; private final AbilityFactory af = abilityFactory; @@ -464,7 +464,7 @@ public class AbilityFactory_AlterLife { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return loseLifeStackDescription(af, this); + return AbilityFactory_AlterLife.loseLifeStackDescription(this.af, this); } @Override @@ -474,12 +474,12 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return loseLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.loseLifeCanPlayAI(this.af, this); } @Override public void resolve() { - loseLifeResolve(af, this); + AbilityFactory_AlterLife.loseLifeResolve(this.af, this); } }; return spLoseLife; @@ -504,7 +504,7 @@ public class AbilityFactory_AlterLife { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return loseLifeStackDescription(af, this); + return AbilityFactory_AlterLife.loseLifeStackDescription(this.af, this); } @Override @@ -514,12 +514,12 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return loseLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.loseLifeCanPlayAI(this.af, this); } @Override public void resolve() { - loseLifeResolve(af, this); + AbilityFactory_AlterLife.loseLifeResolve(this.af, this); } @Override @@ -529,7 +529,7 @@ public class AbilityFactory_AlterLife { @Override public boolean doTrigger(final boolean mandatory) { - return loseLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.loseLifeDoTriggerAI(this.af, this, mandatory); } }; return dbLoseLife; @@ -547,9 +547,9 @@ public class AbilityFactory_AlterLife { * @return a {@link java.lang.String} object. */ static String loseLifeStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -557,26 +557,26 @@ public class AbilityFactory_AlterLife { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player player : tgtPlayers) { + for (final Player player : tgtPlayers) { sb.append(player).append(" "); } sb.append("loses ").append(amount).append(" life."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -596,13 +596,13 @@ public class AbilityFactory_AlterLife { * @return a boolean. */ public static boolean loseLifeCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Random r = MyRandom.getRandom(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); boolean priority = false; - String amountStr = params.get("LifeAmount"); + final String amountStr = params.get("LifeAmount"); // TODO handle proper calculation of X values based on Cost and what // would be paid @@ -631,8 +631,7 @@ public class AbilityFactory_AlterLife { return false; } - if (amount >= AllZone.getHumanPlayer().getLife()) - { + if (amount >= AllZone.getHumanPlayer().getLife()) { priority = true; // killing the human should be done asap } @@ -647,9 +646,9 @@ public class AbilityFactory_AlterLife { } // prevent run-away activations - first time will always return true - boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); + final boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (sa.getTarget() != null) { tgt.resetTargets(); @@ -658,7 +657,7 @@ public class AbilityFactory_AlterLife { if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); } @@ -686,23 +685,23 @@ public class AbilityFactory_AlterLife { public static boolean loseLifeDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { if (!ComputerUtil.canPayCost(sa) && !mandatory) { // payment it's usually - // not mandatory + // not mandatory return false; } - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.addTarget(AllZone.getHumanPlayer()); } - Card source = sa.getSourceCard(); - String amountStr = params.get("LifeAmount"); + final Card source = sa.getSourceCard(); + final String amountStr = params.get("LifeAmount"); int amount = 0; if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); amount = xPay; } else { @@ -718,13 +717,13 @@ public class AbilityFactory_AlterLife { if (tgtPlayers.contains(AllZone.getComputerPlayer())) { // For cards like Foul Imp, ETB you lose life - if (amount + 3 > AllZone.getComputerPlayer().getLife()) { + if ((amount + 3) > AllZone.getComputerPlayer().getLife()) { return false; } } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -743,21 +742,21 @@ public class AbilityFactory_AlterLife { * a {@link forge.card.spellability.SpellAbility} object. */ public static void loseLifeResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); + final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { p.loseLife(lifeAmount, sa.getSourceCard()); } } @@ -788,22 +787,22 @@ public class AbilityFactory_AlterLife { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return poisonStackDescription(af, this); + return AbilityFactory_AlterLife.poisonStackDescription(af, this); } @Override public boolean canPlayAI() { - return poisonCanPlayAI(af, this); + return AbilityFactory_AlterLife.poisonCanPlayAI(af, this); } @Override public void resolve() { - poisonResolve(af, this); + AbilityFactory_AlterLife.poisonResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return poisonDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.poisonDoTriggerAI(af, this, mandatory); } }; @@ -825,7 +824,7 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return poisonStackDescription(af, this); + return AbilityFactory_AlterLife.poisonStackDescription(af, this); } @Override @@ -835,12 +834,12 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return poisonCanPlayAI(af, this); + return AbilityFactory_AlterLife.poisonCanPlayAI(af, this); } @Override public void resolve() { - poisonResolve(af, this); + AbilityFactory_AlterLife.poisonResolve(af, this); } }; @@ -862,7 +861,7 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return poisonStackDescription(af, this); + return AbilityFactory_AlterLife.poisonStackDescription(af, this); } @Override @@ -872,12 +871,12 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return poisonCanPlayAI(af, this); + return AbilityFactory_AlterLife.poisonCanPlayAI(af, this); } @Override public void resolve() { - poisonResolve(af, this); + AbilityFactory_AlterLife.poisonResolve(af, this); } @Override @@ -887,7 +886,7 @@ public class AbilityFactory_AlterLife { @Override public boolean doTrigger(final boolean mandatory) { - return poisonDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.poisonDoTriggerAI(af, this, mandatory); } }; @@ -910,26 +909,27 @@ public class AbilityFactory_AlterLife { private static boolean poisonDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { if (!ComputerUtil.canPayCost(sa) && !mandatory) { // payment it's usually - // not mandatory + // not mandatory return false; } - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.addTarget(AllZone.getHumanPlayer()); } else { - ArrayList players = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); - for (Player p : players) { - if (!mandatory && p.isComputer() && p.getPoisonCounters() > p.getOpponent().getPoisonCounters()) { + final ArrayList players = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), + params.get("Defined"), sa); + for (final Player p : players) { + if (!mandatory && p.isComputer() && (p.getPoisonCounters() > p.getOpponent().getPoisonCounters())) { return false; } } } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -949,19 +949,19 @@ public class AbilityFactory_AlterLife { */ private static void poisonResolve(final AbilityFactory af, final SpellAbility sa) { final HashMap params = af.getMapParams(); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Num"), sa); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Num"), sa); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { p.addPoisonCounters(amount); } } @@ -979,9 +979,9 @@ public class AbilityFactory_AlterLife { * @return a {@link java.lang.String} object. */ private static String poisonStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Num"), sa); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Num"), sa); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); @@ -989,14 +989,14 @@ public class AbilityFactory_AlterLife { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -1004,9 +1004,9 @@ public class AbilityFactory_AlterLife { } if (tgtPlayers.size() > 0) { - Iterator it = tgtPlayers.iterator(); + final Iterator it = tgtPlayers.iterator(); while (it.hasNext()) { - Player p = it.next(); + final Player p = it.next(); sb.append(p); if (it.hasNext()) { sb.append(", "); @@ -1027,7 +1027,7 @@ public class AbilityFactory_AlterLife { sb.append("."); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1047,9 +1047,9 @@ public class AbilityFactory_AlterLife { * @return a boolean. */ private static boolean poisonCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Cost abCost = sa.getPayCosts(); + final Cost abCost = sa.getPayCosts(); final Card source = af.getHostCard(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); // int humanPoison = AllZone.getHumanPlayer().getPoisonCounters(); // int humanLife = AllZone.getHumanPlayer().getLife(); // int aiPoison = AllZone.getComputerPlayer().getPoisonCounters(); @@ -1080,7 +1080,7 @@ public class AbilityFactory_AlterLife { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (sa.getTarget() != null) { tgt.resetTargets(); @@ -1109,22 +1109,22 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return setLifeStackDescription(af, this); + return AbilityFactory_AlterLife.setLifeStackDescription(af, this); } @Override public boolean canPlayAI() { - return setLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.setLifeCanPlayAI(af, this); } @Override public void resolve() { - setLifeResolve(af, this); + AbilityFactory_AlterLife.setLifeResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return setLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.setLifeDoTriggerAI(af, this, mandatory); } }; @@ -1146,21 +1146,22 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return setLifeStackDescription(af, this); + return AbilityFactory_AlterLife.setLifeStackDescription(af, this); } + @Override public boolean canPlayAI() { // if X depends on abCost, the AI needs to choose which card he // would sacrifice first // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return setLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.setLifeCanPlayAI(af, this); } @Override public void resolve() { - setLifeResolve(af, this); + AbilityFactory_AlterLife.setLifeResolve(af, this); } }; @@ -1182,7 +1183,7 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return setLifeStackDescription(af, this); + return AbilityFactory_AlterLife.setLifeStackDescription(af, this); } @Override @@ -1192,12 +1193,12 @@ public class AbilityFactory_AlterLife { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return setLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.setLifeCanPlayAI(af, this); } @Override public void resolve() { - setLifeResolve(af, this); + AbilityFactory_AlterLife.setLifeResolve(af, this); } @Override @@ -1207,7 +1208,7 @@ public class AbilityFactory_AlterLife { @Override public boolean doTrigger(final boolean mandatory) { - return setLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.setLifeDoTriggerAI(af, this, mandatory); } }; @@ -1226,9 +1227,9 @@ public class AbilityFactory_AlterLife { * @return a {@link java.lang.String} object. */ private static String setLifeStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" -"); @@ -1236,27 +1237,27 @@ public class AbilityFactory_AlterLife { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player player : tgtPlayers) { + for (final Player player : tgtPlayers) { sb.append(player).append(" "); } sb.append("life total becomes ").append(amount).append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1276,13 +1277,13 @@ public class AbilityFactory_AlterLife { * @return a boolean. */ private static boolean setLifeCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); // Ability_Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); - int life = AllZone.getComputerPlayer().getLife(); - int hlife = AllZone.getHumanPlayer().getLife(); - HashMap params = af.getMapParams(); - String amountStr = params.get("LifeAmount"); + final int life = AllZone.getComputerPlayer().getLife(); + final int hlife = AllZone.getHumanPlayer().getLife(); + final HashMap params = af.getMapParams(); + final String amountStr = params.get("LifeAmount"); if (!AllZone.getComputerPlayer().canGainLife()) { return false; @@ -1299,7 +1300,7 @@ public class AbilityFactory_AlterLife { // we shouldn't have to worry too much about PayX for SetLife if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); amount = xPay; } else { @@ -1307,9 +1308,9 @@ public class AbilityFactory_AlterLife { } // prevent run-away activations - first time will always return true - boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); + final boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); if (tgt.canOnlyTgtOpponent()) { @@ -1318,11 +1319,11 @@ public class AbilityFactory_AlterLife { // go up, don't play it. // possibly add a combo here for Magister Sphinx and Higedetsu's // (sp?) Second Rite - if (amount > hlife || !AllZone.getHumanPlayer().canLoseLife()) { + if ((amount > hlife) || !AllZone.getHumanPlayer().canLoseLife()) { return false; } } else { - if (amount > life && life <= 10) { + if ((amount > life) && (life <= 10)) { tgt.addTarget(AllZone.getComputerPlayer()); } else if (hlife > amount) { tgt.addTarget(AllZone.getHumanPlayer()); @@ -1337,7 +1338,7 @@ public class AbilityFactory_AlterLife { if (amount == 0) { return false; } else if (life > amount) { // will decrease computer's life - if (life < 5 || ((life - amount) > (hlife - amount))) { + if ((life < 5) || ((life - amount) > (hlife - amount))) { return false; } } @@ -1348,7 +1349,7 @@ public class AbilityFactory_AlterLife { } // if life is in danger, always activate - if (life < 3 && amount > life) { + if ((life < 3) && (amount > life)) { return true; } @@ -1369,11 +1370,11 @@ public class AbilityFactory_AlterLife { * @return a boolean. */ private static boolean setLifeDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - int life = AllZone.getComputerPlayer().getLife(); - int hlife = AllZone.getHumanPlayer().getLife(); - Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); - String amountStr = params.get("LifeAmount"); + final int life = AllZone.getComputerPlayer().getLife(); + final int hlife = AllZone.getHumanPlayer().getLife(); + final Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final String amountStr = params.get("LifeAmount"); // If there is a cost payment it's usually not mandatory if (!ComputerUtil.canPayCost(sa) && !mandatory) { @@ -1383,7 +1384,7 @@ public class AbilityFactory_AlterLife { int amount; if (amountStr.equals("X") && source.getSVar(amountStr).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); amount = xPay; } else { @@ -1399,13 +1400,13 @@ public class AbilityFactory_AlterLife { // If the Target is gaining life, target self. // if the Target is modifying how much life is gained, this needs to be // handled better - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); if (tgt.canOnlyTgtOpponent()) { tgt.addTarget(AllZone.getHumanPlayer()); } else { - if (amount > life && life <= 10) { + if ((amount > life) && (life <= 10)) { tgt.addTarget(AllZone.getComputerPlayer()); } else if (hlife > amount) { tgt.addTarget(AllZone.getHumanPlayer()); @@ -1418,7 +1419,7 @@ public class AbilityFactory_AlterLife { } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -1437,20 +1438,20 @@ public class AbilityFactory_AlterLife { * a {@link forge.card.spellability.SpellAbility} object. */ private static void setLifeResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); + final int lifeAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("LifeAmount"), sa); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); - if (tgt != null && !params.containsKey("Defined")) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && !params.containsKey("Defined")) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { p.setLife(lifeAmount, sa.getSourceCard()); } } @@ -1475,22 +1476,22 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return exchangeLifeStackDescription(af, this); + return AbilityFactory_AlterLife.exchangeLifeStackDescription(af, this); } @Override public boolean canPlayAI() { - return exchangeLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.exchangeLifeCanPlayAI(af, this); } @Override public void resolve() { - exchangeLifeResolve(af, this); + AbilityFactory_AlterLife.exchangeLifeResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return exchangeLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.exchangeLifeDoTriggerAI(af, this, mandatory); } }; @@ -1512,16 +1513,17 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return exchangeLifeStackDescription(af, this); + return AbilityFactory_AlterLife.exchangeLifeStackDescription(af, this); } + @Override public boolean canPlayAI() { - return exchangeLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.exchangeLifeCanPlayAI(af, this); } @Override public void resolve() { - exchangeLifeResolve(af, this); + AbilityFactory_AlterLife.exchangeLifeResolve(af, this); } }; @@ -1543,17 +1545,17 @@ public class AbilityFactory_AlterLife { @Override public String getStackDescription() { - return exchangeLifeStackDescription(af, this); + return AbilityFactory_AlterLife.exchangeLifeStackDescription(af, this); } @Override public boolean canPlayAI() { - return exchangeLifeCanPlayAI(af, this); + return AbilityFactory_AlterLife.exchangeLifeCanPlayAI(af, this); } @Override public void resolve() { - exchangeLifeResolve(af, this); + AbilityFactory_AlterLife.exchangeLifeResolve(af, this); } @Override @@ -1563,7 +1565,7 @@ public class AbilityFactory_AlterLife { @Override public boolean doTrigger(final boolean mandatory) { - return exchangeLifeDoTriggerAI(af, this, mandatory); + return AbilityFactory_AlterLife.exchangeLifeDoTriggerAI(af, this, mandatory); } }; @@ -1582,9 +1584,9 @@ public class AbilityFactory_AlterLife { * @return a {@link java.lang.String} object. */ private static String exchangeLifeStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - Player activatingPlayer = sa.getActivatingPlayer(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final Player activatingPlayer = sa.getActivatingPlayer(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -1594,7 +1596,7 @@ public class AbilityFactory_AlterLife { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -1610,7 +1612,7 @@ public class AbilityFactory_AlterLife { } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1630,9 +1632,9 @@ public class AbilityFactory_AlterLife { * @return a boolean. */ private static boolean exchangeLifeCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Random r = MyRandom.getRandom(); - int life = AllZone.getComputerPlayer().getLife(); - int hLife = AllZone.getHumanPlayer().getLife(); + final Random r = MyRandom.getRandom(); + final int life = AllZone.getComputerPlayer().getLife(); + final int hLife = AllZone.getHumanPlayer().getLife(); if (!AllZone.getComputerPlayer().canGainLife()) { return false; @@ -1646,7 +1648,7 @@ public class AbilityFactory_AlterLife { * one card that has a conditional (Psychic Transfer) that are not * currently handled */ - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); if (AllZone.getHumanPlayer().canTarget(sa)) { @@ -1659,7 +1661,7 @@ public class AbilityFactory_AlterLife { } // if life is in danger, always activate - if (life < 5 && hLife > life) { + if ((life < 5) && (hLife > life)) { return true; } @@ -1700,15 +1702,15 @@ public class AbilityFactory_AlterLife { * a {@link forge.card.spellability.SpellAbility} object. */ private static void exchangeLifeResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); Player p1; Player p2; ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); - if (tgt != null && !params.containsKey("Defined")) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && !params.containsKey("Defined")) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); @@ -1722,15 +1724,15 @@ public class AbilityFactory_AlterLife { p2 = tgtPlayers.get(1); } - int life1 = p1.getLife(); - int life2 = p2.getLife(); + final int life1 = p1.getLife(); + final int life2 = p2.getLife(); if ((life1 > life2) && p1.canLoseLife()) { - int diff = life1 - life2; + final int diff = life1 - life2; p1.loseLife(diff, source); p2.gainLife(diff, source); } else if ((life2 > life1) && p2.canLoseLife()) { - int diff = life2 - life1; + final int diff = life2 - life1; p2.loseLife(diff, source); p1.gainLife(diff, source); } else { diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java index c89bc0f9eb4..389b6dc4151 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Animate.java @@ -57,22 +57,22 @@ public final class AbilityFactory_Animate { @Override public boolean canPlayAI() { - return animateCanPlayAI(af, this); + return AbilityFactory_Animate.animateCanPlayAI(af, this); } @Override public void resolve() { - animateResolve(af, this); + AbilityFactory_Animate.animateResolve(af, this); } @Override public String getStackDescription() { - return animateStackDescription(af, this); + return AbilityFactory_Animate.animateStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return animateTriggerAI(af, this, mandatory); + return AbilityFactory_Animate.animateTriggerAI(af, this, mandatory); } }; return abAnimate; @@ -93,17 +93,17 @@ public final class AbilityFactory_Animate { @Override public boolean canPlayAI() { - return animateCanPlayAI(af, this); + return AbilityFactory_Animate.animateCanPlayAI(af, this); } @Override public void resolve() { - animateResolve(af, this); + AbilityFactory_Animate.animateResolve(af, this); } @Override public String getStackDescription() { - return animateStackDescription(af, this); + return AbilityFactory_Animate.animateStackDescription(af, this); } }; return spAnimate; @@ -124,22 +124,22 @@ public final class AbilityFactory_Animate { @Override public void resolve() { - animateResolve(af, this); + AbilityFactory_Animate.animateResolve(af, this); } @Override public boolean chkAIDrawback() { - return animatePlayDrawbackAI(af, this); + return AbilityFactory_Animate.animatePlayDrawbackAI(af, this); } @Override public String getStackDescription() { - return animateStackDescription(af, this); + return AbilityFactory_Animate.animateStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return animateTriggerAI(af, this, mandatory); + return AbilityFactory_Animate.animateTriggerAI(af, this, mandatory); } }; return dbAnimate; @@ -157,9 +157,9 @@ public final class AbilityFactory_Animate { * @return a {@link java.lang.String} object. */ private static String animateStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); - Map svars = host.getSVars(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); + final Map svars = host.getSVars(); int power = -1; if (params.containsKey("Power")) { @@ -170,7 +170,7 @@ public final class AbilityFactory_Animate { toughness = AbilityFactory.calculateAmount(host, params.get("Toughness"), sa); } - boolean permanent = params.containsKey("Permanent"); + final boolean permanent = params.containsKey("Permanent"); final ArrayList types = new ArrayList(); if (params.containsKey("Types")) { types.addAll(Arrays.asList(params.get("Types").split(","))); @@ -181,18 +181,18 @@ public final class AbilityFactory_Animate { } // allow SVar substitution for keywords for (int i = 0; i < keywords.size(); i++) { - String k = keywords.get(i); + final String k = keywords.get(i); if (svars.containsKey(k)) { keywords.add("\"" + k + "\""); keywords.remove(k); } } - ArrayList colors = new ArrayList(); + final ArrayList colors = new ArrayList(); if (params.containsKey("Colors")) { colors.addAll(Arrays.asList(params.get("Colors").split(","))); } - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -200,7 +200,7 @@ public final class AbilityFactory_Animate { sb.append(sa.getSourceCard().getName()).append(" - "); } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); ArrayList tgts; if (tgt != null) { tgts = tgt.getTargetCards(); @@ -208,7 +208,7 @@ public final class AbilityFactory_Animate { tgts = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); } - for (Card c : tgts) { + for (final Card c : tgts) { sb.append(c).append(" "); } sb.append("become"); @@ -267,7 +267,7 @@ public final class AbilityFactory_Animate { sb.append("."); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -288,9 +288,9 @@ public final class AbilityFactory_Animate { */ private static boolean animateCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Target tgt = af.getAbTgt(); - Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final Card source = sa.getSourceCard(); boolean useAbility = true; @@ -309,8 +309,8 @@ public final class AbilityFactory_Animate { // don't use instant speed animate abilities outside humans // Combat_Declare_Attackers_InstantAbility step - if ((!AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || AllZone.getCombat() - .getAttackers().length == 0) && AllZone.getPhase().isPlayerTurn(AllZone.getHumanPlayer())) { + if ((!AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || (AllZone.getCombat() + .getAttackers().length == 0)) && AllZone.getPhase().isPlayerTurn(AllZone.getHumanPlayer())) { return false; } @@ -320,10 +320,10 @@ public final class AbilityFactory_Animate { } if (null == tgt) { - ArrayList defined = AbilityFactory.getDefinedCards(source, params.get("Defined"), sa); + final ArrayList defined = AbilityFactory.getDefinedCards(source, params.get("Defined"), sa); boolean bFlag = false; - for (Card c : defined) { + for (final Card c : defined) { bFlag |= (!c.isCreature() && !c.isTapped() && !(c.getTurnInZone() == AllZone.getPhase().getTurn())); // for creatures that could be improved (like Figure of Destiny) @@ -336,7 +336,7 @@ public final class AbilityFactory_Animate { if (params.containsKey("Toughness")) { toughness = AbilityFactory.calculateAmount(source, params.get("Toughness"), sa); } - if (power + toughness > c.getCurrentPower() + c.getCurrentToughness()) { + if ((power + toughness) > (c.getCurrentPower() + c.getCurrentToughness())) { bFlag = true; } } @@ -349,10 +349,10 @@ public final class AbilityFactory_Animate { } } else { tgt.resetTargets(); - useAbility &= animateTgtAI(af, sa); + useAbility &= AbilityFactory_Animate.animateTgtAI(af, sa); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { useAbility &= subAb.chkAIDrawback(); } @@ -373,11 +373,11 @@ public final class AbilityFactory_Animate { */ private static boolean animatePlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // AI should only activate this during Human's turn - boolean chance = animateTgtAI(af, sa); + boolean chance = AbilityFactory_Animate.animateTgtAI(af, sa); // TODO - restrict the subAbility a bit - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -403,7 +403,7 @@ public final class AbilityFactory_Animate { return false; } - boolean chance = animateTgtAI(af, sa); + boolean chance = AbilityFactory_Animate.animateTgtAI(af, sa); // Improve AI for triggers. If source is a creature with: // When ETB, sacrifice a creature. Check to see if the AI has something @@ -412,7 +412,7 @@ public final class AbilityFactory_Animate { // Eventually, we can call the trigger of ETB abilities with // not mandatory as part of the checks to cast something - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -451,10 +451,10 @@ public final class AbilityFactory_Animate { * a {@link forge.card.spellability.SpellAbility} object. */ private static void animateResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); - Card host = af.getHostCard(); - Map svars = host.getSVars(); + final HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); + final Card host = af.getHostCard(); + final Map svars = host.getSVars(); long timest = -1; // AF specific params @@ -472,7 +472,7 @@ public final class AbilityFactory_Animate { final long timestamp = timest; - boolean permanent = params.containsKey("Permanent"); + final boolean permanent = params.containsKey("Permanent"); final ArrayList types = new ArrayList(); if (params.containsKey("Types")) { @@ -494,14 +494,14 @@ public final class AbilityFactory_Animate { if (params.containsKey("Keywords")) { keywords.addAll(Arrays.asList(params.get("Keywords").split(" & "))); } - + final ArrayList hiddenKeywords = new ArrayList(); if (params.containsKey("HiddenKeywords")) { hiddenKeywords.addAll(Arrays.asList(params.get("HiddenKeywords").split(" & "))); } // allow SVar substitution for keywords for (int i = 0; i < keywords.size(); i++) { - String k = keywords.get(i); + final String k = keywords.get(i); if (svars.containsKey(k)) { keywords.add(svars.get(k)); keywords.remove(k); @@ -511,7 +511,7 @@ public final class AbilityFactory_Animate { // colors to be added or changed to String tmpDesc = ""; if (params.containsKey("Colors")) { - String colors = params.get("Colors"); + final String colors = params.get("Colors"); if (colors.equals("ChosenColor")) { tmpDesc = CardUtil.getShortColorsString(host.getChosenColor()); @@ -522,30 +522,30 @@ public final class AbilityFactory_Animate { final String finalDesc = tmpDesc; // abilities to add to the animated being - ArrayList abilities = new ArrayList(); + final ArrayList abilities = new ArrayList(); if (params.containsKey("Abilities")) { abilities.addAll(Arrays.asList(params.get("Abilities").split(","))); } // triggers to add to the animated being - ArrayList triggers = new ArrayList(); + final ArrayList triggers = new ArrayList(); if (params.containsKey("Triggers")) { triggers.addAll(Arrays.asList(params.get("Triggers").split(","))); } // static abilities to add to the animated being - ArrayList stAbs = new ArrayList(); + final ArrayList stAbs = new ArrayList(); if (params.containsKey("staticAbilities")) { stAbs.addAll(Arrays.asList(params.get("staticAbilities").split(","))); } // sVars to add to the animated being - ArrayList sVars = new ArrayList(); + final ArrayList sVars = new ArrayList(); if (params.containsKey("sVars")) { sVars.addAll(Arrays.asList(params.get("sVars").split(","))); } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); ArrayList tgts; if (tgt != null) { tgts = tgt.getTargetCards(); @@ -555,16 +555,16 @@ public final class AbilityFactory_Animate { for (final Card c : tgts) { - final long colorTimestamp = doAnimate(c, af, power, toughness, types, removeTypes, finalDesc, keywords, - hiddenKeywords, timestamp); + final long colorTimestamp = AbilityFactory_Animate.doAnimate(c, af, power, toughness, types, removeTypes, + finalDesc, keywords, hiddenKeywords, timestamp); // give abilities final ArrayList addedAbilities = new ArrayList(); if (abilities.size() > 0) { - for (String s : abilities) { - AbilityFactory newAF = new AbilityFactory(); - String actualAbility = host.getSVar(s); - SpellAbility grantedAbility = newAF.getAbility(actualAbility, c); + for (final String s : abilities) { + final AbilityFactory newAF = new AbilityFactory(); + final String actualAbility = host.getSVar(s); + final SpellAbility grantedAbility = newAF.getAbility(actualAbility, c); addedAbilities.add(grantedAbility); c.addSpellAbility(grantedAbility); } @@ -573,7 +573,7 @@ public final class AbilityFactory_Animate { // remove abilities final ArrayList removedAbilities = new ArrayList(); if (params.containsKey("OverwriteAbilities") || params.containsKey("RemoveAllAbilities")) { - for (SpellAbility ab : c.getSpellAbilities()) { + for (final SpellAbility ab : c.getSpellAbilities()) { if (ab.isAbility()) { c.removeSpellAbility(ab); removedAbilities.add(ab); @@ -584,9 +584,9 @@ public final class AbilityFactory_Animate { // Grant triggers final ArrayList addedTriggers = new ArrayList(); if (triggers.size() > 0) { - for (String s : triggers) { - String actualTrigger = host.getSVar(s); - Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, c, false); + for (final String s : triggers) { + final String actualTrigger = host.getSVar(s); + final Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, c, false); addedTriggers.add(c.addTrigger(parsedTrigger)); } } @@ -594,8 +594,8 @@ public final class AbilityFactory_Animate { // suppress triggers from the animated card final ArrayList removedTriggers = new ArrayList(); if (params.containsKey("OverwriteTriggers") || params.containsKey("RemoveAllAbilities")) { - ArrayList triggersToRemove = c.getTriggers(); - for (Trigger trigger : triggersToRemove) { + final ArrayList triggersToRemove = c.getTriggers(); + for (final Trigger trigger : triggersToRemove) { trigger.setSuppressed(true); removedTriggers.add(trigger); } @@ -604,16 +604,16 @@ public final class AbilityFactory_Animate { // give static abilities (should only be used by cards to give // itself a static ability) if (stAbs.size() > 0) { - for (String s : stAbs) { - String actualAbility = host.getSVar(s); + for (final String s : stAbs) { + final String actualAbility = host.getSVar(s); c.addStaticAbility(actualAbility); } } // give sVars if (sVars.size() > 0) { - for (String s : sVars) { - String actualsVar = host.getSVar(s); + for (final String s : sVars) { + final String actualsVar = host.getSVar(s); c.setSVar(s, actualsVar); } } @@ -623,12 +623,13 @@ public final class AbilityFactory_Animate { final Command unanimate = new Command() { private static final long serialVersionUID = -5861759814760561373L; + @Override public void execute() { - doUnanimate(c, af, finalDesc, hiddenKeywords, addedAbilities, addedTriggers, colorTimestamp, givesStAbs, - removedAbilities, timestamp); + AbilityFactory_Animate.doUnanimate(c, af, finalDesc, hiddenKeywords, addedAbilities, addedTriggers, + colorTimestamp, givesStAbs, removedAbilities, timestamp); // give back suppressed triggers - for (Trigger t : removedTriggers) { + for (final Trigger t : removedTriggers) { t.setSuppressed(false); } } @@ -672,7 +673,7 @@ public final class AbilityFactory_Animate { private static long doAnimate(final Card c, final AbilityFactory af, final int power, final int toughness, final ArrayList types, final ArrayList removeTypes, final String colors, final ArrayList keywords, final ArrayList hiddenKeywords, final long timestamp) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); boolean removeSuperTypes = false; boolean removeCardTypes = false; @@ -710,7 +711,7 @@ public final class AbilityFactory_Animate { removeCreatureTypes = true; } - if (power != -1 || toughness != -1) { + if ((power != -1) || (toughness != -1)) { c.addNewPT(power, toughness, timestamp); } @@ -718,14 +719,14 @@ public final class AbilityFactory_Animate { c.addChangedCardTypes(types, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes, timestamp); } - + c.addChangedCardKeywords(keywords, null, params.containsKey("RemoveAllAbilities"), timestamp); - - for (String k : hiddenKeywords) { + + for (final String k : hiddenKeywords) { c.addExtrinsicKeyword(k); } - long colorTimestamp = c.addColor(colors, c, !params.containsKey("OverwriteColors"), true); + final long colorTimestamp = c.addColor(colors, c, !params.containsKey("OverwriteColors"), true); return colorTimestamp; } @@ -757,10 +758,10 @@ public final class AbilityFactory_Animate { final ArrayList addedKeywords, final ArrayList addedAbilities, final ArrayList addedTriggers, final long colorTimestamp, final boolean givesStAbs, final ArrayList removedAbilities, final long timestamp) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); c.removeNewPT(timestamp); - + c.removeChangedCardKeywords(timestamp); // remove all static abilities @@ -775,19 +776,19 @@ public final class AbilityFactory_Animate { c.removeColor(colorDesc, c, !params.containsKey("OverwriteColors"), colorTimestamp); - for (String k : addedKeywords) { + for (final String k : addedKeywords) { c.removeExtrinsicKeyword(k); } - for (SpellAbility sa : addedAbilities) { + for (final SpellAbility sa : addedAbilities) { c.removeSpellAbility(sa); } - for (SpellAbility sa : removedAbilities) { + for (final SpellAbility sa : removedAbilities) { c.addSpellAbility(sa); } - for (Trigger t : addedTriggers) { + for (final Trigger t : addedTriggers) { c.removeTrigger(t); } @@ -816,22 +817,22 @@ public final class AbilityFactory_Animate { @Override public boolean canPlayAI() { - return animateAllCanPlayAI(af, this); + return AbilityFactory_Animate.animateAllCanPlayAI(af, this); } @Override public void resolve() { - animateAllResolve(af, this); + AbilityFactory_Animate.animateAllResolve(af, this); } @Override public String getStackDescription() { - return animateAllStackDescription(af, this); + return AbilityFactory_Animate.animateAllStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return animateAllTriggerAI(af, this, mandatory); + return AbilityFactory_Animate.animateAllTriggerAI(af, this, mandatory); } }; return abAnimateAll; @@ -852,17 +853,17 @@ public final class AbilityFactory_Animate { @Override public boolean canPlayAI() { - return animateAllCanPlayAI(af, this); + return AbilityFactory_Animate.animateAllCanPlayAI(af, this); } @Override public void resolve() { - animateAllResolve(af, this); + AbilityFactory_Animate.animateAllResolve(af, this); } @Override public String getStackDescription() { - return animateAllStackDescription(af, this); + return AbilityFactory_Animate.animateAllStackDescription(af, this); } }; return spAnimateAll; @@ -883,22 +884,22 @@ public final class AbilityFactory_Animate { @Override public void resolve() { - animateAllResolve(af, this); + AbilityFactory_Animate.animateAllResolve(af, this); } @Override public boolean chkAIDrawback() { - return animateAllPlayDrawbackAI(af, this); + return AbilityFactory_Animate.animateAllPlayDrawbackAI(af, this); } @Override public String getStackDescription() { - return animateAllStackDescription(af, this); + return AbilityFactory_Animate.animateAllStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return animateAllTriggerAI(af, this, mandatory); + return AbilityFactory_Animate.animateAllTriggerAI(af, this, mandatory); } }; return dbAnimateAll; @@ -916,9 +917,9 @@ public final class AbilityFactory_Animate { * @return a {@link java.lang.String} object. */ private static String animateAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -935,7 +936,7 @@ public final class AbilityFactory_Animate { sb.append(desc); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -957,7 +958,7 @@ public final class AbilityFactory_Animate { private static boolean animateAllCanPlayAI(final AbilityFactory af, final SpellAbility sa) { boolean useAbility = false; - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { useAbility &= subAb.chkAIDrawback(); } @@ -979,7 +980,7 @@ public final class AbilityFactory_Animate { private static boolean animateAllPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { boolean chance = false; - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -1000,15 +1001,14 @@ public final class AbilityFactory_Animate { * a boolean. * @return a boolean. */ - private static boolean animateAllTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean animateAllTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { if (!ComputerUtil.canPayCost(sa)) { // If there is a cost payment return false; } boolean chance = false; - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -1027,9 +1027,9 @@ public final class AbilityFactory_Animate { * a {@link forge.card.spellability.SpellAbility} object. */ private static void animateAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); - Map svars = host.getSVars(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); + final Map svars = host.getSVars(); long timest = -1; // AF specific params @@ -1047,7 +1047,7 @@ public final class AbilityFactory_Animate { final long timestamp = timest; - boolean permanent = params.containsKey("Permanent"); + final boolean permanent = params.containsKey("Permanent"); final ArrayList types = new ArrayList(); if (params.containsKey("Types")) { @@ -1069,14 +1069,14 @@ public final class AbilityFactory_Animate { if (params.containsKey("Keywords")) { keywords.addAll(Arrays.asList(params.get("Keywords").split(" & "))); } - + final ArrayList hiddenKeywords = new ArrayList(); if (params.containsKey("HiddenKeywords")) { hiddenKeywords.addAll(Arrays.asList(params.get("HiddenKeywords").split(" & "))); } // allow SVar substitution for keywords for (int i = 0; i < keywords.size(); i++) { - String k = keywords.get(i); + final String k = keywords.get(i); if (svars.containsKey(k)) { keywords.add(svars.get(k)); keywords.remove(k); @@ -1086,7 +1086,7 @@ public final class AbilityFactory_Animate { // colors to be added or changed to String tmpDesc = ""; if (params.containsKey("Colors")) { - String colors = params.get("Colors"); + final String colors = params.get("Colors"); if (colors.equals("ChosenColor")) { tmpDesc = CardUtil.getShortColorsString(host.getChosenColor()); } else { @@ -1096,19 +1096,19 @@ public final class AbilityFactory_Animate { final String finalDesc = tmpDesc; // abilities to add to the animated being - ArrayList abilities = new ArrayList(); + final ArrayList abilities = new ArrayList(); if (params.containsKey("Abilities")) { abilities.addAll(Arrays.asList(params.get("Abilities").split(","))); } // triggers to add to the animated being - ArrayList triggers = new ArrayList(); + final ArrayList triggers = new ArrayList(); if (params.containsKey("Triggers")) { triggers.addAll(Arrays.asList(params.get("Triggers").split(","))); } // sVars to add to the animated being - ArrayList sVars = new ArrayList(); + final ArrayList sVars = new ArrayList(); if (params.containsKey("sVars")) { sVars.addAll(Arrays.asList(params.get("sVars").split(","))); } @@ -1122,7 +1122,7 @@ public final class AbilityFactory_Animate { CardList list; ArrayList tgtPlayers = null; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else if (params.containsKey("Defined")) { @@ -1130,7 +1130,7 @@ public final class AbilityFactory_Animate { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - if (tgtPlayers == null || tgtPlayers.isEmpty()) { + if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { list = AllZoneUtil.getCardsIn(Zone.Battlefield); } else { list = tgtPlayers.get(0).getCardsIn(Zone.Battlefield); @@ -1140,16 +1140,16 @@ public final class AbilityFactory_Animate { for (final Card c : list) { - final long colorTimestamp = doAnimate(c, af, power, toughness, types, removeTypes, finalDesc, keywords, - hiddenKeywords, timestamp); + final long colorTimestamp = AbilityFactory_Animate.doAnimate(c, af, power, toughness, types, removeTypes, + finalDesc, keywords, hiddenKeywords, timestamp); // give abilities final ArrayList addedAbilities = new ArrayList(); if (abilities.size() > 0) { - for (String s : abilities) { - AbilityFactory newAF = new AbilityFactory(); - String actualAbility = host.getSVar(s); - SpellAbility grantedAbility = newAF.getAbility(actualAbility, c); + for (final String s : abilities) { + final AbilityFactory newAF = new AbilityFactory(); + final String actualAbility = host.getSVar(s); + final SpellAbility grantedAbility = newAF.getAbility(actualAbility, c); addedAbilities.add(grantedAbility); c.addSpellAbility(grantedAbility); } @@ -1158,7 +1158,7 @@ public final class AbilityFactory_Animate { // remove abilities final ArrayList removedAbilities = new ArrayList(); if (params.containsKey("OverwriteAbilities")) { - for (SpellAbility ab : c.getSpellAbilities()) { + for (final SpellAbility ab : c.getSpellAbilities()) { if (ab.isAbility()) { c.removeSpellAbility(ab); removedAbilities.add(ab); @@ -1169,17 +1169,17 @@ public final class AbilityFactory_Animate { // Grant triggers final ArrayList addedTriggers = new ArrayList(); if (triggers.size() > 0) { - for (String s : triggers) { - String actualTrigger = host.getSVar(s); - Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, c, false); + for (final String s : triggers) { + final String actualTrigger = host.getSVar(s); + final Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, c, false); addedTriggers.add(c.addTrigger(parsedTrigger)); } } // give sVars if (sVars.size() > 0) { - for (String s : sVars) { - String actualsVar = host.getSVar(s); + for (final String s : sVars) { + final String actualsVar = host.getSVar(s); c.setSVar(s, actualsVar); } } @@ -1187,9 +1187,10 @@ public final class AbilityFactory_Animate { final Command unanimate = new Command() { private static final long serialVersionUID = -5861759814760561373L; + @Override public void execute() { - doUnanimate(c, af, finalDesc, hiddenKeywords, addedAbilities, addedTriggers, colorTimestamp, false, - removedAbilities, timestamp); + AbilityFactory_Animate.doUnanimate(c, af, finalDesc, hiddenKeywords, addedAbilities, addedTriggers, + colorTimestamp, false, removedAbilities, timestamp); } }; diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Attach.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Attach.java index faeb2860afc..a8eb8e0c296 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Attach.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Attach.java @@ -51,8 +51,8 @@ public class AbilityFactory_Attach { if (abilityFactory.getHostCard().isAura()) { // The 4th parameter is to resolve an issue with SetDescription in // default Spell_Permanent constructor - spAttach = new Spell_Permanent(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt(), false) { + spAttach = new Spell_Permanent(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt(), false) { private static final long serialVersionUID = 6631124959690157874L; private final AbilityFactory af = abilityFactory; @@ -61,20 +61,21 @@ public class AbilityFactory_Attach { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return attachStackDescription(af, this); + return AbilityFactory_Attach.attachStackDescription(this.af, this); } + @Override public boolean canPlayAI() { - return attachCanPlayAI(af, this); + return AbilityFactory_Attach.attachCanPlayAI(this.af, this); } @Override public void resolve() { // The Spell_Permanent (Auras) version of this AF needs to // move the card into play before Attaching - Card c = AllZone.getGameAction().moveToPlay(getSourceCard()); + final Card c = AllZone.getGameAction().moveToPlay(this.getSourceCard()); this.setSourceCard(c); - attachResolve(af, this); + AbilityFactory_Attach.attachResolve(this.af, this); } }; } else { @@ -91,16 +92,17 @@ public class AbilityFactory_Attach { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return attachStackDescription(af, this); + return AbilityFactory_Attach.attachStackDescription(this.af, this); } + @Override public boolean canPlayAI() { - return attachCanPlayAI(af, this); + return AbilityFactory_Attach.attachCanPlayAI(this.af, this); } @Override public void resolve() { - attachResolve(af, this); + AbilityFactory_Attach.attachResolve(this.af, this); } }; } @@ -143,7 +145,7 @@ public class AbilityFactory_Attach { * @return the string */ public static String attachStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -151,7 +153,7 @@ public class AbilityFactory_Attach { sb.append(" "); } - String conditionDesc = af.getMapParams().get("ConditionDescription"); + final String conditionDesc = af.getMapParams().get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } @@ -161,18 +163,18 @@ public class AbilityFactory_Attach { ArrayList targets; // Should never allow more than one Attachment per card - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { targets = tgt.getTargets(); } else { targets = AbilityFactory.getDefinedObjects(sa.getSourceCard(), af.getMapParams().get("Defined"), sa); } - for (Object o : targets) { + for (final Object o : targets) { sb.append(o).append(" "); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -199,9 +201,9 @@ public class AbilityFactory_Attach { final Map params, final Target tgt, final boolean mandatory) { Object o; if (tgt.canTgtPlayer()) { - o = attachToPlayerAIPreferences(af, sa, mandatory); + o = AbilityFactory_Attach.attachToPlayerAIPreferences(af, sa, mandatory); } else { - o = attachToCardAIPreferences(af, sa, params, mandatory); + o = AbilityFactory_Attach.attachToCardAIPreferences(af, sa, params, mandatory); } if (o == null) { @@ -227,8 +229,8 @@ public class AbilityFactory_Attach { */ public static Card attachToCardAIPreferences(final AbilityFactory af, final SpellAbility sa, final Map params, final boolean mandatory) { - Target tgt = sa.getTarget(); - Card attachSource = sa.getSourceCard(); + final Target tgt = sa.getTarget(); + final Card attachSource = sa.getSourceCard(); // TODO AttachSource is currently set for the Source of the Spell, but // at some point can support attaching a different card @@ -249,9 +251,9 @@ public class AbilityFactory_Attach { return null; } - Card c = attachGeneralAI(sa, list, mandatory, attachSource, params.get("AILogic")); + Card c = AbilityFactory_Attach.attachGeneralAI(sa, list, mandatory, attachSource, params.get("AILogic")); - if (c == null && mandatory) { + if ((c == null) && mandatory) { list.shuffle(); c = list.get(0); } @@ -276,29 +278,29 @@ public class AbilityFactory_Attach { */ public static Card attachGeneralAI(final SpellAbility sa, final CardList list, final boolean mandatory, final Card attachSource, final String logic) { - Player prefPlayer = "Pump".equals(logic) ? AllZone.getComputerPlayer() : AllZone.getHumanPlayer(); + final Player prefPlayer = "Pump".equals(logic) ? AllZone.getComputerPlayer() : AllZone.getHumanPlayer(); // Some ChangeType cards are beneficial, and PrefPlayer should be // changed to represent that - CardList prefList = list.getController(prefPlayer); + final CardList prefList = list.getController(prefPlayer); // If there are no preferred cards, and not mandatory bail out if (prefList.size() == 0) { - return chooseUnpreferred(mandatory, list); + return AbilityFactory_Attach.chooseUnpreferred(mandatory, list); } // Preferred list has at least one card in it to make to the actual // Logic Card c = null; if ("GainControl".equals(logic)) { - c = attachAIControlPreference(sa, prefList, mandatory, attachSource); + c = AbilityFactory_Attach.attachAIControlPreference(sa, prefList, mandatory, attachSource); } else if ("Curse".equals(logic)) { - c = attachAICursePreference(sa, prefList, mandatory, attachSource); + c = AbilityFactory_Attach.attachAICursePreference(sa, prefList, mandatory, attachSource); } else if ("Pump".equals(logic)) { - c = attachAIPumpPreference(sa, prefList, mandatory, attachSource); + c = AbilityFactory_Attach.attachAIPumpPreference(sa, prefList, mandatory, attachSource); } else if ("ChangeType".equals(logic)) { - c = attachAIChangeTypePreference(sa, prefList, mandatory, attachSource); + c = AbilityFactory_Attach.attachAIChangeTypePreference(sa, prefList, mandatory, attachSource); } else if ("KeepTapped".equals(logic)) { - c = attachAIKeepTappedPreference(sa, prefList, mandatory, attachSource); + c = AbilityFactory_Attach.attachAIKeepTappedPreference(sa, prefList, mandatory, attachSource); } return c; @@ -354,8 +356,8 @@ public class AbilityFactory_Attach { // TODO If Not Mandatory, make sure the card is "good enough" if (c.isCreature()) { - int eval = CardFactoryUtil.evaluateCreature(c); - if (eval < 160 && (eval < 130 || AllZone.getComputerPlayer().getLife() > 5)) { + final int eval = CardFactoryUtil.evaluateCreature(c); + if ((eval < 160) && ((eval < 130) || (AllZone.getComputerPlayer().getLife() > 5))) { return null; } } @@ -389,15 +391,15 @@ public class AbilityFactory_Attach { } - Card c = CardFactoryUtil.AI_getBest(list); + final Card c = CardFactoryUtil.AI_getBest(list); // If Mandatory (brought directly into play without casting) gotta // choose something if (c == null) { - return chooseLessPreferred(mandatory, list); + return AbilityFactory_Attach.chooseLessPreferred(mandatory, list); } - return acceptableChoice(c, mandatory); + return AbilityFactory_Attach.acceptableChoice(c, mandatory); } /** @@ -427,7 +429,7 @@ public class AbilityFactory_Attach { magnetList = list.getEquipMagnets(); } - if (magnetList != null && !magnetList.isEmpty()) { + if ((magnetList != null) && !magnetList.isEmpty()) { // Always choose something from the Magnet List. // Probably want to "weight" the list by amount of Enchantments and // choose the "lightest" @@ -444,17 +446,17 @@ public class AbilityFactory_Attach { int totToughness = 0; int totPower = 0; - ArrayList keywords = new ArrayList(); + final ArrayList keywords = new ArrayList(); boolean grantingAbilities = false; - for (StaticAbility stAbility : attachSource.getStaticAbilities()) { - Map params = stAbility.getMapParams(); + for (final StaticAbility stAbility : attachSource.getStaticAbilities()) { + final Map params = stAbility.getMapParams(); if (!params.get("Mode").equals("Continuous")) { continue; } - String affected = params.get("Affected"); + final String affected = params.get("Affected"); if (affected == null) { continue; @@ -465,9 +467,9 @@ public class AbilityFactory_Attach { grantingAbilities |= params.containsKey("AddAbility"); - String kws = params.get("AddKeyword"); + final String kws = params.get("AddKeyword"); if (kws != null) { - for (String kw : kws.split(" & ")) { + for (final String kw : kws.split(" & ")) { keywords.add(kw); } } @@ -486,11 +488,11 @@ public class AbilityFactory_Attach { }); } - else if (totToughness == 0 && totPower == 0) { + else if ((totToughness == 0) && (totPower == 0)) { // Just granting Keywords don't assign stacking Keywords - Iterator it = keywords.iterator(); + final Iterator it = keywords.iterator(); while (it.hasNext()) { - String key = it.next(); + final String key = it.next(); if (CardUtil.isStackingKeyword(key)) { it.remove(); } @@ -502,7 +504,7 @@ public class AbilityFactory_Attach { // keywords @Override public boolean addCard(final Card c) { - for (String kw : finalKWs) { + for (final String kw : finalKWs) { if (c.hasKeyword(kw)) { return false; } @@ -542,10 +544,10 @@ public class AbilityFactory_Attach { } if (c == null) { - return chooseLessPreferred(mandatory, list); + return AbilityFactory_Attach.chooseLessPreferred(mandatory, list); } - return acceptableChoice(c, mandatory); + return AbilityFactory_Attach.acceptableChoice(c, mandatory); } /** @@ -576,17 +578,17 @@ public class AbilityFactory_Attach { int totToughness = 0; // int totPower = 0; - ArrayList keywords = new ArrayList(); + final ArrayList keywords = new ArrayList(); // boolean grantingAbilities = false; - for (StaticAbility stAbility : attachSource.getStaticAbilities()) { - Map params = stAbility.getMapParams(); + for (final StaticAbility stAbility : attachSource.getStaticAbilities()) { + final Map params = stAbility.getMapParams(); if (!params.get("Mode").equals("Continuous")) { continue; } - String affected = params.get("Affected"); + final String affected = params.get("Affected"); if (affected == null) { continue; @@ -598,9 +600,9 @@ public class AbilityFactory_Attach { // grantingAbilities |= params.containsKey("AddAbility"); - String kws = params.get("AddKeyword"); + final String kws = params.get("AddKeyword"); if (kws != null) { - for (String kw : kws.split(" & ")) { + for (final String kw : kws.split(" & ")) { keywords.add(kw); } } @@ -614,7 +616,7 @@ public class AbilityFactory_Attach { prefList = list.filter(new CardListFilter() { @Override public boolean addCard(final Card c) { - if (!c.hasKeyword("Indestructible") && c.getLethalDamage() <= Math.abs(tgh)) { + if (!c.hasKeyword("Indestructible") && (c.getLethalDamage() <= Math.abs(tgh))) { return true; } @@ -623,7 +625,7 @@ public class AbilityFactory_Attach { }); } Card c = null; - if (prefList == null || prefList.size() == 0) { + if ((prefList == null) || (prefList.size() == 0)) { prefList = new CardList(list); } else { c = CardFactoryUtil.AI_getBest(prefList); @@ -649,10 +651,10 @@ public class AbilityFactory_Attach { c = CardFactoryUtil.AI_getBest(prefList); if (c == null) { - return chooseLessPreferred(mandatory, list); + return AbilityFactory_Attach.chooseLessPreferred(mandatory, list); } - return acceptableChoice(c, mandatory); + return AbilityFactory_Attach.acceptableChoice(c, mandatory); } /** @@ -674,17 +676,17 @@ public class AbilityFactory_Attach { String type = ""; - for (StaticAbility stAb : attachSource.getStaticAbilities()) { - HashMap params = stAb.getMapParams(); + for (final StaticAbility stAb : attachSource.getStaticAbilities()) { + final HashMap params = stAb.getMapParams(); if (params.get("Mode").equals("Continuous") && params.containsKey("AddType")) { type = params.get("AddType"); } } list = list.getNotType(type); // Filter out Basic Lands that have the - // same type as the changing type + // same type as the changing type - Card c = CardFactoryUtil.AI_getBest(list); + final Card c = CardFactoryUtil.AI_getBest(list); // TODO Port over some of the existing code, but rewrite most of it. // Ultimately, these spells need to be used to reduce mana base of a @@ -693,10 +695,10 @@ public class AbilityFactory_Attach { // cast on if (c == null) { - return chooseLessPreferred(mandatory, list); + return AbilityFactory_Attach.chooseLessPreferred(mandatory, list); } - return acceptableChoice(c, mandatory); + return AbilityFactory_Attach.acceptableChoice(c, mandatory); } /** @@ -715,7 +717,7 @@ public class AbilityFactory_Attach { public static Card attachAIKeepTappedPreference(final SpellAbility sa, final CardList list, final boolean mandatory, final Card attachSource) { // AI For Cards like Paralyzing Grasp and Glimmerdust Nap - CardList prefList = list.filter(new CardListFilter() { + final CardList prefList = list.filter(new CardListFilter() { @Override public boolean addCard(final Card c) { // Don't do Untapped Vigilance cards @@ -727,13 +729,13 @@ public class AbilityFactory_Attach { return true; } - ArrayList auras = c.getEnchantedBy(); - Iterator itr = auras.iterator(); + final ArrayList auras = c.getEnchantedBy(); + final Iterator itr = auras.iterator(); while (itr.hasNext()) { - Card aura = (Card) itr.next(); - AbilityFactory af = aura.getSpellPermanent().getAbilityFactory(); - if (af != null && af.getAPI().equals("Attach")) { - Map params = af.getMapParams(); + final Card aura = itr.next(); + final AbilityFactory af = aura.getSpellPermanent().getAbilityFactory(); + if ((af != null) && af.getAPI().equals("Attach")) { + final Map params = af.getMapParams(); if ("KeepTapped".equals(params.get("AILogic"))) { // Don't attach multiple KeepTapped Auras to one // card @@ -746,13 +748,13 @@ public class AbilityFactory_Attach { } }); - Card c = CardFactoryUtil.AI_getBest(prefList); + final Card c = CardFactoryUtil.AI_getBest(prefList); if (c == null) { - return chooseLessPreferred(mandatory, list); + return AbilityFactory_Attach.chooseLessPreferred(mandatory, list); } - return acceptableChoice(c, mandatory); + return AbilityFactory_Attach.acceptableChoice(c, mandatory); } /** @@ -768,7 +770,7 @@ public class AbilityFactory_Attach { */ public static Player attachToPlayerAIPreferences(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); Player p; if (tgt.canOnlyTgtOpponent()) { // If can Only Target Opponent, do so. @@ -812,9 +814,9 @@ public class AbilityFactory_Attach { * @return true, if successful */ public static boolean attachCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Random r = MyRandom.getRandom(); - Map params = af.getMapParams(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final Map params = af.getMapParams(); + final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); if (abCost != null) { @@ -826,10 +828,10 @@ public class AbilityFactory_Attach { boolean chance = r.nextFloat() <= .6667; // Attach spells always have a target - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); - if (!attachPreference(af, sa, params, tgt, false)) { + if (!AbilityFactory_Attach.attachPreference(af, sa, params, tgt, false)) { return false; } } @@ -837,7 +839,7 @@ public class AbilityFactory_Attach { if (abCost.getTotalMana().contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. (Endless Scream and Venarian // Gold) - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); if (xPay == 0) { return false; @@ -882,7 +884,7 @@ public class AbilityFactory_Attach { // Now are Valid Targets better than my targets? // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -899,12 +901,12 @@ public class AbilityFactory_Attach { * the sa */ public static void attachResolve(final AbilityFactory af, final SpellAbility sa) { - Map params = af.getMapParams(); - Card card = sa.getSourceCard(); + final Map params = af.getMapParams(); + final Card card = sa.getSourceCard(); ArrayList targets; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { targets = tgt.getTargets(); // TODO Remove invalid targets (although more likely this will just @@ -914,8 +916,8 @@ public class AbilityFactory_Attach { } // If Cast Targets will be checked on the Stack - for (Object o : targets) { - handleAttachment(card, o, af); + for (final Object o : targets) { + AbilityFactory_Attach.handleAttachment(card, o, af); } } @@ -932,15 +934,15 @@ public class AbilityFactory_Attach { public static void handleAttachment(final Card card, final Object o, final AbilityFactory af) { if (o instanceof Card) { - Card c = (Card) o; + final Card c = (Card) o; if (card.isAura()) { // Most Auras can enchant permanents, a few can Enchant cards in // graveyards // Spellweaver Volute, Dance of the Dead, Animate Dead // Although honestly, I'm not sure if the three of those could // handle being scripted - boolean gainControl = "GainControl".equals(af.getMapParams().get("AILogic")); - handleAura(card, c, gainControl); + final boolean gainControl = "GainControl".equals(af.getMapParams().get("AILogic")); + AbilityFactory_Attach.handleAura(card, c, gainControl); } else if (card.isEquipment()) { card.equipCard(c); // else if (card.isFortification()) @@ -950,9 +952,9 @@ public class AbilityFactory_Attach { // Currently, a few cards can enchant players // Psychic Possession, Paradox Haze, Wheel of Sun and Moon, New // Curse cards - Player p = (Player) o; + final Player p = (Player) o; if (card.isAura()) { - handleAura(card, p, false); + AbilityFactory_Attach.handleAura(card, p, false); } } } @@ -971,7 +973,7 @@ public class AbilityFactory_Attach { if (card.isEnchanting()) { // If this Card is already Enchanting something // Need to unenchant it, then clear out the commands - GameEntity oldEnchanted = card.getEnchanting(); + final GameEntity oldEnchanted = card.getEnchanting(); card.removeEnchanting(oldEnchanted); card.clearEnchantCommand(); card.clearUnEnchantCommand(); @@ -988,11 +990,12 @@ public class AbilityFactory_Attach { pl[0] = (Player) tgt; } - Command onEnchant = new Command() { + final Command onEnchant = new Command() { private static final long serialVersionUID = -2519887209491512000L; + @Override public void execute() { - Card crd = card.getEnchantingCard(); + final Card crd = card.getEnchantingCard(); if (crd == null) { return; } @@ -1004,11 +1007,12 @@ public class AbilityFactory_Attach { } // execute() }; // Command - Command onUnEnchant = new Command() { + final Command onUnEnchant = new Command() { private static final long serialVersionUID = 3426441132121179288L; + @Override public void execute() { - Card crd = card.getEnchantingCard(); + final Card crd = card.getEnchantingCard(); if (crd == null) { return; } @@ -1020,12 +1024,13 @@ public class AbilityFactory_Attach { } // execute() }; // Command - Command onChangesControl = new Command() { + final Command onChangesControl = new Command() { /** automatically generated serialVersionUID. */ private static final long serialVersionUID = -65903786170234039L; + @Override public void execute() { - Card crd = card.getEnchantingCard(); + final Card crd = card.getEnchantingCard(); if (crd == null) { return; } @@ -1041,11 +1046,12 @@ public class AbilityFactory_Attach { card.addChangeControllerCommand(onChangesControl); } - Command onLeavesPlay = new Command() { + final Command onLeavesPlay = new Command() { private static final long serialVersionUID = -639204333673364477L; + @Override public void execute() { - GameEntity entity = card.getEnchanting(); + final GameEntity entity = card.getEnchanting(); if (entity == null) { return; } @@ -1068,9 +1074,9 @@ public class AbilityFactory_Attach { public static SpellAbility getAttachSpellAbility(final Card source) { SpellAbility aura = null; AbilityFactory af = null; - for (SpellAbility sa : source.getSpells()) { + for (final SpellAbility sa : source.getSpells()) { af = sa.getAbilityFactory(); - if (af != null && af.getAPI().equals("Attach")) { + if ((af != null) && af.getAPI().equals("Attach")) { aura = sa; break; } @@ -1088,18 +1094,18 @@ public class AbilityFactory_Attach { public static boolean attachAuraOnIndirectEnterBattlefield(final Card source) { // When an Aura ETB without being cast you can choose a valid card to // attach it to - SpellAbility aura = getAttachSpellAbility(source); + final SpellAbility aura = AbilityFactory_Attach.getAttachSpellAbility(source); if (aura == null) { return false; } - AbilityFactory af = aura.getAbilityFactory(); - Target tgt = aura.getTarget(); + final AbilityFactory af = aura.getAbilityFactory(); + final Target tgt = aura.getTarget(); if (source.getController().isHuman()) { if (tgt.canTgtPlayer()) { - ArrayList players = new ArrayList(); + final ArrayList players = new ArrayList(); // TODO Once Player's are gaining Protection we need to add a // check here @@ -1109,7 +1115,7 @@ public class AbilityFactory_Attach { players.add(AllZone.getHumanPlayer()); } - Object o = GuiUtils.getChoice(source + " - Select a player to attach to.", players.toArray()); + final Object o = GuiUtils.getChoice(source + " - Select a player to attach to.", players.toArray()); if (o instanceof Player) { source.enchantEntity((Player) o); return true; @@ -1118,7 +1124,7 @@ public class AbilityFactory_Attach { CardList list = AllZoneUtil.getCardsIn(tgt.getZone()); list = list.getValidCards(tgt.getValidTgts(), aura.getActivatingPlayer(), source); - Object o = GuiUtils.getChoice(source + " - Select a card to attach to.", list.toArray()); + final Object o = GuiUtils.getChoice(source + " - Select a card to attach to.", list.toArray()); if (o instanceof Card) { source.enchantEntity((Card) o); return true; @@ -1127,7 +1133,7 @@ public class AbilityFactory_Attach { } else if (AbilityFactory_Attach.attachPreference(af, aura, af.getMapParams(), tgt, true)) { - Object o = aura.getTarget().getTargets().get(0); + final Object o = aura.getTarget().getTargets().get(0); if (o instanceof Card) { source.enchantEntity((Card) o); return true; diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeState.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeState.java index 7788212638c..4435f7142cd 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeState.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeState.java @@ -31,18 +31,18 @@ public class AbilityFactory_ChangeState { * @return the change state ability */ public static SpellAbility getChangeStateAbility(final AbilityFactory abilityFactory) { - SpellAbility ret = new Ability_Activated(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility ret = new Ability_Activated(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = -1083427558368639457L; @Override public String getStackDescription() { - return changeStateStackDescription(abilityFactory, this); + return AbilityFactory_ChangeState.changeStateStackDescription(abilityFactory, this); } @Override public void resolve() { - changeStateResolve(abilityFactory, this); + AbilityFactory_ChangeState.changeStateResolve(abilityFactory, this); } }; @@ -57,17 +57,17 @@ public class AbilityFactory_ChangeState { * @return the change state spell */ public static SpellAbility getChangeStateSpell(final AbilityFactory abilityFactory) { - SpellAbility ret = new Spell(abilityFactory.getHostCard()) { + final SpellAbility ret = new Spell(abilityFactory.getHostCard()) { private static final long serialVersionUID = -7506856902233086859L; @Override public String getStackDescription() { - return changeStateStackDescription(abilityFactory, this); + return AbilityFactory_ChangeState.changeStateStackDescription(abilityFactory, this); } @Override public void resolve() { - changeStateResolve(abilityFactory, this); + AbilityFactory_ChangeState.changeStateResolve(abilityFactory, this); } }; @@ -82,13 +82,13 @@ public class AbilityFactory_ChangeState { * @return the change state drawback */ public static SpellAbility getChangeStateDrawback(final AbilityFactory abilityFactory) { - Ability_Sub ret = new Ability_Sub(abilityFactory.getHostCard(), abilityFactory.getAbTgt()) { + final Ability_Sub ret = new Ability_Sub(abilityFactory.getHostCard(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = -3793247725721587468L; @Override public String getStackDescription() { - return changeStateStackDescription(abilityFactory, this); + return AbilityFactory_ChangeState.changeStateStackDescription(abilityFactory, this); } @Override @@ -114,7 +114,7 @@ public class AbilityFactory_ChangeState { @Override public void resolve() { - changeStateResolve(abilityFactory, this); + AbilityFactory_ChangeState.changeStateResolve(abilityFactory, this); } }; @@ -123,19 +123,19 @@ public class AbilityFactory_ChangeState { } private static String changeStateStackDescription(final AbilityFactory abilityFactory, final SpellAbility sa) { - Map params = abilityFactory.getMapParams(); + final Map params = abilityFactory.getMapParams(); - StringBuilder sb = new StringBuilder(); - Card host = abilityFactory.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = abilityFactory.getHostCard(); - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtCards; - Target tgt = abilityFactory.getAbTgt(); + final Target tgt = abilityFactory.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -154,9 +154,9 @@ public class AbilityFactory_ChangeState { sb.append("Transform "); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { - Card tgtC = it.next(); + final Card tgtC = it.next(); if (tgtC.isFaceDown()) { sb.append("Morph ").append("(").append(tgtC.getUniqueNumber()).append(")"); } else { @@ -169,7 +169,7 @@ public class AbilityFactory_ChangeState { } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -188,7 +188,7 @@ public class AbilityFactory_ChangeState { abilityFactory.getMapParams().get("Defined"), sa); } - for (Card tgt : tgtCards) { + for (final Card tgt : tgtCards) { if (abilityFactory.getAbTgt() != null) { if (!CardFactoryUtil.canTarget(abilityFactory.getHostCard(), tgt)) { continue; @@ -211,19 +211,19 @@ public class AbilityFactory_ChangeState { * @return the change state all ability */ public static SpellAbility getChangeStateAllAbility(final AbilityFactory abilityFactory) { - SpellAbility ret = new Ability_Activated(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility ret = new Ability_Activated(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = 7841029107610111992L; @Override public String getStackDescription() { - return changeStateAllStackDescription(abilityFactory, this); + return AbilityFactory_ChangeState.changeStateAllStackDescription(abilityFactory, this); } @Override public void resolve() { - changeStateAllResolve(abilityFactory, this); + AbilityFactory_ChangeState.changeStateAllResolve(abilityFactory, this); } }; @@ -239,18 +239,18 @@ public class AbilityFactory_ChangeState { * @return the change state all spell */ public static SpellAbility getChangeStateAllSpell(final AbilityFactory abilityFactory) { - SpellAbility ret = new Spell(abilityFactory.getHostCard()) { + final SpellAbility ret = new Spell(abilityFactory.getHostCard()) { private static final long serialVersionUID = 4217632586060204603L; @Override public String getStackDescription() { - return changeStateAllStackDescription(abilityFactory, this); + return AbilityFactory_ChangeState.changeStateAllStackDescription(abilityFactory, this); } @Override public void resolve() { - changeStateAllResolve(abilityFactory, this); + AbilityFactory_ChangeState.changeStateAllResolve(abilityFactory, this); } }; @@ -265,13 +265,13 @@ public class AbilityFactory_ChangeState { * @return the change state all drawback */ public static SpellAbility getChangeStateAllDrawback(final AbilityFactory abilityFactory) { - Ability_Sub ret = new Ability_Sub(abilityFactory.getHostCard(), abilityFactory.getAbTgt()) { + final Ability_Sub ret = new Ability_Sub(abilityFactory.getHostCard(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = 4047514893482113436L; @Override public String getStackDescription() { - return changeStateAllStackDescription(abilityFactory, this); + return AbilityFactory_ChangeState.changeStateAllStackDescription(abilityFactory, this); } @Override @@ -293,7 +293,7 @@ public class AbilityFactory_ChangeState { @Override public void resolve() { - changeStateAllResolve(abilityFactory, this); + AbilityFactory_ChangeState.changeStateAllResolve(abilityFactory, this); } }; @@ -302,11 +302,11 @@ public class AbilityFactory_ChangeState { } private static void changeStateAllResolve(final AbilityFactory abilityFactory, final SpellAbility sa) { - HashMap params = abilityFactory.getMapParams(); + final HashMap params = abilityFactory.getMapParams(); - Card card = sa.getSourceCard(); + final Card card = sa.getSourceCard(); - Target tgt = abilityFactory.getAbTgt(); + final Target tgt = abilityFactory.getAbTgt(); Player targetPlayer = null; if (tgt != null) { targetPlayer = tgt.getTargetPlayers().get(0); @@ -333,7 +333,7 @@ public class AbilityFactory_ChangeState { list = AbilityFactory.filterListByType(list, valid, sa); - boolean remChanged = params.containsKey("RememberChanged"); + final boolean remChanged = params.containsKey("RememberChanged"); if (remChanged) { card.clearRemembered(); } @@ -347,9 +347,9 @@ public class AbilityFactory_ChangeState { private static String changeStateAllStackDescription(final AbilityFactory abilityFactory, final SpellAbility sa) { - Card host = abilityFactory.getHostCard(); - Map params = abilityFactory.getMapParams(); - StringBuilder sb = new StringBuilder(); + final Card host = abilityFactory.getHostCard(); + final Map params = abilityFactory.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -365,7 +365,7 @@ public class AbilityFactory_ChangeState { sb.append(" permanents."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java index 365ae39af98..7ada4c742c8 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_ChangeZone.java @@ -64,26 +64,26 @@ public final class AbilityFactory_ChangeZone { @Override public boolean canPlayAI() { - return changeZoneCanPlayAI(af, this); + return AbilityFactory_ChangeZone.changeZoneCanPlayAI(af, this); } @Override public void resolve() { - changeZoneResolve(af, this); + AbilityFactory_ChangeZone.changeZoneResolve(af, this); } @Override public String getStackDescription() { - return changeZoneDescription(af, this); + return AbilityFactory_ChangeZone.changeZoneDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return changeZoneTriggerAI(af, this, mandatory); + return AbilityFactory_ChangeZone.changeZoneTriggerAI(af, this, mandatory); } }; - setMiscellaneous(af, abChangeZone); + AbilityFactory_ChangeZone.setMiscellaneous(af, abChangeZone); return abChangeZone; } @@ -102,20 +102,20 @@ public final class AbilityFactory_ChangeZone { @Override public boolean canPlayAI() { - return changeZoneCanPlayAI(af, this); + return AbilityFactory_ChangeZone.changeZoneCanPlayAI(af, this); } @Override public void resolve() { - changeZoneResolve(af, this); + AbilityFactory_ChangeZone.changeZoneResolve(af, this); } @Override public String getStackDescription() { - return changeZoneDescription(af, this); + return AbilityFactory_ChangeZone.changeZoneDescription(af, this); } }; - setMiscellaneous(af, spChangeZone); + AbilityFactory_ChangeZone.setMiscellaneous(af, spChangeZone); return spChangeZone; } @@ -134,25 +134,25 @@ public final class AbilityFactory_ChangeZone { @Override public void resolve() { - changeZoneResolve(af, this); + AbilityFactory_ChangeZone.changeZoneResolve(af, this); } @Override public boolean chkAIDrawback() { - return changeZonePlayDrawbackAI(af, this); + return AbilityFactory_ChangeZone.changeZonePlayDrawbackAI(af, this); } @Override public String getStackDescription() { - return changeZoneDescription(af, this); + return AbilityFactory_ChangeZone.changeZoneDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return changeZoneTriggerAI(af, this, mandatory); + return AbilityFactory_ChangeZone.changeZoneTriggerAI(af, this, mandatory); } }; - setMiscellaneous(af, dbChangeZone); + AbilityFactory_ChangeZone.setMiscellaneous(af, dbChangeZone); return dbChangeZone; } @@ -196,13 +196,13 @@ public final class AbilityFactory_ChangeZone { * a {@link forge.card.spellability.SpellAbility} object. */ private static void setMiscellaneous(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - List origin = Constant.Zone.listValueOf(params.get("Origin")); + final HashMap params = af.getMapParams(); + final List origin = Constant.Zone.listValueOf(params.get("Origin")); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); // Don't set the zone if it targets a player - if (tgt != null && !tgt.canTgtPlayer()) { + if ((tgt != null) && !tgt.canTgtPlayer()) { af.getAbTgt().setZone(origin); } @@ -225,13 +225,13 @@ public final class AbilityFactory_ChangeZone { * @return a boolean. */ private static boolean changeZoneCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - String origin = params.get("Origin"); + final HashMap params = af.getMapParams(); + final String origin = params.get("Origin"); - if (isHidden(origin, params.containsKey("Hidden"))) { - return changeHiddenOriginCanPlayAI(af, sa); - } else if (isKnown(origin)) { - return changeKnownOriginCanPlayAI(af, sa); + if (AbilityFactory_ChangeZone.isHidden(origin, params.containsKey("Hidden"))) { + return AbilityFactory_ChangeZone.changeHiddenOriginCanPlayAI(af, sa); + } else if (AbilityFactory_ChangeZone.isKnown(origin)) { + return AbilityFactory_ChangeZone.changeKnownOriginCanPlayAI(af, sa); } return false; @@ -249,13 +249,13 @@ public final class AbilityFactory_ChangeZone { * @return a boolean. */ private static boolean changeZonePlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - String origin = params.get("Origin"); + final HashMap params = af.getMapParams(); + final String origin = params.get("Origin"); - if (isHidden(origin, params.containsKey("Hidden"))) { - return changeHiddenOriginPlayDrawbackAI(af, sa); - } else if (isKnown(origin)) { - return changeKnownOriginPlayDrawbackAI(af, sa); + if (AbilityFactory_ChangeZone.isHidden(origin, params.containsKey("Hidden"))) { + return AbilityFactory_ChangeZone.changeHiddenOriginPlayDrawbackAI(af, sa); + } else if (AbilityFactory_ChangeZone.isKnown(origin)) { + return AbilityFactory_ChangeZone.changeKnownOriginPlayDrawbackAI(af, sa); } return false; @@ -274,15 +274,14 @@ public final class AbilityFactory_ChangeZone { * a boolean. * @return a boolean. */ - private static boolean changeZoneTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { - HashMap params = af.getMapParams(); - String origin = params.get("Origin"); + private static boolean changeZoneTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { + final HashMap params = af.getMapParams(); + final String origin = params.get("Origin"); - if (isHidden(origin, params.containsKey("Hidden"))) { - return changeHiddenTriggerAI(af, sa, mandatory); - } else if (isKnown(origin)) { - return changeKnownOriginTriggerAI(af, sa, mandatory); + if (AbilityFactory_ChangeZone.isHidden(origin, params.containsKey("Hidden"))) { + return AbilityFactory_ChangeZone.changeHiddenTriggerAI(af, sa, mandatory); + } else if (AbilityFactory_ChangeZone.isKnown(origin)) { + return AbilityFactory_ChangeZone.changeKnownOriginTriggerAI(af, sa, mandatory); } return false; @@ -300,13 +299,13 @@ public final class AbilityFactory_ChangeZone { * @return a {@link java.lang.String} object. */ private static String changeZoneDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - String origin = params.get("Origin"); + final HashMap params = af.getMapParams(); + final String origin = params.get("Origin"); - if (isHidden(origin, params.containsKey("Hidden"))) { - return changeHiddenOriginStackDescription(af, sa); - } else if (isKnown(origin)) { - return changeKnownOriginStackDescription(af, sa); + if (AbilityFactory_ChangeZone.isHidden(origin, params.containsKey("Hidden"))) { + return AbilityFactory_ChangeZone.changeHiddenOriginStackDescription(af, sa); + } else if (AbilityFactory_ChangeZone.isKnown(origin)) { + return AbilityFactory_ChangeZone.changeKnownOriginStackDescription(af, sa); } return ""; @@ -323,13 +322,13 @@ public final class AbilityFactory_ChangeZone { * a {@link forge.card.spellability.SpellAbility} object. */ private static void changeZoneResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - String origin = params.get("Origin"); + final HashMap params = af.getMapParams(); + final String origin = params.get("Origin"); - if (isHidden(origin, params.containsKey("Hidden")) && !params.containsKey("Ninjutsu")) { - changeHiddenOriginResolve(af, sa); - } else if (isKnown(origin) || params.containsKey("Ninjutsu")) { - changeKnownOriginResolve(af, sa); + if (AbilityFactory_ChangeZone.isHidden(origin, params.containsKey("Hidden")) && !params.containsKey("Ninjutsu")) { + AbilityFactory_ChangeZone.changeHiddenOriginResolve(af, sa); + } else if (AbilityFactory_ChangeZone.isKnown(origin) || params.containsKey("Ninjutsu")) { + AbilityFactory_ChangeZone.changeKnownOriginResolve(af, sa); } } @@ -358,11 +357,11 @@ public final class AbilityFactory_ChangeZone { private static boolean changeHiddenOriginCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // Fetching should occur fairly often as it helps cast more spells, and // have access to more mana - Cost abCost = af.getAbCost(); - Card source = af.getHostCard(); - HashMap params = af.getMapParams(); - Constant.Zone origin = Constant.Zone.smartValueOf(params.get("Origin")); - String destination = params.get("Destination"); + final Cost abCost = af.getAbCost(); + final Card source = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Constant.Zone origin = Constant.Zone.smartValueOf(params.get("Origin")); + final String destination = params.get("Destination"); if (abCost != null) { // AI currently disabled for these costs @@ -379,14 +378,14 @@ public final class AbilityFactory_ChangeZone { } } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); // prevent run-away activations - first time will always return true boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); ArrayList pDefined = new ArrayList(); pDefined.add(source.getController()); - Target tgt = af.getAbTgt(); - if (tgt != null && tgt.canTgtPlayer()) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && tgt.canTgtPlayer()) { if (af.isCurse()) { tgt.addTarget(AllZone.getHumanPlayer()); } else { @@ -401,19 +400,19 @@ public final class AbilityFactory_ChangeZone { } } - String type = params.get("ChangeType"); + final String type = params.get("ChangeType"); if (type != null) { if (type.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); } } - for (Player p : pDefined) { + for (final Player p : pDefined) { CardList list = p.getCardsIn(origin); - if (type != null && p.isComputer()) { + if ((type != null) && p.isComputer()) { // AI only "knows" about his information list = AbilityFactory.filterListByType(list, params.get("ChangeType"), sa); } @@ -431,7 +430,7 @@ public final class AbilityFactory_ChangeZone { chance &= (r.nextFloat() < .8); - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -453,8 +452,8 @@ public final class AbilityFactory_ChangeZone { private static boolean changeHiddenOriginPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // if putting cards from hand to library and parent is drawing cards // make sure this will actually do something: - Target tgt = af.getAbTgt(); - if (tgt != null && tgt.canTgtPlayer()) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && tgt.canTgtPlayer()) { if (af.isCurse()) { tgt.addTarget(AllZone.getHumanPlayer()); } else { @@ -478,28 +477,27 @@ public final class AbilityFactory_ChangeZone { * a boolean. * @return a boolean. */ - private static boolean changeHiddenTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean changeHiddenTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { // Fetching should occur fairly often as it helps cast more spells, and // have access to more mana - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); // String destination = params.get("Destination"); - List origin = Zone.listValueOf(params.get("Origin")); + final List origin = Zone.listValueOf(params.get("Origin")); // this works for hidden because the mana is paid first. - String type = params.get("ChangeType"); - if (type != null && type.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + final String type = params.get("ChangeType"); + if ((type != null) && type.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); } ArrayList pDefined; - Target tgt = af.getAbTgt(); - if (tgt != null && tgt.canTgtPlayer()) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && tgt.canTgtPlayer()) { if (af.isCurse()) { if (AllZone.getHumanPlayer().canTarget(sa)) { tgt.addTarget(AllZone.getHumanPlayer()); @@ -530,7 +528,7 @@ public final class AbilityFactory_ChangeZone { pDefined = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : pDefined) { + for (final Player p : pDefined) { CardList list = p.getCardsIn(origin); // Computer should "know" his deck @@ -543,7 +541,7 @@ public final class AbilityFactory_ChangeZone { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { return subAb.doTrigger(mandatory); } @@ -565,10 +563,10 @@ public final class AbilityFactory_ChangeZone { private static String changeHiddenOriginStackDescription(final AbilityFactory af, final SpellAbility sa) { // TODO build Stack Description will need expansion as more cards are // added - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); if (!(sa instanceof Ability_Sub)) { sb.append(host.getName()).append(" -"); @@ -579,12 +577,12 @@ public final class AbilityFactory_ChangeZone { if (params.containsKey("StackDescription")) { sb.append(params.get("StackDescription")); } else { - String origin = params.get("Origin"); - String destination = params.get("Destination"); + final String origin = params.get("Origin"); + final String destination = params.get("Destination"); - String type = params.containsKey("ChangeType") ? params.get("ChangeType") : "Card"; - int num = params.containsKey("ChangeNum") ? AbilityFactory.calculateAmount(host, params.get("ChangeNum"), - sa) : 1; + final String type = params.containsKey("ChangeType") ? params.get("ChangeType") : "Card"; + final int num = params.containsKey("ChangeNum") ? AbilityFactory.calculateAmount(host, + params.get("ChangeNum"), sa) : 1; if (origin.equals("Library") && params.containsKey("Defined")) { // for now, just handle the Exile from top of library case, but @@ -627,7 +625,7 @@ public final class AbilityFactory_ChangeZone { sb.append("onto the battlefield."); } if (destination.equals("Library")) { - int libraryPos = params.containsKey("LibraryPosition") ? Integer.parseInt(params + final int libraryPos = params.containsKey("LibraryPosition") ? Integer.parseInt(params .get("LibraryPosition")) : 0; if (libraryPos == 0) { @@ -648,7 +646,7 @@ public final class AbilityFactory_ChangeZone { } } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -667,7 +665,7 @@ public final class AbilityFactory_ChangeZone { * a {@link forge.card.spellability.SpellAbility} object. */ private static void changeHiddenOriginResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); ArrayList fetchers; @@ -684,23 +682,23 @@ public final class AbilityFactory_ChangeZone { Player chooser = null; if (params.containsKey("Chooser")) { - String choose = params.get("Chooser"); - if (choose.equals("Targeted") && af.getAbTgt().getTargetPlayers() != null) { + final String choose = params.get("Chooser"); + if (choose.equals("Targeted") && (af.getAbTgt().getTargetPlayers() != null)) { chooser = af.getAbTgt().getTargetPlayers().get(0); } else { chooser = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), choose, sa).get(0); } } - for (Player player : fetchers) { + for (final Player player : fetchers) { Player decider = chooser; if (decider == null) { decider = player; } if (decider.isComputer()) { - changeHiddenOriginResolveAI(af, sa, player); + AbilityFactory_ChangeZone.changeHiddenOriginResolveAI(af, sa, player); } else { - changeHiddenOriginResolveHuman(af, sa, player); + AbilityFactory_ChangeZone.changeHiddenOriginResolveHuman(af, sa, player); } } } @@ -718,13 +716,13 @@ public final class AbilityFactory_ChangeZone { * a {@link forge.Player} object. */ private static void changeHiddenOriginResolveHuman(final AbilityFactory af, final SpellAbility sa, Player player) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); - boolean defined = params.containsKey("Defined"); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); + final boolean defined = params.containsKey("Defined"); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { - ArrayList players = tgt.getTargetPlayers(); + final ArrayList players = tgt.getTargetPlayers(); player = players.get(0); if (players.contains(player) && !player.canTarget(sa)) { return; @@ -739,11 +737,11 @@ public final class AbilityFactory_ChangeZone { if (params.containsKey("OriginChoice")) { // Currently only used for Mishra, but may be used by other things // Improve how this message reacts for other cards - List alt = Zone.listValueOf(params.get("OriginAlternative")); + final List alt = Zone.listValueOf(params.get("OriginAlternative")); CardList altFetchList = player.getCardsIn(alt); altFetchList = AbilityFactory.filterListByType(altFetchList, params.get("ChangeType"), sa); - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append(params.get("AlternativeMessage")).append(" "); sb.append(altFetchList.size()).append(" cards match your searching type in Alternate Zones."); @@ -754,7 +752,7 @@ public final class AbilityFactory_ChangeZone { if (params.containsKey("DestinationAlternative")) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append(params.get("AlternativeDestinationMessage")); if (!GameActionUtil.showYesNoDialog(card, sb.toString())) { @@ -789,20 +787,20 @@ public final class AbilityFactory_ChangeZone { fetchList = AbilityFactory.filterListByType(fetchList, params.get("ChangeType"), sa); } - PlayerZone destZone = player.getZone(destination); + final PlayerZone destZone = player.getZone(destination); - int changeNum = params.containsKey("ChangeNum") ? AbilityFactory.calculateAmount(card, params.get("ChangeNum"), - sa) : 1; + final int changeNum = params.containsKey("ChangeNum") ? AbilityFactory.calculateAmount(card, + params.get("ChangeNum"), sa) : 1; - String remember = params.get("RememberChanged"); - String imprint = params.get("Imprint"); + final String remember = params.get("RememberChanged"); + final String imprint = params.get("Imprint"); if (params.containsKey("Unimprint")) { card.clearImprinted(); } for (int i = 0; i < changeNum; i++) { - if (fetchList.size() == 0 || destination == null) { + if ((fetchList.size() == 0) || (destination == null)) { break; } @@ -818,14 +816,14 @@ public final class AbilityFactory_ChangeZone { } if (o != null) { - Card c = (Card) o; + final Card c = (Card) o; fetchList.remove(c); Card movedCard = null; if (destination.equals(Zone.Library)) { // do not shuffle the library once we have placed a fetched // card on top. - if (origin.contains(Zone.Library) && i < 1) { + if (origin.contains(Zone.Library) && (i < 1)) { player.shuffle(); } movedCard = AllZone.getGameAction().moveToLibrary(c, libraryPos); @@ -854,11 +852,11 @@ public final class AbilityFactory_ChangeZone { } } else { - StringBuilder sb = new StringBuilder(); - int num = Math.min(fetchList.size(), changeNum - i); + final StringBuilder sb = new StringBuilder(); + final int num = Math.min(fetchList.size(), changeNum - i); sb.append("Cancel Search? Up to ").append(num).append(" more cards can change zones."); - if (i + 1 == changeNum || GameActionUtil.showYesNoDialog(card, sb.toString())) { + if (((i + 1) == changeNum) || GameActionUtil.showYesNoDialog(card, sb.toString())) { break; } } @@ -883,10 +881,10 @@ public final class AbilityFactory_ChangeZone { * a {@link forge.Player} object. */ private static void changeHiddenOriginResolveAI(final AbilityFactory af, final SpellAbility sa, Player player) { - HashMap params = af.getMapParams(); - Target tgt = af.getAbTgt(); - Card card = af.getHostCard(); - boolean defined = params.containsKey("Defined"); + final HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final Card card = af.getHostCard(); + final boolean defined = params.containsKey("Defined"); if (tgt != null) { if (!tgt.getTargetPlayers().isEmpty()) { @@ -897,7 +895,7 @@ public final class AbilityFactory_ChangeZone { } } - List origin = Zone.listValueOf(params.get("Origin")); + final List origin = Zone.listValueOf(params.get("Origin")); String type = params.get("ChangeType"); if (type == null) { @@ -912,24 +910,24 @@ public final class AbilityFactory_ChangeZone { fetchList = AbilityFactory.filterListByType(fetchList, type, sa); } - Zone destination = Zone.smartValueOf(params.get("Destination")); + final Zone destination = Zone.smartValueOf(params.get("Destination")); - PlayerZone destZone = player.getZone(destination); + final PlayerZone destZone = player.getZone(destination); - CardList fetched = new CardList(); + final CardList fetched = new CardList(); - int changeNum = params.containsKey("ChangeNum") ? AbilityFactory.calculateAmount(card, params.get("ChangeNum"), - sa) : 1; + final int changeNum = params.containsKey("ChangeNum") ? AbilityFactory.calculateAmount(card, + params.get("ChangeNum"), sa) : 1; - String remember = params.get("RememberChanged"); - String imprint = params.get("Imprint"); + final String remember = params.get("RememberChanged"); + final String imprint = params.get("Imprint"); if (params.containsKey("Unimprint")) { card.clearImprinted(); } for (int i = 0; i < changeNum; i++) { - if (fetchList.size() == 0 || destination == null) { + if ((fetchList.size() == 0) || (destination == null)) { break; } @@ -940,9 +938,9 @@ public final class AbilityFactory_ChangeZone { } else if (defined) { c = fetchList.get(i); } else if (type.contains("Basic")) { - c = basicManaFixing(fetchList); - } else if (areAllBasics(type)) { - c = basicManaFixing(fetchList, type); + c = AbilityFactory_ChangeZone.basicManaFixing(fetchList); + } else if (AbilityFactory_ChangeZone.areAllBasics(type)) { + c = AbilityFactory_ChangeZone.basicManaFixing(fetchList, type); } else if (fetchList.getNotType("Creature").size() == 0) { c = CardFactoryUtil.AI_getBestCreature(fetchList); // if only // creatures @@ -976,11 +974,11 @@ public final class AbilityFactory_ChangeZone { player.shuffle(); } - for (Card c : fetched) { + for (final Card c : fetched) { Card newCard = null; if (Zone.Library.equals(destination)) { - int libraryPos = params.containsKey("LibraryPosition") ? Integer - .parseInt(params.get("LibraryPosition")) : 0; + final int libraryPos = params.containsKey("LibraryPosition") ? Integer.parseInt(params + .get("LibraryPosition")) : 0; AllZone.getGameAction().moveToLibrary(c, libraryPos); } else if (Zone.Battlefield.equals(destination)) { if (params.containsKey("Tapped")) { @@ -991,7 +989,7 @@ public final class AbilityFactory_ChangeZone { } // Auras without Candidates stay in their current location if (c.isAura()) { - SpellAbility saAura = AbilityFactory_Attach.getAttachSpellAbility(c); + final SpellAbility saAura = AbilityFactory_Attach.getAttachSpellAbility(c); if (!saAura.getTarget().hasCandidates(false)) { continue; } @@ -1015,7 +1013,7 @@ public final class AbilityFactory_ChangeZone { } if (!Zone.Battlefield.equals(destination) && !"Card".equals(type) && !defined) { - String picked = af.getHostCard().getName() + " - Computer picked:"; + final String picked = af.getHostCard().getName() + " - Computer picked:"; if (fetched.size() > 0) { GuiUtils.getChoice(picked, fetched.toArray()); } else { @@ -1036,7 +1034,7 @@ public final class AbilityFactory_ChangeZone { */ private static Card basicManaFixing(final CardList list) { // Search for a // Basic Land - return basicManaFixing(list, "Plains, Island, Swamp, Mountain, Forest"); + return AbilityFactory_ChangeZone.basicManaFixing(list, "Plains, Island, Swamp, Mountain, Forest"); } /** @@ -1055,16 +1053,16 @@ public final class AbilityFactory_ChangeZone { // basic // land // types - CardList combined = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); + final CardList combined = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); combined.addAll(AllZone.getComputerPlayer().getCardsIn(Zone.Hand)); - String[] names = type.split(","); - ArrayList basics = new ArrayList(); + final String[] names = type.split(","); + final ArrayList basics = new ArrayList(); // what types can I go get? - for (int i = 0; i < names.length; i++) { - if (list.getType(names[i]).size() != 0) { - basics.add(names[i]); + for (final String name : names) { + if (list.getType(name).size() != 0) { + basics.add(name); } } @@ -1074,8 +1072,8 @@ public final class AbilityFactory_ChangeZone { String minType = null; for (int i = 0; i < basics.size(); i++) { - String b = basics.get(i); - int num = combined.getType(names[i]).size(); + final String b = basics.get(i); + final int num = combined.getType(names[i]).size(); if (num < minSize) { minType = b; minSize = num; @@ -1099,11 +1097,11 @@ public final class AbilityFactory_ChangeZone { * @return a boolean. */ private static boolean areAllBasics(final String types) { - String[] split = types.split(","); - String[] names = { "Plains", "Island", "Swamp", "Mountain", "Forest" }; - boolean[] bBasic = new boolean[split.length]; + final String[] split = types.split(","); + final String[] names = { "Plains", "Island", "Swamp", "Mountain", "Forest" }; + final boolean[] bBasic = new boolean[split.length]; - for (String s : names) { + for (final String s : names) { for (int i = 0; i < split.length; i++) { bBasic[i] |= s.equals(split[i]); } @@ -1138,16 +1136,16 @@ public final class AbilityFactory_ChangeZone { */ private static boolean changeKnownOriginCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // Retrieve either this card, or target Cards in Graveyard - Cost abCost = af.getAbCost(); + final Cost abCost = af.getAbCost(); final Card source = af.getHostCard(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Zone origin = Zone.smartValueOf(params.get("Origin")); - Zone destination = Zone.smartValueOf(params.get("Destination")); + final Zone origin = Zone.smartValueOf(params.get("Origin")); + final Zone destination = Zone.smartValueOf(params.get("Destination")); float pct = origin.equals(Zone.Battlefield) ? .8f : .667f; - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); if (abCost != null) { // AI currently disabled for these costs @@ -1171,16 +1169,17 @@ public final class AbilityFactory_ChangeZone { // prevent run-away activations - first time will always return true boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getRestrictions().getNumberTurnActivations()); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { - if (!changeKnownPreferredTarget(af, sa, false)) { + if (!AbilityFactory_ChangeZone.changeKnownPreferredTarget(af, sa, false)) { return false; } } else { // non-targeted retrieval - CardList retrieval = knownDetermineDefined(sa, params.get("Defined"), origin); + final CardList retrieval = AbilityFactory_ChangeZone.knownDetermineDefined(sa, params.get("Defined"), + origin); - if (retrieval == null || retrieval.isEmpty()) { + if ((retrieval == null) || retrieval.isEmpty()) { return false; } @@ -1197,22 +1196,21 @@ public final class AbilityFactory_ChangeZone { return false; } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); String subAPI = ""; if (abSub != null) { subAPI = abSub.getAbilityFactory().getAPI(); } // only use blink or bounce effects - if (!(destination.equals(Zone.Exile) && (subAPI.equals("DelayedTrigger") - || subAPI.equals("ChangeZone"))) + if (!(destination.equals(Zone.Exile) && (subAPI.equals("DelayedTrigger") || subAPI.equals("ChangeZone"))) && !destination.equals(Zone.Hand)) { return false; } - ArrayList objects = AbilityFactory.predictThreatenedObjects(af); + final ArrayList objects = AbilityFactory.predictThreatenedObjects(af); - for (Card c : retrieval) { + for (final Card c : retrieval) { if (objects.contains(c)) { pct = 1; } @@ -1223,7 +1221,7 @@ public final class AbilityFactory_ChangeZone { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -1247,7 +1245,7 @@ public final class AbilityFactory_ChangeZone { return true; } - return changeKnownPreferredTarget(af, sa, false); + return AbilityFactory_ChangeZone.changeKnownPreferredTarget(af, sa, false); } /** @@ -1265,13 +1263,13 @@ public final class AbilityFactory_ChangeZone { */ private static boolean changeKnownPreferredTarget(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); - Zone origin = Zone.smartValueOf(params.get("Origin")); - Zone destination = Zone.smartValueOf(params.get("Destination")); - Target tgt = af.getAbTgt(); + final HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); + final Zone origin = Zone.smartValueOf(params.get("Origin")); + final Zone destination = Zone.smartValueOf(params.get("Destination")); + final Target tgt = af.getAbTgt(); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); String subAPI = ""; String subAffected = ""; HashMap subParams = null; @@ -1301,19 +1299,18 @@ public final class AbilityFactory_ChangeZone { CardList aiPermanents = list.getController(AllZone.getComputerPlayer()); // if it's blink or bounce, try to save my about to die stuff - if ((destination.equals(Zone.Hand) || (destination.equals(Zone.Exile) - && (subAPI.equals("DelayedTrigger") || (subAPI + if ((destination.equals(Zone.Hand) || (destination.equals(Zone.Exile) && (subAPI.equals("DelayedTrigger") || (subAPI .equals("ChangeZone") && subAffected.equals("Remembered"))))) - && tgt.getMinTargets(sa.getSourceCard(), sa) <= 1) { + && (tgt.getMinTargets(sa.getSourceCard(), sa) <= 1)) { // check stack for something on the stack that will kill // anything i control if (AllZone.getStack().size() > 0) { - ArrayList objects = AbilityFactory.predictThreatenedObjects(af); + final ArrayList objects = AbilityFactory.predictThreatenedObjects(af); - CardList threatenedTargets = new CardList(); + final CardList threatenedTargets = new CardList(); - for (Card c : aiPermanents) { + for (final Card c : aiPermanents) { if (objects.contains(c)) { threatenedTargets.add(c); } @@ -1327,26 +1324,26 @@ public final class AbilityFactory_ChangeZone { } // Save combatants else if (AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { - CardList combatants = aiPermanents.getType("Creature"); + final CardList combatants = aiPermanents.getType("Creature"); CardListUtil.sortByEvaluateCreature(combatants); - for (Card c : combatants) { - if (c.getShield() == 0 && CombatUtil.combatantWouldBeDestroyed(c)) { + for (final Card c : combatants) { + if ((c.getShield() == 0) && CombatUtil.combatantWouldBeDestroyed(c)) { tgt.addTarget(c); return true; } } } // Blink permanents with ETB triggers - else if (sa.isAbility() && sa.getPayCosts() != null && AbilityFactory.playReusable(sa)) { + else if (sa.isAbility() && (sa.getPayCosts() != null) && AbilityFactory.playReusable(sa)) { aiPermanents = aiPermanents.filter(new CardListFilter() { @Override public boolean addCard(final Card c) { if (c.getNumberOfCounters() > 0) { return false; // don't blink something with } - // counters TODO check good and - // bad counters + // counters TODO check good and + // bad counters return Spell_Permanent.checkETBEffects(c, null, null); // checks // only // if @@ -1374,8 +1371,7 @@ public final class AbilityFactory_ChangeZone { // blink human targets only during combat if (origin.equals(Zone.Battlefield) && destination.equals(Zone.Exile) - && (subAPI.equals("DelayedTrigger") || (subAPI.equals("ChangeZone") - && subAffected.equals("Remembered"))) + && (subAPI.equals("DelayedTrigger") || (subAPI.equals("ChangeZone") && subAffected.equals("Remembered"))) && !(AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY) || sa.isAbility())) { return false; } @@ -1394,7 +1390,7 @@ public final class AbilityFactory_ChangeZone { return false; } - if (!mandatory && list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if (!mandatory && (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa))) { return false; } @@ -1404,7 +1400,7 @@ public final class AbilityFactory_ChangeZone { Card choice = null; if (!list.isEmpty()) { - Card mostExpensive = CardFactoryUtil.AI_getMostExpensivePermanent(list, af.getHostCard(), false); + final Card mostExpensive = CardFactoryUtil.AI_getMostExpensivePermanent(list, af.getHostCard(), false); if (destination.equals(Zone.Battlefield) || origin.equals(Zone.Battlefield)) { if (mostExpensive.isCreature()) { // if a creature is most expensive take the best one @@ -1425,7 +1421,7 @@ public final class AbilityFactory_ChangeZone { } } if (choice == null) { // can't find anything left - if (tgt.getNumTargeted() == 0 || tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if ((tgt.getNumTargeted() == 0) || (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa))) { if (!mandatory) { tgt.resetTargets(); } @@ -1462,11 +1458,11 @@ public final class AbilityFactory_ChangeZone { return false; } - HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); - Zone origin = Zone.smartValueOf(params.get("Origin")); - Zone destination = Zone.smartValueOf(params.get("Destination")); - Target tgt = af.getAbTgt(); + final HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); + final Zone origin = Zone.smartValueOf(params.get("Origin")); + final Zone destination = Zone.smartValueOf(params.get("Destination")); + final Target tgt = af.getAbTgt(); CardList list = AllZoneUtil.getCardsIn(origin); list = list.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), source); @@ -1485,7 +1481,7 @@ public final class AbilityFactory_ChangeZone { } - for (Card c : tgt.getTargetCards()) { + for (final Card c : tgt.getTargetCards()) { list.remove(c); } @@ -1513,7 +1509,7 @@ public final class AbilityFactory_ChangeZone { } } if (choice == null) { // can't find anything left - if (tgt.getNumTargeted() == 0 || tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if ((tgt.getNumTargeted() == 0) || (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa))) { tgt.resetTargets(); return false; } else { @@ -1551,13 +1547,13 @@ public final class AbilityFactory_ChangeZone { if (sa.getTarget() == null) { // Just in case of Defined cases // do nothing - } else if (changeKnownPreferredTarget(af, sa, mandatory)) { + } else if (AbilityFactory_ChangeZone.changeKnownPreferredTarget(af, sa, mandatory)) { // do nothing - } else if (!changeKnownUnpreferredTarget(af, sa, mandatory)) { + } else if (!AbilityFactory_ChangeZone.changeKnownUnpreferredTarget(af, sa, mandatory)) { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { return subAb.doTrigger(mandatory); } @@ -1577,10 +1573,10 @@ public final class AbilityFactory_ChangeZone { * @return a {@link java.lang.String} object. */ private static String changeKnownOriginStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); if (!(sa instanceof Ability_Sub)) { sb.append(host.getName()).append(" -"); @@ -1588,10 +1584,10 @@ public final class AbilityFactory_ChangeZone { sb.append(" "); - Zone destination = Zone.smartValueOf(params.get("Destination")); - Zone origin = Zone.smartValueOf(params.get("Origin")); + final Zone destination = Zone.smartValueOf(params.get("Destination")); + final Zone origin = Zone.smartValueOf(params.get("Origin")); - StringBuilder sbTargets = new StringBuilder(); + final StringBuilder sbTargets = new StringBuilder(); ArrayList tgts; if (af.getAbTgt() != null) { @@ -1599,20 +1595,20 @@ public final class AbilityFactory_ChangeZone { } else { // otherwise add self to list and go from there tgts = new ArrayList(); - for (Card c : knownDetermineDefined(sa, params.get("Defined"), origin)) { + for (final Card c : AbilityFactory_ChangeZone.knownDetermineDefined(sa, params.get("Defined"), origin)) { tgts.add(c); } } - for (Card c : tgts) { + for (final Card c : tgts) { sbTargets.append(" ").append(c.getName()); } - String targetname = sbTargets.toString(); + final String targetname = sbTargets.toString(); - String pronoun = tgts.size() > 1 ? " their " : " its "; + final String pronoun = tgts.size() > 1 ? " their " : " its "; - String fromGraveyard = " from the graveyard"; + final String fromGraveyard = " from the graveyard"; if (destination.equals(Zone.Battlefield)) { sb.append("Put").append(targetname); @@ -1652,7 +1648,7 @@ public final class AbilityFactory_ChangeZone { // this needs to be zero indexed. Top = 0, Third = 2, -1 = // Bottom - int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params + final int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params .get("LibraryPosition")) : 0; if (libraryPosition == -1) { @@ -1680,7 +1676,7 @@ public final class AbilityFactory_ChangeZone { sb.append(" into").append(pronoun).append("owner's graveyard."); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1700,39 +1696,39 @@ public final class AbilityFactory_ChangeZone { */ private static void changeKnownOriginResolve(final AbilityFactory af, final SpellAbility sa) { ArrayList tgtCards; - HashMap params = af.getMapParams(); - Target tgt = af.getAbTgt(); - Player player = sa.getActivatingPlayer(); - Card hostCard = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final Player player = sa.getActivatingPlayer(); + final Card hostCard = af.getHostCard(); - Zone destination = Zone.valueOf(params.get("Destination")); - Zone origin = Zone.valueOf(params.get("Origin")); + final Zone destination = Zone.valueOf(params.get("Destination")); + final Zone origin = Zone.valueOf(params.get("Origin")); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = new ArrayList(); - for (Card c : knownDetermineDefined(sa, params.get("Defined"), origin)) { + for (final Card c : AbilityFactory_ChangeZone.knownDetermineDefined(sa, params.get("Defined"), origin)) { tgtCards.add(c); } } - String remember = params.get("RememberChanged"); - String imprint = params.get("Imprint"); + final String remember = params.get("RememberChanged"); + final String imprint = params.get("Imprint"); if (params.containsKey("Unimprint")) { hostCard.clearImprinted(); } if (tgtCards.size() != 0) { - for (Card tgtC : tgtCards) { - PlayerZone originZone = AllZone.getZoneOf(tgtC); + for (final Card tgtC : tgtCards) { + final PlayerZone originZone = AllZone.getZoneOf(tgtC); // if Target isn't in the expected Zone, continue - if (originZone == null || !originZone.is(origin)) { + if ((originZone == null) || !originZone.is(origin)) { continue; } - if (tgt != null && origin.equals(Zone.Battlefield)) { + if ((tgt != null) && origin.equals(Zone.Battlefield)) { // check targeting if (!CardFactoryUtil.canTarget(sa.getSourceCard(), tgtC)) { continue; @@ -1747,7 +1743,7 @@ public final class AbilityFactory_ChangeZone { if (destination.equals(Zone.Library)) { // library position is zero indexed - int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params + final int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params .get("LibraryPosition")) : 0; movedCard = AllZone.getGameAction().moveToLibrary(tgtC, libraryPosition); @@ -1767,7 +1763,7 @@ public final class AbilityFactory_ChangeZone { // Auras without Candidates stay in their current // location if (tgtC.isAura()) { - SpellAbility saAura = AbilityFactory_Attach.getAttachSpellAbility(tgtC); + final SpellAbility saAura = AbilityFactory_Attach.getAttachSpellAbility(tgtC); if (!saAura.getTarget().hasCandidates(false)) { continue; } @@ -1812,7 +1808,7 @@ public final class AbilityFactory_ChangeZone { * @return a {@link forge.CardList} object. */ private static CardList knownDetermineDefined(final SpellAbility sa, final String defined, final Zone origin) { - CardList ret = new CardList(); + final CardList ret = new CardList(); ret.addAll(AbilityFactory.getDefinedCards(sa.getSourceCard(), defined, sa).toArray()); return ret; @@ -1839,27 +1835,28 @@ public final class AbilityFactory_ChangeZone { final SpellAbility abChangeZone = new Ability_Activated(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { private static final long serialVersionUID = 3728332812890211671L; + @Override public boolean canPlayAI() { - return changeZoneAllCanPlayAI(af, this); + return AbilityFactory_ChangeZone.changeZoneAllCanPlayAI(af, this); } @Override public void resolve() { - changeZoneAllResolve(af, this); + AbilityFactory_ChangeZone.changeZoneAllResolve(af, this); } @Override public String getStackDescription() { - return changeZoneAllDescription(af, this); + return AbilityFactory_ChangeZone.changeZoneAllDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return changeZoneAllCanPlayAI(af, this); + return AbilityFactory_ChangeZone.changeZoneAllCanPlayAI(af, this); } }; - setMiscellaneous(af, abChangeZone); + AbilityFactory_ChangeZone.setMiscellaneous(af, abChangeZone); return abChangeZone; } @@ -1876,21 +1873,22 @@ public final class AbilityFactory_ChangeZone { final SpellAbility spChangeZone = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { private static final long serialVersionUID = 3270484211099902059L; + @Override public boolean canPlayAI() { - return changeZoneAllCanPlayAI(af, this); + return AbilityFactory_ChangeZone.changeZoneAllCanPlayAI(af, this); } @Override public void resolve() { - changeZoneAllResolve(af, this); + AbilityFactory_ChangeZone.changeZoneAllResolve(af, this); } @Override public String getStackDescription() { - return changeZoneAllDescription(af, this); + return AbilityFactory_ChangeZone.changeZoneAllDescription(af, this); } }; - setMiscellaneous(af, spChangeZone); + AbilityFactory_ChangeZone.setMiscellaneous(af, spChangeZone); return spChangeZone; } @@ -1909,25 +1907,25 @@ public final class AbilityFactory_ChangeZone { @Override public void resolve() { - changeZoneAllResolve(af, this); + AbilityFactory_ChangeZone.changeZoneAllResolve(af, this); } @Override public boolean chkAIDrawback() { - return changeZoneAllPlayDrawbackAI(af, this); + return AbilityFactory_ChangeZone.changeZoneAllPlayDrawbackAI(af, this); } @Override public String getStackDescription() { - return changeZoneAllDescription(af, this); + return AbilityFactory_ChangeZone.changeZoneAllDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return changeZoneAllCanPlayAI(af, this); + return AbilityFactory_ChangeZone.changeZoneAllCanPlayAI(af, this); } }; - setMiscellaneous(af, dbChangeZone); + AbilityFactory_ChangeZone.setMiscellaneous(af, dbChangeZone); return dbChangeZone; } @@ -1944,11 +1942,11 @@ public final class AbilityFactory_ChangeZone { */ private static boolean changeZoneAllCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // Change Zone All, can be any type moving from one zone to another - Cost abCost = af.getAbCost(); - Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); - String destination = params.get("Destination"); - Constant.Zone origin = Constant.Zone.smartValueOf(params.get("Origin")); + final Cost abCost = af.getAbCost(); + final Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final String destination = params.get("Destination"); + final Constant.Zone origin = Constant.Zone.smartValueOf(params.get("Origin")); if (abCost != null) { // AI currently disabled for these costs @@ -1962,7 +1960,7 @@ public final class AbilityFactory_ChangeZone { } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); // prevent run-away activations - first time will always return true boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); @@ -1991,14 +1989,14 @@ public final class AbilityFactory_ChangeZone { // occur // if only creatures are affected evaluate both lists and pass only // if human creatures are more valuable - if (humanType.getNotType("Creature").size() == 0 && computerType.getNotType("Creature").size() == 0) { - if (CardFactoryUtil.evaluateCreatureList(computerType) + 200 >= CardFactoryUtil + if ((humanType.getNotType("Creature").size() == 0) && (computerType.getNotType("Creature").size() == 0)) { + if ((CardFactoryUtil.evaluateCreatureList(computerType) + 200) >= CardFactoryUtil .evaluateCreatureList(humanType)) { return false; } } // otherwise evaluate both lists by CMC and pass only if human // permanents are more valuable - else if (CardFactoryUtil.evaluatePermanentList(computerType) + 3 >= CardFactoryUtil + else if ((CardFactoryUtil.evaluatePermanentList(computerType) + 3) >= CardFactoryUtil .evaluatePermanentList(humanType)) { return false; } @@ -2008,7 +2006,7 @@ public final class AbilityFactory_ChangeZone { return false; } } else if (origin.equals(Zone.Graveyard)) { - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { if (AllZone.getHumanPlayer().getCardsIn(Zone.Graveyard).isEmpty()) { return false; @@ -2029,39 +2027,39 @@ public final class AbilityFactory_ChangeZone { if (destination.equals(Constant.Zone.Battlefield)) { if (params.get("GainControl") != null) { // Check if the cards are valuable enough - if (humanType.getNotType("Creature").size() == 0 && computerType.getNotType("Creature").size() == 0) { - if (CardFactoryUtil.evaluateCreatureList(computerType) - + CardFactoryUtil.evaluateCreatureList(humanType) < 400) { + if ((humanType.getNotType("Creature").size() == 0) && (computerType.getNotType("Creature").size() == 0)) { + if ((CardFactoryUtil.evaluateCreatureList(computerType) + CardFactoryUtil + .evaluateCreatureList(humanType)) < 400) { return false; } } // otherwise evaluate both lists by CMC and pass only if human // permanents are less valuable - else if (CardFactoryUtil.evaluatePermanentList(computerType) - + CardFactoryUtil.evaluatePermanentList(humanType) < 6) { + else if ((CardFactoryUtil.evaluatePermanentList(computerType) + CardFactoryUtil + .evaluatePermanentList(humanType)) < 6) { return false; } } else { // don't activate if human gets more back than AI does - if (humanType.getNotType("Creature").size() == 0 && computerType.getNotType("Creature").size() == 0) { - if (CardFactoryUtil.evaluateCreatureList(computerType) <= CardFactoryUtil - .evaluateCreatureList(humanType) + 100) { + if ((humanType.getNotType("Creature").size() == 0) && (computerType.getNotType("Creature").size() == 0)) { + if (CardFactoryUtil.evaluateCreatureList(computerType) <= (CardFactoryUtil + .evaluateCreatureList(humanType) + 100)) { return false; } } // otherwise evaluate both lists by CMC and pass only if human // permanents are less valuable - else if (CardFactoryUtil.evaluatePermanentList(computerType) <= CardFactoryUtil - .evaluatePermanentList(humanType) + 2) { + else if (CardFactoryUtil.evaluatePermanentList(computerType) <= (CardFactoryUtil + .evaluatePermanentList(humanType) + 2)) { return false; } } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } - return ((r.nextFloat() < .8 || sa.isTrigger()) && chance); + return (((r.nextFloat() < .8) || sa.isTrigger()) && chance); } /** @@ -2096,8 +2094,8 @@ public final class AbilityFactory_ChangeZone { private static String changeZoneAllDescription(final AbilityFactory af, final SpellAbility sa) { // TODO build Stack Description will need expansion as more cards are // added - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); if (!(sa instanceof Ability_Sub)) { sb.append(host.getName()).append(" -"); @@ -2105,7 +2103,7 @@ public final class AbilityFactory_ChangeZone { sb.append(" "); - String[] desc = sa.getDescription().split(":"); + final String[] desc = sa.getDescription().split(":"); if (desc.length > 1) { sb.append(desc[1]); @@ -2113,7 +2111,7 @@ public final class AbilityFactory_ChangeZone { sb.append(desc[0]); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -2132,22 +2130,22 @@ public final class AbilityFactory_ChangeZone { * a {@link forge.card.spellability.SpellAbility} object. */ private static void changeZoneAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Zone destination = Zone.smartValueOf(params.get("Destination")); - List origin = Zone.listValueOf(params.get("Origin")); + final HashMap params = af.getMapParams(); + final Zone destination = Zone.smartValueOf(params.get("Destination")); + final List origin = Zone.listValueOf(params.get("Origin")); CardList cards = null; ArrayList tgtPlayers = null; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else if (params.containsKey("Defined")) { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - if (tgtPlayers == null || tgtPlayers.isEmpty()) { + if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { cards = AllZoneUtil.getCardsIn(origin); } else { cards = tgtPlayers.get(0).getCardsIn(origin); @@ -2159,16 +2157,17 @@ public final class AbilityFactory_ChangeZone { sa.getSourceCard().clearRemembered(); } - String remember = params.get("RememberChanged"); + final String remember = params.get("RememberChanged"); // I don't know if library position is necessary. It's here if it is, // just in case - int libraryPos = params.containsKey("LibraryPosition") ? Integer.parseInt(params.get("LibraryPosition")) : 0; - for (Card c : cards) { + final int libraryPos = params.containsKey("LibraryPosition") ? Integer.parseInt(params.get("LibraryPosition")) + : 0; + for (final Card c : cards) { if (destination.equals(Zone.Battlefield)) { // Auras without Candidates stay in their current location if (c.isAura()) { - SpellAbility saAura = AbilityFactory_Attach.getAttachSpellAbility(c); + final SpellAbility saAura = AbilityFactory_Attach.getAttachSpellAbility(c); if (!saAura.getTarget().hasCandidates(false)) { continue; } @@ -2183,7 +2182,7 @@ public final class AbilityFactory_ChangeZone { c.addController(af.getHostCard()); AllZone.getGameAction().moveToPlay(c, sa.getActivatingPlayer()); } else { - Card movedCard = AllZone.getGameAction().moveTo(destination, c, libraryPos); + final Card movedCard = AllZone.getGameAction().moveTo(destination, c, libraryPos); if (params.containsKey("ExileFaceDown")) { movedCard.setIsFaceDown(true); } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Charm.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Charm.java index c192b77b8c2..64a7b47a6e5 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Charm.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Charm.java @@ -39,22 +39,22 @@ public final class AbilityFactory_Charm { @Override public boolean canPlayAI() { - return charmCanPlayAI(af, this); + return AbilityFactory_Charm.charmCanPlayAI(af, this); } @Override public void resolve() { - charmResolve(af, this); + AbilityFactory_Charm.charmResolve(af, this); } @Override public String getStackDescription() { - return charmStackDescription(af, this); + return AbilityFactory_Charm.charmStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return charmCanPlayAI(af, this); + return AbilityFactory_Charm.charmCanPlayAI(af, this); } }; // Ability_Activated @@ -76,17 +76,17 @@ public final class AbilityFactory_Charm { @Override public boolean canPlayAI() { - return charmCanPlayAI(af, this); + return AbilityFactory_Charm.charmCanPlayAI(af, this); } @Override public void resolve() { - charmResolve(af, this); + AbilityFactory_Charm.charmResolve(af, this); } @Override public String getStackDescription() { - return charmStackDescription(af, this); + return AbilityFactory_Charm.charmStackDescription(af, this); } }; @@ -94,7 +94,7 @@ public final class AbilityFactory_Charm { } private static String charmStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -106,7 +106,7 @@ public final class AbilityFactory_Charm { // nothing stack specific for Charm // begin standard post - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -134,7 +134,7 @@ public final class AbilityFactory_Charm { public static void setupCharmSAs(final SpellAbility sa) { // make Charm choices if (sa.isCharm()) { - ArrayList choices = new ArrayList(); + final ArrayList choices = new ArrayList(); choices.addAll(sa.getCharmChoices()); for (int i = 0; i < choices.size(); i++) { if (!sa.canPlay()) { @@ -151,7 +151,7 @@ public final class AbilityFactory_Charm { if (null == o) { break; } - Ability_Sub chosen = (Ability_Sub) o; + final Ability_Sub chosen = (Ability_Sub) o; sa.addCharmChoice(chosen); choices.remove(chosen); diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java index 888f8226d1b..22441b0801a 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Choose.java @@ -222,8 +222,7 @@ public final class AbilityFactory_Choose { * a boolean. * @return a boolean. */ - private static boolean chooseTypeTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean chooseTypeTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { if (!ComputerUtil.canPayCost(sa)) { return false; } @@ -570,8 +569,8 @@ public final class AbilityFactory_Choose { private static boolean chooseColorCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // Note: if (AILogic == MostProminentAttackers) return isDuringCombat(); boolean chance = true; - - Ability_Sub subAb = sa.getSubAbility(); + + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -591,8 +590,7 @@ public final class AbilityFactory_Choose { * a boolean. * @return a boolean. */ - private static boolean chooseColorTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean chooseColorTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { return false; } @@ -860,8 +858,7 @@ public final class AbilityFactory_Choose { * a boolean. * @return a boolean. */ - private static boolean chooseNumberTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean chooseNumberTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { return false; } @@ -1110,8 +1107,7 @@ public final class AbilityFactory_Choose { * a boolean. * @return a boolean. */ - private static boolean choosePlayerTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean choosePlayerTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { return false; } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java index 0943069bf3d..cfc12a92c79 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java @@ -466,8 +466,7 @@ public final class AbilityFactory_Combat { return chance; } - private static boolean mustAttackDoTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean mustAttackDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { // If there is a cost payment it's usually not mandatory if (!ComputerUtil.canPayCost(sa) && !mandatory) { return false; @@ -900,8 +899,7 @@ public final class AbilityFactory_Combat { return chance; } - private static boolean mustBlockDoTriggerAI(final AbilityFactory af, - final SpellAbility sa, final boolean mandatory) { + private static boolean mustBlockDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { final HashMap params = af.getMapParams(); final Card source = sa.getSourceCard(); final Target abTgt = sa.getTarget(); diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Copy.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Copy.java index c6f8456a133..1057e229ed8 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Copy.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Copy.java @@ -59,22 +59,22 @@ public final class AbilityFactory_Copy { @Override public String getStackDescription() { - return copyPermanentStackDescription(af, this); + return AbilityFactory_Copy.copyPermanentStackDescription(af, this); } @Override public boolean canPlayAI() { - return copyPermanentCanPlayAI(af, this); + return AbilityFactory_Copy.copyPermanentCanPlayAI(af, this); } @Override public void resolve() { - copyPermanentResolve(af, this); + AbilityFactory_Copy.copyPermanentResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return copyPermanentTriggerAI(af, this, mandatory); + return AbilityFactory_Copy.copyPermanentTriggerAI(af, this, mandatory); } }; @@ -96,17 +96,17 @@ public final class AbilityFactory_Copy { @Override public String getStackDescription() { - return copyPermanentStackDescription(af, this); + return AbilityFactory_Copy.copyPermanentStackDescription(af, this); } @Override public boolean canPlayAI() { - return copyPermanentCanPlayAI(af, this); + return AbilityFactory_Copy.copyPermanentCanPlayAI(af, this); } @Override public void resolve() { - copyPermanentResolve(af, this); + AbilityFactory_Copy.copyPermanentResolve(af, this); } }; @@ -128,12 +128,12 @@ public final class AbilityFactory_Copy { @Override public String getStackDescription() { - return copyPermanentStackDescription(af, this); + return AbilityFactory_Copy.copyPermanentStackDescription(af, this); } @Override public void resolve() { - copyPermanentResolve(af, this); + AbilityFactory_Copy.copyPermanentResolve(af, this); } @Override @@ -143,7 +143,7 @@ public final class AbilityFactory_Copy { @Override public boolean doTrigger(final boolean mandatory) { - return copyPermanentTriggerAI(af, this, mandatory); + return AbilityFactory_Copy.copyPermanentTriggerAI(af, this, mandatory); } }; @@ -162,8 +162,8 @@ public final class AbilityFactory_Copy { * @return a {@link java.lang.String} object. */ private static String copyPermanentStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); - HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); @@ -173,7 +173,7 @@ public final class AbilityFactory_Copy { ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -181,7 +181,7 @@ public final class AbilityFactory_Copy { } sb.append("Copy "); - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { sb.append(it.next()); if (it.hasNext()) { @@ -190,7 +190,7 @@ public final class AbilityFactory_Copy { } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -213,7 +213,7 @@ public final class AbilityFactory_Copy { // Card source = sa.getSourceCard(); // TODO - I'm sure someone can do this AI better - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); if (params.containsKey("AtEOT") && !AllZone.getPhase().is(Constant.Phase.MAIN1)) { return false; } else { @@ -222,9 +222,9 @@ public final class AbilityFactory_Copy { chance = .667; // 66.7% chance for sorcery speed (since it will // never activate EOT) } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); if (r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1)) { - return copyPermanentTriggerAI(af, sa, false); + return AbilityFactory_Copy.copyPermanentTriggerAI(af, sa, false); } else { return false; } @@ -247,7 +247,7 @@ public final class AbilityFactory_Copy { private static boolean copyPermanentTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { // HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); if (!ComputerUtil.canPayCost(sa) && !mandatory) { return false; @@ -256,7 +256,7 @@ public final class AbilityFactory_Copy { // //// // Targeting - Target abTgt = sa.getTarget(); + final Target abTgt = sa.getTarget(); if (abTgt != null) { CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); @@ -265,8 +265,8 @@ public final class AbilityFactory_Copy { // target loop while (abTgt.getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { if (list.size() == 0) { - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -283,8 +283,8 @@ public final class AbilityFactory_Copy { } if (choice == null) { // can't find anything left - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -302,7 +302,7 @@ public final class AbilityFactory_Copy { // end Targeting if (af.hasSubAbility()) { - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.chkAIDrawback(); } @@ -322,17 +322,17 @@ public final class AbilityFactory_Copy { */ private static void copyPermanentResolve(final AbilityFactory af, final SpellAbility sa) { final HashMap params = af.getMapParams(); - Card hostCard = af.getHostCard(); - ArrayList keywords = new ArrayList(); + final Card hostCard = af.getHostCard(); + final ArrayList keywords = new ArrayList(); if (params.containsKey("Keywords")) { keywords.addAll(Arrays.asList(params.get("Keywords").split(" & "))); } - int numCopies = params.containsKey("NumCopies") ? AbilityFactory.calculateAmount(hostCard, + final int numCopies = params.containsKey("NumCopies") ? AbilityFactory.calculateAmount(hostCard, params.get("NumCopies"), sa) : 1; ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -341,8 +341,8 @@ public final class AbilityFactory_Copy { hostCard.clearClones(); - for (Card c : tgtCards) { - if (tgt == null || CardFactoryUtil.canTarget(hostCard, c)) { + for (final Card c : tgtCards) { + if ((tgt == null) || CardFactoryUtil.canTarget(hostCard, c)) { boolean wasInAlt = false; if (c.isInAlternateState()) { @@ -353,7 +353,7 @@ public final class AbilityFactory_Copy { // start copied Kiki code int multiplier = AllZoneUtil.getTokenDoublersMagnitude(hostCard.getController()); multiplier *= numCopies; - Card[] crds = new Card[multiplier]; + final Card[] crds = new Card[multiplier]; for (int i = 0; i < multiplier; i++) { // TODO Use central copy methods @@ -387,7 +387,7 @@ public final class AbilityFactory_Copy { } // add keywords from params - for (String kw : keywords) { + for (final String kw : keywords) { copy.addIntrinsicKeyword(kw); } @@ -457,9 +457,10 @@ public final class AbilityFactory_Copy { } }; - Command atEOT = new Command() { + final Command atEOT = new Command() { private static final long serialVersionUID = -4184510100801568140L; + @Override public void execute() { sac.setStackDescription(params.get("AtEOT") + " " + target[index] + "."); AllZone.getStack().addSimultaneousStackEntry(sac); @@ -495,22 +496,22 @@ public final class AbilityFactory_Copy { @Override public String getStackDescription() { - return copySpellStackDescription(af, this); + return AbilityFactory_Copy.copySpellStackDescription(af, this); } @Override public boolean canPlayAI() { - return copySpellCanPlayAI(af, this); + return AbilityFactory_Copy.copySpellCanPlayAI(af, this); } @Override public void resolve() { - copySpellResolve(af, this); + AbilityFactory_Copy.copySpellResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return copySpellTriggerAI(af, this, mandatory); + return AbilityFactory_Copy.copySpellTriggerAI(af, this, mandatory); } }; @@ -532,17 +533,17 @@ public final class AbilityFactory_Copy { @Override public String getStackDescription() { - return copySpellStackDescription(af, this); + return AbilityFactory_Copy.copySpellStackDescription(af, this); } @Override public boolean canPlayAI() { - return copySpellCanPlayAI(af, this); + return AbilityFactory_Copy.copySpellCanPlayAI(af, this); } @Override public void resolve() { - copySpellResolve(af, this); + AbilityFactory_Copy.copySpellResolve(af, this); } }; @@ -564,12 +565,12 @@ public final class AbilityFactory_Copy { @Override public String getStackDescription() { - return copySpellStackDescription(af, this); + return AbilityFactory_Copy.copySpellStackDescription(af, this); } @Override public void resolve() { - copySpellResolve(af, this); + AbilityFactory_Copy.copySpellResolve(af, this); } @Override @@ -579,7 +580,7 @@ public final class AbilityFactory_Copy { @Override public boolean doTrigger(final boolean mandatory) { - return copySpellTriggerAI(af, this, mandatory); + return AbilityFactory_Copy.copySpellTriggerAI(af, this, mandatory); } }; @@ -598,8 +599,8 @@ public final class AbilityFactory_Copy { * @return a {@link java.lang.String} object. */ private static String copySpellStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); - HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -609,7 +610,7 @@ public final class AbilityFactory_Copy { ArrayList tgtSpells; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtSpells = tgt.getTargetSAs(); } else { @@ -618,7 +619,7 @@ public final class AbilityFactory_Copy { sb.append("Copy "); // TODO Someone fix this Description when Copying Charms - Iterator it = tgtSpells.iterator(); + final Iterator it = tgtSpells.iterator(); while (it.hasNext()) { sb.append(it.next().getSourceCard()); if (it.hasNext()) { @@ -635,7 +636,7 @@ public final class AbilityFactory_Copy { sb.append("."); // TODO probably add an optional "You may choose new targets..." - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -672,10 +673,10 @@ public final class AbilityFactory_Copy { * @return a boolean. */ private static boolean copySpellTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - boolean randomReturn = false; + final boolean randomReturn = false; if (af.hasSubAbility()) { - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return randomReturn && abSub.chkAIDrawback(); } @@ -695,7 +696,7 @@ public final class AbilityFactory_Copy { */ private static void copySpellResolve(final AbilityFactory af, final SpellAbility sa) { final HashMap params = af.getMapParams(); - Card card = af.getHostCard(); + final Card card = af.getHostCard(); int amount = 1; if (params.containsKey("Amount")) { @@ -704,7 +705,7 @@ public final class AbilityFactory_Copy { ArrayList tgtSpells; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtSpells = tgt.getTargetSAs(); } else { @@ -725,7 +726,7 @@ public final class AbilityFactory_Copy { } chosenSA.setActivatingPlayer(sa.getActivatingPlayer()); - if (tgt == null || CardFactoryUtil.canTarget(card, chosenSA.getSourceCard())) { + if ((tgt == null) || CardFactoryUtil.canTarget(card, chosenSA.getSourceCard())) { for (int i = 0; i < amount; i++) { AllZone.getCardFactory().copySpellontoStack(card, chosenSA.getSourceCard(), chosenSA, true); } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_CounterMagic.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_CounterMagic.java index dc4e2fbb686..a6d7ea1be5b 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_CounterMagic.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_CounterMagic.java @@ -77,8 +77,8 @@ public class AbilityFactory_CounterMagic { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getAbilityCounter(final AbilityFactory abilityFactory) { - final SpellAbility abCounter = new Ability_Activated(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility abCounter = new Ability_Activated(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = -3895990436431818899L; @Override @@ -118,8 +118,8 @@ public class AbilityFactory_CounterMagic { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getSpellCounter(final AbilityFactory abilityFactory) { - final SpellAbility spCounter = new Spell(abilityFactory.getHostCard(), - abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { + final SpellAbility spCounter = new Spell(abilityFactory.getHostCard(), abilityFactory.getAbCost(), + abilityFactory.getAbTgt()) { private static final long serialVersionUID = -4272851734871573693L; @Override @@ -481,9 +481,7 @@ public class AbilityFactory_CounterMagic { * a {@link forge.card.spellability.SpellAbility_StackInstance} * object. */ - private void removeFromStack(final SpellAbility tgtSA, - final SpellAbility srcSA, final SpellAbility_StackInstance si) - { + private void removeFromStack(final SpellAbility tgtSA, final SpellAbility srcSA, final SpellAbility_StackInstance si) { AllZone.getStack().remove(si); if (tgtSA.isAbility()) { diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java index 0f8e64dbc88..a18b35e6f61 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java @@ -60,22 +60,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return putStackDescription(af, this); + return AbilityFactory_Counters.putStackDescription(af, this); } @Override public boolean canPlayAI() { - return putCanPlayAI(af, this); + return AbilityFactory_Counters.putCanPlayAI(af, this); } @Override public void resolve() { - putResolve(af, this); + AbilityFactory_Counters.putResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return putDoTriggerAI(af, this, mandatory); + return AbilityFactory_Counters.putDoTriggerAI(af, this, mandatory); } }; @@ -97,7 +97,7 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return putStackDescription(af, this); + return AbilityFactory_Counters.putStackDescription(af, this); } @Override @@ -107,12 +107,12 @@ public class AbilityFactory_Counters { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return putCanPlayAI(af, this); + return AbilityFactory_Counters.putCanPlayAI(af, this); } @Override public void resolve() { - putResolve(af, this); + AbilityFactory_Counters.putResolve(af, this); } }; @@ -134,22 +134,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return putStackDescription(af, this); + return AbilityFactory_Counters.putStackDescription(af, this); } @Override public void resolve() { - putResolve(af, this); + AbilityFactory_Counters.putResolve(af, this); } @Override public boolean chkAIDrawback() { - return putPlayDrawbackAI(af, this); + return AbilityFactory_Counters.putPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return putDoTriggerAI(af, this, mandatory); + return AbilityFactory_Counters.putDoTriggerAI(af, this, mandatory); } }; @@ -168,8 +168,8 @@ public class AbilityFactory_Counters { * @return a {@link java.lang.String} object. */ private static String putStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -177,9 +177,9 @@ public class AbilityFactory_Counters { sb.append(" "); } - Counters cType = Counters.valueOf(params.get("CounterType")); - Card card = af.getHostCard(); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); + final Counters cType = Counters.valueOf(params.get("CounterType")); + final Card card = af.getHostCard(); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); sb.append("Put "); if (params.containsKey("UpTo")) { @@ -193,16 +193,16 @@ public class AbilityFactory_Counters { ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { - Card tgtC = it.next(); + final Card tgtC = it.next(); if (tgtC.isFaceDown()) { sb.append("Morph"); } else { @@ -216,7 +216,7 @@ public class AbilityFactory_Counters { sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -239,20 +239,21 @@ public class AbilityFactory_Counters { // AI needs to be expanded, since this function can be pretty complex // based on // what the expected targets could be - HashMap params = af.getMapParams(); - Random r = MyRandom.getRandom(); - Cost abCost = sa.getPayCosts(); - Target abTgt = sa.getTarget(); + final HashMap params = af.getMapParams(); + final Random r = MyRandom.getRandom(); + final Cost abCost = sa.getPayCosts(); + final Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); CardList list; Card choice = null; final String type = params.get("CounterType"); - String amountStr = params.get("CounterNum"); + final String amountStr = params.get("CounterNum"); - Player player = af.isCurse() ? AllZone.getHumanPlayer() : AllZone.getComputerPlayer(); + final Player player = af.isCurse() ? AllZone.getHumanPlayer() : AllZone.getComputerPlayer(); list = player.getCardsIn(Zone.Battlefield); list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return CardFactoryUtil.canTarget(source, c) && !c.hasKeyword("CARDNAME can't have counters placed on it.") @@ -267,7 +268,7 @@ public class AbilityFactory_Counters { return false; } } else { // "put counter on this" - PlayerZone pZone = AllZone.getZoneOf(source); + final PlayerZone pZone = AllZone.getZoneOf(source); // Don't activate Curse abilities on my cards and non-curse abilites // on my opponents if (!pZone.getPlayer().equals(player)) { @@ -321,8 +322,8 @@ public class AbilityFactory_Counters { // target loop while (abTgt.getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { if (list.size() == 0) { - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -332,14 +333,14 @@ public class AbilityFactory_Counters { } if (af.isCurse()) { - choice = chooseCursedTarget(list, type, amount); + choice = AbilityFactory_Counters.chooseCursedTarget(list, type, amount); } else { - choice = chooseBoonTarget(list, type); + choice = AbilityFactory_Counters.chooseBoonTarget(list, type); } if (choice == null) { // can't find anything left - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -352,11 +353,11 @@ public class AbilityFactory_Counters { } } else { // Placeholder: No targeting necessary - int currCounters = sa.getSourceCard().getCounters(Counters.valueOf(type)); + final int currCounters = sa.getSourceCard().getCounters(Counters.valueOf(type)); // each non +1/+1 counter on the card is a 10% chance of not // activating this ability. - if (!(type.equals("P1P1") || type.equals("ICE")) && r.nextFloat() < .1 * currCounters) { + if (!(type.equals("P1P1") || type.equals("ICE")) && (r.nextFloat() < (.1 * currCounters))) { return false; } } @@ -367,7 +368,7 @@ public class AbilityFactory_Counters { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -391,20 +392,21 @@ public class AbilityFactory_Counters { * @return a boolean. */ private static boolean putPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); boolean chance = true; - Target abTgt = sa.getTarget(); + final Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); CardList list; Card choice = null; - String type = params.get("CounterType"); - String amountStr = params.get("CounterNum"); + final String type = params.get("CounterType"); + final String amountStr = params.get("CounterNum"); final int amount = AbilityFactory.calculateAmount(af.getHostCard(), amountStr, sa); - Player player = af.isCurse() ? AllZone.getHumanPlayer() : AllZone.getComputerPlayer(); + final Player player = af.isCurse() ? AllZone.getHumanPlayer() : AllZone.getComputerPlayer(); list = player.getCardsIn(Zone.Battlefield); list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return CardFactoryUtil.canTarget(source, c); } @@ -421,8 +423,8 @@ public class AbilityFactory_Counters { // target loop while (abTgt.getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { if (list.size() == 0) { - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -431,14 +433,14 @@ public class AbilityFactory_Counters { } if (af.isCurse()) { - choice = chooseCursedTarget(list, type, amount); + choice = AbilityFactory_Counters.chooseCursedTarget(list, type, amount); } else { } if (choice == null) { // can't find anything left - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -451,7 +453,7 @@ public class AbilityFactory_Counters { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -478,15 +480,15 @@ public class AbilityFactory_Counters { return false; } - HashMap params = af.getMapParams(); - Target abTgt = sa.getTarget(); + final HashMap params = af.getMapParams(); + final Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); // boolean chance = true; boolean preferred = true; CardList list; - Player player = af.isCurse() ? AllZone.getHumanPlayer() : AllZone.getComputerPlayer(); - String type = params.get("CounterType"); - String amountStr = params.get("CounterNum"); + final Player player = af.isCurse() ? AllZone.getHumanPlayer() : AllZone.getComputerPlayer(); + final String type = params.get("CounterType"); + final String amountStr = params.get("CounterNum"); final int amount = AbilityFactory.calculateAmount(af.getHostCard(), amountStr, sa); if (abTgt == null) { @@ -526,7 +528,7 @@ public class AbilityFactory_Counters { // Choose targets here: if (af.isCurse()) { if (preferred) { - choice = chooseCursedTarget(list, type, amount); + choice = AbilityFactory_Counters.chooseCursedTarget(list, type, amount); } else { @@ -538,7 +540,7 @@ public class AbilityFactory_Counters { } } else { if (preferred) { - choice = chooseBoonTarget(list, type); + choice = AbilityFactory_Counters.chooseBoonTarget(list, type); } else { @@ -555,7 +557,7 @@ public class AbilityFactory_Counters { abTgt.addTarget(choice); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { // chance &= subAb.doTrigger(mandatory); } @@ -580,7 +582,8 @@ public class AbilityFactory_Counters { Card choice; if (type.equals("M1M1")) { // try to kill the best killable creature, or reduce the best one - CardList killable = list.filter(new CardListFilter() { + final CardList killable = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getNetDefense() <= amount; } @@ -613,7 +616,8 @@ public class AbilityFactory_Counters { if (type.equals("P1P1")) { choice = CardFactoryUtil.AI_getBestCreature(list); } else if (type.equals("DIVINITY")) { - CardList boon = list.filter(new CardListFilter() { + final CardList boon = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getCounters(Counters.DIVINITY) == 0; } @@ -639,19 +643,19 @@ public class AbilityFactory_Counters { * a {@link forge.card.spellability.SpellAbility} object. */ private static void putResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Card card = af.getHostCard(); - String type = params.get("CounterType"); + final Card card = af.getHostCard(); + final String type = params.get("CounterType"); int counterAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); - int max = params.containsKey("MaxFromEffect") ? Integer.parseInt(params.get("MaxFromEffect")) : -1; + final int max = params.containsKey("MaxFromEffect") ? Integer.parseInt(params.get("MaxFromEffect")) : -1; if (params.containsKey("UpTo")) { - Integer[] integers = new Integer[counterAmount + 1]; + final Integer[] integers = new Integer[counterAmount + 1]; for (int j = 0; j <= counterAmount; j++) { integers[j] = Integer.valueOf(j); } - Integer i = GuiUtils.getChoiceOptional("How many counters?", integers); + final Integer i = GuiUtils.getChoiceOptional("How many counters?", integers); if (null == i) { return; } else { @@ -661,19 +665,19 @@ public class AbilityFactory_Counters { ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - for (Card tgtCard : tgtCards) { - if (tgt == null || CardFactoryUtil.canTarget(card, tgtCard)) { + for (final Card tgtCard : tgtCards) { + if ((tgt == null) || CardFactoryUtil.canTarget(card, tgtCard)) { if (max != -1) { counterAmount = max - tgtCard.getCounters(Counters.valueOf(type)); } - PlayerZone zone = AllZone.getZoneOf(tgtCard); + final PlayerZone zone = AllZone.getZoneOf(tgtCard); if (zone == null) { // Do nothing, token disappeared } else if (zone.is(Constant.Zone.Battlefield)) { @@ -705,22 +709,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return removeStackDescription(af, this); + return AbilityFactory_Counters.removeStackDescription(af, this); } @Override public boolean canPlayAI() { - return removeCanPlayAI(af, this); + return AbilityFactory_Counters.removeCanPlayAI(af, this); } @Override public void resolve() { - removeResolve(af, this); + AbilityFactory_Counters.removeResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return removeDoTriggerAI(af, this, mandatory); + return AbilityFactory_Counters.removeDoTriggerAI(af, this, mandatory); } }; @@ -742,7 +746,7 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return removeStackDescription(af, this); + return AbilityFactory_Counters.removeStackDescription(af, this); } @Override @@ -752,12 +756,12 @@ public class AbilityFactory_Counters { // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return removeCanPlayAI(af, this); + return AbilityFactory_Counters.removeCanPlayAI(af, this); } @Override public void resolve() { - removeResolve(af, this); + AbilityFactory_Counters.removeResolve(af, this); } }; @@ -779,22 +783,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return removeStackDescription(af, this); + return AbilityFactory_Counters.removeStackDescription(af, this); } @Override public void resolve() { - removeResolve(af, this); + AbilityFactory_Counters.removeResolve(af, this); } @Override public boolean chkAIDrawback() { - return removePlayDrawbackAI(af, this); + return AbilityFactory_Counters.removePlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return removeDoTriggerAI(af, this, mandatory); + return AbilityFactory_Counters.removeDoTriggerAI(af, this, mandatory); } }; @@ -813,9 +817,9 @@ public class AbilityFactory_Counters { * @return a {@link java.lang.String} object. */ private static String removeStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = af.getHostCard(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final Card card = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(card).append(" - "); @@ -823,8 +827,8 @@ public class AbilityFactory_Counters { sb.append(" "); } - Counters cType = Counters.valueOf(params.get("CounterType")); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); + final Counters cType = Counters.valueOf(params.get("CounterType")); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); sb.append("Remove "); if (params.containsKey("UpTo")) { @@ -838,19 +842,19 @@ public class AbilityFactory_Counters { ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - for (Card c : tgtCards) { + for (final Card c : tgtCards) { sb.append(" ").append(c); } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -873,15 +877,15 @@ public class AbilityFactory_Counters { // AI needs to be expanded, since this function can be pretty complex // based on what // the expected targets could be - Random r = MyRandom.getRandom(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final Cost abCost = sa.getPayCosts(); // Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); // CardList list; // Card choice = null; - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - String type = params.get("CounterType"); + final String type = params.get("CounterType"); // String amountStr = params.get("CounterNum"); // TODO - currently, not targeted, only for Self @@ -917,14 +921,14 @@ public class AbilityFactory_Counters { // currently, not targeted // Placeholder: No targeting necessary - int currCounters = sa.getSourceCard().getCounters(Counters.valueOf(type)); + final int currCounters = sa.getSourceCard().getCounters(Counters.valueOf(type)); // each counter on the card is a 10% chance of not activating this // ability. - if (r.nextFloat() < .1 * currCounters) { + if (r.nextFloat() < (.1 * currCounters)) { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -969,7 +973,7 @@ public class AbilityFactory_Counters { // currently, not targeted - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -1006,7 +1010,7 @@ public class AbilityFactory_Counters { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.doTrigger(mandatory); } @@ -1025,33 +1029,33 @@ public class AbilityFactory_Counters { * a {@link forge.card.spellability.SpellAbility} object. */ private static void removeResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Card card = af.getHostCard(); - String type = params.get("CounterType"); + final Card card = af.getHostCard(); + final String type = params.get("CounterType"); int counterAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - for (Card tgtCard : tgtCards) { - if (tgt == null || CardFactoryUtil.canTarget(card, tgtCard)) { - PlayerZone zone = AllZone.getZoneOf(tgtCard); + for (final Card tgtCard : tgtCards) { + if ((tgt == null) || CardFactoryUtil.canTarget(card, tgtCard)) { + final PlayerZone zone = AllZone.getZoneOf(tgtCard); if (zone.is(Constant.Zone.Battlefield) || zone.is(Constant.Zone.Exile)) { if (params.containsKey("UpTo") && sa.getActivatingPlayer().isHuman()) { - ArrayList choices = new ArrayList(); + final ArrayList choices = new ArrayList(); for (int i = 0; i <= counterAmount; i++) { choices.add("" + i); } - String prompt = "Select the number of " + type + " counters to remove"; - Object o = GuiUtils.getChoice(prompt, choices.toArray()); + final String prompt = "Select the number of " + type + " counters to remove"; + final Object o = GuiUtils.getChoice(prompt, choices.toArray()); counterAmount = Integer.parseInt((String) o); } } @@ -1079,22 +1083,22 @@ public class AbilityFactory_Counters { @Override public boolean canPlayAI() { - return proliferateShouldPlayAI(this); + return AbilityFactory_Counters.proliferateShouldPlayAI(this); } @Override public void resolve() { - proliferateResolve(af, this); + AbilityFactory_Counters.proliferateResolve(af, this); } @Override public String getStackDescription() { - return proliferateStackDescription(this); + return AbilityFactory_Counters.proliferateStackDescription(this); } @Override public boolean doTrigger(final boolean mandatory) { - return proliferateDoTriggerAI(this, mandatory); + return AbilityFactory_Counters.proliferateDoTriggerAI(this, mandatory); } }; @@ -1116,12 +1120,12 @@ public class AbilityFactory_Counters { @Override public boolean canPlayAI() { - return proliferateShouldPlayAI(this); + return AbilityFactory_Counters.proliferateShouldPlayAI(this); } @Override public void resolve() { - proliferateResolve(af, this); + AbilityFactory_Counters.proliferateResolve(af, this); } @Override @@ -1132,7 +1136,7 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return proliferateStackDescription(this); + return AbilityFactory_Counters.proliferateStackDescription(this); } }; @@ -1154,27 +1158,27 @@ public class AbilityFactory_Counters { @Override public boolean canPlayAI() { - return proliferateShouldPlayAI(this); + return AbilityFactory_Counters.proliferateShouldPlayAI(this); } @Override public void resolve() { - proliferateResolve(af, this); + AbilityFactory_Counters.proliferateResolve(af, this); } @Override public String getStackDescription() { - return proliferateStackDescription(this); + return AbilityFactory_Counters.proliferateStackDescription(this); } @Override public boolean chkAIDrawback() { - return proliferateShouldPlayAI(this); + return AbilityFactory_Counters.proliferateShouldPlayAI(this); } @Override public boolean doTrigger(final boolean mandatory) { - return proliferateDoTriggerAI(this, mandatory); + return AbilityFactory_Counters.proliferateDoTriggerAI(this, mandatory); } }; @@ -1191,7 +1195,7 @@ public class AbilityFactory_Counters { * @return a {@link java.lang.String} object. */ private static String proliferateStackDescription(final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); } else { @@ -1201,7 +1205,7 @@ public class AbilityFactory_Counters { sb.append(" (You choose any number of permanents and/or players with "); sb.append("counters on them, then give each another counter of a kind already there.)"); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1220,7 +1224,7 @@ public class AbilityFactory_Counters { */ private static boolean proliferateShouldPlayAI(final SpellAbility sa) { boolean chance = true; - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -1243,7 +1247,7 @@ public class AbilityFactory_Counters { */ private static boolean proliferateDoTriggerAI(final SpellAbility sa, final boolean mandatory) { boolean chance = true; - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.doTrigger(mandatory); } @@ -1266,6 +1270,7 @@ public class AbilityFactory_Counters { private static void proliferateResolve(final AbilityFactory af, final SpellAbility sa) { CardList hperms = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); hperms = hperms.filter(new CardListFilter() { + @Override public boolean addCard(final Card crd) { return !crd.getName().equals("Mana Pool") /* * && @@ -1276,6 +1281,7 @@ public class AbilityFactory_Counters { CardList cperms = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); cperms = cperms.filter(new CardListFilter() { + @Override public boolean addCard(final Card crd) { return !crd.getName().equals("Mana Pool") /* * && @@ -1303,7 +1309,7 @@ public class AbilityFactory_Counters { // to wait for another priority passing after proliferate // finished. AllZone.getStack().chooseOrderOfSimultaneousStackEntryAll(); - stop(); + this.stop(); } @Override @@ -1312,8 +1318,8 @@ public class AbilityFactory_Counters { return; } unchosen.remove(card); - ArrayList choices = new ArrayList(); - for (Counters c1 : Counters.values()) { + final ArrayList choices = new ArrayList(); + for (final Counters c1 : Counters.values()) { if (card.getCounters(c1) != 0) { choices.add(c1.getName()); } @@ -1325,19 +1331,19 @@ public class AbilityFactory_Counters { } } - boolean selComputer = false; - boolean selHuman = false; + private boolean selComputer = false; + private boolean selHuman = false; @Override public void selectPlayer(final Player player) { - if (player.isHuman() && selHuman == false) { - selHuman = true; + if (player.isHuman() && (!this.selHuman)) { + this.selHuman = true; if (AllZone.getHumanPlayer().getPoisonCounters() > 0) { AllZone.getHumanPlayer().addPoisonCounters(1); } } - if (player.isComputer() && selComputer == false) { - selComputer = true; + if (player.isComputer() && (!this.selComputer)) { + this.selComputer = true; if (AllZone.getComputerPlayer().getPoisonCounters() > 0) { AllZone.getComputerPlayer().addPoisonCounters(1); } @@ -1346,10 +1352,11 @@ public class AbilityFactory_Counters { }); } else { // Compy cperms = cperms.filter(new CardListFilter() { + @Override public boolean addCard(final Card crd) { int pos = 0; int neg = 0; - for (Counters c1 : Counters.values()) { + for (final Counters c1 : Counters.values()) { if (crd.getCounters(c1) != 0) { if (CardFactoryUtil.isNegativeCounter(c1)) { neg++; @@ -1363,10 +1370,11 @@ public class AbilityFactory_Counters { }); hperms = hperms.filter(new CardListFilter() { + @Override public boolean addCard(final Card crd) { int pos = 0; int neg = 0; - for (Counters c1 : Counters.values()) { + for (final Counters c1 : Counters.values()) { if (crd.getCounters(c1) != 0) { if (CardFactoryUtil.isNegativeCounter(c1)) { neg++; @@ -1379,14 +1387,14 @@ public class AbilityFactory_Counters { } }); - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append("Proliferate:
Computer selects "); - if (cperms.size() == 0 && hperms.size() == 0 && AllZone.getHumanPlayer().getPoisonCounters() == 0) { + if ((cperms.size() == 0) && (hperms.size() == 0) && (AllZone.getHumanPlayer().getPoisonCounters() == 0)) { sb.append("nothing."); } else { if (cperms.size() > 0) { sb.append("
From Computer's permanents:
"); - for (Card c : cperms) { + for (final Card c : cperms) { sb.append(c); sb.append(" "); } @@ -1394,7 +1402,7 @@ public class AbilityFactory_Counters { } if (hperms.size() > 0) { sb.append("
From Human's permanents:
"); - for (Card c : cperms) { + for (final Card c : cperms) { sb.append(c); sb.append(" "); } @@ -1408,8 +1416,8 @@ public class AbilityFactory_Counters { // add a counter for each counter type, if it would benefit the // computer - for (Card c : cperms) { - for (Counters c1 : Counters.values()) { + for (final Card c : cperms) { + for (final Counters c1 : Counters.values()) { if (c.getCounters(c1) != 0) { c.addCounter(c1, 1); } @@ -1418,8 +1426,8 @@ public class AbilityFactory_Counters { // add a counter for each counter type, if it would screw over the // player - for (Card c : hperms) { - for (Counters c1 : Counters.values()) { + for (final Card c : hperms) { + for (final Counters c1 : Counters.values()) { if (c.getCounters(c1) != 0) { c.addCounter(c1, 1); } @@ -1454,22 +1462,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return putAllStackDescription(af, this); + return AbilityFactory_Counters.putAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return putAllCanPlayAI(af, this); + return AbilityFactory_Counters.putAllCanPlayAI(af, this); } @Override public void resolve() { - putAllResolve(af, this); + AbilityFactory_Counters.putAllResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return putAllCanPlayAI(af, this); + return AbilityFactory_Counters.putAllCanPlayAI(af, this); } }; @@ -1491,17 +1499,17 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return putAllStackDescription(af, this); + return AbilityFactory_Counters.putAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return putAllCanPlayAI(af, this); + return AbilityFactory_Counters.putAllCanPlayAI(af, this); } @Override public void resolve() { - putAllResolve(af, this); + AbilityFactory_Counters.putAllResolve(af, this); } }; @@ -1523,22 +1531,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return putAllStackDescription(af, this); + return AbilityFactory_Counters.putAllStackDescription(af, this); } @Override public void resolve() { - putAllResolve(af, this); + AbilityFactory_Counters.putAllResolve(af, this); } @Override public boolean chkAIDrawback() { - return putAllPlayDrawbackAI(af, this); + return AbilityFactory_Counters.putAllPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return putAllPlayDrawbackAI(af, this); + return AbilityFactory_Counters.putAllPlayDrawbackAI(af, this); } }; @@ -1557,8 +1565,8 @@ public class AbilityFactory_Counters { * @return a {@link java.lang.String} object. */ private static String putAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -1566,8 +1574,8 @@ public class AbilityFactory_Counters { sb.append(" "); } - Counters cType = Counters.valueOf(params.get("CounterType")); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); + final Counters cType = Counters.valueOf(params.get("CounterType")); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); sb.append("Put ").append(amount).append(" ").append(cType.getName()).append(" counter"); if (amount != 1) { @@ -1575,7 +1583,7 @@ public class AbilityFactory_Counters { } sb.append(" on each valid permanent."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1598,17 +1606,17 @@ public class AbilityFactory_Counters { // AI needs to be expanded, since this function can be pretty complex // based on what // the expected targets could be - Random r = MyRandom.getRandom(); - HashMap params = af.getMapParams(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final HashMap params = af.getMapParams(); + final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); CardList hList; CardList cList; - String type = params.get("CounterType"); - String amountStr = params.get("CounterNum"); - String valid = params.get("ValidCards"); - boolean curse = af.isCurse(); - Target tgt = sa.getTarget(); + final String type = params.get("CounterType"); + final String amountStr = params.get("CounterNum"); + final String valid = params.get("ValidCards"); + final boolean curse = af.isCurse(); + final Target tgt = sa.getTarget(); hList = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); cList = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); @@ -1661,7 +1669,8 @@ public class AbilityFactory_Counters { if (curse) { if (type.equals("M1M1")) { - CardList killable = hList.filter(new CardListFilter() { + final CardList killable = hList.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getNetDefense() <= amount; } @@ -1683,7 +1692,7 @@ public class AbilityFactory_Counters { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -1703,7 +1712,7 @@ public class AbilityFactory_Counters { * @return a boolean. */ private static boolean putAllPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { - return putAllCanPlayAI(af, sa); + return AbilityFactory_Counters.putAllCanPlayAI(af, sa); } /** @@ -1717,22 +1726,22 @@ public class AbilityFactory_Counters { * a {@link forge.card.spellability.SpellAbility} object. */ private static void putAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - String type = params.get("CounterType"); - int counterAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); - String valid = params.get("ValidCards"); + final String type = params.get("CounterType"); + final int counterAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); + final String valid = params.get("ValidCards"); CardList cards = AllZoneUtil.getCardsIn(Zone.Battlefield); cards = cards.getValidCards(valid, sa.getSourceCard().getController(), sa.getSourceCard()); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { - Player pl = sa.getTargetPlayer(); + final Player pl = sa.getTargetPlayer(); cards = cards.getController(pl); } - for (Card tgtCard : cards) { + for (final Card tgtCard : cards) { if (AllZone.getZoneOf(tgtCard).is(Constant.Zone.Battlefield)) { tgtCard.addCounter(Counters.valueOf(type), counterAmount); } else { @@ -1762,17 +1771,17 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return removeCounterAllStackDescription(af, this); + return AbilityFactory_Counters.removeCounterAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return removeCounterAllCanPlayAI(af, this); + return AbilityFactory_Counters.removeCounterAllCanPlayAI(af, this); } @Override public void resolve() { - removeCounterAllResolve(af, this); + AbilityFactory_Counters.removeCounterAllResolve(af, this); } @Override @@ -1799,17 +1808,17 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return removeCounterAllStackDescription(af, this); + return AbilityFactory_Counters.removeCounterAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return removeCounterAllCanPlayAI(af, this); + return AbilityFactory_Counters.removeCounterAllCanPlayAI(af, this); } @Override public void resolve() { - removeCounterAllResolve(af, this); + AbilityFactory_Counters.removeCounterAllResolve(af, this); } }; @@ -1831,22 +1840,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return removeCounterAllStackDescription(af, this); + return AbilityFactory_Counters.removeCounterAllStackDescription(af, this); } @Override public void resolve() { - removeCounterAllResolve(af, this); + AbilityFactory_Counters.removeCounterAllResolve(af, this); } @Override public boolean chkAIDrawback() { - return removeCounterAllPlayDrawbackAI(af, this); + return AbilityFactory_Counters.removeCounterAllPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return removeCounterAllPlayDrawbackAI(af, this); + return AbilityFactory_Counters.removeCounterAllPlayDrawbackAI(af, this); } }; @@ -1865,8 +1874,8 @@ public class AbilityFactory_Counters { * @return a {@link java.lang.String} object. */ private static String removeCounterAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); @@ -1874,8 +1883,8 @@ public class AbilityFactory_Counters { sb.append(" "); } - Counters cType = Counters.valueOf(params.get("CounterType")); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); + final Counters cType = Counters.valueOf(params.get("CounterType")); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); String amountString = Integer.toString(amount); if (params.containsKey("AllCounters")) { @@ -1888,7 +1897,7 @@ public class AbilityFactory_Counters { } sb.append(" from each valid permanent."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1926,7 +1935,7 @@ public class AbilityFactory_Counters { * @return a boolean. */ private static boolean removeCounterAllPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { - return removeCounterAllCanPlayAI(af, sa); + return AbilityFactory_Counters.removeCounterAllCanPlayAI(af, sa); } /** @@ -1940,22 +1949,22 @@ public class AbilityFactory_Counters { * a {@link forge.card.spellability.SpellAbility} object. */ private static void removeCounterAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - String type = params.get("CounterType"); + final String type = params.get("CounterType"); int counterAmount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); - String valid = params.get("ValidCards"); + final String valid = params.get("ValidCards"); CardList cards = AllZoneUtil.getCardsIn(Zone.Battlefield); cards = cards.getValidCards(valid, sa.getSourceCard().getController(), sa.getSourceCard()); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { - Player pl = sa.getTargetPlayer(); + final Player pl = sa.getTargetPlayer(); cards = cards.getController(pl); } - for (Card tgtCard : cards) { + for (final Card tgtCard : cards) { if (params.containsKey("AllCounters")) { counterAmount = tgtCard.getCounters(Counters.valueOf(type)); } @@ -1983,22 +1992,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return moveCounterStackDescription(af, this); + return AbilityFactory_Counters.moveCounterStackDescription(af, this); } @Override public boolean canPlayAI() { - return moveCounterCanPlayAI(af, this); + return AbilityFactory_Counters.moveCounterCanPlayAI(af, this); } @Override public void resolve() { - moveCounterResolve(af, this); + AbilityFactory_Counters.moveCounterResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return moveCounterDoTriggerAI(af, this, mandatory); + return AbilityFactory_Counters.moveCounterDoTriggerAI(af, this, mandatory); } }; @@ -2020,17 +2029,17 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return moveCounterStackDescription(af, this); + return AbilityFactory_Counters.moveCounterStackDescription(af, this); } @Override public boolean canPlayAI() { - return moveCounterCanPlayAI(af, this); + return AbilityFactory_Counters.moveCounterCanPlayAI(af, this); } @Override public void resolve() { - moveCounterResolve(af, this); + AbilityFactory_Counters.moveCounterResolve(af, this); } }; @@ -2052,22 +2061,22 @@ public class AbilityFactory_Counters { @Override public String getStackDescription() { - return moveCounterStackDescription(af, this); + return AbilityFactory_Counters.moveCounterStackDescription(af, this); } @Override public void resolve() { - moveCounterResolve(af, this); + AbilityFactory_Counters.moveCounterResolve(af, this); } @Override public boolean chkAIDrawback() { - return moveCounterPlayDrawbackAI(af, this); + return AbilityFactory_Counters.moveCounterPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return moveCounterDoTriggerAI(af, this, mandatory); + return AbilityFactory_Counters.moveCounterDoTriggerAI(af, this, mandatory); } }; @@ -2086,9 +2095,9 @@ public class AbilityFactory_Counters { * @return a {@link java.lang.String} object. */ private static String moveCounterStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -2096,22 +2105,22 @@ public class AbilityFactory_Counters { sb.append(sa.getSourceCard().getName()).append(" - "); } - ArrayList srcCards = AbilityFactory.getDefinedCards(host, params.get("Source"), sa); + final ArrayList srcCards = AbilityFactory.getDefinedCards(host, params.get("Source"), sa); Card source = null; if (srcCards.size() > 0) { source = srcCards.get(0); } ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(host, params.get("Defined"), sa); } - Counters cType = Counters.valueOf(params.get("CounterType")); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); + final Counters cType = Counters.valueOf(params.get("CounterType")); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); sb.append("Move ").append(amount).append(" ").append(cType.getName()).append(" counter"); if (amount != 1) { @@ -2122,7 +2131,7 @@ public class AbilityFactory_Counters { sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -2145,12 +2154,12 @@ public class AbilityFactory_Counters { // AI needs to be expanded, since this function can be pretty complex // based on what // the expected targets could be - HashMap params = af.getMapParams(); - Random r = MyRandom.getRandom(); - String amountStr = params.get("CounterNum"); + final HashMap params = af.getMapParams(); + final Random r = MyRandom.getRandom(); + final String amountStr = params.get("CounterNum"); // TODO handle proper calculation of X values based on Cost - int amount = AbilityFactory.calculateAmount(af.getHostCard(), amountStr, sa); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), amountStr, sa); // don't use it if no counters to add if (amount <= 0) { @@ -2160,7 +2169,7 @@ public class AbilityFactory_Counters { // prevent run-away activations - first time will always return true boolean chance = false; - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -2186,7 +2195,7 @@ public class AbilityFactory_Counters { private static boolean moveCounterPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { boolean chance = false; - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -2209,8 +2218,8 @@ public class AbilityFactory_Counters { */ private static boolean moveCounterDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); boolean chance = false; // if there is a cost, it's gotta be optional @@ -2218,19 +2227,19 @@ public class AbilityFactory_Counters { return false; } - Counters cType = Counters.valueOf(params.get("CounterType")); - ArrayList srcCards = AbilityFactory.getDefinedCards(host, params.get("Source"), sa); - ArrayList destCards = AbilityFactory.getDefinedCards(host, params.get("Defined"), sa); - if (srcCards.size() > 0 + final Counters cType = Counters.valueOf(params.get("CounterType")); + final ArrayList srcCards = AbilityFactory.getDefinedCards(host, params.get("Source"), sa); + final ArrayList destCards = AbilityFactory.getDefinedCards(host, params.get("Defined"), sa); + if ((srcCards.size() > 0) && cType.equals(Counters.P1P1) // move +1/+1 counters away from // permanents that cannot use // them - && destCards.size() > 0 && destCards.get(0).getController().isComputer() + && (destCards.size() > 0) && destCards.get(0).getController().isComputer() && (!srcCards.get(0).isCreature() || srcCards.get(0).hasStartOfKeyword("CARDNAME can't attack"))) { chance = true; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.doTrigger(mandatory); } @@ -2249,28 +2258,28 @@ public class AbilityFactory_Counters { * a {@link forge.card.spellability.SpellAbility} object. */ private static void moveCounterResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); - Counters cType = Counters.valueOf(params.get("CounterType")); - int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); + final Counters cType = Counters.valueOf(params.get("CounterType")); + final int amount = AbilityFactory.calculateAmount(af.getHostCard(), params.get("CounterNum"), sa); - ArrayList srcCards = AbilityFactory.getDefinedCards(host, params.get("Source"), sa); + final ArrayList srcCards = AbilityFactory.getDefinedCards(host, params.get("Source"), sa); Card source = null; if (srcCards.size() > 0) { source = srcCards.get(0); } - + ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(host, params.get("Defined"), sa); } - for (Card dest : tgtCards) { - if (null != source && null != dest) { + for (final Card dest : tgtCards) { + if ((null != source) && (null != dest)) { if (source.getCounters(cType) >= amount) { if (!dest.hasKeyword("CARDNAME can't have counters placed on it.") && !(dest.hasKeyword("CARDNAME can't have -1/-1 counters placed on it.") && cType diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_DealDamage.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_DealDamage.java index 8d9050c74ff..12de1e4cfce 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_DealDamage.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_DealDamage.java @@ -33,9 +33,9 @@ import forge.card.spellability.Target; * @version $Id$ */ public class AbilityFactory_DealDamage { - private AbilityFactory AF = null; + private AbilityFactory abilityFactory = null; - private String damage; + private final String damage; /** *

@@ -46,9 +46,9 @@ public class AbilityFactory_DealDamage { * a {@link forge.card.abilityFactory.AbilityFactory} object. */ public AbilityFactory_DealDamage(final AbilityFactory newAF) { - AF = newAF; + this.abilityFactory = newAF; - damage = AF.getMapParams().get("NumDmg"); + this.damage = this.abilityFactory.getMapParams().get("NumDmg"); // Note: TgtOpp should not be used, Please use ValidTgts$ Opponent // instead @@ -67,29 +67,31 @@ public class AbilityFactory_DealDamage { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getAbility() { - final SpellAbility abDamage = new Ability_Activated(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility abDamage = new Ability_Activated(this.abilityFactory.getHostCard(), this.abilityFactory.getAbCost(), + this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = -7560349014757367722L; @Override public boolean canPlayAI() { - return doCanPlayAI(this); + return AbilityFactory_DealDamage.this.doCanPlayAI(this); } @Override public String getStackDescription() { - return damageStackDescription(AF, this); + return AbilityFactory_DealDamage.this.damageStackDescription(AbilityFactory_DealDamage.this.abilityFactory, this); } @Override public void resolve() { - doResolve(this); + AbilityFactory_DealDamage.this.doResolve(this); } @Override public boolean doTrigger(final boolean mandatory) { - return damageDoTriggerAI(AF, this, mandatory); + return AbilityFactory_DealDamage.this.damageDoTriggerAI(AbilityFactory_DealDamage.this.abilityFactory, this, + mandatory); } - };// Ability_Activated + }; // Ability_Activated return abDamage; } @@ -102,23 +104,23 @@ public class AbilityFactory_DealDamage { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getSpell() { - final SpellAbility spDealDamage = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility spDealDamage = new Spell(this.abilityFactory.getHostCard(), this.abilityFactory.getAbCost(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 7239608350643325111L; @Override public boolean canPlayAI() { - return doCanPlayAI(this); + return AbilityFactory_DealDamage.this.doCanPlayAI(this); } @Override public String getStackDescription() { - return damageStackDescription(AF, this); + return AbilityFactory_DealDamage.this.damageStackDescription(AbilityFactory_DealDamage.this.abilityFactory, this); } @Override public void resolve() { - doResolve(this); + AbilityFactory_DealDamage.this.doResolve(this); } }; // Spell @@ -134,28 +136,29 @@ public class AbilityFactory_DealDamage { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getDrawback() { - final SpellAbility dbDealDamage = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()) { + final SpellAbility dbDealDamage = new Ability_Sub(this.abilityFactory.getHostCard(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 7239608350643325111L; @Override public boolean chkAIDrawback() { // Make sure there is a valid target - return damageDrawback(this); + return AbilityFactory_DealDamage.this.damageDrawback(this); } @Override public String getStackDescription() { - return damageStackDescription(AF, this); + return AbilityFactory_DealDamage.this.damageStackDescription(AbilityFactory_DealDamage.this.abilityFactory, this); } @Override public void resolve() { - doResolve(this); + AbilityFactory_DealDamage.this.doResolve(this); } @Override public boolean doTrigger(final boolean mandatory) { - return damageDoTriggerAI(AF, this, mandatory); + return AbilityFactory_DealDamage.this.damageDoTriggerAI(AbilityFactory_DealDamage.this.abilityFactory, this, + mandatory); } }; // Drawback @@ -177,9 +180,9 @@ public class AbilityFactory_DealDamage { private String damageStackDescription(final AbilityFactory af, final SpellAbility sa) { // when damageStackDescription is called, just build exactly what is // happening - StringBuilder sb = new StringBuilder(); - String name = af.getHostCard().toString(); - int dmg = getNumDamage(sa); + final StringBuilder sb = new StringBuilder(); + final String name = af.getHostCard().toString(); + final int dmg = this.getNumDamage(sa); ArrayList tgts; if (sa.getTarget() == null) { @@ -193,14 +196,14 @@ public class AbilityFactory_DealDamage { } sb.append(" "); - String conditionDesc = af.getMapParams().get("ConditionDescription"); + final String conditionDesc = af.getMapParams().get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } - ArrayList definedSources = AbilityFactory.getDefinedCards(sa.getSourceCard(), - af.getMapParams().get("DamageSource"), sa); - Card source = definedSources.get(0); + final ArrayList definedSources = AbilityFactory.getDefinedCards(sa.getSourceCard(), af.getMapParams() + .get("DamageSource"), sa); + final Card source = definedSources.get(0); if (source != sa.getSourceCard()) { sb.append(source.toString()).append(" deals"); @@ -215,8 +218,8 @@ public class AbilityFactory_DealDamage { sb.append(" "); } - Object o = tgts.get(i); - if (o instanceof Card || o instanceof Player) { + final Object o = tgts.get(i); + if ((o instanceof Card) || (o instanceof Player)) { sb.append(o.toString()); } } @@ -250,7 +253,7 @@ public class AbilityFactory_DealDamage { * @return a int. */ private int getNumDamage(final SpellAbility saMe) { - return AbilityFactory.calculateAmount(saMe.getSourceCard(), damage, saMe); + return AbilityFactory.calculateAmount(saMe.getSourceCard(), this.damage, saMe); } /** @@ -263,16 +266,16 @@ public class AbilityFactory_DealDamage { * @return a boolean. */ private boolean damageDrawback(final SpellAbility sa) { - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); int dmg; - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if (this.damage.equals("X") && source.getSVar(this.damage).equals("Count$xPaid")) { // Set PayX here to maximum value. dmg = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(dmg)); } else { - dmg = getNumDamage(sa); + dmg = this.getNumDamage(sa); } - return damageTargetAI(sa, dmg); + return this.damageTargetAI(sa, dmg); } /** @@ -286,18 +289,18 @@ public class AbilityFactory_DealDamage { */ private boolean doCanPlayAI(final SpellAbility saMe) { - Cost abCost = AF.getAbCost(); - Card source = saMe.getSourceCard(); + final Cost abCost = this.abilityFactory.getAbCost(); + final Card source = saMe.getSourceCard(); int dmg = 0; - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if (this.damage.equals("X") && source.getSVar(this.damage).equals("Count$xPaid")) { // Set PayX here to maximum value. dmg = ComputerUtil.determineLeftoverMana(saMe); source.setSVar("PayX", Integer.toString(dmg)); } else { - dmg = getNumDamage(saMe); + dmg = this.getNumDamage(saMe); } - boolean rr = AF.isSpell(); + boolean rr = this.abilityFactory.isSpell(); if (dmg <= 0) { return false; @@ -326,28 +329,29 @@ public class AbilityFactory_DealDamage { } } - if (AF.isAbility()) { - Random r = MyRandom.getRandom(); // prevent run-away activations + if (this.abilityFactory.isAbility()) { + final Random r = MyRandom.getRandom(); // prevent run-away + // activations if (r.nextFloat() <= Math.pow(.6667, saMe.getActivationsThisTurn())) { rr = true; } } - boolean bFlag = damageTargetAI(saMe, dmg); + final boolean bFlag = this.damageTargetAI(saMe, dmg); if (!bFlag) { return false; } - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if (this.damage.equals("X") && source.getSVar(this.damage).equals("Count$xPaid")) { // If I can kill my target by paying less mana, do it - Target tgt = saMe.getTarget(); + final Target tgt = saMe.getTarget(); if (tgt != null) { int actualPay = 0; - boolean noPrevention = AF.getMapParams().containsKey("NoPrevention"); - ArrayList cards = tgt.getTargetCards(); - for (Card c : cards) { - int adjDamage = c.getEnoughDamageToKill(dmg, source, false, noPrevention); - if (adjDamage > actualPay && adjDamage <= dmg) { + final boolean noPrevention = this.abilityFactory.getMapParams().containsKey("NoPrevention"); + final ArrayList cards = tgt.getTargetCards(); + for (final Card c : cards) { + final int adjDamage = c.getEnoughDamageToKill(dmg, source, false, noPrevention); + if ((adjDamage > actualPay) && (adjDamage <= dmg)) { actualPay = adjDamage; } } @@ -355,7 +359,7 @@ public class AbilityFactory_DealDamage { } } - Ability_Sub subAb = saMe.getSubAbility(); + final Ability_Sub subAb = saMe.getSubAbility(); if (subAb != null) { rr &= subAb.chkAIDrawback(); } @@ -377,13 +381,13 @@ public class AbilityFactory_DealDamage { */ private boolean shouldTgtP(final SpellAbility sa, final int d, final boolean noPrevention) { int restDamage = d; - Player human = AllZone.getHumanPlayer(); - Player comp = AllZone.getComputerPlayer(); + final Player human = AllZone.getHumanPlayer(); + final Player comp = AllZone.getComputerPlayer(); if (!noPrevention) { - restDamage = human.predictDamage(restDamage, AF.getHostCard(), false); + restDamage = human.predictDamage(restDamage, this.abilityFactory.getHostCard(), false); } else { - restDamage = human.staticReplaceDamage(restDamage, AF.getHostCard(), false); + restDamage = human.staticReplaceDamage(restDamage, this.abilityFactory.getHostCard(), false); } if (restDamage == 0) { @@ -394,9 +398,9 @@ public class AbilityFactory_DealDamage { return false; } - CardList hand = comp.getCardsIn(Zone.Hand); + final CardList hand = comp.getCardsIn(Zone.Hand); - if (AF.isSpell()) { + if (this.abilityFactory.isSpell()) { // If this is a spell, cast it instead of discarding if ((AllZone.getPhase().is(Constant.Phase.END_OF_TURN) || AllZone.getPhase().is(Constant.Phase.MAIN2)) && AllZone.getPhase().isPlayerTurn(comp) && (hand.size() > comp.getMaxHandSize())) { @@ -404,9 +408,9 @@ public class AbilityFactory_DealDamage { } } - if (human.getLife() - restDamage < 5) { + if ((human.getLife() - restDamage) < 5) { // drop the human to less than 5 - // life + // life return true; } @@ -429,15 +433,15 @@ public class AbilityFactory_DealDamage { * @return a {@link forge.Card} object. */ private Card chooseTgtC(final int d, final boolean noPrevention, final Player pl, final boolean mandatory) { - Target tgt = AF.getAbTgt(); - final Card source = AF.getHostCard(); + final Target tgt = this.abilityFactory.getAbTgt(); + final Card source = this.abilityFactory.getHostCard(); CardList hPlay = pl.getCardsIn(Zone.Battlefield); hPlay = hPlay.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), source); - ArrayList objects = tgt.getTargets(); - for (Object o : objects) { + final ArrayList objects = tgt.getTargets(); + for (final Object o : objects) { if (o instanceof Card) { - Card c = (Card) o; + final Card c = (Card) o; if (hPlay.contains(c)) { hPlay.remove(c); } @@ -445,7 +449,8 @@ public class AbilityFactory_DealDamage { } hPlay = hPlay.getTargetableCards(source); - CardList killables = hPlay.filter(new CardListFilter() { + final CardList killables = hPlay.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return (c.getEnoughDamageToKill(d, source, false, noPrevention) <= d) && !ComputerUtil.canRegenerate(c) && !(c.getSVar("SacMe").length() > 0); @@ -453,7 +458,7 @@ public class AbilityFactory_DealDamage { }); Card targetCard; - if (pl.isHuman() && killables.size() > 0) { + if (pl.isHuman() && (killables.size() > 0)) { targetCard = CardFactoryUtil.AI_getBestCreature(killables); return targetCard; @@ -488,13 +493,13 @@ public class AbilityFactory_DealDamage { * @return a boolean. */ private boolean damageTargetAI(final SpellAbility saMe, final int dmg) { - Target tgt = AF.getAbTgt(); + final Target tgt = this.abilityFactory.getAbTgt(); if (tgt == null) { - return damageChooseNontargeted(saMe, dmg); + return this.damageChooseNontargeted(saMe, dmg); } - return damageChoosingTargets(saMe, tgt, dmg, false); + return this.damageChoosingTargets(saMe, tgt, dmg, false); } /** @@ -512,8 +517,9 @@ public class AbilityFactory_DealDamage { * a boolean. * @return a boolean. */ - private boolean damageChoosingTargets(final SpellAbility saMe, final Target tgt, final int dmg, final boolean mandatory) { - boolean noPrevention = AF.getMapParams().containsKey("NoPrevention"); + private boolean damageChoosingTargets(final SpellAbility saMe, final Target tgt, final int dmg, + final boolean mandatory) { + final boolean noPrevention = this.abilityFactory.getMapParams().containsKey("NoPrevention"); // target loop tgt.resetTargets(); @@ -522,13 +528,13 @@ public class AbilityFactory_DealDamage { // TODO: Consider targeting the planeswalker if (tgt.canTgtCreatureAndPlayer()) { - if (shouldTgtP(saMe, dmg, noPrevention)) { + if (this.shouldTgtP(saMe, dmg, noPrevention)) { if (tgt.addTarget(AllZone.getHumanPlayer())) { continue; } } - Card c = chooseTgtC(dmg, noPrevention, AllZone.getHumanPlayer(), mandatory); + final Card c = this.chooseTgtC(dmg, noPrevention, AllZone.getHumanPlayer(), mandatory); if (c != null) { tgt.addTarget(c); continue; @@ -541,13 +547,13 @@ public class AbilityFactory_DealDamage { // TODO: add check here if card is about to die from something // on the stack // or from taking combat damage - boolean freePing = mandatory || AbilityFactory.playReusable(saMe) || tgt.getNumTargeted() > 0; + final boolean freePing = mandatory || AbilityFactory.playReusable(saMe) || (tgt.getNumTargeted() > 0); if (freePing && tgt.addTarget(AllZone.getHumanPlayer())) { continue; } } else if (tgt.canTgtCreature()) { - Card c = chooseTgtC(dmg, noPrevention, AllZone.getHumanPlayer(), mandatory); + final Card c = this.chooseTgtC(dmg, noPrevention, AllZone.getHumanPlayer(), mandatory); if (c != null) { tgt.addTarget(c); continue; @@ -562,14 +568,14 @@ public class AbilityFactory_DealDamage { } } // fell through all the choices, no targets left? - if ((tgt.getNumTargeted() < tgt.getMinTargets(saMe.getSourceCard(), saMe) || tgt.getNumTargeted() == 0)) { + if (((tgt.getNumTargeted() < tgt.getMinTargets(saMe.getSourceCard(), saMe)) || (tgt.getNumTargeted() == 0))) { if (!mandatory) { tgt.resetTargets(); return false; } else { // If the trigger is mandatory, gotta choose my own stuff // now - return damageChooseRequiredTargets(saMe, tgt, dmg, mandatory); + return this.damageChooseRequiredTargets(saMe, tgt, dmg, mandatory); } } else { // TODO is this good enough? for up to amounts? @@ -592,22 +598,22 @@ public class AbilityFactory_DealDamage { */ private boolean damageChooseNontargeted(final SpellAbility saMe, final int dmg) { // TODO: Improve circumstances where the Defined Damage is unwanted - ArrayList objects = AbilityFactory.getDefinedObjects(saMe.getSourceCard(), - AF.getMapParams().get("Defined"), saMe); + final ArrayList objects = AbilityFactory.getDefinedObjects(saMe.getSourceCard(), this.abilityFactory.getMapParams() + .get("Defined"), saMe); - for (Object o : objects) { + for (final Object o : objects) { if (o instanceof Card) { // Card c = (Card)o; } else if (o instanceof Player) { - Player p = (Player) o; - int restDamage = p.predictDamage(dmg, AF.getHostCard(), false); - if (p.isComputer() && p.canLoseLife() && restDamage + 3 >= p.getLife() && restDamage > 0) { + final Player p = (Player) o; + final int restDamage = p.predictDamage(dmg, this.abilityFactory.getHostCard(), false); + if (p.isComputer() && p.canLoseLife() && ((restDamage + 3) >= p.getLife()) && (restDamage > 0)) { // from - // this - // spell - // will - // kill - // me + // this + // spell + // will + // kill + // me return false; } if (p.isHuman() && !p.canLoseLife()) { @@ -633,14 +639,15 @@ public class AbilityFactory_DealDamage { * a boolean. * @return a boolean. */ - private boolean damageChooseRequiredTargets(final SpellAbility saMe, final Target tgt, final int dmg, final boolean mandatory) { + private boolean damageChooseRequiredTargets(final SpellAbility saMe, final Target tgt, final int dmg, + final boolean mandatory) { // this is for Triggered targets that are mandatory - boolean noPrevention = AF.getMapParams().containsKey("NoPrevention"); + final boolean noPrevention = this.abilityFactory.getMapParams().containsKey("NoPrevention"); while (tgt.getNumTargeted() < tgt.getMinTargets(saMe.getSourceCard(), saMe)) { // TODO: Consider targeting the planeswalker if (tgt.canTgtCreature()) { - Card c = chooseTgtC(dmg, noPrevention, AllZone.getComputerPlayer(), mandatory); + final Card c = this.chooseTgtC(dmg, noPrevention, AllZone.getComputerPlayer(), mandatory); if (c != null) { tgt.addTarget(c); continue; @@ -678,34 +685,34 @@ public class AbilityFactory_DealDamage { return false; } - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); int dmg; - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if (this.damage.equals("X") && source.getSVar(this.damage).equals("Count$xPaid")) { // Set PayX here to maximum value. dmg = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(dmg)); } else { - dmg = getNumDamage(sa); + dmg = this.getNumDamage(sa); } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt == null) { // If it's not mandatory check a few things - if (!mandatory && !damageChooseNontargeted(sa, dmg)) { + if (!mandatory && !this.damageChooseNontargeted(sa, dmg)) { return false; } } else { - if (!damageChoosingTargets(sa, tgt, dmg, mandatory) && !mandatory) { + if (!this.damageChoosingTargets(sa, tgt, dmg, mandatory) && !mandatory) { return false; } - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if (this.damage.equals("X") && source.getSVar(this.damage).equals("Count$xPaid")) { // If I can kill my target by paying less mana, do it int actualPay = 0; - boolean noPrevention = AF.getMapParams().containsKey("NoPrevention"); - ArrayList cards = tgt.getTargetCards(); - for (Card c : cards) { - int adjDamage = c.getEnoughDamageToKill(dmg, source, false, noPrevention); + final boolean noPrevention = this.abilityFactory.getMapParams().containsKey("NoPrevention"); + final ArrayList cards = tgt.getTargetCards(); + for (final Card c : cards) { + final int adjDamage = c.getEnoughDamageToKill(dmg, source, false, noPrevention); if (adjDamage > actualPay) { actualPay = adjDamage; } @@ -731,11 +738,11 @@ public class AbilityFactory_DealDamage { * a {@link forge.card.spellability.SpellAbility} object. */ private void doResolve(final SpellAbility saMe) { - HashMap params = AF.getMapParams(); + final HashMap params = this.abilityFactory.getMapParams(); - int dmg = getNumDamage(saMe); + final int dmg = this.getNumDamage(saMe); - boolean noPrevention = params.containsKey("NoPrevention"); + final boolean noPrevention = params.containsKey("NoPrevention"); ArrayList tgts; if (saMe.getTarget() == null) { @@ -744,7 +751,7 @@ public class AbilityFactory_DealDamage { tgts = saMe.getTarget().getTargets(); } - boolean targeted = (AF.getAbTgt() != null); + final boolean targeted = (this.abilityFactory.getAbTgt() != null); if (params.containsKey("Radiance") && targeted) { Card origin = null; @@ -754,22 +761,23 @@ public class AbilityFactory_DealDamage { break; } } - if (origin != null) // Can't radiate from a player - { - for (Card c : CardUtil.getRadiance(AF.getHostCard(), origin, params.get("ValidTgts").split(","))) { + // Can't radiate from a player + if (origin != null) { + for (final Card c : CardUtil.getRadiance(this.abilityFactory.getHostCard(), origin, + params.get("ValidTgts").split(","))) { tgts.add(c); } } } - ArrayList definedSources = AbilityFactory.getDefinedCards(saMe.getSourceCard(), + final ArrayList definedSources = AbilityFactory.getDefinedCards(saMe.getSourceCard(), params.get("DamageSource"), saMe); - Card source = definedSources.get(0); + final Card source = definedSources.get(0); - for (Object o : tgts) { + for (final Object o : tgts) { if (o instanceof Card) { - Card c = (Card) o; - if (AllZoneUtil.isCardInPlay(c) && (!targeted || CardFactoryUtil.canTarget(AF.getHostCard(), c))) { + final Card c = (Card) o; + if (AllZoneUtil.isCardInPlay(c) && (!targeted || CardFactoryUtil.canTarget(this.abilityFactory.getHostCard(), c))) { if (noPrevention) { c.addDamageWithoutPrevention(dmg, source); } else { @@ -778,7 +786,7 @@ public class AbilityFactory_DealDamage { } } else if (o instanceof Player) { - Player p = (Player) o; + final Player p = (Player) o; if (!targeted || p.canTarget(saMe)) { if (noPrevention) { p.addDamageWithoutPrevention(dmg, source); @@ -803,28 +811,30 @@ public class AbilityFactory_DealDamage { */ public final SpellAbility getAbilityDamageAll() { - final SpellAbility abDamageAll = new Ability_Activated(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility abDamageAll = new Ability_Activated(this.abilityFactory.getHostCard(), this.abilityFactory.getAbCost(), + this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = -1831356710492849854L; - final AbilityFactory af = AF; + private final AbilityFactory af = AbilityFactory_DealDamage.this.abilityFactory; @Override public String getStackDescription() { - return damageAllStackDescription(af, this); + return AbilityFactory_DealDamage.this.damageAllStackDescription(this.af, this); } @Override public boolean canPlayAI() { - return damageAllCanPlayAI(af, this); + return AbilityFactory_DealDamage.this.damageAllCanPlayAI(this.af, this); } @Override public void resolve() { - damageAllResolve(af, this); + AbilityFactory_DealDamage.this.damageAllResolve(this.af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return damageAllDoTriggerAI(AF, this, mandatory); + return AbilityFactory_DealDamage.this.damageAllDoTriggerAI(AbilityFactory_DealDamage.this.abilityFactory, this, + mandatory); } }; @@ -839,27 +849,29 @@ public class AbilityFactory_DealDamage { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getSpellDamageAll() { - final SpellAbility spDamageAll = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility spDamageAll = new Spell(this.abilityFactory.getHostCard(), this.abilityFactory.getAbCost(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 8004957182752984818L; - final AbilityFactory af = AF; - final HashMap params = af.getMapParams(); + private final AbilityFactory af = AbilityFactory_DealDamage.this.abilityFactory; + private final HashMap params = this.af.getMapParams(); @Override public String getStackDescription() { - if (params.containsKey("SpellDescription")) { - return AF.getHostCard().getName() + " - " + params.get("SpellDescription"); + if (this.params.containsKey("SpellDescription")) { + return AbilityFactory_DealDamage.this.abilityFactory.getHostCard().getName() + " - " + + this.params.get("SpellDescription"); } else { - return damageAllStackDescription(af, this); + return AbilityFactory_DealDamage.this.damageAllStackDescription(this.af, this); } } + @Override public boolean canPlayAI() { - return damageAllCanPlayAI(af, this); + return AbilityFactory_DealDamage.this.damageAllCanPlayAI(this.af, this); } @Override public void resolve() { - damageAllResolve(af, this); + AbilityFactory_DealDamage.this.damageAllResolve(this.af, this); } }; @@ -874,18 +886,18 @@ public class AbilityFactory_DealDamage { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getDrawbackDamageAll() { - final SpellAbility dbDamageAll = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()) { + final SpellAbility dbDamageAll = new Ability_Sub(this.abilityFactory.getHostCard(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = -6169562107675964474L; - final AbilityFactory af = AF; + private final AbilityFactory af = AbilityFactory_DealDamage.this.abilityFactory; @Override public String getStackDescription() { - return damageAllStackDescription(af, this); + return AbilityFactory_DealDamage.this.damageAllStackDescription(this.af, this); } @Override public void resolve() { - damageAllResolve(af, this); + AbilityFactory_DealDamage.this.damageAllResolve(this.af, this); } @Override @@ -896,7 +908,8 @@ public class AbilityFactory_DealDamage { @Override public boolean doTrigger(final boolean mandatory) { - return damageAllDoTriggerAI(AF, this, mandatory); + return AbilityFactory_DealDamage.this.damageAllDoTriggerAI(AbilityFactory_DealDamage.this.abilityFactory, this, + mandatory); } }; @@ -915,18 +928,18 @@ public class AbilityFactory_DealDamage { * @return a {@link java.lang.String} object. */ private String damageAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); - String name = af.getHostCard().getName(); - HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final String name = af.getHostCard().getName(); + final HashMap params = af.getMapParams(); String desc = ""; if (params.containsKey("ValidDescription")) { desc = params.get("ValidDescription"); } - int dmg = getNumDamage(sa); + final int dmg = this.getNumDamage(sa); sb.append(name).append(" - Deals " + dmg + " damage to " + desc); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -948,30 +961,30 @@ public class AbilityFactory_DealDamage { private boolean damageAllCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI needs to be expanded, since this function can be pretty complex // based on what the expected targets could be - Random r = MyRandom.getRandom(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); final HashMap params = af.getMapParams(); String validP = ""; int dmg; - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if (this.damage.equals("X") && source.getSVar(this.damage).equals("Count$xPaid")) { // Set PayX here to maximum value. dmg = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(dmg)); } else { - dmg = getNumDamage(sa); + dmg = this.getNumDamage(sa); } if (params.containsKey("ValidPlayers")) { validP = params.get("ValidPlayers"); } - CardList humanList = getKillableCreatures(af, sa, AllZone.getHumanPlayer(), dmg); - CardList computerList = getKillableCreatures(af, sa, AllZone.getComputerPlayer(), dmg); + final CardList humanList = this.getKillableCreatures(af, sa, AllZone.getHumanPlayer(), dmg); + CardList computerList = this.getKillableCreatures(af, sa, AllZone.getComputerPlayer(), dmg); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgt.resetTargets(); sa.getTarget().addTarget(AllZone.getHumanPlayer()); @@ -990,14 +1003,14 @@ public class AbilityFactory_DealDamage { // max life // Don't kill yourself if (validP.contains("Each") - && AllZone.getComputerPlayer().getLife() <= AllZone.getComputerPlayer().predictDamage(dmg, source, - false)) { + && (AllZone.getComputerPlayer().getLife() <= AllZone.getComputerPlayer().predictDamage(dmg, source, + false))) { return false; } // if we can kill human, do it if ((validP.contains("Each") || validP.contains("EachOpponent")) - && AllZone.getHumanPlayer().getLife() <= AllZone.getHumanPlayer().predictDamage(dmg, source, false)) { + && (AllZone.getHumanPlayer().getLife() <= AllZone.getHumanPlayer().predictDamage(dmg, source, false))) { return true; } @@ -1010,12 +1023,12 @@ public class AbilityFactory_DealDamage { } // evaluate both lists and pass only if human creatures are more // valuable - if (CardFactoryUtil.evaluateCreatureList(computerList) + minGain >= CardFactoryUtil + if ((CardFactoryUtil.evaluateCreatureList(computerList) + minGain) >= CardFactoryUtil .evaluateCreatureList(humanList)) { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -1038,7 +1051,8 @@ public class AbilityFactory_DealDamage { * a int. * @return a {@link forge.CardList} object. */ - private CardList getKillableCreatures(final AbilityFactory af, final SpellAbility sa, final Player player, final int dmg) { + private CardList getKillableCreatures(final AbilityFactory af, final SpellAbility sa, final Player player, + final int dmg) { final HashMap params = af.getMapParams(); final Card source = af.getHostCard(); @@ -1051,7 +1065,8 @@ public class AbilityFactory_DealDamage { CardList list = player.getCardsIn(Zone.Battlefield); list = list.getValidCards(validC.split(","), source.getController(), source); - CardListFilter filterKillable = new CardListFilter() { + final CardListFilter filterKillable = new CardListFilter() { + @Override public boolean addCard(final Card c) { return (c.predictDamage(dmg, source, false) >= c.getKillDamage()); } @@ -1086,19 +1101,19 @@ public class AbilityFactory_DealDamage { String validP = ""; int dmg; - if (damage.equals("X") && source.getSVar(damage).equals("Count$xPaid")) { + if (this.damage.equals("X") && source.getSVar(this.damage).equals("Count$xPaid")) { // Set PayX here to maximum value. dmg = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(dmg)); } else { - dmg = getNumDamage(sa); + dmg = this.getNumDamage(sa); } if (params.containsKey("ValidPlayers")) { validP = params.get("ValidPlayers"); } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); do { // A little trick to still check the SubAbilities, once we know we // want to play it if (tgt == null) { @@ -1108,22 +1123,22 @@ public class AbilityFactory_DealDamage { } else { // Don't get yourself killed if (validP.contains("Each") - && AllZone.getComputerPlayer().getLife() <= AllZone.getComputerPlayer().predictDamage(dmg, - source, false)) { + && (AllZone.getComputerPlayer().getLife() <= AllZone.getComputerPlayer().predictDamage(dmg, + source, false))) { return false; } // if we can kill human, do it if ((validP.contains("Each") || validP.contains("EachOpponent") || validP.contains("Targeted")) - && AllZone.getHumanPlayer().getLife() <= AllZone.getHumanPlayer().predictDamage(dmg, - source, false)) { + && (AllZone.getHumanPlayer().getLife() <= AllZone.getHumanPlayer().predictDamage(dmg, + source, false))) { break; } // Evaluate creatures getting killed - CardList humanList = getKillableCreatures(af, sa, AllZone.getHumanPlayer(), dmg); - CardList computerList = getKillableCreatures(af, sa, AllZone.getComputerPlayer(), dmg); - if (CardFactoryUtil.evaluateCreatureList(computerList) + 50 >= CardFactoryUtil + final CardList humanList = this.getKillableCreatures(af, sa, AllZone.getHumanPlayer(), dmg); + final CardList computerList = this.getKillableCreatures(af, sa, AllZone.getComputerPlayer(), dmg); + if ((CardFactoryUtil.evaluateCreatureList(computerList) + 50) >= CardFactoryUtil .evaluateCreatureList(humanList)) { return false; } @@ -1151,12 +1166,12 @@ public class AbilityFactory_DealDamage { * a {@link forge.card.spellability.SpellAbility} object. */ private void damageAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); - int dmg = getNumDamage(sa); + final int dmg = this.getNumDamage(sa); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); Player targetPlayer = null; if (tgt != null) { targetPlayer = tgt.getTargetPlayers().get(0); @@ -1179,15 +1194,18 @@ public class AbilityFactory_DealDamage { list = AbilityFactory.filterListByType(list, params.get("ValidCards"), sa); - for (Card c : list) + for (final Card c : list) { c.addDamage(dmg, card); + } if (players.equals("Each")) { - for (Player p : AllZone.getPlayersInGame()) + for (final Player p : AllZone.getPlayersInGame()) { p.addDamage(dmg, card); + } } else if (players.equals("EachOpponent")) { - for (Player p : AllZoneUtil.getOpponents(card.getController())) + for (final Player p : AllZoneUtil.getOpponents(card.getController())) { p.addDamage(dmg, card); + } } else if (players.equals("Self")) { card.getController().addDamage(dmg, card); } else if (players.equals("Targeted")) { diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Debuff.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Debuff.java index cae6a8dd8e5..30f20c9b816 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Debuff.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Debuff.java @@ -60,22 +60,22 @@ public final class AbilityFactory_Debuff { @Override public String getStackDescription() { - return debuffStackDescription(af, this); + return AbilityFactory_Debuff.debuffStackDescription(af, this); } @Override public boolean canPlayAI() { - return debuffCanPlayAI(af, this); + return AbilityFactory_Debuff.debuffCanPlayAI(af, this); } @Override public void resolve() { - debuffResolve(af, this); + AbilityFactory_Debuff.debuffResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return debuffTriggerAI(af, this, mandatory); + return AbilityFactory_Debuff.debuffTriggerAI(af, this, mandatory); } }; @@ -97,17 +97,17 @@ public final class AbilityFactory_Debuff { @Override public String getStackDescription() { - return debuffStackDescription(af, this); + return AbilityFactory_Debuff.debuffStackDescription(af, this); } @Override public boolean canPlayAI() { - return debuffCanPlayAI(af, this); + return AbilityFactory_Debuff.debuffCanPlayAI(af, this); } @Override public void resolve() { - debuffResolve(af, this); + AbilityFactory_Debuff.debuffResolve(af, this); } }; @@ -129,22 +129,22 @@ public final class AbilityFactory_Debuff { @Override public String getStackDescription() { - return debuffStackDescription(af, this); + return AbilityFactory_Debuff.debuffStackDescription(af, this); } @Override public void resolve() { - debuffResolve(af, this); + AbilityFactory_Debuff.debuffResolve(af, this); } @Override public boolean chkAIDrawback() { - return debuffDrawbackAI(af, this); + return AbilityFactory_Debuff.debuffDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return debuffTriggerAI(af, this, mandatory); + return AbilityFactory_Debuff.debuffTriggerAI(af, this, mandatory); } }; @@ -161,7 +161,7 @@ public final class AbilityFactory_Debuff { * @return a {@link java.util.ArrayList} object. */ private static ArrayList getKeywords(final HashMap params) { - ArrayList kws = new ArrayList(); + final ArrayList kws = new ArrayList(); if (params.containsKey("Keywords")) { kws.addAll(Arrays.asList(params.get("Keywords").split(" & "))); } @@ -180,13 +180,13 @@ public final class AbilityFactory_Debuff { * @return a {@link java.lang.String} object. */ private static String debuffStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); - ArrayList kws = getKeywords(params); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); + final ArrayList kws = AbilityFactory_Debuff.getKeywords(params); + final StringBuilder sb = new StringBuilder(); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -200,9 +200,9 @@ public final class AbilityFactory_Debuff { sb.append(host).append(" - "); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { - Card tgtC = it.next(); + final Card tgtC = it.next(); if (tgtC.isFaceDown()) { sb.append("Morph"); } else { @@ -226,7 +226,7 @@ public final class AbilityFactory_Debuff { sb.append("."); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -247,12 +247,12 @@ public final class AbilityFactory_Debuff { */ private static boolean debuffCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // if there is no target and host card isn't in play, don't activate - Card source = sa.getSourceCard(); - if (sa.getTarget() == null && !AllZoneUtil.isCardInPlay(source)) { + final Card source = sa.getSourceCard(); + if ((sa.getTarget() == null) && !AllZoneUtil.isCardInPlay(source)) { return false; } - Cost cost = sa.getPayCosts(); + final Cost cost = sa.getPayCosts(); // temporarily disabled until AI is improved if (!CostUtil.checkCreatureSacrificeCost(cost, source)) { @@ -267,11 +267,11 @@ public final class AbilityFactory_Debuff { return false; } - HashMap params = af.getMapParams(); - SpellAbility_Restriction restrict = sa.getRestrictions(); + final HashMap params = af.getMapParams(); + final SpellAbility_Restriction restrict = sa.getRestrictions(); // Phase Restrictions - if (AllZone.getStack().size() == 0 && AllZone.getPhase().isBefore(Constant.Phase.COMBAT_BEGIN)) { + if ((AllZone.getStack().size() == 0) && AllZone.getPhase().isBefore(Constant.Phase.COMBAT_BEGIN)) { // Instant-speed pumps should not be cast outside of combat when the // stack is empty if (!AbilityFactory.isSorcerySpeed(sa)) { @@ -279,20 +279,20 @@ public final class AbilityFactory_Debuff { } } - int activations = restrict.getNumberTurnActivations(); - int sacActivations = restrict.getActivationNumberSacrifice(); + final int activations = restrict.getNumberTurnActivations(); + final int sacActivations = restrict.getActivationNumberSacrifice(); // don't risk sacrificing a creature just to pump it - if (sacActivations != -1 && activations >= (sacActivations - 1)) { + if ((sacActivations != -1) && (activations >= (sacActivations - 1))) { return false; } - if (af.getAbTgt() == null || !af.getAbTgt().doesTarget()) { - ArrayList cards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); + if ((af.getAbTgt() == null) || !af.getAbTgt().doesTarget()) { + final ArrayList cards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); if (cards.size() == 0) { return false; } } else { - return debuffTgtAI(af, sa, getKeywords(params), false); + return AbilityFactory_Debuff.debuffTgtAI(af, sa, AbilityFactory_Debuff.getKeywords(params), false); } return false; @@ -310,12 +310,12 @@ public final class AbilityFactory_Debuff { * @return a boolean. */ private static boolean debuffDrawbackAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - if (af.getAbTgt() == null || !af.getAbTgt().doesTarget()) { + final HashMap params = af.getMapParams(); + if ((af.getAbTgt() == null) || !af.getAbTgt().doesTarget()) { // TODO - copied from AF_Pump.pumpDrawbackAI() - what should be // here? } else { - return debuffTgtAI(af, sa, getKeywords(params), false); + return AbilityFactory_Debuff.debuffTgtAI(af, sa, AbilityFactory_Debuff.getKeywords(params), false); } return true; @@ -343,9 +343,9 @@ public final class AbilityFactory_Debuff { return false; } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); tgt.resetTargets(); - CardList list = getCurseCreatures(af, sa, kws); + CardList list = AbilityFactory_Debuff.getCurseCreatures(af, sa, kws); list = list.getValidCards(tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); // several uses here: @@ -356,7 +356,7 @@ public final class AbilityFactory_Debuff { // 3a. remove Persist? if (list.isEmpty()) { - return mandatory && debuffMandatoryTarget(af, sa, mandatory); + return mandatory && AbilityFactory_Debuff.debuffMandatoryTarget(af, sa, mandatory); } while (tgt.getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { @@ -364,9 +364,9 @@ public final class AbilityFactory_Debuff { // boolean goodt = false; if (list.isEmpty()) { - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { if (mandatory) { - return debuffMandatoryTarget(af, sa, mandatory); + return AbilityFactory_Debuff.debuffMandatoryTarget(af, sa, mandatory); } tgt.resetTargets(); @@ -400,12 +400,13 @@ public final class AbilityFactory_Debuff { */ private static CardList getCurseCreatures(final AbilityFactory af, final SpellAbility sa, final ArrayList kws) { - Card hostCard = af.getHostCard(); + final Card hostCard = af.getHostCard(); CardList list = AllZoneUtil.getCreaturesInPlay(AllZone.getHumanPlayer()); list = list.getTargetableCards(hostCard); if (!list.isEmpty()) { list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.hasAnyKeyword(kws); // don't add duplicate negative // keywords @@ -431,7 +432,7 @@ public final class AbilityFactory_Debuff { */ private static boolean debuffMandatoryTarget(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); list = list.getValidCards(tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { @@ -440,13 +441,13 @@ public final class AbilityFactory_Debuff { } // Remove anything that's already been targeted - for (Card c : tgt.getTargetCards()) { + for (final Card c : tgt.getTargetCards()) { list.remove(c); } - CardList pref = list.getController(AllZone.getHumanPlayer()); - CardList forced = list.getController(AllZone.getComputerPlayer()); - Card source = sa.getSourceCard(); + final CardList pref = list.getController(AllZone.getHumanPlayer()); + final CardList forced = list.getController(AllZone.getComputerPlayer()); + final Card source = sa.getSourceCard(); while (tgt.getNumTargeted() < tgt.getMaxTargets(source, sa)) { if (pref.isEmpty()) { @@ -510,16 +511,16 @@ public final class AbilityFactory_Debuff { return false; } - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - ArrayList kws = getKeywords(params); + final ArrayList kws = AbilityFactory_Debuff.getKeywords(params); if (sa.getTarget() == null) { if (mandatory) { return true; } } else { - return debuffTgtAI(af, sa, kws, mandatory); + return AbilityFactory_Debuff.debuffTgtAI(af, sa, kws, mandatory); } return true; @@ -536,13 +537,13 @@ public final class AbilityFactory_Debuff { * a {@link forge.card.spellability.SpellAbility} object. */ private static void debuffResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); - ArrayList kws = getKeywords(params); + final ArrayList kws = AbilityFactory_Debuff.getKeywords(params); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -552,7 +553,7 @@ public final class AbilityFactory_Debuff { for (final Card tgtC : tgtCards) { final ArrayList hadIntrinsic = new ArrayList(); if (AllZoneUtil.isCardInPlay(tgtC) && CardFactoryUtil.canTarget(host, tgtC)) { - for (String kw : kws) { + for (final String kw : kws) { if (tgtC.getIntrinsicKeyword().contains(kw)) { hadIntrinsic.add(kw); } @@ -564,9 +565,10 @@ public final class AbilityFactory_Debuff { AllZone.getEndOfTurn().addUntil(new Command() { private static final long serialVersionUID = 5387486776282932314L; + @Override public void execute() { if (AllZoneUtil.isCardInPlay(tgtC)) { - for (String kw : hadIntrinsic) { + for (final String kw : hadIntrinsic) { tgtC.addIntrinsicKeyword(kw); } } @@ -597,22 +599,22 @@ public final class AbilityFactory_Debuff { @Override public boolean canPlayAI() { - return debuffAllCanPlayAI(af, this); + return AbilityFactory_Debuff.debuffAllCanPlayAI(af, this); } @Override public String getStackDescription() { - return debuffAllStackDescription(af, this); + return AbilityFactory_Debuff.debuffAllStackDescription(af, this); } @Override public void resolve() { - debuffAllResolve(af, this); + AbilityFactory_Debuff.debuffAllResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return debuffAllTriggerAI(af, this, mandatory); + return AbilityFactory_Debuff.debuffAllTriggerAI(af, this, mandatory); } }; // SpellAbility @@ -631,22 +633,22 @@ public final class AbilityFactory_Debuff { * @since 1.0.15 */ public static SpellAbility createSpellDebuffAll(final AbilityFactory af) { - SpellAbility spDebuffAll = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { + final SpellAbility spDebuffAll = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { private static final long serialVersionUID = 399707924254248213L; @Override public boolean canPlayAI() { - return debuffAllCanPlayAI(af, this); + return AbilityFactory_Debuff.debuffAllCanPlayAI(af, this); } @Override public String getStackDescription() { - return debuffAllStackDescription(af, this); + return AbilityFactory_Debuff.debuffAllStackDescription(af, this); } @Override public void resolve() { - debuffAllResolve(af, this); + AbilityFactory_Debuff.debuffAllResolve(af, this); } }; // SpellAbility @@ -664,27 +666,27 @@ public final class AbilityFactory_Debuff { * @since 1.0.15 */ public static SpellAbility createDrawbackDebuffAll(final AbilityFactory af) { - SpellAbility dbDebuffAll = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { + final SpellAbility dbDebuffAll = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { private static final long serialVersionUID = 3262199296469706708L; @Override public String getStackDescription() { - return debuffAllStackDescription(af, this); + return AbilityFactory_Debuff.debuffAllStackDescription(af, this); } @Override public void resolve() { - debuffAllResolve(af, this); + AbilityFactory_Debuff.debuffAllResolve(af, this); } @Override public boolean chkAIDrawback() { - return debuffAllChkDrawbackAI(af, this); + return AbilityFactory_Debuff.debuffAllChkDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return debuffAllTriggerAI(af, this, mandatory); + return AbilityFactory_Debuff.debuffAllTriggerAI(af, this, mandatory); } }; // SpellAbility @@ -704,15 +706,15 @@ public final class AbilityFactory_Debuff { */ private static boolean debuffAllCanPlayAI(final AbilityFactory af, final SpellAbility sa) { String valid = ""; - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); // final Card source = sa.getSourceCard(); - Card hostCard = af.getHostCard(); - HashMap params = af.getMapParams(); + final Card hostCard = af.getHostCard(); + final HashMap params = af.getMapParams(); - boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); // to - // prevent - // runaway - // activations + final boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); // to + // prevent + // runaway + // activations if (params.containsKey("ValidCards")) { valid = params.get("ValidCards"); @@ -727,6 +729,7 @@ public final class AbilityFactory_Debuff { // only count creatures that can attack human = human.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return CombatUtil.canAttack(c); } @@ -755,9 +758,9 @@ public final class AbilityFactory_Debuff { * a {@link forge.card.spellability.SpellAbility} object. */ private static void debuffAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card hostCard = af.getHostCard(); - ArrayList kws = getKeywords(params); + final HashMap params = af.getMapParams(); + final Card hostCard = af.getHostCard(); + final ArrayList kws = AbilityFactory_Debuff.getKeywords(params); String valid = ""; if (params.containsKey("ValidCards")) { @@ -770,7 +773,7 @@ public final class AbilityFactory_Debuff { for (final Card tgtC : list) { final ArrayList hadIntrinsic = new ArrayList(); if (AllZoneUtil.isCardInPlay(tgtC) && CardFactoryUtil.canTarget(hostCard, tgtC)) { - for (String kw : kws) { + for (final String kw : kws) { if (tgtC.getIntrinsicKeyword().contains(kw)) { hadIntrinsic.add(kw); } @@ -782,9 +785,10 @@ public final class AbilityFactory_Debuff { AllZone.getEndOfTurn().addUntil(new Command() { private static final long serialVersionUID = 7486231071095628674L; + @Override public void execute() { if (AllZoneUtil.isCardInPlay(tgtC)) { - for (String kw : hadIntrinsic) { + for (final String kw : hadIntrinsic) { tgtC.addIntrinsicKeyword(kw); } } @@ -842,8 +846,8 @@ public final class AbilityFactory_Debuff { * @return a {@link java.lang.String} object. */ private static String debuffAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); String desc = ""; if (params.containsKey("SpellDescription")) { @@ -860,7 +864,7 @@ public final class AbilityFactory_Debuff { sb.append(desc); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_DelayedTrigger.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_DelayedTrigger.java index 825619ea99b..a509689a9d3 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_DelayedTrigger.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_DelayedTrigger.java @@ -18,7 +18,7 @@ import forge.card.trigger.TriggerHandler; * @version $Id$ */ public class AbilityFactory_DelayedTrigger { - /** Constant tempCreator */ + /** Constant tempCreator. */ private static AbilityFactory tempCreator = new AbilityFactory(); /** @@ -37,22 +37,22 @@ public class AbilityFactory_DelayedTrigger { @Override public boolean canPlayAI() { - return delTrigCanPlayAI(af, this); + return AbilityFactory_DelayedTrigger.delTrigCanPlayAI(af, this); } @Override public void resolve() { - doResolve(af, this); + AbilityFactory_DelayedTrigger.doResolve(af, this); } @Override public String getStackDescription() { - return delTrigStackDescription(af, this); + return AbilityFactory_DelayedTrigger.delTrigStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return doTriggerAI(af, this, mandatory); + return AbilityFactory_DelayedTrigger.doTriggerAI(af, this, mandatory); } }; return ability; @@ -74,17 +74,17 @@ public class AbilityFactory_DelayedTrigger { @Override public boolean canPlayAI() { - return delTrigCanPlayAI(af, this); + return AbilityFactory_DelayedTrigger.delTrigCanPlayAI(af, this); } @Override public void resolve() { - doResolve(af, this); + AbilityFactory_DelayedTrigger.doResolve(af, this); } @Override public String getStackDescription() { - return delTrigStackDescription(af, this); + return AbilityFactory_DelayedTrigger.delTrigStackDescription(af, this); } }; return spell; @@ -95,27 +95,27 @@ public class AbilityFactory_DelayedTrigger { * getDrawback. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @return a {@link forge.card.spellability.Ability_Sub} object. */ - public static Ability_Sub getDrawback(final AbilityFactory AF) { - final Ability_Sub drawback = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()) { + public static Ability_Sub getDrawback(final AbilityFactory abilityFactory) { + final Ability_Sub drawback = new Ability_Sub(abilityFactory.getHostCard(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = 6192972525033429820L; @Override public boolean chkAIDrawback() { - return doChkAI_Drawback(AF, this); + return AbilityFactory_DelayedTrigger.doChkDrawbackAI(abilityFactory, this); } @Override public boolean doTrigger(final boolean mandatory) { - return doTriggerAI(AF, this, mandatory); + return AbilityFactory_DelayedTrigger.doTriggerAI(abilityFactory, this, mandatory); } @Override public void resolve() { - doResolve(AF, this); + AbilityFactory_DelayedTrigger.doResolve(abilityFactory, this); } }; @@ -127,16 +127,17 @@ public class AbilityFactory_DelayedTrigger { * doChkAI_Drawback. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. - * @param SA + * @param spellAbility * a {@link forge.card.spellability.SpellAbility} object. * @return a boolean. */ - private static boolean doChkAI_Drawback(final AbilityFactory AF, final SpellAbility SA) { - HashMap params = AF.getMapParams(); - String svarName = params.get("Execute"); - SpellAbility trigsa = tempCreator.getAbility(AF.getHostCard().getSVar(svarName), AF.getHostCard()); + private static boolean doChkDrawbackAI(final AbilityFactory abilityFactory, final SpellAbility spellAbility) { + final HashMap params = abilityFactory.getMapParams(); + final String svarName = params.get("Execute"); + final SpellAbility trigsa = AbilityFactory_DelayedTrigger.tempCreator.getAbility( + abilityFactory.getHostCard().getSVar(svarName), abilityFactory.getHostCard()); if (trigsa instanceof Ability_Sub) { return ((Ability_Sub) trigsa).chkAIDrawback(); @@ -150,16 +151,17 @@ public class AbilityFactory_DelayedTrigger { * doTriggerAI. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. - * @param SA + * @param spellAbility * a {@link forge.card.spellability.SpellAbility} object. * @return a boolean. */ - private static boolean doTriggerAI(final AbilityFactory AF, final SpellAbility SA, final boolean mandatory) { - HashMap params = AF.getMapParams(); - String svarName = params.get("Execute"); - SpellAbility trigsa = tempCreator.getAbility(AF.getHostCard().getSVar(svarName), AF.getHostCard()); + private static boolean doTriggerAI(final AbilityFactory abilityFactory, final SpellAbility spellAbility, final boolean mandatory) { + final HashMap params = abilityFactory.getMapParams(); + final String svarName = params.get("Execute"); + final SpellAbility trigsa = AbilityFactory_DelayedTrigger.tempCreator.getAbility( + abilityFactory.getHostCard().getSVar(svarName), abilityFactory.getHostCard()); if (!params.containsKey("OptionalDecider")) { return trigsa.doTrigger(true); @@ -180,9 +182,10 @@ public class AbilityFactory_DelayedTrigger { * @return a boolean. */ private static boolean delTrigCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - String svarName = params.get("Execute"); - SpellAbility trigsa = tempCreator.getAbility(af.getHostCard().getSVar(svarName), af.getHostCard()); + final HashMap params = af.getMapParams(); + final String svarName = params.get("Execute"); + final SpellAbility trigsa = AbilityFactory_DelayedTrigger.tempCreator.getAbility( + af.getHostCard().getSVar(svarName), af.getHostCard()); return trigsa.canPlayAI(); } @@ -198,9 +201,9 @@ public class AbilityFactory_DelayedTrigger { * a {@link forge.card.spellability.SpellAbility} object. */ private static String delTrigStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap mapParams = af.getMapParams(); + final HashMap mapParams = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -214,7 +217,7 @@ public class AbilityFactory_DelayedTrigger { sb.append(mapParams.get("TriggerDescription")); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -228,13 +231,13 @@ public class AbilityFactory_DelayedTrigger { * doResolve. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. - * @param SA + * @param spellAbility * a {@link forge.card.spellability.SpellAbility} object. */ - private static void doResolve(final AbilityFactory AF, final SpellAbility SA) { - HashMap mapParams = AF.getMapParams(); + private static void doResolve(final AbilityFactory abilityFactory, final SpellAbility spellAbility) { + final HashMap mapParams = abilityFactory.getMapParams(); if (mapParams.containsKey("Cost")) { mapParams.remove("Cost"); @@ -245,7 +248,7 @@ public class AbilityFactory_DelayedTrigger { mapParams.remove("SpellDescription"); } - Trigger delTrig = TriggerHandler.parseTrigger(mapParams, AF.getHostCard(), true); + final Trigger delTrig = TriggerHandler.parseTrigger(mapParams, abilityFactory.getHostCard(), true); AllZone.getTriggerHandler().registerDelayedTrigger(delTrig); } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Destroy.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Destroy.java index c1b84d230a5..c9e92fb4c11 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Destroy.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Destroy.java @@ -53,22 +53,22 @@ public class AbilityFactory_Destroy { @Override public String getStackDescription() { - return destroyStackDescription(af, this); + return AbilityFactory_Destroy.destroyStackDescription(af, this); } @Override public boolean canPlayAI() { - return destroyCanPlayAI(af, this); + return AbilityFactory_Destroy.destroyCanPlayAI(af, this); } @Override public void resolve() { - destroyResolve(af, this); + AbilityFactory_Destroy.destroyResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return destroyDoTriggerAI(af, this, mandatory); + return AbilityFactory_Destroy.destroyDoTriggerAI(af, this, mandatory); } }; @@ -90,17 +90,17 @@ public class AbilityFactory_Destroy { @Override public String getStackDescription() { - return destroyStackDescription(af, this); + return AbilityFactory_Destroy.destroyStackDescription(af, this); } @Override public boolean canPlayAI() { - return destroyCanPlayAI(af, this); + return AbilityFactory_Destroy.destroyCanPlayAI(af, this); } @Override public void resolve() { - destroyResolve(af, this); + AbilityFactory_Destroy.destroyResolve(af, this); } }; @@ -122,7 +122,7 @@ public class AbilityFactory_Destroy { @Override public String getStackDescription() { - return destroyStackDescription(af, this); + return AbilityFactory_Destroy.destroyStackDescription(af, this); } @Override @@ -132,12 +132,12 @@ public class AbilityFactory_Destroy { @Override public void resolve() { - destroyResolve(af, this); + AbilityFactory_Destroy.destroyResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return destroyDoTriggerAI(af, this, mandatory); + return AbilityFactory_Destroy.destroyDoTriggerAI(af, this, mandatory); } }; return dbDestroy; @@ -157,11 +157,11 @@ public class AbilityFactory_Destroy { private static boolean destroyCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI needs to be expanded, since this function can be pretty complex // based on what the expected targets could be - Random r = MyRandom.getRandom(); - Cost abCost = sa.getPayCosts(); - Target abTgt = sa.getTarget(); + final Random r = MyRandom.getRandom(); + final Cost abCost = sa.getPayCosts(); + final Target abTgt = sa.getTarget(); final Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); final boolean noRegen = params.containsKey("NoRegen"); CardList list; @@ -178,8 +178,9 @@ public class AbilityFactory_Destroy { // TODO filter out things that could regenerate in response? // might be tougher? list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - return (c.getShield() == 0 && !ComputerUtil.canRegenerate(c)); + return ((c.getShield() == 0) && !ComputerUtil.canRegenerate(c)); } }); } @@ -213,8 +214,8 @@ public class AbilityFactory_Destroy { // target loop while (abTgt.getNumTargeted() < abTgt.getMaxTargets(sa.getSourceCard(), sa)) { if (list.size() == 0) { - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -238,8 +239,8 @@ public class AbilityFactory_Destroy { } if (choice == null) { // can't find anything left - if (abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa) - || abTgt.getNumTargeted() == 0) { + if ((abTgt.getNumTargeted() < abTgt.getMinTargets(sa.getSourceCard(), sa)) + || (abTgt.getNumTargeted() == 0)) { abTgt.resetTargets(); return false; } else { @@ -255,7 +256,7 @@ public class AbilityFactory_Destroy { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -281,9 +282,9 @@ public class AbilityFactory_Destroy { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); final Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); final boolean noRegen = params.containsKey("NoRegen"); if (tgt != null) { @@ -292,7 +293,7 @@ public class AbilityFactory_Destroy { list = list.getTargetableCards(source); list = list.getValidCards(tgt.getValidTgts(), source.getController(), source); - if (list.size() == 0 || list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if ((list.size() == 0) || (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa))) { return false; } @@ -307,19 +308,21 @@ public class AbilityFactory_Destroy { // TODO filter out things that could regenerate in response? // might be tougher? preferred = preferred.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getShield() == 0; } }); } - for (Card c : preferred) { + for (final Card c : preferred) { list.remove(c); } while (tgt.getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { if (preferred.size() == 0) { - if (tgt.getNumTargeted() == 0 || tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) { + if ((tgt.getNumTargeted() == 0) + || (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa))) { if (!mandatory) { tgt.resetTargets(); return false; @@ -367,7 +370,7 @@ public class AbilityFactory_Destroy { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { return subAb.doTrigger(mandatory); } @@ -387,19 +390,19 @@ public class AbilityFactory_Destroy { * @return a {@link java.lang.String} object. */ private static String destroyStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); final boolean noRegen = params.containsKey("NoRegen"); - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -414,9 +417,9 @@ public class AbilityFactory_Destroy { sb.append("Destroy "); - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { - Card tgtC = it.next(); + final Card tgtC = it.next(); if (tgtC.isFaceDown()) { sb.append("Morph ").append("(").append(tgtC.getUniqueNumber()).append(")"); } else { @@ -449,7 +452,7 @@ public class AbilityFactory_Destroy { } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -468,15 +471,15 @@ public class AbilityFactory_Destroy { * a {@link forge.card.spellability.SpellAbility} object. */ private static void destroyResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); final boolean noRegen = params.containsKey("NoRegen"); - Card card = sa.getSourceCard(); + final Card card = sa.getSourceCard(); ArrayList tgtCards; - ArrayList untargetedCards = new ArrayList(); + final ArrayList untargetedCards = new ArrayList(); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -484,13 +487,14 @@ public class AbilityFactory_Destroy { } if (params.containsKey("Radiance")) { - for (Card c : CardUtil.getRadiance(af.getHostCard(), tgtCards.get(0), params.get("ValidTgts").split(","))) { + for (final Card c : CardUtil.getRadiance(af.getHostCard(), tgtCards.get(0), + params.get("ValidTgts").split(","))) { untargetedCards.add(c); } } - for (Card tgtC : tgtCards) { - if (AllZoneUtil.isCardInPlay(tgtC) && (tgt == null || CardFactoryUtil.canTarget(card, tgtC))) { + for (final Card tgtC : tgtCards) { + if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || CardFactoryUtil.canTarget(card, tgtC))) { if (noRegen) { AllZone.getGameAction().destroyNoRegeneration(tgtC); } else { @@ -499,7 +503,7 @@ public class AbilityFactory_Destroy { } } - for (Card unTgtC : untargetedCards) { + for (final Card unTgtC : untargetedCards) { if (AllZoneUtil.isCardInPlay(unTgtC)) { if (noRegen) { AllZone.getGameAction().destroyNoRegeneration(unTgtC); @@ -529,26 +533,26 @@ public class AbilityFactory_Destroy { private static final long serialVersionUID = -1376444173137861437L; private final HashMap params = af.getMapParams(); - private final boolean noRegen = params.containsKey("NoRegen"); + private final boolean noRegen = this.params.containsKey("NoRegen"); @Override public String getStackDescription() { - return destroyAllStackDescription(af, this, noRegen); + return AbilityFactory_Destroy.destroyAllStackDescription(af, this, this.noRegen); } @Override public boolean canPlayAI() { - return destroyAllCanPlayAI(af, this, noRegen); + return AbilityFactory_Destroy.destroyAllCanPlayAI(af, this, this.noRegen); } @Override public void resolve() { - destroyAllResolve(af, this, noRegen); + AbilityFactory_Destroy.destroyAllResolve(af, this, this.noRegen); } @Override public boolean doTrigger(final boolean mandatory) { - return destroyAllCanPlayAI(af, this, noRegen); + return AbilityFactory_Destroy.destroyAllCanPlayAI(af, this, this.noRegen); } }; @@ -569,25 +573,25 @@ public class AbilityFactory_Destroy { private static final long serialVersionUID = -3712659336576469102L; private final HashMap params = af.getMapParams(); - private final boolean noRegen = params.containsKey("NoRegen"); + private final boolean noRegen = this.params.containsKey("NoRegen"); @Override public String getStackDescription() { - if (params.containsKey("SpellDescription")) { - return af.getHostCard().getName() + " - " + params.get("SpellDescription"); + if (this.params.containsKey("SpellDescription")) { + return af.getHostCard().getName() + " - " + this.params.get("SpellDescription"); } else { - return destroyAllStackDescription(af, this, noRegen); + return AbilityFactory_Destroy.destroyAllStackDescription(af, this, this.noRegen); } } @Override public boolean canPlayAI() { - return destroyAllCanPlayAI(af, this, noRegen); + return AbilityFactory_Destroy.destroyAllCanPlayAI(af, this, this.noRegen); } @Override public void resolve() { - destroyAllResolve(af, this, noRegen); + AbilityFactory_Destroy.destroyAllResolve(af, this, this.noRegen); } }; @@ -608,20 +612,20 @@ public class AbilityFactory_Destroy { private static final long serialVersionUID = -242160421677518351L; private final HashMap params = af.getMapParams(); - private final boolean noRegen = params.containsKey("NoRegen"); + private final boolean noRegen = this.params.containsKey("NoRegen"); @Override public String getStackDescription() { - if (params.containsKey("SpellDescription")) { - return af.getHostCard().getName() + " - " + params.get("SpellDescription"); + if (this.params.containsKey("SpellDescription")) { + return af.getHostCard().getName() + " - " + this.params.get("SpellDescription"); } else { - return destroyAllStackDescription(af, this, noRegen); + return AbilityFactory_Destroy.destroyAllStackDescription(af, this, this.noRegen); } } @Override public void resolve() { - destroyAllResolve(af, this, noRegen); + AbilityFactory_Destroy.destroyAllResolve(af, this, this.noRegen); } @Override @@ -652,21 +656,21 @@ public class AbilityFactory_Destroy { * a boolean. * @return a {@link java.lang.String} object. */ - private static String destroyAllStackDescription(final AbilityFactory af, - final SpellAbility sa, final boolean noRegen) { + private static String destroyAllStackDescription(final AbilityFactory af, final SpellAbility sa, + final boolean noRegen) { - StringBuilder sb = new StringBuilder(); - String name = af.getHostCard().getName(); - HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final String name = af.getHostCard().getName(); + final HashMap params = af.getMapParams(); - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -680,7 +684,7 @@ public class AbilityFactory_Destroy { sb.append(" They can't be regenerated"); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -704,8 +708,8 @@ public class AbilityFactory_Destroy { private static boolean destroyAllCanPlayAI(final AbilityFactory af, final SpellAbility sa, final boolean noRegen) { // AI needs to be expanded, since this function can be pretty complex // based on what the expected targets could be - Random r = MyRandom.getRandom(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); final HashMap params = af.getMapParams(); String valid = ""; @@ -716,7 +720,7 @@ public class AbilityFactory_Destroy { if (valid.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); valid = valid.replace("X", Integer.toString(xPay)); } @@ -724,7 +728,7 @@ public class AbilityFactory_Destroy { CardList humanlist = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); CardList computerlist = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (sa.getTarget() != null) { tgt.resetTargets(); @@ -751,25 +755,25 @@ public class AbilityFactory_Destroy { // if only creatures are affected evaluate both lists and pass only if // human creatures are more valuable - if (humanlist.getNotType("Creature").size() == 0 && computerlist.getNotType("Creature").size() == 0) { - if (CardFactoryUtil.evaluateCreatureList(computerlist) + 200 >= CardFactoryUtil + if ((humanlist.getNotType("Creature").size() == 0) && (computerlist.getNotType("Creature").size() == 0)) { + if ((CardFactoryUtil.evaluateCreatureList(computerlist) + 200) >= CardFactoryUtil .evaluateCreatureList(humanlist)) { return false; } } // only lands involved - else if (humanlist.getNotType("Land").size() == 0 && computerlist.getNotType("Land").size() == 0) { - if (CardFactoryUtil.evaluatePermanentList(computerlist) + 1 >= CardFactoryUtil + else if ((humanlist.getNotType("Land").size() == 0) && (computerlist.getNotType("Land").size() == 0)) { + if ((CardFactoryUtil.evaluatePermanentList(computerlist) + 1) >= CardFactoryUtil .evaluatePermanentList(humanlist)) { return false; } } // otherwise evaluate both lists by CMC and pass only if human // permanents are more valuable - else if (CardFactoryUtil.evaluatePermanentList(computerlist) + 3 >= CardFactoryUtil + else if ((CardFactoryUtil.evaluatePermanentList(computerlist) + 3) >= CardFactoryUtil .evaluatePermanentList(humanlist)) { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -790,11 +794,11 @@ public class AbilityFactory_Destroy { * a boolean. */ private static void destroyAllResolve(final AbilityFactory af, final SpellAbility sa, final boolean noRegen) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final Card card = sa.getSourceCard(); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); Player targetPlayer = null; if (tgt != null) { targetPlayer = tgt.getTargetPlayers().get(0); @@ -821,7 +825,7 @@ public class AbilityFactory_Destroy { list = AbilityFactory.filterListByType(list, valid, sa); - boolean remDestroyed = params.containsKey("RememberDestroyed"); + final boolean remDestroyed = params.containsKey("RememberDestroyed"); if (remDestroyed) { card.clearRemembered(); } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Effect.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Effect.java index 5b1db0a3a7f..9918aadc74c 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Effect.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Effect.java @@ -9,9 +9,9 @@ import forge.Card; import forge.CardList; import forge.Command; import forge.ComputerUtil; +import forge.Constant.Zone; import forge.MyRandom; import forge.Player; -import forge.Constant.Zone; import forge.card.spellability.Ability_Activated; import forge.card.spellability.Ability_Sub; import forge.card.spellability.Spell; @@ -34,36 +34,37 @@ public class AbilityFactory_Effect { * createAbilityEffect. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @return a {@link forge.card.spellability.SpellAbility} object. */ - public static SpellAbility createAbilityEffect(final AbilityFactory AF) { + public static SpellAbility createAbilityEffect(final AbilityFactory abilityFactory) { - final SpellAbility abEffect = new Ability_Activated(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility abEffect = new Ability_Activated(abilityFactory.getHostCard(), abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = 8869422603616247307L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; @Override public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return effectStackDescription(af, this); + return AbilityFactory_Effect.effectStackDescription(this.af, this); } + @Override public boolean canPlayAI() { - return effectCanPlayAI(af, this); + return AbilityFactory_Effect.effectCanPlayAI(this.af, this); } @Override public void resolve() { - effectResolve(af, this); + AbilityFactory_Effect.effectResolve(this.af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return effectDoTriggerAI(af, this, mandatory); + return AbilityFactory_Effect.effectDoTriggerAI(this.af, this, mandatory); } }; @@ -75,30 +76,31 @@ public class AbilityFactory_Effect { * createSpellEffect. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @return a {@link forge.card.spellability.SpellAbility} object. */ - public static SpellAbility createSpellEffect(final AbilityFactory AF) { - final SpellAbility spEffect = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + public static SpellAbility createSpellEffect(final AbilityFactory abilityFactory) { + final SpellAbility spEffect = new Spell(abilityFactory.getHostCard(), abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = 6631124959690157874L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; @Override public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return effectStackDescription(af, this); + return AbilityFactory_Effect.effectStackDescription(this.af, this); } + @Override public boolean canPlayAI() { - return effectCanPlayAI(af, this); + return AbilityFactory_Effect.effectCanPlayAI(this.af, this); } @Override public void resolve() { - effectResolve(af, this); + AbilityFactory_Effect.effectResolve(this.af, this); } }; @@ -110,30 +112,31 @@ public class AbilityFactory_Effect { * createDrawbackEffect. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @return a {@link forge.card.spellability.SpellAbility} object. */ - public static SpellAbility createDrawbackEffect(final AbilityFactory AF) { - final SpellAbility dbEffect = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()) { + public static SpellAbility createDrawbackEffect(final AbilityFactory abilityFactory) { + final SpellAbility dbEffect = new Ability_Sub(abilityFactory.getHostCard(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = 6631124959690157874L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; @Override public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return effectStackDescription(af, this); + return AbilityFactory_Effect.effectStackDescription(this.af, this); } + @Override public boolean canPlayAI() { - return effectCanPlayAI(af, this); + return AbilityFactory_Effect.effectCanPlayAI(this.af, this); } @Override public void resolve() { - effectResolve(af, this); + AbilityFactory_Effect.effectResolve(this.af, this); } @Override @@ -143,7 +146,7 @@ public class AbilityFactory_Effect { @Override public boolean doTrigger(final boolean mandatory) { - return effectDoTriggerAI(af, this, mandatory); + return AbilityFactory_Effect.effectDoTriggerAI(this.af, this, mandatory); } }; @@ -162,7 +165,7 @@ public class AbilityFactory_Effect { * @return a {@link java.lang.String} object. */ public static String effectStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -172,7 +175,7 @@ public class AbilityFactory_Effect { sb.append(sa.getDescription()); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -192,23 +195,23 @@ public class AbilityFactory_Effect { * @return a boolean. */ public static boolean effectCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Random r = MyRandom.getRandom(); - HashMap params = af.getMapParams(); + final Random r = MyRandom.getRandom(); + final HashMap params = af.getMapParams(); - String stackable = params.get("Stackable"); + final String stackable = params.get("Stackable"); - if (stackable != null && stackable.equals("False")) { + if ((stackable != null) && stackable.equals("False")) { String name = params.get("Name"); if (name == null) { name = sa.getSourceCard().getName() + "'s Effect"; } - CardList list = sa.getActivatingPlayer().getCardsIn(Zone.Battlefield, name); + final CardList list = sa.getActivatingPlayer().getCardsIn(Zone.Battlefield, name); if (list.size() != 0) { return false; } } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); if (tgt.canOnlyTgtOpponent()) { @@ -237,14 +240,14 @@ public class AbilityFactory_Effect { public static boolean effectDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { if (!ComputerUtil.canPayCost(sa) && !mandatory) { // payment it's usually - // not mandatory + // not mandatory return false; } // TODO: Add targeting effects // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -263,8 +266,8 @@ public class AbilityFactory_Effect { * a {@link forge.card.spellability.SpellAbility} object. */ public static void effectResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card card = af.getHostCard(); String[] effectAbilities = null; String[] effectTriggers = null; @@ -308,8 +311,8 @@ public class AbilityFactory_Effect { return; } - Player controller = sa.getActivatingPlayer(); - Card eff = new Card(); + final Player controller = sa.getActivatingPlayer(); + final Card eff = new Card(); eff.setName(name); eff.addType("Effect"); // Or Emblem eff.setToken(true); // Set token to true, so when leaving play it gets @@ -327,50 +330,51 @@ public class AbilityFactory_Effect { // Abilities, triggers and SVars work the same as they do for Token // Grant abilities if (effectAbilities != null) { - for (String s : effectAbilities) { - AbilityFactory abFactory = new AbilityFactory(); - String actualAbility = af.getHostCard().getSVar(s); + for (final String s : effectAbilities) { + final AbilityFactory abFactory = new AbilityFactory(); + final String actualAbility = af.getHostCard().getSVar(s); - SpellAbility grantedAbility = abFactory.getAbility(actualAbility, eff); + final SpellAbility grantedAbility = abFactory.getAbility(actualAbility, eff); eff.addSpellAbility(grantedAbility); } } // Grant triggers if (effectTriggers != null) { - for (String s : effectTriggers) { - String actualTrigger = af.getHostCard().getSVar(s); + for (final String s : effectTriggers) { + final String actualTrigger = af.getHostCard().getSVar(s); - Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, eff, true); + final Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, eff, true); eff.addTrigger(parsedTrigger); } } // Grant static abilities if (effectStaticAbilities != null) { - for (String s : effectStaticAbilities) + for (final String s : effectStaticAbilities) { eff.addStaticAbility(af.getHostCard().getSVar(s)); + } } // Grant SVars if (effectSVars != null) { - for (String s : effectSVars) { - String actualSVar = af.getHostCard().getSVar(s); + for (final String s : effectSVars) { + final String actualSVar = af.getHostCard().getSVar(s); eff.setSVar(s, actualSVar); } } // Grant Keywords if (effectKeywords != null) { - for (String s : effectKeywords) { - String actualKeyword = af.getHostCard().getSVar(s); + for (final String s : effectKeywords) { + final String actualKeyword = af.getHostCard().getSVar(s); eff.addIntrinsicKeyword(actualKeyword); } } // Set Remembered if (effectRemembered != null) { - for (Card c : AbilityFactory.getDefinedCards(card, effectRemembered, sa)) { + for (final Card c : AbilityFactory.getDefinedCards(card, effectRemembered, sa)) { eff.addRemembered(c); } } @@ -381,17 +385,18 @@ public class AbilityFactory_Effect { } // Duration - String duration = params.get("Duration"); - if (duration == null || !duration.equals("Permanent")) { + final String duration = params.get("Duration"); + if ((duration == null) || !duration.equals("Permanent")) { final Command endEffect = new Command() { private static final long serialVersionUID = -5861759814760561373L; + @Override public void execute() { AllZone.getGameAction().exile(e); } }; - if (duration == null || duration.equals("EndOfTurn")) { + if ((duration == null) || duration.equals("EndOfTurn")) { AllZone.getEndOfTurn().addUntil(endEffect); } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_EndGameCondition.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_EndGameCondition.java index 9c16c73c28c..d460dddf043 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_EndGameCondition.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_EndGameCondition.java @@ -49,21 +49,22 @@ public final class AbilityFactory_EndGameCondition { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return winsGameStackDescription(af, this); + return AbilityFactory_EndGameCondition.winsGameStackDescription(af, this); } + @Override public boolean canPlayAI() { - return winsGameCanPlayAI(af, this); + return AbilityFactory_EndGameCondition.winsGameCanPlayAI(af, this); } @Override public void resolve() { - winsGameResolve(af, this); + AbilityFactory_EndGameCondition.winsGameResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return winsGameDoTriggerAI(af, this, mandatory); + return AbilityFactory_EndGameCondition.winsGameDoTriggerAI(af, this, mandatory); } }; @@ -87,21 +88,22 @@ public final class AbilityFactory_EndGameCondition { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return winsGameStackDescription(af, this); + return AbilityFactory_EndGameCondition.winsGameStackDescription(af, this); } + @Override public boolean canPlayAI() { // if X depends on abCost, the AI needs to choose which card he // would sacrifice first // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return winsGameCanPlayAI(af, this); + return AbilityFactory_EndGameCondition.winsGameCanPlayAI(af, this); } @Override public void resolve() { - winsGameResolve(af, this); + AbilityFactory_EndGameCondition.winsGameResolve(af, this); } }; @@ -125,21 +127,22 @@ public final class AbilityFactory_EndGameCondition { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return winsGameStackDescription(af, this); + return AbilityFactory_EndGameCondition.winsGameStackDescription(af, this); } + @Override public boolean canPlayAI() { // if X depends on abCost, the AI needs to choose which card he // would sacrifice first // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return winsGameCanPlayAI(af, this); + return AbilityFactory_EndGameCondition.winsGameCanPlayAI(af, this); } @Override public void resolve() { - winsGameResolve(af, this); + AbilityFactory_EndGameCondition.winsGameResolve(af, this); } @Override @@ -149,7 +152,7 @@ public final class AbilityFactory_EndGameCondition { @Override public boolean doTrigger(final boolean mandatory) { - return winsGameDoTriggerAI(af, this, mandatory); + return AbilityFactory_EndGameCondition.winsGameDoTriggerAI(af, this, mandatory); } }; @@ -168,7 +171,7 @@ public final class AbilityFactory_EndGameCondition { * @return a {@link java.lang.String} object. */ public static String winsGameStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -179,7 +182,7 @@ public final class AbilityFactory_EndGameCondition { // Let the spell description also be the stack description sb.append(sa.getDescription()); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -233,7 +236,7 @@ public final class AbilityFactory_EndGameCondition { // WinGame abilities usually don't have subAbilities but for // consistency... - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -253,11 +256,11 @@ public final class AbilityFactory_EndGameCondition { */ public static void winsGameResolve(final AbilityFactory af, final SpellAbility sa) { - Card card = af.getHostCard(); + final Card card = af.getHostCard(); - ArrayList players = AbilityFactory.getDefinedPlayers(card, af.getMapParams().get("Defined"), sa); + final ArrayList players = AbilityFactory.getDefinedPlayers(card, af.getMapParams().get("Defined"), sa); - for (Player p : players) { + for (final Player p : players) { p.altWinBySpellEffect(card.getName()); } } @@ -285,21 +288,22 @@ public final class AbilityFactory_EndGameCondition { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return losesGameStackDescription(af, this); + return AbilityFactory_EndGameCondition.losesGameStackDescription(af, this); } + @Override public boolean canPlayAI() { - return losesGameCanPlayAI(af, this); + return AbilityFactory_EndGameCondition.losesGameCanPlayAI(af, this); } @Override public void resolve() { - losesGameResolve(af, this); + AbilityFactory_EndGameCondition.losesGameResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return losesGameDoTriggerAI(af, this, mandatory); + return AbilityFactory_EndGameCondition.losesGameDoTriggerAI(af, this, mandatory); } }; @@ -323,21 +327,22 @@ public final class AbilityFactory_EndGameCondition { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return losesGameStackDescription(af, this); + return AbilityFactory_EndGameCondition.losesGameStackDescription(af, this); } + @Override public boolean canPlayAI() { // if X depends on abCost, the AI needs to choose which card he // would sacrifice first // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return losesGameCanPlayAI(af, this); + return AbilityFactory_EndGameCondition.losesGameCanPlayAI(af, this); } @Override public void resolve() { - losesGameResolve(af, this); + AbilityFactory_EndGameCondition.losesGameResolve(af, this); } }; @@ -361,21 +366,22 @@ public final class AbilityFactory_EndGameCondition { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return losesGameStackDescription(af, this); + return AbilityFactory_EndGameCondition.losesGameStackDescription(af, this); } + @Override public boolean canPlayAI() { // if X depends on abCost, the AI needs to choose which card he // would sacrifice first // then call xCount with that card to properly calculate the // amount // Or choosing how many to sacrifice - return losesGameCanPlayAI(af, this); + return AbilityFactory_EndGameCondition.losesGameCanPlayAI(af, this); } @Override public void resolve() { - losesGameResolve(af, this); + AbilityFactory_EndGameCondition.losesGameResolve(af, this); } @Override @@ -385,7 +391,7 @@ public final class AbilityFactory_EndGameCondition { @Override public boolean doTrigger(final boolean mandatory) { - return losesGameDoTriggerAI(af, this, mandatory); + return AbilityFactory_EndGameCondition.losesGameDoTriggerAI(af, this, mandatory); } }; @@ -404,8 +410,8 @@ public final class AbilityFactory_EndGameCondition { * @return a {@link java.lang.String} object. */ public static String losesGameStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); - Card source = sa.getSourceCard(); + final StringBuilder sb = new StringBuilder(); + final Card source = sa.getSourceCard(); if (!(sa instanceof Ability_Sub)) { sb.append(source.getName()).append(" - "); @@ -413,7 +419,7 @@ public final class AbilityFactory_EndGameCondition { sb.append(" "); } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); ArrayList players = null; if (sa.getTarget() != null) { players = tgt.getTargetPlayers(); @@ -421,13 +427,13 @@ public final class AbilityFactory_EndGameCondition { players = AbilityFactory.getDefinedPlayers(source, af.getMapParams().get("Defined"), sa); } - for (Player p : players) { + for (final Player p : players) { sb.append(p.getName()).append(" "); } sb.append("loses the game."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -454,7 +460,7 @@ public final class AbilityFactory_EndGameCondition { // Only one SA Lose the Game card right now, which is Door to // Nothingness - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); tgt.addTarget(AllZone.getHumanPlayer()); @@ -492,7 +498,7 @@ public final class AbilityFactory_EndGameCondition { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); tgt.addTarget(AllZone.getHumanPlayer()); @@ -500,7 +506,7 @@ public final class AbilityFactory_EndGameCondition { // WinGame abilities usually don't have subAbilities but for // consistency... - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -520,9 +526,9 @@ public final class AbilityFactory_EndGameCondition { */ public static void losesGameResolve(final AbilityFactory af, final SpellAbility sa) { - Card card = af.getHostCard(); + final Card card = af.getHostCard(); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); ArrayList players = null; if (sa.getTarget() != null) { players = tgt.getTargetPlayers(); @@ -530,7 +536,7 @@ public final class AbilityFactory_EndGameCondition { players = AbilityFactory.getDefinedPlayers(card, af.getMapParams().get("Defined"), sa); } - for (Player p : players) { + for (final Player p : players) { p.loseConditionMet(GameLossReason.SpellEffect, card.getName()); } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_GainControl.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_GainControl.java index bf7f57dd934..3f336d64271 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_GainControl.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_GainControl.java @@ -27,16 +27,16 @@ import forge.card.spellability.Target; //GainControl specific params: // LoseControl - the lose control conditions (as a comma separated list) -// -Untap - source card becomes untapped -// -LoseControl - you lose control of source card -// -LeavesPlay - source card leaves the battlefield -// -PowerGT - (not implemented yet for Old Man of the Sea) -// AddKWs - Keywords to add to the controlled card -// (as a "&"-separated list; like Haste, Sacrifice CARDNAME at EOT, any standard keyword) +// -Untap - source card becomes untapped +// -LoseControl - you lose control of source card +// -LeavesPlay - source card leaves the battlefield +// -PowerGT - (not implemented yet for Old Man of the Sea) +// AddKWs - Keywords to add to the controlled card +// (as a "&"-separated list; like Haste, Sacrifice CARDNAME at EOT, any standard keyword) // OppChoice - set to True if opponent chooses creature (for Preacher) - not implemented yet -// Untap - set to True if target card should untap when control is taken -// DestroyTgt - actions upon which the tgt should be destroyed. same list as LoseControl -// NoRegen - set if destroyed creature can't be regenerated. used only with DestroyTgt +// Untap - set to True if target card should untap when control is taken +// DestroyTgt - actions upon which the tgt should be destroyed. same list as LoseControl +// NoRegen - set if destroyed creature can't be regenerated. used only with DestroyTgt /** *

@@ -69,26 +69,26 @@ public class AbilityFactory_GainControl { * a {@link forge.card.abilityFactory.AbilityFactory} object. */ public AbilityFactory_GainControl(final AbilityFactory newAF) { - af = newAF; - params = af.getMapParams(); - hostCard = af.getHostCard(); - if (params.containsKey("LoseControl")) { - lose = new ArrayList(Arrays.asList(params.get("LoseControl").split(","))); + this.af = newAF; + this.params = this.af.getMapParams(); + this.hostCard = this.af.getHostCard(); + if (this.params.containsKey("LoseControl")) { + this.lose = new ArrayList(Arrays.asList(this.params.get("LoseControl").split(","))); } - if (params.containsKey("Untap")) { - bUntap = true; + if (this.params.containsKey("Untap")) { + this.bUntap = true; } - if (params.containsKey("TapOnLose")) { - bTapOnLose = true; + if (this.params.containsKey("TapOnLose")) { + this.bTapOnLose = true; } - if (params.containsKey("AddKWs")) { - kws = new ArrayList(Arrays.asList(params.get("AddKWs").split(" & "))); + if (this.params.containsKey("AddKWs")) { + this.kws = new ArrayList(Arrays.asList(this.params.get("AddKWs").split(" & "))); } - if (params.containsKey("DestroyTgt")) { - destroyOn = new ArrayList(Arrays.asList(params.get("DestroyTgt").split(","))); + if (this.params.containsKey("DestroyTgt")) { + this.destroyOn = new ArrayList(Arrays.asList(this.params.get("DestroyTgt").split(","))); } - if (params.containsKey("NoRegen")) { - bNoRegen = true; + if (this.params.containsKey("NoRegen")) { + this.bNoRegen = true; } } @@ -101,22 +101,22 @@ public class AbilityFactory_GainControl { * @since 1.0.15 */ public final SpellAbility getSpellGainControl() { - SpellAbility spControl = new Spell(hostCard, af.getAbCost(), af.getAbTgt()) { + final SpellAbility spControl = new Spell(this.hostCard, this.af.getAbCost(), this.af.getAbTgt()) { private static final long serialVersionUID = 3125489644424832311L; @Override public boolean canPlayAI() { - return gainControlTgtAI(this); + return AbilityFactory_GainControl.this.gainControlTgtAI(this); } @Override public void resolve() { - gainControlResolve(this); + AbilityFactory_GainControl.this.gainControlResolve(this); } // resolve @Override public String getStackDescription() { - return gainControlStackDescription(this); + return AbilityFactory_GainControl.this.gainControlStackDescription(this); } }; // SpellAbility @@ -133,27 +133,27 @@ public class AbilityFactory_GainControl { */ public final SpellAbility getAbilityGainControl() { - final SpellAbility abControl = new Ability_Activated(hostCard, af.getAbCost(), af.getAbTgt()) { + final SpellAbility abControl = new Ability_Activated(this.hostCard, this.af.getAbCost(), this.af.getAbTgt()) { private static final long serialVersionUID = -4384705198674678831L; @Override public boolean canPlayAI() { - return gainControlTgtAI(this); + return AbilityFactory_GainControl.this.gainControlTgtAI(this); } @Override public void resolve() { - gainControlResolve(this); + AbilityFactory_GainControl.this.gainControlResolve(this); } @Override public String getStackDescription() { - return gainControlStackDescription(this); + return AbilityFactory_GainControl.this.gainControlStackDescription(this); } @Override public boolean doTrigger(final boolean mandatory) { - return gainControlTgtAI(this); + return AbilityFactory_GainControl.this.gainControlTgtAI(this); } }; // Ability_Activated @@ -169,32 +169,32 @@ public class AbilityFactory_GainControl { * @since 1.0.15 */ public final SpellAbility getDrawbackGainControl() { - SpellAbility dbControl = new Ability_Sub(hostCard, af.getAbTgt()) { + final SpellAbility dbControl = new Ability_Sub(this.hostCard, this.af.getAbTgt()) { private static final long serialVersionUID = -5577742598032345880L; @Override public boolean canPlayAI() { - return gainControlTgtAI(this); + return AbilityFactory_GainControl.this.gainControlTgtAI(this); } @Override public String getStackDescription() { - return gainControlStackDescription(this); + return AbilityFactory_GainControl.this.gainControlStackDescription(this); } @Override public void resolve() { - gainControlResolve(this); + AbilityFactory_GainControl.this.gainControlResolve(this); } // resolve @Override public boolean chkAIDrawback() { - return gainControlDrawbackAI(this); + return AbilityFactory_GainControl.this.gainControlDrawbackAI(this); } @Override public boolean doTrigger(final boolean mandatory) { - return gainControlTriggerAI(this, mandatory); + return AbilityFactory_GainControl.this.gainControlTriggerAI(this, mandatory); } }; // SpellAbility @@ -211,7 +211,7 @@ public class AbilityFactory_GainControl { * @return a {@link java.lang.String} object. */ private String gainControlStackDescription(final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); @@ -221,22 +221,22 @@ public class AbilityFactory_GainControl { ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = this.af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { - tgtCards = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); + tgtCards = AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa); } - ArrayList newController = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), - params.get("NewController"), sa); + final ArrayList newController = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), + this.params.get("NewController"), sa); if (newController.size() == 0) { newController.add(sa.getActivatingPlayer()); } sb.append(newController).append(" gains control of "); - for (Card c : tgtCards) { + for (final Card c : tgtCards) { sb.append(" "); if (c.isFaceDown()) { sb.append("Morph"); @@ -246,7 +246,7 @@ public class AbilityFactory_GainControl { } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -269,7 +269,7 @@ public class AbilityFactory_GainControl { boolean hasEnchantment = false; boolean hasLand = false; - Target tgt = af.getAbTgt(); + final Target tgt = this.af.getAbTgt(); // if Defined, then don't worry about targeting if (tgt == null) { @@ -277,13 +277,15 @@ public class AbilityFactory_GainControl { } CardList list = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); - list = list.getValidCards(tgt.getValidTgts(), hostCard.getController(), hostCard); + list = list.getValidCards(tgt.getValidTgts(), this.hostCard.getController(), this.hostCard); // AI won't try to grab cards that are filtered out of AI decks on // purpose list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - Map vars = c.getSVars(); - return !vars.containsKey("RemAIDeck") && CardFactoryUtil.canTarget(hostCard, c); + final Map vars = c.getSVars(); + return !vars.containsKey("RemAIDeck") + && CardFactoryUtil.canTarget(AbilityFactory_GainControl.this.hostCard, c); } }); @@ -293,13 +295,14 @@ public class AbilityFactory_GainControl { // Don't steal something if I can't Attack without, or prevent it from // blocking at least - if (lose != null && lose.contains("EOT") && AllZone.getPhase().isAfter(Constant.Phase.COMBAT_DECLARE_BLOCKERS)) { + if ((this.lose != null) && this.lose.contains("EOT") + && AllZone.getPhase().isAfter(Constant.Phase.COMBAT_DECLARE_BLOCKERS)) { return false; } while (tgt.getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { Card t = null; - for (Card c : list) { + for (final Card c : list) { if (c.isCreature()) { hasCreature = true; } @@ -315,7 +318,7 @@ public class AbilityFactory_GainControl { } if (list.isEmpty()) { - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { tgt.resetTargets(); return false; } else { @@ -359,48 +362,48 @@ public class AbilityFactory_GainControl { */ private void gainControlResolve(final SpellAbility sa) { ArrayList tgtCards; - boolean self = params.containsKey("Defined") && params.get("Defined").equals("Self"); + final boolean self = this.params.containsKey("Defined") && this.params.get("Defined").equals("Self"); - Target tgt = af.getAbTgt(); + final Target tgt = this.af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { - tgtCards = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); + tgtCards = AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa); } // tgtCards.add(hostCard); - ArrayList newController = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), - params.get("NewController"), sa); + final ArrayList newController = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), + this.params.get("NewController"), sa); if (newController.size() == 0) { newController.add(sa.getActivatingPlayer()); } - int size = tgtCards.size(); + final int size = tgtCards.size(); for (int j = 0; j < size; j++) { final Card tgtC = tgtCards.get(j); final Player originalController = tgtC.getController(); - movedCards[j] = tgtC; + this.movedCards[j] = tgtC; if (!self) { - hostCard.addGainControlTarget(tgtC); + this.hostCard.addGainControlTarget(tgtC); } - if (AllZoneUtil.isCardInPlay(tgtC) && CardFactoryUtil.canTarget(hostCard, tgtC)) { + if (AllZoneUtil.isCardInPlay(tgtC) && CardFactoryUtil.canTarget(this.hostCard, tgtC)) { - if (params.containsKey("NewController")) { + if (this.params.containsKey("NewController")) { tgtC.addController(newController.get(0)); } else { - tgtC.addController(hostCard); + tgtC.addController(this.hostCard); } // AllZone.getGameAction().changeController(new CardList(tgtC), // tgtC.getController(), newController.get(0)); - if (bUntap) { + if (this.bUntap) { tgtC.untap(); } - if (null != kws) { - for (String kw : kws) { + if (null != this.kws) { + for (final String kw : this.kws) { tgtC.addExtrinsicKeyword(kw); } } @@ -408,37 +411,37 @@ public class AbilityFactory_GainControl { // end copied - if (lose != null) { - if (lose.contains("LeavesPlay")) { - hostCard.addLeavesPlayCommand(getLoseControlCommand(j, originalController)); + if (this.lose != null) { + if (this.lose.contains("LeavesPlay")) { + this.hostCard.addLeavesPlayCommand(this.getLoseControlCommand(j, originalController)); } - if (lose.contains("Untap")) { - hostCard.addUntapCommand(getLoseControlCommand(j, originalController)); + if (this.lose.contains("Untap")) { + this.hostCard.addUntapCommand(this.getLoseControlCommand(j, originalController)); } - if (lose.contains("LoseControl")) { - hostCard.addChangeControllerCommand(getLoseControlCommand(j, originalController)); + if (this.lose.contains("LoseControl")) { + this.hostCard.addChangeControllerCommand(this.getLoseControlCommand(j, originalController)); } - if (lose.contains("EOT")) { - AllZone.getEndOfTurn().addAt(getLoseControlCommand(j, originalController)); + if (this.lose.contains("EOT")) { + AllZone.getEndOfTurn().addAt(this.getLoseControlCommand(j, originalController)); } } - if (destroyOn != null) { - if (destroyOn.contains("LeavesPlay")) { - hostCard.addLeavesPlayCommand(getDestroyCommand(j)); + if (this.destroyOn != null) { + if (this.destroyOn.contains("LeavesPlay")) { + this.hostCard.addLeavesPlayCommand(this.getDestroyCommand(j)); } - if (destroyOn.contains("Untap")) { - hostCard.addUntapCommand(getDestroyCommand(j)); + if (this.destroyOn.contains("Untap")) { + this.hostCard.addUntapCommand(this.getDestroyCommand(j)); } - if (destroyOn.contains("LoseControl")) { - hostCard.addChangeControllerCommand(getDestroyCommand(j)); + if (this.destroyOn.contains("LoseControl")) { + this.hostCard.addChangeControllerCommand(this.getDestroyCommand(j)); } } // for Old Man of the Sea - 0 is hardcoded since it only allows 1 // target - hostCard.clearGainControlReleaseCommands(); - hostCard.addGainControlReleaseCommand(getLoseControlCommand(0, originalController)); + this.hostCard.clearGainControlReleaseCommands(); + this.hostCard.addGainControlReleaseCommand(this.getLoseControlCommand(0, originalController)); } // end foreach target } @@ -464,7 +467,7 @@ public class AbilityFactory_GainControl { return true; } } else { - return gainControlTgtAI(sa); + return this.gainControlTgtAI(sa); } return true; @@ -480,10 +483,10 @@ public class AbilityFactory_GainControl { * @return a boolean. */ private boolean gainControlDrawbackAI(final SpellAbility sa) { - if (af.getAbTgt() == null || !af.getAbTgt().doesTarget()) { + if ((this.af.getAbTgt() == null) || !this.af.getAbTgt().doesTarget()) { // all is good } else { - return gainControlTgtAI(sa); + return this.gainControlTgtAI(sa); } return true; @@ -502,21 +505,24 @@ public class AbilityFactory_GainControl { final Command destroy = new Command() { private static final long serialVersionUID = 878543373519872418L; + @Override public void execute() { - final Card c = movedCards[i]; - Ability ability = new Ability(hostCard, "0") { + final Card c = AbilityFactory_GainControl.this.movedCards[i]; + final Ability ability = new Ability(AbilityFactory_GainControl.this.hostCard, "0") { + @Override public void resolve() { - if (bNoRegen) { + if (AbilityFactory_GainControl.this.bNoRegen) { AllZone.getGameAction().destroyNoRegeneration(c); } else { AllZone.getGameAction().destroy(c); } } }; - StringBuilder sb = new StringBuilder(); - sb.append(hostCard).append(" - destroy ").append(c.getName()).append("."); - if (bNoRegen) { + final StringBuilder sb = new StringBuilder(); + sb.append(AbilityFactory_GainControl.this.hostCard).append(" - destroy ").append(c.getName()) + .append("."); + if (AbilityFactory_GainControl.this.bNoRegen) { sb.append(" It can't be regenerated."); } ability.setStackDescription(sb.toString()); @@ -540,12 +546,14 @@ public class AbilityFactory_GainControl { * @return a {@link forge.Command} object. */ private Command getLoseControlCommand(final int i, final Player originalController) { - final Card c = movedCards[i]; + final Card c = this.movedCards[i]; final Command loseControl = new Command() { private static final long serialVersionUID = 878543373519872418L; + @Override public void execute() { - doLoseControl(c, hostCard, bTapOnLose, kws); + AbilityFactory_GainControl.doLoseControl(c, AbilityFactory_GainControl.this.hostCard, + AbilityFactory_GainControl.this.bTapOnLose, AbilityFactory_GainControl.this.kws); } // execute() }; @@ -567,7 +575,7 @@ public class AbilityFactory_GainControl { } if (null != addedKeywords) { - for (String kw : addedKeywords) { + for (final String kw : addedKeywords) { c.removeExtrinsicKeyword(kw); } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Mana.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Mana.java index a600e1618c6..1a83e7330e2 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Mana.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Mana.java @@ -40,25 +40,26 @@ public class AbilityFactory_Mana { * createAbilityMana. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @param produced * a {@link java.lang.String} object. * @return a {@link forge.card.spellability.SpellAbility} object. */ - public static SpellAbility createAbilityMana(final AbilityFactory AF, final String produced) { - final Ability_Mana abMana = new Ability_Mana(AF.getHostCard(), AF.getAbCost(), produced) { + public static SpellAbility createAbilityMana(final AbilityFactory abilityFactory, final String produced) { + final Ability_Mana abMana = new Ability_Mana(abilityFactory.getHostCard(), abilityFactory.getAbCost(), produced) { private static final long serialVersionUID = -1933592438783630254L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; + @Override public boolean canPlayAI() { - return manaCanPlayAI(af); + return AbilityFactory_Mana.manaCanPlayAI(this.af); } @Override public void resolve() { - manaResolve(this, af, this); + AbilityFactory_Mana.manaResolve(this, this.af, this); } @Override @@ -76,21 +77,21 @@ public class AbilityFactory_Mana { * createSpellMana. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @param produced * a {@link java.lang.String} object. * @return a {@link forge.card.spellability.SpellAbility} object. */ - public static SpellAbility createSpellMana(final AbilityFactory AF, final String produced) { - final SpellAbility spMana = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + public static SpellAbility createSpellMana(final AbilityFactory abilityFactory, final String produced) { + final SpellAbility spMana = new Spell(abilityFactory.getHostCard(), abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = -5141246507533353605L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; // To get the mana to resolve properly, we need the spell to contain // an Ability_Mana - Cost tmp = new Cost("0", AF.getHostCard().getName(), false); - Ability_Mana tmpMana = new Ability_Mana(AF.getHostCard(), tmp, produced) { + private Cost tmp = new Cost("0", abilityFactory.getHostCard().getName(), false); + private Ability_Mana tmpMana = new Ability_Mana(abilityFactory.getHostCard(), this.tmp, produced) { private static final long serialVersionUID = 1454043766057140491L; @Override @@ -101,20 +102,21 @@ public class AbilityFactory_Mana { }; + @Override public boolean canPlayAI() { - return manaCanPlayAI(af); + return AbilityFactory_Mana.manaCanPlayAI(this.af); } @Override public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return manaStackDescription(tmpMana, af, this); + return AbilityFactory_Mana.manaStackDescription(this.tmpMana, this.af, this); } @Override public void resolve() { - manaResolve(tmpMana, af, this); + AbilityFactory_Mana.manaResolve(this.tmpMana, this.af, this); } }; @@ -127,21 +129,21 @@ public class AbilityFactory_Mana { * createDrawbackMana. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @param produced * a {@link java.lang.String} object. * @return a {@link forge.card.spellability.Ability_Sub} object. */ - public static Ability_Sub createDrawbackMana(final AbilityFactory AF, final String produced) { - final Ability_Sub dbMana = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()) { + public static Ability_Sub createDrawbackMana(final AbilityFactory abilityFactory, final String produced) { + final Ability_Sub dbMana = new Ability_Sub(abilityFactory.getHostCard(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = -5141246507533353605L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; // To get the mana to resolve properly, we need the spell to contain // an Ability_Mana - Cost tmp = new Cost("0", AF.getHostCard().getName(), false); - Ability_Mana tmpMana = new Ability_Mana(AF.getHostCard(), tmp, produced) { + private Cost tmp = new Cost("0", abilityFactory.getHostCard().getName(), false); + private Ability_Mana tmpMana = new Ability_Mana(abilityFactory.getHostCard(), this.tmp, produced) { private static final long serialVersionUID = 1454043766057140491L; @Override @@ -156,12 +158,12 @@ public class AbilityFactory_Mana { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return manaStackDescription(tmpMana, af, this); + return AbilityFactory_Mana.manaStackDescription(this.tmpMana, this.af, this); } @Override public void resolve() { - manaResolve(tmpMana, af, this); + AbilityFactory_Mana.manaResolve(this.tmpMana, this.af, this); } @Override @@ -207,7 +209,7 @@ public class AbilityFactory_Mana { * @return a {@link java.lang.String} object. */ public static String manaStackDescription(final Ability_Mana abMana, final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -215,7 +217,7 @@ public class AbilityFactory_Mana { sb.append(af.getHostCard()).append(" - "); } - sb.append("Add ").append(generatedMana(abMana, af, sa)).append(" to your mana pool."); + sb.append("Add ").append(AbilityFactory_Mana.generatedMana(abMana, af, sa)).append(" to your mana pool."); if (abMana.getSubAbility() != null) { sb.append(abMana.getSubAbility().getStackDescription()); @@ -240,20 +242,21 @@ public class AbilityFactory_Mana { // Spells are not undoable abMana.setUndoable(af.isAbility() && abMana.isUndoable()); - HashMap params = af.getMapParams(); - Card card = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card card = af.getHostCard(); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player player : tgtPlayers) - abMana.produceMana(generatedMana(abMana, af, sa), player); + for (final Player player : tgtPlayers) { + abMana.produceMana(AbilityFactory_Mana.generatedMana(abMana, af, sa), player); + } // convert these to SubAbilities when appropriate if (params.containsKey("Stuck")) { @@ -261,16 +264,16 @@ public class AbilityFactory_Mana { card.addExtrinsicKeyword("This card doesn't untap during your next untap step."); } - String deplete = params.get("Deplete"); + final String deplete = params.get("Deplete"); if (deplete != null) { - int num = card.getCounters(Counters.getType(deplete)); + final int num = card.getCounters(Counters.getType(deplete)); if (num == 0) { abMana.setUndoable(false); AllZone.getGameAction().sacrifice(card); } } - doDrawback(af, abMana, card); + AbilityFactory_Mana.doDrawback(af, abMana, card); } /** @@ -288,8 +291,8 @@ public class AbilityFactory_Mana { */ private static String generatedMana(final Ability_Mana abMana, final AbilityFactory af, final SpellAbility sa) { // Calculate generated mana here for stack description and resolving - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); int amount = params.containsKey("Amount") ? AbilityFactory.calculateAmount(af.getHostCard(), params.get("Amount"), sa) : 1; @@ -305,7 +308,7 @@ public class AbilityFactory_Mana { // ALWAYS be Base int bonus = 0; if (params.get("Bonus").equals("UrzaLands")) { - if (hasUrzaLands(abMana.getActivatingPlayer())) { + if (AbilityFactory_Mana.hasUrzaLands(abMana.getActivatingPlayer())) { bonus = Integer.parseInt(params.get("BonusProduced")); } } @@ -314,23 +317,23 @@ public class AbilityFactory_Mana { } try { - if (params.get("Amount") != null && amount != Integer.parseInt(params.get("Amount"))) { + if ((params.get("Amount") != null) && (amount != Integer.parseInt(params.get("Amount")))) { abMana.setUndoable(false); } - } catch (NumberFormatException n) { + } catch (final NumberFormatException n) { abMana.setUndoable(false); } - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (amount == 0) { sb.append("0"); } else { try { // if baseMana is an integer(colorless), just multiply amount // and baseMana - int base = Integer.parseInt(baseMana); + final int base = Integer.parseInt(baseMana); sb.append(base * amount); - } catch (NumberFormatException e) { + } catch (final NumberFormatException e) { for (int i = 0; i < amount; i++) { if (i != 0) { sb.append(" "); @@ -348,25 +351,26 @@ public class AbilityFactory_Mana { * createAbilityManaReflected. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @param produced * a {@link java.lang.String} object. * @return a {@link forge.card.spellability.SpellAbility} object. */ - public static SpellAbility createAbilityManaReflected(final AbilityFactory AF, final String produced) { - final Ability_Mana abMana = new Ability_Mana(AF.getHostCard(), AF.getAbCost(), produced) { + public static SpellAbility createAbilityManaReflected(final AbilityFactory abilityFactory, final String produced) { + final Ability_Mana abMana = new Ability_Mana(abilityFactory.getHostCard(), abilityFactory.getAbCost(), produced) { private static final long serialVersionUID = -1933592438783630254L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; + @Override public boolean canPlayAI() { - return manaReflectedCanPlayAI(af); + return AbilityFactory_Mana.manaReflectedCanPlayAI(this.af); } @Override public void resolve() { - manaReflectedResolve(this, af); + AbilityFactory_Mana.manaReflectedResolve(this, this.af); } @Override @@ -385,23 +389,23 @@ public class AbilityFactory_Mana { * createSpellManaReflected. *

* - * @param AF + * @param abilityFactory * a {@link forge.card.abilityFactory.AbilityFactory} object. * @param produced * a {@link java.lang.String} object. * @return a {@link forge.card.spellability.SpellAbility} object. */ - public static SpellAbility createSpellManaReflected(final AbilityFactory AF, final String produced) { + public static SpellAbility createSpellManaReflected(final AbilityFactory abilityFactory, final String produced) { // No Spell has Reflected Mana, but might as well put it in for the // future - final SpellAbility spMana = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility spMana = new Spell(abilityFactory.getHostCard(), abilityFactory.getAbCost(), abilityFactory.getAbTgt()) { private static final long serialVersionUID = -5141246507533353605L; - final AbilityFactory af = AF; + private final AbilityFactory af = abilityFactory; // To get the mana to resolve properly, we need the spell to contain // an Ability_Mana - Cost tmp = new Cost("0", AF.getHostCard().getName(), false); - Ability_Mana tmpMana = new Ability_Mana(AF.getHostCard(), tmp, produced) { + private Cost tmp = new Cost("0", abilityFactory.getHostCard().getName(), false); + private Ability_Mana tmpMana = new Ability_Mana(abilityFactory.getHostCard(), this.tmp, produced) { private static final long serialVersionUID = 1454043766057140491L; @Override @@ -416,13 +420,14 @@ public class AbilityFactory_Mana { // tmpMana.setReflectedMana(true); + @Override public boolean canPlayAI() { - return manaReflectedCanPlayAI(af); + return AbilityFactory_Mana.manaReflectedCanPlayAI(this.af); } @Override public void resolve() { - manaReflectedResolve(tmpMana, af); + AbilityFactory_Mana.manaReflectedResolve(this.tmpMana, this.af); } }; @@ -455,24 +460,25 @@ public class AbilityFactory_Mana { */ public static void manaReflectedResolve(final Ability_Mana abMana, final AbilityFactory af) { // Spells are not undoable - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); abMana.setUndoable(af.isAbility() && abMana.isUndoable()); - Card card = af.getHostCard(); + final Card card = af.getHostCard(); - ArrayList colors = reflectableMana(abMana, af, new ArrayList(), new ArrayList()); + final ArrayList colors = AbilityFactory_Mana.reflectableMana(abMana, af, new ArrayList(), + new ArrayList()); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(abMana.getSourceCard(), params.get("Defined"), abMana); } - for (Player player : tgtPlayers) { - String generated = generatedReflectedMana(abMana, af, colors, player); + for (final Player player : tgtPlayers) { + final String generated = AbilityFactory_Mana.generatedReflectedMana(abMana, af, colors, player); if (abMana.getCanceled()) { abMana.undo(); @@ -482,7 +488,7 @@ public class AbilityFactory_Mana { abMana.produceMana(generated, player); } - doDrawback(af, abMana, card); + AbilityFactory_Mana.doDrawback(af, abMana, card); } // add Colors and @@ -501,28 +507,29 @@ public class AbilityFactory_Mana { * a {@link java.util.ArrayList} object. * @return a {@link java.util.ArrayList} object. */ - public static ArrayList reflectableMana(final Ability_Mana abMana, final AbilityFactory af, ArrayList colors, - final ArrayList parents) { + public static ArrayList reflectableMana(final Ability_Mana abMana, final AbilityFactory af, + ArrayList colors, final ArrayList parents) { // Here's the problem with reflectable Mana. If more than one is out, // they need to Reflect each other, // so we basically need to have a recursive list that send the parents // so we don't infinite recurse. - HashMap params = af.getMapParams(); - Card card = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card card = af.getHostCard(); if (!parents.contains(card)) { parents.add(card); } - String colorOrType = params.get("ColorOrType"); // currently Color or - // Type, Type is colors - // + colorless - String validCard = params.get("Valid"); - String reflectProperty = params.get("ReflectProperty"); // Produce - // (Reflecting - // Pool) or Is - // (Meteor - // Crater) + final String colorOrType = params.get("ColorOrType"); // currently Color + // or + // Type, Type is colors + // + colorless + final String validCard = params.get("Valid"); + final String reflectProperty = params.get("ReflectProperty"); // Produce + // (Reflecting + // Pool) or Is + // (Meteor + // Crater) int maxChoices = 5; // Color is the default colorOrType if (colorOrType.equals("Type")) { @@ -534,48 +541,49 @@ public class AbilityFactory_Mana { // Reuse AF_Defined in a slightly different way if (validCard.startsWith("Defined.")) { cards = new CardList(); - for (Card c : AbilityFactory - .getDefinedCards(card, validCard.replace("Defined.", ""), (SpellAbility) abMana)) + for (final Card c : AbilityFactory.getDefinedCards(card, validCard.replace("Defined.", ""), abMana)) { cards.add(c); + } } else { cards = AllZoneUtil.getCardsIn(Zone.Battlefield).getValidCards(validCard, abMana.getActivatingPlayer(), card); } // remove anything cards that is already in parents - for (Card p : parents) + for (final Card p : parents) { if (cards.contains(p)) { cards.remove(p); } + } - if (cards.size() == 0 && !reflectProperty.equals("Produced")) { + if ((cards.size() == 0) && !reflectProperty.equals("Produced")) { return colors; } if (reflectProperty.equals("Is")) { // Meteor Crater - colors = hasProperty(maxChoices, cards, colors); + colors = AbilityFactory_Mana.hasProperty(maxChoices, cards, colors); } else if (reflectProperty.equals("Produced")) { - String producedColors = (String) abMana.getTriggeringObject("Produced"); - for (String col : Constant.Color.ONLY_COLORS) { - String s = Input_PayManaCostUtil.getShortColorString(col); + final String producedColors = (String) abMana.getTriggeringObject("Produced"); + for (final String col : Constant.Color.ONLY_COLORS) { + final String s = Input_PayManaCostUtil.getShortColorString(col); if (producedColors.contains(s) && !colors.contains(col)) { colors.add(col); } } - if (maxChoices == 6 && producedColors.contains("1") && !colors.contains(Constant.Color.COLORLESS)) { + if ((maxChoices == 6) && producedColors.contains("1") && !colors.contains(Constant.Color.COLORLESS)) { colors.add(Constant.Color.COLORLESS); } } else if (reflectProperty.equals("Produce")) { - ArrayList abilities = new ArrayList(); - for (Card c : cards) { + final ArrayList abilities = new ArrayList(); + for (final Card c : cards) { abilities.addAll(c.getManaAbility()); } // currently reflected mana will ignore other reflected mana // abilities - ArrayList reflectAbilities = new ArrayList(); + final ArrayList reflectAbilities = new ArrayList(); - for (Ability_Mana ab : abilities) { + for (final Ability_Mana ab : abilities) { if (maxChoices == colors.size()) { break; } @@ -588,18 +596,18 @@ public class AbilityFactory_Mana { } continue; } - colors = canProduce(maxChoices, ab, colors); + colors = AbilityFactory_Mana.canProduce(maxChoices, ab, colors); if (!parents.contains(ab.getSourceCard())) { parents.add(ab.getSourceCard()); } } - for (Ability_Mana ab : reflectAbilities) { + for (final Ability_Mana ab : reflectAbilities) { if (maxChoices == colors.size()) { break; } - colors = reflectableMana(ab, ab.getAbilityFactory(), colors, parents); + colors = AbilityFactory_Mana.reflectableMana(ab, ab.getAbilityFactory(), colors, parents); } } @@ -619,11 +627,12 @@ public class AbilityFactory_Mana { * a {@link java.util.ArrayList} object. * @return a {@link java.util.ArrayList} object. */ - private static ArrayList hasProperty(final int maxChoices, final CardList cards, final ArrayList colors) { - for (Card c : cards) { + private static ArrayList hasProperty(final int maxChoices, final CardList cards, + final ArrayList colors) { + for (final Card c : cards) { // For each card, go through all the colors and if the card is that // color, add - for (String col : Constant.Color.ONLY_COLORS) { + for (final String col : Constant.Color.ONLY_COLORS) { if (c.isColor(col) && !colors.contains(col)) { colors.add(col); if (colors.size() == maxChoices) { @@ -648,15 +657,16 @@ public class AbilityFactory_Mana { * a {@link java.util.ArrayList} object. * @return a {@link java.util.ArrayList} object. */ - private static ArrayList canProduce(final int maxChoices, final Ability_Mana ab, final ArrayList colors) { - for (String col : Constant.Color.ONLY_COLORS) { - String s = Input_PayManaCostUtil.getShortColorString(col); + private static ArrayList canProduce(final int maxChoices, final Ability_Mana ab, + final ArrayList colors) { + for (final String col : Constant.Color.ONLY_COLORS) { + final String s = Input_PayManaCostUtil.getShortColorString(col); if (ab.canProduce(s) && !colors.contains(col)) { colors.add(col); } } - if (maxChoices == 6 && ab.canProduce("1") && !colors.contains(Constant.Color.COLORLESS)) { + if ((maxChoices == 6) && ab.canProduce("1") && !colors.contains(Constant.Color.COLORLESS)) { colors.add(Constant.Color.COLORLESS); } @@ -678,11 +688,11 @@ public class AbilityFactory_Mana { * a {@link forge.Player} object. * @return a {@link java.lang.String} object. */ - private static String generatedReflectedMana(final Ability_Mana abMana, final AbilityFactory af, final ArrayList colors, - final Player player) { + private static String generatedReflectedMana(final Ability_Mana abMana, final AbilityFactory af, + final ArrayList colors, final Player player) { // Calculate generated mana here for stack description and resolving - HashMap params = af.getMapParams(); - int amount = params.containsKey("Amount") ? AbilityFactory.calculateAmount(af.getHostCard(), + final HashMap params = af.getMapParams(); + final int amount = params.containsKey("Amount") ? AbilityFactory.calculateAmount(af.getHostCard(), params.get("Amount"), abMana) : 1; String baseMana = ""; @@ -693,7 +703,7 @@ public class AbilityFactory_Mana { baseMana = Input_PayManaCostUtil.getShortColorString(colors.get(0)); } else { if (player.isHuman()) { - Object o = GuiUtils.getChoiceOptional("Select Mana to Produce", colors.toArray()); + final Object o = GuiUtils.getChoiceOptional("Select Mana to Produce", colors.toArray()); if (o == null) { // User hit cancel abMana.setCanceled(true); @@ -707,16 +717,16 @@ public class AbilityFactory_Mana { } } - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (amount == 0) { sb.append("0"); } else { try { // if baseMana is an integer(colorless), just multiply amount // and baseMana - int base = Integer.parseInt(baseMana); + final int base = Integer.parseInt(baseMana); sb.append(base * amount); - } catch (NumberFormatException e) { + } catch (final NumberFormatException e) { for (int i = 0; i < amount; i++) { if (i != 0) { sb.append(" "); @@ -747,7 +757,7 @@ public class AbilityFactory_Mana { // if mana production has any type of SubAbility, undoable=false if (af.hasSubAbility()) { abMana.setUndoable(false); - Ability_Sub abSub = abMana.getSubAbility(); + final Ability_Sub abSub = abMana.getSubAbility(); AbilityFactory.resolve(abSub, false); } } @@ -762,7 +772,7 @@ public class AbilityFactory_Mana { * @return a boolean. */ private static boolean hasUrzaLands(final Player p) { - CardList landsControlled = p.getCardsIn(Zone.Battlefield); + final CardList landsControlled = p.getCardsIn(Zone.Battlefield); return (landsControlled.containsName("Urza's Mine") && landsControlled.containsName("Urza's Tower") && landsControlled .containsName("Urza's Power Plant")); @@ -788,22 +798,22 @@ public class AbilityFactory_Mana { @Override public String getStackDescription() { - return drainManaStackDescription(af, this); + return AbilityFactory_Mana.drainManaStackDescription(af, this); } @Override public boolean canPlayAI() { - return drainManaCanPlayAI(af, this); + return AbilityFactory_Mana.drainManaCanPlayAI(af, this); } @Override public void resolve() { - drainManaResolve(af, this); + AbilityFactory_Mana.drainManaResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return drainManaTrigger(af, this, mandatory); + return AbilityFactory_Mana.drainManaTrigger(af, this, mandatory); } }; @@ -826,17 +836,17 @@ public class AbilityFactory_Mana { @Override public String getStackDescription() { - return drainManaStackDescription(af, this); + return AbilityFactory_Mana.drainManaStackDescription(af, this); } @Override public boolean canPlayAI() { - return drainManaCanPlayAI(af, this); + return AbilityFactory_Mana.drainManaCanPlayAI(af, this); } @Override public void resolve() { - drainManaResolve(af, this); + AbilityFactory_Mana.drainManaResolve(af, this); } }; @@ -859,22 +869,22 @@ public class AbilityFactory_Mana { @Override public String getStackDescription() { - return drainManaStackDescription(af, this); + return AbilityFactory_Mana.drainManaStackDescription(af, this); } @Override public void resolve() { - drainManaResolve(af, this); + AbilityFactory_Mana.drainManaResolve(af, this); } @Override public boolean chkAIDrawback() { - return drainManaPlayDrawbackAI(af, this); + return AbilityFactory_Mana.drainManaPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return drainManaTrigger(af, this, mandatory); + return AbilityFactory_Mana.drainManaTrigger(af, this, mandatory); } }; @@ -893,9 +903,9 @@ public class AbilityFactory_Mana { * @return a {@link java.lang.String} object. */ private static String drainManaStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -904,14 +914,14 @@ public class AbilityFactory_Mana { } ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - Iterator it = tgtPlayers.iterator(); + final Iterator it = tgtPlayers.iterator(); while (it.hasNext()) { sb.append(it.next()); if (it.hasNext()) { @@ -921,7 +931,7 @@ public class AbilityFactory_Mana { sb.append(" empties his or her mana pool."); - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { sb.append(subAb.getStackDescription()); } @@ -943,18 +953,18 @@ public class AbilityFactory_Mana { private static boolean drainManaCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - HashMap params = af.getMapParams(); - Target tgt = af.getAbTgt(); - Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final Card source = sa.getSourceCard(); - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); if (tgt == null) { // assume we are looking to tap human's stuff // TODO - check for things with untap abilities, and don't tap // those. - ArrayList defined = AbilityFactory.getDefinedPlayers(source, params.get("Defined"), sa); + final ArrayList defined = AbilityFactory.getDefinedPlayers(source, params.get("Defined"), sa); if (!defined.contains(AllZone.getHumanPlayer())) { return false; @@ -964,7 +974,7 @@ public class AbilityFactory_Mana { tgt.addTarget(AllZone.getHumanPlayer()); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -990,15 +1000,15 @@ public class AbilityFactory_Mana { return false; } - HashMap params = af.getMapParams(); - Target tgt = sa.getTarget(); - Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Target tgt = sa.getTarget(); + final Card source = sa.getSourceCard(); if (null == tgt) { if (mandatory) { return true; } else { - ArrayList defined = AbilityFactory.getDefinedPlayers(source, params.get("Defined"), sa); + final ArrayList defined = AbilityFactory.getDefinedPlayers(source, params.get("Defined"), sa); if (!defined.contains(AllZone.getHumanPlayer())) { return false; @@ -1027,14 +1037,14 @@ public class AbilityFactory_Mana { */ private static boolean drainManaPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - HashMap params = af.getMapParams(); - Target tgt = af.getAbTgt(); - Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final Card source = sa.getSourceCard(); boolean randomReturn = true; if (tgt == null) { - ArrayList defined = AbilityFactory.getDefinedPlayers(source, params.get("Defined"), sa); + final ArrayList defined = AbilityFactory.getDefinedPlayers(source, params.get("Defined"), sa); if (defined.contains(AllZone.getComputerPlayer())) { return false; @@ -1044,7 +1054,7 @@ public class AbilityFactory_Mana { tgt.addTarget(AllZone.getHumanPlayer()); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -1063,22 +1073,22 @@ public class AbilityFactory_Mana { * a {@link forge.card.spellability.SpellAbility} object. */ private static void drainManaResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(card, params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { p.getManaPool().clearPool(); } } } -}// end class AbilityFactory_Mana +} // end class AbilityFactory_Mana diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_PermanentState.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_PermanentState.java index 9dcf57ee03f..d6c46b55bac 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_PermanentState.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_PermanentState.java @@ -55,22 +55,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return untapStackDescription(af, this); + return AbilityFactory_PermanentState.untapStackDescription(af, this); } @Override public boolean canPlayAI() { - return untapCanPlayAI(af, this); + return AbilityFactory_PermanentState.untapCanPlayAI(af, this); } @Override public void resolve() { - untapResolve(af, this); + AbilityFactory_PermanentState.untapResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return untapTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.untapTrigger(af, this, mandatory); } }; @@ -92,17 +92,17 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return untapStackDescription(af, this); + return AbilityFactory_PermanentState.untapStackDescription(af, this); } @Override public boolean canPlayAI() { - return untapCanPlayAI(af, this); + return AbilityFactory_PermanentState.untapCanPlayAI(af, this); } @Override public void resolve() { - untapResolve(af, this); + AbilityFactory_PermanentState.untapResolve(af, this); } }; @@ -124,22 +124,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return untapStackDescription(af, this); + return AbilityFactory_PermanentState.untapStackDescription(af, this); } @Override public void resolve() { - untapResolve(af, this); + AbilityFactory_PermanentState.untapResolve(af, this); } @Override public boolean chkAIDrawback() { - return untapPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.untapPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return untapTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.untapTrigger(af, this, mandatory); } }; @@ -159,9 +159,9 @@ public class AbilityFactory_PermanentState { */ private static String untapStackDescription(final AbilityFactory af, final SpellAbility sa) { // when getStackDesc is called, just build exactly what is happening - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); final HashMap params = af.getMapParams(); - Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getSourceCard(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -176,14 +176,14 @@ public class AbilityFactory_PermanentState { sb.append(params.get("UntapType")).append("s"); } else { ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { sb.append(it.next()); if (it.hasNext()) { @@ -193,7 +193,7 @@ public class AbilityFactory_PermanentState { } sb.append("."); - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { sb.append(subAb.getStackDescription()); } @@ -214,15 +214,15 @@ public class AbilityFactory_PermanentState { */ private static boolean untapCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - Target tgt = sa.getTarget(); - Card source = sa.getSourceCard(); - Cost cost = sa.getPayCosts(); + final Target tgt = sa.getTarget(); + final Card source = sa.getSourceCard(); + final Cost cost = sa.getPayCosts(); if (!CostUtil.checkAddM1M1CounterCost(cost, source)) { return false; } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn() + 1); if (tgt == null) { @@ -230,12 +230,12 @@ public class AbilityFactory_PermanentState { return false; } } else { - if (!untapPrefTargeting(tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.untapPrefTargeting(tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -257,12 +257,12 @@ public class AbilityFactory_PermanentState { * @return a boolean. */ private static boolean untapTrigger(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); if (!ComputerUtil.canPayCost(sa)) { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt == null) { if (mandatory) { @@ -270,18 +270,19 @@ public class AbilityFactory_PermanentState { } // TODO: use Defined to determine, if this is an unfavorable result - ArrayList pDefined = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); - if (pDefined != null && pDefined.get(0).isUntapped() && pDefined.get(0).getController().isComputer()) { + final ArrayList pDefined = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), + sa); + if ((pDefined != null) && pDefined.get(0).isUntapped() && pDefined.get(0).getController().isComputer()) { return false; } return true; } else { - if (untapPrefTargeting(tgt, af, sa, mandatory)) { + if (AbilityFactory_PermanentState.untapPrefTargeting(tgt, af, sa, mandatory)) { return true; } else if (mandatory) { // not enough preferred targets, but mandatory so keep going: - return untapUnpreferredTargeting(af, sa, mandatory); + return AbilityFactory_PermanentState.untapUnpreferredTargeting(af, sa, mandatory); } } @@ -301,19 +302,19 @@ public class AbilityFactory_PermanentState { */ private static boolean untapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); boolean randomReturn = true; if (tgt == null) { // who cares if its already untapped, it's only a subability? } else { - if (!untapPrefTargeting(tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.untapPrefTargeting(tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -336,8 +337,9 @@ public class AbilityFactory_PermanentState { * a boolean. * @return a boolean. */ - private static boolean untapPrefTargeting(final Target tgt, final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Card source = sa.getSourceCard(); + private static boolean untapPrefTargeting(final Target tgt, final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { + final Card source = sa.getSourceCard(); Player targetController = AllZone.getComputerPlayer(); @@ -352,7 +354,7 @@ public class AbilityFactory_PermanentState { untapList = untapList.filter(CardListFilter.TAPPED); // filter out enchantments and planeswalkers, their tapped state doesn't // matter. - String[] tappablePermanents = { "Creature", "Land", "Artifact" }; + final String[] tappablePermanents = { "Creature", "Land", "Artifact" }; untapList = untapList.getValidCards(tappablePermanents, source.getController(), source); if (untapList.size() == 0) { @@ -363,7 +365,7 @@ public class AbilityFactory_PermanentState { Card choice = null; if (untapList.size() == 0) { - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { tgt.resetTargets(); return false; } else { @@ -384,7 +386,7 @@ public class AbilityFactory_PermanentState { } if (choice == null) { // can't find anything left - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { tgt.resetTargets(); return false; } else { @@ -412,9 +414,10 @@ public class AbilityFactory_PermanentState { * a boolean. * @return a boolean. */ - private static boolean untapUnpreferredTargeting(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Card source = sa.getSourceCard(); - Target tgt = sa.getTarget(); + private static boolean untapUnpreferredTargeting(final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { + final Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); @@ -423,24 +426,24 @@ public class AbilityFactory_PermanentState { // filter by enchantments and planeswalkers, their tapped state doesn't // matter. - String[] tappablePermanents = { "Enchantment", "Planeswalker" }; + final String[] tappablePermanents = { "Enchantment", "Planeswalker" }; CardList tapList = list.getValidCards(tappablePermanents, source.getController(), source); - if (untapTargetList(source, tgt, af, sa, mandatory, tapList)) { + if (AbilityFactory_PermanentState.untapTargetList(source, tgt, af, sa, mandatory, tapList)) { return true; } // try to just tap already tapped things tapList = list.filter(CardListFilter.UNTAPPED); - if (untapTargetList(source, tgt, af, sa, mandatory, tapList)) { + if (AbilityFactory_PermanentState.untapTargetList(source, tgt, af, sa, mandatory, tapList)) { return true; } // just tap whatever we can tapList = list; - if (untapTargetList(source, tgt, af, sa, mandatory, tapList)) { + if (AbilityFactory_PermanentState.untapTargetList(source, tgt, af, sa, mandatory, tapList)) { return true; } @@ -466,10 +469,11 @@ public class AbilityFactory_PermanentState { * a {@link forge.CardList} object. * @return a boolean. */ - private static boolean untapTargetList(final Card source, final Target tgt, final AbilityFactory af, final SpellAbility sa, - final boolean mandatory, final CardList tapList) { - for (Card c : tgt.getTargetCards()) + private static boolean untapTargetList(final Card source, final Target tgt, final AbilityFactory af, + final SpellAbility sa, final boolean mandatory, final CardList tapList) { + for (final Card c : tgt.getTargetCards()) { tapList.remove(c); + } if (tapList.size() == 0) { return false; @@ -479,7 +483,7 @@ public class AbilityFactory_PermanentState { Card choice = null; if (tapList.size() == 0) { - if (tgt.getNumTargeted() < tgt.getMinTargets(source, sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(source, sa)) || (tgt.getNumTargeted() == 0)) { if (!mandatory) { tgt.resetTargets(); } @@ -501,7 +505,7 @@ public class AbilityFactory_PermanentState { } if (choice == null) { // can't find anything left - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { if (!mandatory) { tgt.resetTargets(); } @@ -530,13 +534,13 @@ public class AbilityFactory_PermanentState { * a {@link forge.card.spellability.SpellAbility} object. */ private static void untapResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); - Target tgt = af.getAbTgt(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); + final Target tgt = af.getAbTgt(); ArrayList tgtCards = null; if (params.containsKey("UntapUpTo")) { - untapChooseUpTo(af, sa, params); + AbilityFactory_PermanentState.untapChooseUpTo(af, sa, params); } else { if (tgt != null) { tgtCards = tgt.getTargetCards(); @@ -544,9 +548,9 @@ public class AbilityFactory_PermanentState { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - for (Card tgtC : tgtCards) { + for (final Card tgtC : tgtCards) { if (AllZoneUtil.isCardInPlay(tgtC) - && (tgt == null || CardFactoryUtil.canTarget(af.getHostCard(), tgtC))) { + && ((tgt == null) || CardFactoryUtil.canTarget(af.getHostCard(), tgtC))) { tgtC.untap(); } } @@ -565,14 +569,15 @@ public class AbilityFactory_PermanentState { * @param params * a {@link java.util.HashMap} object. */ - private static void untapChooseUpTo(final AbilityFactory af, final SpellAbility sa, final HashMap params) { - int num = Integer.parseInt(params.get("Amount")); - String valid = params.get("UntapType"); + private static void untapChooseUpTo(final AbilityFactory af, final SpellAbility sa, + final HashMap params) { + final int num = Integer.parseInt(params.get("Amount")); + final String valid = params.get("UntapType"); - ArrayList definedPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), - sa); + final ArrayList definedPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), + params.get("Defined"), sa); - for (Player p : definedPlayers) { + for (final Player p : definedPlayers) { if (p.isHuman()) { AllZone.getInputControl().setInput(CardFactoryUtil.input_UntapUpToNType(num, valid)); } else { @@ -581,10 +586,10 @@ public class AbilityFactory_PermanentState { list = list.filter(CardListFilter.TAPPED); int count = 0; - while (list.size() != 0 && count < num) { - for (int i = 0; i < list.size() && count < num; i++) { + while ((list.size() != 0) && (count < num)) { + for (int i = 0; (i < list.size()) && (count < num); i++) { - Card c = CardFactoryUtil.AI_getBestLand(list); + final Card c = CardFactoryUtil.AI_getBestLand(list); c.untap(); list.remove(c); count++; @@ -613,22 +618,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapStackDescription(af, this); + return AbilityFactory_PermanentState.tapStackDescription(af, this); } @Override public boolean canPlayAI() { - return tapCanPlayAI(af, this); + return AbilityFactory_PermanentState.tapCanPlayAI(af, this); } @Override public void resolve() { - tapResolve(af, this); + AbilityFactory_PermanentState.tapResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return tapTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.tapTrigger(af, this, mandatory); } }; @@ -650,17 +655,17 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapStackDescription(af, this); + return AbilityFactory_PermanentState.tapStackDescription(af, this); } @Override public boolean canPlayAI() { - return tapCanPlayAI(af, this); + return AbilityFactory_PermanentState.tapCanPlayAI(af, this); } @Override public void resolve() { - tapResolve(af, this); + AbilityFactory_PermanentState.tapResolve(af, this); } }; @@ -682,22 +687,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapStackDescription(af, this); + return AbilityFactory_PermanentState.tapStackDescription(af, this); } @Override public void resolve() { - tapResolve(af, this); + AbilityFactory_PermanentState.tapResolve(af, this); } @Override public boolean chkAIDrawback() { - return tapPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.tapPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return tapTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.tapTrigger(af, this, mandatory); } }; @@ -716,9 +721,9 @@ public class AbilityFactory_PermanentState { * @return a {@link java.lang.String} object. */ private static String tapStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); final HashMap params = af.getMapParams(); - Card hostCard = sa.getSourceCard(); + final Card hostCard = sa.getSourceCard(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -729,14 +734,14 @@ public class AbilityFactory_PermanentState { sb.append("Tap "); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { sb.append(it.next()); if (it.hasNext()) { @@ -746,7 +751,7 @@ public class AbilityFactory_PermanentState { sb.append("."); - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { sb.append(subAb.getStackDescription()); } @@ -768,15 +773,15 @@ public class AbilityFactory_PermanentState { private static boolean tapCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - HashMap params = af.getMapParams(); - Target tgt = af.getAbTgt(); - Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final Card source = sa.getSourceCard(); - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); - Phase phase = AllZone.getPhase(); - Player turn = phase.getPlayerTurn(); + final Phase phase = AllZone.getPhase(); + final Player turn = phase.getPlayerTurn(); if (turn.isHuman()) { // Tap things down if it's Human's turn @@ -789,23 +794,24 @@ public class AbilityFactory_PermanentState { } if (tgt == null) { - ArrayList defined = AbilityFactory.getDefinedCards(source, params.get("Defined"), sa); + final ArrayList defined = AbilityFactory.getDefinedCards(source, params.get("Defined"), sa); boolean bFlag = false; - for (Card c : defined) + for (final Card c : defined) { bFlag |= c.isUntapped(); + } if (!bFlag) { return false; } } else { tgt.resetTargets(); - if (!tapPrefTargeting(source, tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.tapPrefTargeting(source, tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -831,8 +837,8 @@ public class AbilityFactory_PermanentState { return false; } - Target tgt = sa.getTarget(); - Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); + final Card source = sa.getSourceCard(); if (tgt == null) { if (mandatory) { @@ -843,11 +849,11 @@ public class AbilityFactory_PermanentState { return true; } else { - if (tapPrefTargeting(source, tgt, af, sa, mandatory)) { + if (AbilityFactory_PermanentState.tapPrefTargeting(source, tgt, af, sa, mandatory)) { return true; } else if (mandatory) { // not enough preferred targets, but mandatory so keep going: - return tapUnpreferredTargeting(af, sa, mandatory); + return AbilityFactory_PermanentState.tapUnpreferredTargeting(af, sa, mandatory); } } @@ -867,8 +873,8 @@ public class AbilityFactory_PermanentState { */ private static boolean tapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - Target tgt = af.getAbTgt(); - Card source = sa.getSourceCard(); + final Target tgt = af.getAbTgt(); + final Card source = sa.getSourceCard(); boolean randomReturn = true; @@ -877,12 +883,12 @@ public class AbilityFactory_PermanentState { } else { // target section, maybe pull this out? tgt.resetTargets(); - if (!tapPrefTargeting(source, tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.tapPrefTargeting(source, tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -907,14 +913,14 @@ public class AbilityFactory_PermanentState { * a boolean. * @return a boolean. */ - private static boolean tapPrefTargeting(final Card source, final Target tgt, final AbilityFactory af, final SpellAbility sa, - final boolean mandatory) { + private static boolean tapPrefTargeting(final Card source, final Target tgt, final AbilityFactory af, + final SpellAbility sa, final boolean mandatory) { CardList tapList = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); tapList = tapList.filter(CardListFilter.UNTAPPED); tapList = tapList.getValidCards(tgt.getValidTgts(), source.getController(), source); // filter out enchantments and planeswalkers, their tapped state doesn't // matter. - String[] tappablePermanents = { "Creature", "Land", "Artifact" }; + final String[] tappablePermanents = { "Creature", "Land", "Artifact" }; tapList = tapList.getValidCards(tappablePermanents, source.getController(), source); tapList = tapList.getTargetableCards(source); @@ -926,7 +932,7 @@ public class AbilityFactory_PermanentState { Card choice = null; if (tapList.size() == 0) { - if (tgt.getNumTargeted() < tgt.getMinTargets(source, sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(source, sa)) || (tgt.getNumTargeted() == 0)) { if (!mandatory) { tgt.resetTargets(); } @@ -948,7 +954,7 @@ public class AbilityFactory_PermanentState { } if (choice == null) { // can't find anything left - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { if (!mandatory) { tgt.resetTargets(); } @@ -979,9 +985,10 @@ public class AbilityFactory_PermanentState { * a boolean. * @return a boolean. */ - private static boolean tapUnpreferredTargeting(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Card source = sa.getSourceCard(); - Target tgt = sa.getTarget(); + private static boolean tapUnpreferredTargeting(final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { + final Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); list = list.getValidCards(tgt.getValidTgts(), source.getController(), source); @@ -989,24 +996,24 @@ public class AbilityFactory_PermanentState { // filter by enchantments and planeswalkers, their tapped state doesn't // matter. - String[] tappablePermanents = { "Enchantment", "Planeswalker" }; + final String[] tappablePermanents = { "Enchantment", "Planeswalker" }; CardList tapList = list.getValidCards(tappablePermanents, source.getController(), source); - if (tapTargetList(af, sa, tapList, mandatory)) { + if (AbilityFactory_PermanentState.tapTargetList(af, sa, tapList, mandatory)) { return true; } // try to just tap already tapped things tapList = list.filter(CardListFilter.TAPPED); - if (tapTargetList(af, sa, tapList, mandatory)) { + if (AbilityFactory_PermanentState.tapTargetList(af, sa, tapList, mandatory)) { return true; } // just tap whatever we can tapList = list; - if (tapTargetList(af, sa, tapList, mandatory)) { + if (AbilityFactory_PermanentState.tapTargetList(af, sa, tapList, mandatory)) { return true; } @@ -1028,12 +1035,14 @@ public class AbilityFactory_PermanentState { * a boolean. * @return a boolean. */ - private static boolean tapTargetList(final AbilityFactory af, final SpellAbility sa, final CardList tapList, final boolean mandatory) { - Card source = sa.getSourceCard(); - Target tgt = sa.getTarget(); + private static boolean tapTargetList(final AbilityFactory af, final SpellAbility sa, final CardList tapList, + final boolean mandatory) { + final Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); - for (Card c : tgt.getTargetCards()) + for (final Card c : tgt.getTargetCards()) { tapList.remove(c); + } if (tapList.size() == 0) { return false; @@ -1043,7 +1052,7 @@ public class AbilityFactory_PermanentState { Card choice = null; if (tapList.size() == 0) { - if (tgt.getNumTargeted() < tgt.getMinTargets(source, sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(source, sa)) || (tgt.getNumTargeted() == 0)) { if (!mandatory) { tgt.resetTargets(); } @@ -1065,7 +1074,7 @@ public class AbilityFactory_PermanentState { } if (choice == null) { // can't find anything left - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { if (!mandatory) { tgt.resetTargets(); } @@ -1094,19 +1103,19 @@ public class AbilityFactory_PermanentState { * a {@link forge.card.spellability.SpellAbility} object. */ private static void tapResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - for (Card tgtC : tgtCards) { - if (AllZoneUtil.isCardInPlay(tgtC) && (tgt == null || CardFactoryUtil.canTarget(af.getHostCard(), tgtC))) { + for (final Card tgtC : tgtCards) { + if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || CardFactoryUtil.canTarget(af.getHostCard(), tgtC))) { tgtC.tap(); } } @@ -1130,22 +1139,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return untapAllStackDescription(af, this); + return AbilityFactory_PermanentState.untapAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return untapAllCanPlayAI(af, this); + return AbilityFactory_PermanentState.untapAllCanPlayAI(af, this); } @Override public void resolve() { - untapAllResolve(af, this); + AbilityFactory_PermanentState.untapAllResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return untapAllTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.untapAllTrigger(af, this, mandatory); } }; @@ -1167,17 +1176,17 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return untapAllStackDescription(af, this); + return AbilityFactory_PermanentState.untapAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return untapAllCanPlayAI(af, this); + return AbilityFactory_PermanentState.untapAllCanPlayAI(af, this); } @Override public void resolve() { - untapAllResolve(af, this); + AbilityFactory_PermanentState.untapAllResolve(af, this); } }; @@ -1199,22 +1208,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return untapAllStackDescription(af, this); + return AbilityFactory_PermanentState.untapAllStackDescription(af, this); } @Override public void resolve() { - untapAllResolve(af, this); + AbilityFactory_PermanentState.untapAllResolve(af, this); } @Override public boolean chkAIDrawback() { - return untapAllPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.untapAllPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return untapAllPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.untapAllPlayDrawbackAI(af, this); } }; @@ -1247,8 +1256,8 @@ public class AbilityFactory_PermanentState { * a {@link forge.card.spellability.SpellAbility} object. */ private static void untapAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); String valid = ""; CardList list = null; @@ -1259,7 +1268,7 @@ public class AbilityFactory_PermanentState { valid = params.get("ValidCards"); } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else if (params.containsKey("Defined")) { @@ -1267,7 +1276,7 @@ public class AbilityFactory_PermanentState { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - if (tgtPlayers == null || tgtPlayers.isEmpty()) { + if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { list = AllZoneUtil.getCardsIn(Zone.Battlefield); } else { list = tgtPlayers.get(0).getCardsIn(Zone.Battlefield); @@ -1334,8 +1343,8 @@ public class AbilityFactory_PermanentState { * @return a {@link java.lang.String} object. */ private static String untapAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -1345,7 +1354,7 @@ public class AbilityFactory_PermanentState { sb.append(params.get("SpellDescription")); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { sb.append(subAb.getStackDescription()); } @@ -1371,22 +1380,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapAllStackDescription(af, this); + return AbilityFactory_PermanentState.tapAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return tapAllCanPlayAI(af, this); + return AbilityFactory_PermanentState.tapAllCanPlayAI(af, this); } @Override public void resolve() { - tapAllResolve(af, this); + AbilityFactory_PermanentState.tapAllResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return tapAllTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.tapAllTrigger(af, this, mandatory); } }; @@ -1408,17 +1417,17 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapAllStackDescription(af, this); + return AbilityFactory_PermanentState.tapAllStackDescription(af, this); } @Override public boolean canPlayAI() { - return tapAllCanPlayAI(af, this); + return AbilityFactory_PermanentState.tapAllCanPlayAI(af, this); } @Override public void resolve() { - tapAllResolve(af, this); + AbilityFactory_PermanentState.tapAllResolve(af, this); } }; @@ -1440,22 +1449,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapAllStackDescription(af, this); + return AbilityFactory_PermanentState.tapAllStackDescription(af, this); } @Override public void resolve() { - tapAllResolve(af, this); + AbilityFactory_PermanentState.tapAllResolve(af, this); } @Override public boolean chkAIDrawback() { - return tapAllPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.tapAllPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return tapAllPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.tapAllPlayDrawbackAI(af, this); } }; @@ -1473,13 +1482,13 @@ public class AbilityFactory_PermanentState { * a {@link forge.card.spellability.SpellAbility} object. */ private static void tapAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); CardList cards = null; ArrayList tgtPlayers = null; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else if (params.containsKey("Defined")) { @@ -1487,7 +1496,7 @@ public class AbilityFactory_PermanentState { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - if (tgtPlayers == null || tgtPlayers.isEmpty()) { + if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { cards = AllZoneUtil.getCardsIn(Zone.Battlefield); } else { cards = tgtPlayers.get(0).getCardsIn(Zone.Battlefield); @@ -1495,8 +1504,9 @@ public class AbilityFactory_PermanentState { cards = AbilityFactory.filterListByType(cards, params.get("ValidCards"), sa); - for (Card c : cards) + for (final Card c : cards) { c.tap(); + } } /** @@ -1515,8 +1525,8 @@ public class AbilityFactory_PermanentState { // turn // or during upkeep/begin combat? - Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); if (AllZone.getPhase().isAfter(Constant.Phase.COMBAT_BEGIN)) { return false; @@ -1529,7 +1539,7 @@ public class AbilityFactory_PermanentState { CardList validTappables = AllZoneUtil.getCardsIn(Zone.Battlefield); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (sa.getTarget() != null) { tgt.resetTargets(); @@ -1540,19 +1550,21 @@ public class AbilityFactory_PermanentState { validTappables = validTappables.getValidCards(valid, source.getController(), source); validTappables = validTappables.filter(CardListFilter.UNTAPPED); - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean rr = false; if (r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn())) { rr = true; } if (validTappables.size() > 0) { - CardList human = validTappables.filter(new CardListFilter() { + final CardList human = validTappables.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getController().isHuman(); } }); - CardList compy = validTappables.filter(new CardListFilter() { + final CardList compy = validTappables.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getController().isComputer(); } @@ -1594,8 +1606,8 @@ public class AbilityFactory_PermanentState { * @return a {@link java.lang.String} object. */ private static String tapAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -1605,7 +1617,7 @@ public class AbilityFactory_PermanentState { sb.append(params.get("SpellDescription")); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { sb.append(subAb.getStackDescription()); } @@ -1635,29 +1647,31 @@ public class AbilityFactory_PermanentState { return true; } - Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); String valid = ""; if (params.containsKey("ValidCards")) { valid = params.get("ValidCards"); } - CardList validTappables = getTapAllTargets(valid, source); + final CardList validTappables = AbilityFactory_PermanentState.getTapAllTargets(valid, source); - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean rr = false; if (r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn())) { rr = true; } if (validTappables.size() > 0) { - CardList human = validTappables.filter(new CardListFilter() { + final CardList human = validTappables.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getController().isHuman(); } }); - CardList compy = validTappables.filter(new CardListFilter() { + final CardList compy = validTappables.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { return c.getController().isHuman(); } @@ -1704,22 +1718,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapOrUntapStackDescription(af, this); + return AbilityFactory_PermanentState.tapOrUntapStackDescription(af, this); } @Override public boolean canPlayAI() { - return tapOrUntapCanPlayAI(af, this); + return AbilityFactory_PermanentState.tapOrUntapCanPlayAI(af, this); } @Override public void resolve() { - tapOrUntapResolve(af, this); + AbilityFactory_PermanentState.tapOrUntapResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return tapOrUntapTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.tapOrUntapTrigger(af, this, mandatory); } }; @@ -1741,17 +1755,17 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapOrUntapStackDescription(af, this); + return AbilityFactory_PermanentState.tapOrUntapStackDescription(af, this); } @Override public boolean canPlayAI() { - return tapOrUntapCanPlayAI(af, this); + return AbilityFactory_PermanentState.tapOrUntapCanPlayAI(af, this); } @Override public void resolve() { - tapOrUntapResolve(af, this); + AbilityFactory_PermanentState.tapOrUntapResolve(af, this); } }; @@ -1773,22 +1787,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return tapOrUntapStackDescription(af, this); + return AbilityFactory_PermanentState.tapOrUntapStackDescription(af, this); } @Override public void resolve() { - tapOrUntapResolve(af, this); + AbilityFactory_PermanentState.tapOrUntapResolve(af, this); } @Override public boolean chkAIDrawback() { - return tapOrUntapPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.tapOrUntapPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return tapOrUntapTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.tapOrUntapTrigger(af, this, mandatory); } }; @@ -1808,9 +1822,9 @@ public class AbilityFactory_PermanentState { */ private static String tapOrUntapStackDescription(final AbilityFactory af, final SpellAbility sa) { // when getStackDesc is called, just build exactly what is happening - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -1821,14 +1835,14 @@ public class AbilityFactory_PermanentState { sb.append("Tap or untap "); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { sb.append(it.next()); if (it.hasNext()) { @@ -1838,7 +1852,7 @@ public class AbilityFactory_PermanentState { sb.append("."); - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { sb.append(subAb.getStackDescription()); } @@ -1860,34 +1874,35 @@ public class AbilityFactory_PermanentState { private static boolean tapOrUntapCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - HashMap params = af.getMapParams(); - Target tgt = af.getAbTgt(); - Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final Card source = sa.getSourceCard(); - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); if (tgt == null) { // assume we are looking to tap human's stuff // TODO - check for things with untap abilities, and don't tap // those. - ArrayList defined = AbilityFactory.getDefinedCards(source, params.get("Defined"), sa); + final ArrayList defined = AbilityFactory.getDefinedCards(source, params.get("Defined"), sa); boolean bFlag = false; - for (Card c : defined) + for (final Card c : defined) { bFlag |= c.isUntapped(); + } if (!bFlag) { return false; } } else { tgt.resetTargets(); - if (!tapPrefTargeting(source, tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.tapPrefTargeting(source, tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -1913,8 +1928,8 @@ public class AbilityFactory_PermanentState { return false; } - Target tgt = sa.getTarget(); - Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); + final Card source = sa.getSourceCard(); if (tgt == null) { if (mandatory) { @@ -1925,11 +1940,11 @@ public class AbilityFactory_PermanentState { return true; } else { - if (tapPrefTargeting(source, tgt, af, sa, mandatory)) { + if (AbilityFactory_PermanentState.tapPrefTargeting(source, tgt, af, sa, mandatory)) { return true; } else if (mandatory) { // not enough preferred targets, but mandatory so keep going: - return tapUnpreferredTargeting(af, sa, mandatory); + return AbilityFactory_PermanentState.tapUnpreferredTargeting(af, sa, mandatory); } } @@ -1949,8 +1964,8 @@ public class AbilityFactory_PermanentState { */ private static boolean tapOrUntapPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - Target tgt = af.getAbTgt(); - Card source = sa.getSourceCard(); + final Target tgt = af.getAbTgt(); + final Card source = sa.getSourceCard(); boolean randomReturn = true; @@ -1959,12 +1974,12 @@ public class AbilityFactory_PermanentState { } else { // target section, maybe pull this out? tgt.resetTargets(); - if (!tapPrefTargeting(source, tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.tapPrefTargeting(source, tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -1983,26 +1998,26 @@ public class AbilityFactory_PermanentState { * a {@link forge.card.spellability.SpellAbility} object. */ private static void tapOrUntapResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - for (Card tgtC : tgtCards) { - if (AllZoneUtil.isCardInPlay(tgtC) && (tgt == null || CardFactoryUtil.canTarget(af.getHostCard(), tgtC))) { + for (final Card tgtC : tgtCards) { + if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || CardFactoryUtil.canTarget(af.getHostCard(), tgtC))) { if (sa.getActivatingPlayer().isHuman()) { - String[] tapOrUntap = new String[] { "Tap", "Untap" }; - Object z = GuiUtils.getChoiceOptional("Tap or Untap " + tgtC + "?", tapOrUntap); + final String[] tapOrUntap = new String[] { "Tap", "Untap" }; + final Object z = GuiUtils.getChoiceOptional("Tap or Untap " + tgtC + "?", tapOrUntap); if (null == z) { continue; } - boolean tap = (z.equals("Tap")) ? true : false; + final boolean tap = (z.equals("Tap")) ? true : false; if (tap) { tgtC.tap(); @@ -2038,22 +2053,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return phasesStackDescription(af, this); + return AbilityFactory_PermanentState.phasesStackDescription(af, this); } @Override public boolean canPlayAI() { - return phasesCanPlayAI(af, this); + return AbilityFactory_PermanentState.phasesCanPlayAI(af, this); } @Override public void resolve() { - phasesResolve(af, this); + AbilityFactory_PermanentState.phasesResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return phasesTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.phasesTrigger(af, this, mandatory); } }; @@ -2075,17 +2090,17 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return phasesStackDescription(af, this); + return AbilityFactory_PermanentState.phasesStackDescription(af, this); } @Override public boolean canPlayAI() { - return phasesCanPlayAI(af, this); + return AbilityFactory_PermanentState.phasesCanPlayAI(af, this); } @Override public void resolve() { - phasesResolve(af, this); + AbilityFactory_PermanentState.phasesResolve(af, this); } }; @@ -2107,22 +2122,22 @@ public class AbilityFactory_PermanentState { @Override public String getStackDescription() { - return phasesStackDescription(af, this); + return AbilityFactory_PermanentState.phasesStackDescription(af, this); } @Override public void resolve() { - phasesResolve(af, this); + AbilityFactory_PermanentState.phasesResolve(af, this); } @Override public boolean chkAIDrawback() { - return phasesPlayDrawbackAI(af, this); + return AbilityFactory_PermanentState.phasesPlayDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return phasesTrigger(af, this, mandatory); + return AbilityFactory_PermanentState.phasesTrigger(af, this, mandatory); } }; @@ -2142,9 +2157,9 @@ public class AbilityFactory_PermanentState { */ private static String phasesStackDescription(final AbilityFactory af, final SpellAbility sa) { // when getStackDesc is called, just build exactly what is happening - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); final HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -2153,14 +2168,14 @@ public class AbilityFactory_PermanentState { } ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(source, params.get("Defined"), sa); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { sb.append(it.next()); if (it.hasNext()) { @@ -2169,7 +2184,7 @@ public class AbilityFactory_PermanentState { } sb.append(" Phases Out."); - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { sb.append(subAb.getStackDescription()); } @@ -2190,11 +2205,11 @@ public class AbilityFactory_PermanentState { */ private static boolean phasesCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // This still needs to be fleshed out - Target tgt = sa.getTarget(); - Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); + final Card source = sa.getSourceCard(); final HashMap params = af.getMapParams(); - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn() + 1); ArrayList tgtCards; @@ -2210,12 +2225,12 @@ public class AbilityFactory_PermanentState { return false; } else { - if (!phasesPrefTargeting(tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.phasesPrefTargeting(tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -2237,7 +2252,7 @@ public class AbilityFactory_PermanentState { * @return a boolean. */ private static boolean phasesTrigger(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt == null) { if (mandatory) { @@ -2246,11 +2261,11 @@ public class AbilityFactory_PermanentState { return false; } else { - if (phasesPrefTargeting(tgt, af, sa, mandatory)) { + if (AbilityFactory_PermanentState.phasesPrefTargeting(tgt, af, sa, mandatory)) { return true; } else if (mandatory) { // not enough preferred targets, but mandatory so keep going: - return phasesUnpreferredTargeting(af, sa, mandatory); + return AbilityFactory_PermanentState.phasesUnpreferredTargeting(af, sa, mandatory); } } @@ -2270,19 +2285,19 @@ public class AbilityFactory_PermanentState { */ private static boolean phasesPlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); boolean randomReturn = true; if (tgt == null) { } else { - if (!phasesPrefTargeting(tgt, af, sa, false)) { + if (!AbilityFactory_PermanentState.phasesPrefTargeting(tgt, af, sa, false)) { return false; } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -2305,7 +2320,8 @@ public class AbilityFactory_PermanentState { * a boolean. * @return a boolean. */ - private static boolean phasesPrefTargeting(final Target tgt, final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { + private static boolean phasesPrefTargeting(final Target tgt, final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { // Card source = sa.getSourceCard(); // CardList phaseList = @@ -2339,9 +2355,10 @@ public class AbilityFactory_PermanentState { * a boolean. * @return a boolean. */ - private static boolean phasesUnpreferredTargeting(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Card source = sa.getSourceCard(); - Target tgt = sa.getTarget(); + private static boolean phasesUnpreferredTargeting(final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { + final Card source = sa.getSourceCard(); + final Target tgt = sa.getTarget(); CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); list = list.getValidCards(tgt.getValidTgts(), source.getController(), source).getTargetableCards(source); @@ -2360,9 +2377,9 @@ public class AbilityFactory_PermanentState { * a {@link forge.card.spellability.SpellAbility} object. */ private static void phasesResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); - Target tgt = sa.getTarget(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); + final Target tgt = sa.getTarget(); ArrayList tgtCards = null; if (tgt != null) { @@ -2371,10 +2388,10 @@ public class AbilityFactory_PermanentState { tgtCards = AbilityFactory.getDefinedCards(card, params.get("Defined"), sa); } - for (Card tgtC : tgtCards) { + for (final Card tgtC : tgtCards) { if (!tgtC.isPhasedOut()) { tgtC.phase(); } } } -}// end of AbilityFactory_PermanentState class +} // end of AbilityFactory_PermanentState class diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_PreventDamage.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_PreventDamage.java index d283669d7dd..241e10be278 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_PreventDamage.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_PreventDamage.java @@ -53,25 +53,25 @@ public class AbilityFactory_PreventDamage { @Override public boolean canPlayAI() { - return preventDamageCanPlayAI(af, this); + return AbilityFactory_PreventDamage.preventDamageCanPlayAI(af, this); } @Override public void resolve() { - preventDamageResolve(af, this); + AbilityFactory_PreventDamage.preventDamageResolve(af, this); } @Override public String getStackDescription() { - return preventDamageStackDescription(af, this); + return AbilityFactory_PreventDamage.preventDamageStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return doPreventDamageTriggerAI(af, this, mandatory); + return AbilityFactory_PreventDamage.doPreventDamageTriggerAI(af, this, mandatory); } - };// Ability_Activated + }; // Ability_Activated return abRegenerate; } @@ -92,17 +92,17 @@ public class AbilityFactory_PreventDamage { @Override public boolean canPlayAI() { - return preventDamageCanPlayAI(af, this); + return AbilityFactory_PreventDamage.preventDamageCanPlayAI(af, this); } @Override public void resolve() { - preventDamageResolve(af, this); + AbilityFactory_PreventDamage.preventDamageResolve(af, this); } @Override public String getStackDescription() { - return preventDamageStackDescription(af, this); + return AbilityFactory_PreventDamage.preventDamageStackDescription(af, this); } }; // Spell @@ -125,12 +125,12 @@ public class AbilityFactory_PreventDamage { @Override public String getStackDescription() { - return preventDamageStackDescription(af, this); + return AbilityFactory_PreventDamage.preventDamageStackDescription(af, this); } @Override public void resolve() { - preventDamageResolve(af, this); + AbilityFactory_PreventDamage.preventDamageResolve(af, this); } @Override @@ -140,7 +140,7 @@ public class AbilityFactory_PreventDamage { @Override public boolean doTrigger(final boolean mandatory) { - return doPreventDamageTriggerAI(af, this, mandatory); + return AbilityFactory_PreventDamage.doPreventDamageTriggerAI(af, this, mandatory); } }; @@ -160,8 +160,8 @@ public class AbilityFactory_PreventDamage { */ private static String preventDamageStackDescription(final AbilityFactory af, final SpellAbility sa) { final HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); ArrayList tgts; if (sa.getTarget() == null) { @@ -184,9 +184,9 @@ public class AbilityFactory_PreventDamage { sb.append(" "); } - Object o = tgts.get(i); + final Object o = tgts.get(i); if (o instanceof Card) { - Card tgtC = (Card) o; + final Card tgtC = (Card) o; if (tgtC.isFaceDown()) { sb.append("Morph"); } else { @@ -197,7 +197,7 @@ public class AbilityFactory_PreventDamage { } } - if (af.getMapParams().containsKey("Radiance") && sa.getTarget() != null) { + if (af.getMapParams().containsKey("Radiance") && (sa.getTarget() != null)) { sb.append(" and each other ").append(af.getMapParams().get("ValidTgts")) .append(" that shares a color with "); if (tgts.size() > 1) { @@ -208,7 +208,7 @@ public class AbilityFactory_PreventDamage { } sb.append(" this turn."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -232,7 +232,7 @@ public class AbilityFactory_PreventDamage { final Card hostCard = af.getHostCard(); boolean chance = false; - Cost cost = sa.getPayCosts(); + final Cost cost = sa.getPayCosts(); // temporarily disabled until better AI if (!CostUtil.checkLifeCost(cost, hostCard, 4)) { @@ -251,16 +251,17 @@ public class AbilityFactory_PreventDamage { return false; } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt == null) { // As far as I can tell these Defined Cards will only have one of // them - ArrayList objects = AbilityFactory.getDefinedObjects(sa.getSourceCard(), params.get("Defined"), sa); + final ArrayList objects = AbilityFactory.getDefinedObjects(sa.getSourceCard(), + params.get("Defined"), sa); // react to threats on the stack if (AllZone.getStack().size() > 0) { - ArrayList threatenedObjects = AbilityFactory.predictThreatenedObjects(af); - for (Object o : objects) { + final ArrayList threatenedObjects = AbilityFactory.predictThreatenedObjects(af); + for (final Object o : objects) { if (threatenedObjects.contains(o)) { chance = true; } @@ -268,12 +269,12 @@ public class AbilityFactory_PreventDamage { } else { if (AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { boolean flag = false; - for (Object o : objects) { + for (final Object o : objects) { if (o instanceof Card) { - Card c = (Card) o; + final Card c = (Card) o; flag |= CombatUtil.combatantWouldBeDestroyed(c); } else if (o instanceof Player) { - Player p = (Player) o; + final Player p = (Player) o; flag |= (p.isComputer() && ((CombatUtil.wouldLoseLife(AllZone.getCombat()) && sa .isAbility()) || CombatUtil.lifeInDanger(AllZone.getCombat()))); } @@ -292,18 +293,19 @@ public class AbilityFactory_PreventDamage { tgt.resetTargets(); // check stack for something on the stack will kill anything i // control - ArrayList objects = new ArrayList();// AbilityFactory.predictThreatenedObjects(af); + final ArrayList objects = new ArrayList(); + // AbilityFactory.predictThreatenedObjects(af); if (objects.contains(AllZone.getComputerPlayer())) { tgt.addTarget(AllZone.getComputerPlayer()); } - CardList threatenedTargets = new CardList(); + final CardList threatenedTargets = new CardList(); // filter AIs battlefield by what I can target CardList targetables = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); targetables = targetables.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), hostCard); - for (Card c : targetables) { + for (final Card c : targetables) { if (objects.contains(c)) { threatenedTargets.add(c); } @@ -329,10 +331,10 @@ public class AbilityFactory_PreventDamage { if (targetables.size() == 0) { return false; } - CardList combatants = targetables.getType("Creature"); + final CardList combatants = targetables.getType("Creature"); CardListUtil.sortByEvaluateCreature(combatants); - for (Card c : combatants) { + for (final Card c : combatants) { if (CombatUtil.combatantWouldBeDestroyed(c)) { tgt.addTarget(c); chance = true; @@ -342,7 +344,7 @@ public class AbilityFactory_PreventDamage { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -363,22 +365,23 @@ public class AbilityFactory_PreventDamage { * a boolean. * @return a boolean. */ - private static boolean doPreventDamageTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { + private static boolean doPreventDamageTriggerAI(final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { boolean chance = false; if (!ComputerUtil.canPayCost(sa)) { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt == null) { // If there's no target on the trigger, just say yes. chance = true; } else { - chance = preventDamageMandatoryTarget(af, sa, mandatory); + chance = AbilityFactory_PreventDamage.preventDamageMandatoryTarget(af, sa, mandatory); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.doTrigger(mandatory); } @@ -399,28 +402,29 @@ public class AbilityFactory_PreventDamage { * a boolean. * @return a boolean. */ - private static boolean preventDamageMandatoryTarget(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { + private static boolean preventDamageMandatoryTarget(final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { final Card hostCard = af.getHostCard(); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); tgt.resetTargets(); // filter AIs battlefield by what I can target CardList targetables = AllZoneUtil.getCardsIn(Zone.Battlefield); targetables = targetables.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), hostCard); - CardList compTargetables = targetables.getController(AllZone.getComputerPlayer()); + final CardList compTargetables = targetables.getController(AllZone.getComputerPlayer()); if (targetables.size() == 0) { return false; } - if (!mandatory && compTargetables.size() == 0) { + if (!mandatory && (compTargetables.size() == 0)) { return false; } if (compTargetables.size() > 0) { - CardList combatants = compTargetables.getType("Creature"); + final CardList combatants = compTargetables.getType("Creature"); CardListUtil.sortByEvaluateCreature(combatants); if (AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { - for (Card c : combatants) { + for (final Card c : combatants) { if (CombatUtil.combatantWouldBeDestroyed(c)) { tgt.addTarget(c); return true; @@ -451,17 +455,17 @@ public class AbilityFactory_PreventDamage { */ private static void preventDamageResolve(final AbilityFactory af, final SpellAbility sa) { final HashMap params = af.getMapParams(); - int numDam = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Amount"), sa); + final int numDam = AbilityFactory.calculateAmount(af.getHostCard(), params.get("Amount"), sa); ArrayList tgts; - ArrayList untargetedCards = new ArrayList(); + final ArrayList untargetedCards = new ArrayList(); if (sa.getTarget() == null) { tgts = AbilityFactory.getDefinedObjects(sa.getSourceCard(), params.get("Defined"), sa); } else { tgts = sa.getTarget().getTargets(); } - if (params.containsKey("Radiance") && sa.getTarget() != null) { + if (params.containsKey("Radiance") && (sa.getTarget() != null)) { Card origin = null; for (int i = 0; i < tgts.size(); i++) { if (tgts.get(i) instanceof Card) { @@ -469,35 +473,35 @@ public class AbilityFactory_PreventDamage { break; } } - if (origin != null) // Can't radiate from a player - { - for (Card c : CardUtil.getRadiance(af.getHostCard(), origin, params.get("ValidTgts").split(","))) { + if (origin != null) { + // Can't radiate from a player + for (final Card c : CardUtil.getRadiance(af.getHostCard(), origin, params.get("ValidTgts").split(","))) { untargetedCards.add(c); } } } - boolean targeted = (af.getAbTgt() != null); + final boolean targeted = (af.getAbTgt() != null); - for (Object o : tgts) { + for (final Object o : tgts) { if (o instanceof Card) { - Card c = (Card) o; + final Card c = (Card) o; if (AllZoneUtil.isCardInPlay(c) && (!targeted || CardFactoryUtil.canTarget(af.getHostCard(), c))) { c.addPreventNextDamage(numDam); } } else if (o instanceof Player) { - Player p = (Player) o; + final Player p = (Player) o; if (!targeted || p.canTarget(sa)) { p.addPreventNextDamage(numDam); } } } - for (Card c : untargetedCards) { + for (final Card c : untargetedCards) { if (AllZoneUtil.isCardInPlay(c)) { c.addPreventNextDamage(numDam); } } - }// doResolve + } // doResolve } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Protection.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Protection.java index f50ccceac06..3582ed58ab3 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Protection.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Protection.java @@ -52,22 +52,22 @@ public final class AbilityFactory_Protection { * @return a {@link forge.card.spellability.SpellAbility} object. */ public static SpellAbility createSpellProtection(final AbilityFactory af) { - SpellAbility spProtect = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { + final SpellAbility spProtect = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { private static final long serialVersionUID = 4678736312735724916L; @Override public boolean canPlayAI() { - return protectCanPlayAI(af, this); + return AbilityFactory_Protection.protectCanPlayAI(af, this); } @Override public String getStackDescription() { - return protectStackDescription(af, this); + return AbilityFactory_Protection.protectStackDescription(af, this); } @Override public void resolve() { - protectResolve(af, this); + AbilityFactory_Protection.protectResolve(af, this); } // resolve }; // SpellAbility @@ -89,22 +89,22 @@ public final class AbilityFactory_Protection { @Override public boolean canPlayAI() { - return protectCanPlayAI(af, this); + return AbilityFactory_Protection.protectCanPlayAI(af, this); } @Override public String getStackDescription() { - return protectStackDescription(af, this); + return AbilityFactory_Protection.protectStackDescription(af, this); } @Override public void resolve() { - protectResolve(af, this); + AbilityFactory_Protection.protectResolve(af, this); } // resolve() @Override public boolean doTrigger(final boolean mandatory) { - return protectTriggerAI(af, this, mandatory); + return AbilityFactory_Protection.protectTriggerAI(af, this, mandatory); } }; // SpellAbility @@ -122,32 +122,32 @@ public final class AbilityFactory_Protection { * @return a {@link forge.card.spellability.SpellAbility} object. */ public static SpellAbility createDrawbackProtection(final AbilityFactory af) { - SpellAbility dbProtect = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { + final SpellAbility dbProtect = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { private static final long serialVersionUID = 8342800124705819366L; @Override public boolean canPlayAI() { - return protectCanPlayAI(af, this); + return AbilityFactory_Protection.protectCanPlayAI(af, this); } @Override public String getStackDescription() { - return protectStackDescription(af, this); + return AbilityFactory_Protection.protectStackDescription(af, this); } @Override public void resolve() { - protectResolve(af, this); + AbilityFactory_Protection.protectResolve(af, this); } // resolve @Override public boolean chkAIDrawback() { - return protectDrawbackAI(af, this); + return AbilityFactory_Protection.protectDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return protectTriggerAI(af, this, mandatory); + return AbilityFactory_Protection.protectTriggerAI(af, this, mandatory); } }; // SpellAbility @@ -155,22 +155,22 @@ public final class AbilityFactory_Protection { } private static boolean hasProtectionFrom(final Card card, final String color) { - ArrayList onlyColors = new ArrayList(Arrays.asList(Constant.Color.ONLY_COLORS)); + final ArrayList onlyColors = new ArrayList(Arrays.asList(Constant.Color.ONLY_COLORS)); // make sure we have a valid color if (!onlyColors.contains(color)) { return false; } - String protection = "Protection from " + color; + final String protection = "Protection from " + color; return card.hasKeyword(protection); } private static boolean hasProtectionFromAny(final Card card, final ArrayList colors) { boolean protect = false; - for (String color : colors) { - protect |= hasProtectionFrom(card, color); + for (final String color : colors) { + protect |= AbilityFactory_Protection.hasProtectionFrom(card, color); } return protect; } @@ -181,8 +181,8 @@ public final class AbilityFactory_Protection { return false; } - for (String color : colors) { - protect &= hasProtectionFrom(card, color); + for (final String color : colors) { + protect &= AbilityFactory_Protection.hasProtectionFrom(card, color); } return protect; } @@ -198,17 +198,18 @@ public final class AbilityFactory_Protection { */ private static CardList getProtectCreatures(final AbilityFactory af, final SpellAbility sa) { final Card hostCard = af.getHostCard(); - final ArrayList gains = getProtectionList(hostCard, af.getMapParams()); + final ArrayList gains = AbilityFactory_Protection.getProtectionList(hostCard, af.getMapParams()); CardList list = AllZoneUtil.getCreaturesInPlay(AllZone.getComputerPlayer()); list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { if (!CardFactoryUtil.canTarget(hostCard, c)) { return false; } // Don't add duplicate protections - if (hasProtectionFromAll(c, gains)) { + if (AbilityFactory_Protection.hasProtectionFromAll(c, gains)) { return false; } @@ -252,14 +253,14 @@ public final class AbilityFactory_Protection { * @return a boolean. */ private static boolean protectCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card hostCard = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card hostCard = af.getHostCard(); // if there is no target and host card isn't in play, don't activate - if (af.getAbTgt() == null && !AllZoneUtil.isCardInPlay(hostCard)) { + if ((af.getAbTgt() == null) && !AllZoneUtil.isCardInPlay(hostCard)) { return false; } - Cost cost = sa.getPayCosts(); + final Cost cost = sa.getPayCosts(); // temporarily disabled until better AI if (!CostUtil.checkLifeCost(cost, hostCard, 4)) { @@ -279,7 +280,7 @@ public final class AbilityFactory_Protection { } // Phase Restrictions - if (AllZone.getStack().size() == 0 && AllZone.getPhase().isBefore(Constant.Phase.COMBAT_FIRST_STRIKE_DAMAGE)) { + if ((AllZone.getStack().size() == 0) && AllZone.getPhase().isBefore(Constant.Phase.COMBAT_FIRST_STRIKE_DAMAGE)) { // Instant-speed protections should not be cast outside of combat // when the stack is empty if (!AbilityFactory.isSorcerySpeed(sa)) { @@ -291,8 +292,8 @@ public final class AbilityFactory_Protection { return false; } - if (af.getAbTgt() == null || !af.getAbTgt().doesTarget()) { - ArrayList cards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); + if ((af.getAbTgt() == null) || !af.getAbTgt().doesTarget()) { + final ArrayList cards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); if (cards.size() == 0) { return false; @@ -306,7 +307,7 @@ public final class AbilityFactory_Protection { * } */ } else { - return protectTgtAI(af, sa, false); + return AbilityFactory_Protection.protectTgtAI(af, sa, false); } return false; @@ -330,11 +331,11 @@ public final class AbilityFactory_Protection { return false; } - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); tgt.resetTargets(); - CardList list = getProtectCreatures(af, sa); + CardList list = AbilityFactory_Protection.getProtectCreatures(af, sa); list = list.getValidCards(tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -352,7 +353,7 @@ public final class AbilityFactory_Protection { if (AllZone.getStack().size() == 0) { // If the cost is tapping, don't activate before declare // attack/block - if (sa.getPayCosts() != null && sa.getPayCosts().getTap()) { + if ((sa.getPayCosts() != null) && sa.getPayCosts().getTap()) { if (AllZone.getPhase().isBefore(Constant.Phase.COMBAT_DECLARE_ATTACKERS) && AllZone.getPhase().isPlayerTurn(AllZone.getComputerPlayer())) { list.remove(sa.getSourceCard()); @@ -365,7 +366,7 @@ public final class AbilityFactory_Protection { } if (list.isEmpty()) { - return mandatory && protectMandatoryTarget(af, sa, mandatory); + return mandatory && AbilityFactory_Protection.protectMandatoryTarget(af, sa, mandatory); } while (tgt.getNumTargeted() < tgt.getMaxTargets(source, sa)) { @@ -373,9 +374,9 @@ public final class AbilityFactory_Protection { // boolean goodt = false; if (list.isEmpty()) { - if (tgt.getNumTargeted() < tgt.getMinTargets(source, sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(source, sa)) || (tgt.getNumTargeted() == 0)) { if (mandatory) { - return protectMandatoryTarget(af, sa, mandatory); + return AbilityFactory_Protection.protectMandatoryTarget(af, sa, mandatory); } tgt.resetTargets(); @@ -413,7 +414,7 @@ public final class AbilityFactory_Protection { final Card host = af.getHostCard(); CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); list = list.getValidCards(tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { @@ -422,24 +423,28 @@ public final class AbilityFactory_Protection { } // Remove anything that's already been targeted - for (Card c : tgt.getTargetCards()) { + for (final Card c : tgt.getTargetCards()) { list.remove(c); } CardList pref = list.getController(AllZone.getComputerPlayer()); pref = pref.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - return !hasProtectionFromAll(c, getProtectionList(host, params)); + return !AbilityFactory_Protection.hasProtectionFromAll(c, + AbilityFactory_Protection.getProtectionList(host, params)); } }); - CardList pref2 = list.getController(AllZone.getComputerPlayer()); + final CardList pref2 = list.getController(AllZone.getComputerPlayer()); pref = pref.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - return !hasProtectionFromAny(c, getProtectionList(host, params)); + return !AbilityFactory_Protection.hasProtectionFromAny(c, + AbilityFactory_Protection.getProtectionList(host, params)); } }); - CardList forced = list.getController(AllZone.getHumanPlayer()); - Card source = sa.getSourceCard(); + final CardList forced = list.getController(AllZone.getHumanPlayer()); + final Card source = sa.getSourceCard(); while (tgt.getNumTargeted() < tgt.getMaxTargets(source, sa)) { if (pref.isEmpty()) { @@ -523,7 +528,7 @@ public final class AbilityFactory_Protection { return true; } } else { - return protectTgtAI(af, sa, mandatory); + return AbilityFactory_Protection.protectTgtAI(af, sa, mandatory); } return true; @@ -541,14 +546,14 @@ public final class AbilityFactory_Protection { * @return a boolean. */ private static boolean protectDrawbackAI(final AbilityFactory af, final SpellAbility sa) { - Card host = af.getHostCard(); + final Card host = af.getHostCard(); - if (af.getAbTgt() == null || !af.getAbTgt().doesTarget()) { + if ((af.getAbTgt() == null) || !af.getAbTgt().doesTarget()) { if (host.isCreature()) { // TODO } } else { - return protectTgtAI(af, sa, false); + return AbilityFactory_Protection.protectTgtAI(af, sa, false); } return true; @@ -566,17 +571,17 @@ public final class AbilityFactory_Protection { * @return a {@link java.lang.String} object. */ private static String protectStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); - final ArrayList gains = getProtectionList(host, params); - boolean choose = (params.containsKey("Choices")) ? true : false; - String joiner = choose ? "or" : "and"; + final ArrayList gains = AbilityFactory_Protection.getProtectionList(host, params); + final boolean choose = (params.containsKey("Choices")) ? true : false; + final String joiner = choose ? "or" : "and"; - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -591,9 +596,9 @@ public final class AbilityFactory_Protection { sb.append(host).append(" - "); } - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { - Card tgtC = it.next(); + final Card tgtC = it.next(); if (tgtC.isFaceDown()) { sb.append("Morph"); } else { @@ -605,7 +610,7 @@ public final class AbilityFactory_Protection { } } - if (af.getMapParams().containsKey("Radiance") && sa.getTarget() != null) { + if (af.getMapParams().containsKey("Radiance") && (sa.getTarget() != null)) { sb.append(" and each other ").append(af.getMapParams().get("ValidTgts")) .append(" that shares a color with "); if (tgtCards.size() > 1) { @@ -630,7 +635,7 @@ public final class AbilityFactory_Protection { sb.append(", "); } - if (i == gains.size() - 1) { + if (i == (gains.size() - 1)) { sb.append(joiner).append(" "); } @@ -644,7 +649,7 @@ public final class AbilityFactory_Protection { sb.append("."); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -663,24 +668,24 @@ public final class AbilityFactory_Protection { * a {@link forge.card.spellability.SpellAbility} object. */ private static void protectResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); final Card host = af.getHostCard(); - boolean isChoice = params.get("Gains").contains("Choice"); - ArrayList choices = getProtectionList(host, params); + final boolean isChoice = params.get("Gains").contains("Choice"); + final ArrayList choices = AbilityFactory_Protection.getProtectionList(host, params); final ArrayList gains = new ArrayList(); if (isChoice) { if (sa.getActivatingPlayer().isHuman()) { - Object o = GuiUtils.getChoice("Choose a protection", choices.toArray()); + final Object o = GuiUtils.getChoice("Choose a protection", choices.toArray()); if (null == o) { return; } - String choice = (String) o; + final String choice = (String) o; gains.add(choice); } else { // TODO - needs improvement - String choice = choices.get(0); + final String choice = choices.get(0); gains.add(choice); JOptionPane.showMessageDialog(null, "Computer chooses " + gains, "" + host, JOptionPane.PLAIN_MESSAGE); } @@ -689,21 +694,22 @@ public final class AbilityFactory_Protection { } ArrayList tgtCards; - ArrayList untargetedCards = new ArrayList(); - Target tgt = af.getAbTgt(); + final ArrayList untargetedCards = new ArrayList(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { tgtCards = AbilityFactory.getDefinedCards(host, params.get("Defined"), sa); } - if (params.containsKey("Radiance") && tgt != null) { - for (Card c : CardUtil.getRadiance(af.getHostCard(), tgtCards.get(0), params.get("ValidTgts").split(","))) { + if (params.containsKey("Radiance") && (tgt != null)) { + for (final Card c : CardUtil.getRadiance(af.getHostCard(), tgtCards.get(0), + params.get("ValidTgts").split(","))) { untargetedCards.add(c); } } - int size = tgtCards.size(); + final int size = tgtCards.size(); for (int j = 0; j < size; j++) { final Card tgtC = tgtCards.get(j); @@ -713,11 +719,11 @@ public final class AbilityFactory_Protection { } // if this is a target, make sure we can still target now - if (tgt != null && !CardFactoryUtil.canTarget(host, tgtC)) { + if ((tgt != null) && !CardFactoryUtil.canTarget(host, tgtC)) { continue; } - for (String gain : gains) { + for (final String gain : gains) { tgtC.addExtrinsicKeyword("Protection from " + gain); } @@ -726,9 +732,10 @@ public final class AbilityFactory_Protection { final Command untilEOT = new Command() { private static final long serialVersionUID = 7682700789217703789L; + @Override public void execute() { if (AllZoneUtil.isCardInPlay(tgtC)) { - for (String gain : gains) { + for (final String gain : gains) { tgtC.removeExtrinsicKeyword("Protection from " + gain); } } @@ -748,7 +755,7 @@ public final class AbilityFactory_Protection { continue; } - for (String gain : gains) { + for (final String gain : gains) { unTgtC.addExtrinsicKeyword("Protection from " + gain); } @@ -757,9 +764,10 @@ public final class AbilityFactory_Protection { final Command untilEOT = new Command() { private static final long serialVersionUID = 7682700789217703789L; + @Override public void execute() { if (AllZoneUtil.isCardInPlay(unTgtC)) { - for (String gain : gains) { + for (final String gain : gains) { unTgtC.removeExtrinsicKeyword("Protection from " + gain); } } @@ -777,7 +785,7 @@ public final class AbilityFactory_Protection { private static ArrayList getProtectionList(final Card host, final HashMap params) { final ArrayList gains = new ArrayList(); - String gainStr = params.get("Gains"); + final String gainStr = params.get("Gains"); if (gainStr.equals("Choice")) { String choices = params.get("Choices"); @@ -809,22 +817,22 @@ public final class AbilityFactory_Protection { * @return a {@link forge.card.spellability.SpellAbility} object. */ public static SpellAbility createSpellProtectionAll(final AbilityFactory af) { - SpellAbility spProtectAll = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { + final SpellAbility spProtectAll = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { private static final long serialVersionUID = 7205636088393235571L; @Override public boolean canPlayAI() { - return protectAllCanPlayAI(af, this); + return AbilityFactory_Protection.protectAllCanPlayAI(af, this); } @Override public String getStackDescription() { - return protectAllStackDescription(af, this); + return AbilityFactory_Protection.protectAllStackDescription(af, this); } @Override public void resolve() { - protectAllResolve(af, this); + AbilityFactory_Protection.protectAllResolve(af, this); } // resolve }; // SpellAbility @@ -846,22 +854,22 @@ public final class AbilityFactory_Protection { @Override public boolean canPlayAI() { - return protectAllCanPlayAI(af, this); + return AbilityFactory_Protection.protectAllCanPlayAI(af, this); } @Override public String getStackDescription() { - return protectAllStackDescription(af, this); + return AbilityFactory_Protection.protectAllStackDescription(af, this); } @Override public void resolve() { - protectAllResolve(af, this); + AbilityFactory_Protection.protectAllResolve(af, this); } // resolve() @Override public boolean doTrigger(final boolean mandatory) { - return protectAllTriggerAI(af, this, mandatory); + return AbilityFactory_Protection.protectAllTriggerAI(af, this, mandatory); } }; // SpellAbility @@ -879,32 +887,32 @@ public final class AbilityFactory_Protection { * @return a {@link forge.card.spellability.SpellAbility} object. */ public static SpellAbility createDrawbackProtectionAll(final AbilityFactory af) { - SpellAbility dbProtectAll = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { + final SpellAbility dbProtectAll = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { private static final long serialVersionUID = 5096939345199247701L; @Override public boolean canPlayAI() { - return protectAllCanPlayAI(af, this); + return AbilityFactory_Protection.protectAllCanPlayAI(af, this); } @Override public String getStackDescription() { - return protectAllStackDescription(af, this); + return AbilityFactory_Protection.protectAllStackDescription(af, this); } @Override public void resolve() { - protectAllResolve(af, this); + AbilityFactory_Protection.protectAllResolve(af, this); } // resolve @Override public boolean chkAIDrawback() { - return protectAllDrawbackAI(af, this); + return AbilityFactory_Protection.protectAllDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return protectAllTriggerAI(af, this, mandatory); + return AbilityFactory_Protection.protectAllTriggerAI(af, this, mandatory); } }; // SpellAbility @@ -923,13 +931,13 @@ public final class AbilityFactory_Protection { * @return a boolean. */ private static boolean protectAllCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - Card hostCard = af.getHostCard(); + final Card hostCard = af.getHostCard(); // if there is no target and host card isn't in play, don't activate - if (af.getAbTgt() == null && !AllZoneUtil.isCardInPlay(hostCard)) { + if ((af.getAbTgt() == null) && !AllZoneUtil.isCardInPlay(hostCard)) { return false; } - Cost cost = sa.getPayCosts(); + final Cost cost = sa.getPayCosts(); // temporarily disabled until better AI if (!CostUtil.checkLifeCost(cost, hostCard, 4)) { @@ -984,7 +992,7 @@ public final class AbilityFactory_Protection { * @return a boolean. */ private static boolean protectAllDrawbackAI(final AbilityFactory af, final SpellAbility sa) { - return protectAllTriggerAI(af, sa, false); + return AbilityFactory_Protection.protectAllTriggerAI(af, sa, false); } // protectAllDrawbackAI() /** @@ -999,13 +1007,13 @@ public final class AbilityFactory_Protection { * @return a {@link java.lang.String} object. */ private static String protectAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -1031,7 +1039,7 @@ public final class AbilityFactory_Protection { } } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1050,30 +1058,30 @@ public final class AbilityFactory_Protection { * a {@link forge.card.spellability.SpellAbility} object. */ private static void protectAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); final Card host = af.getHostCard(); - boolean isChoice = params.get("Gains").contains("Choice"); - ArrayList choices = getProtectionList(host, params); + final boolean isChoice = params.get("Gains").contains("Choice"); + final ArrayList choices = AbilityFactory_Protection.getProtectionList(host, params); final ArrayList gains = new ArrayList(); if (isChoice) { if (sa.getActivatingPlayer().isHuman()) { - Object o = GuiUtils.getChoice("Choose a protection", choices.toArray()); + final Object o = GuiUtils.getChoice("Choose a protection", choices.toArray()); if (null == o) { return; } - String choice = (String) o; + final String choice = (String) o; gains.add(choice); } else { // TODO - needs improvement - String choice = choices.get(0); + final String choice = choices.get(0); gains.add(choice); JOptionPane.showMessageDialog(null, "Computer chooses " + gains, "" + host, JOptionPane.PLAIN_MESSAGE); } } else { if (params.get("Gains").equals("ChosenColor")) { - for (String color : host.getChosenColor()) { + for (final String color : host.getChosenColor()) { gains.add(color.toLowerCase()); } } else { @@ -1081,13 +1089,13 @@ public final class AbilityFactory_Protection { } } - String valid = params.get("ValidCards"); + final String valid = params.get("ValidCards"); CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); list = list.getValidCards(valid, sa.getActivatingPlayer(), host); for (final Card tgtC : list) { if (AllZoneUtil.isCardInPlay(tgtC)) { - for (String gain : gains) { + for (final String gain : gains) { tgtC.addExtrinsicKeyword("Protection from " + gain); } @@ -1096,9 +1104,10 @@ public final class AbilityFactory_Protection { final Command untilEOT = new Command() { private static final long serialVersionUID = -6573962672873853565L; + @Override public void execute() { if (AllZoneUtil.isCardInPlay(tgtC)) { - for (String gain : gains) { + for (final String gain : gains) { tgtC.removeExtrinsicKeyword("Protection from " + gain); } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Pump.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Pump.java index 11d6f8ea169..86cd7c454d3 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Pump.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Pump.java @@ -37,12 +37,12 @@ import forge.card.spellability.Target; */ public class AbilityFactory_Pump { - private final ArrayList Keywords = new ArrayList(); + private final ArrayList keywords = new ArrayList(); private String numAttack; private String numDefense; - private AbilityFactory AF = null; + private AbilityFactory abilityFactory = null; private HashMap params = null; private Card hostCard = null; @@ -55,33 +55,33 @@ public class AbilityFactory_Pump { * a {@link forge.card.abilityFactory.AbilityFactory} object. */ public AbilityFactory_Pump(final AbilityFactory newAF) { - AF = newAF; + this.abilityFactory = newAF; - params = AF.getMapParams(); + this.params = this.abilityFactory.getMapParams(); - hostCard = AF.getHostCard(); + this.hostCard = this.abilityFactory.getHostCard(); - numAttack = (params.containsKey("NumAtt")) ? params.get("NumAtt") : "0"; - numDefense = (params.containsKey("NumDef")) ? params.get("NumDef") : "0"; + this.numAttack = (this.params.containsKey("NumAtt")) ? this.params.get("NumAtt") : "0"; + this.numDefense = (this.params.containsKey("NumDef")) ? this.params.get("NumDef") : "0"; // Start with + sign now optional - if (numAttack.startsWith("+")) { - numAttack = numAttack.substring(1); + if (this.numAttack.startsWith("+")) { + this.numAttack = this.numAttack.substring(1); } - if (numDefense.startsWith("+")) { - numDefense = numDefense.substring(1); + if (this.numDefense.startsWith("+")) { + this.numDefense = this.numDefense.substring(1); } - if (params.containsKey("KW")) { - String tmp = params.get("KW"); - String[] kk = tmp.split(" & "); + if (this.params.containsKey("KW")) { + final String tmp = this.params.get("KW"); + final String[] kk = tmp.split(" & "); - Keywords.clear(); - for (int i = 0; i < kk.length; i++) { - Keywords.add(kk[i]); + this.keywords.clear(); + for (final String element : kk) { + this.keywords.add(element); } } else { - Keywords.add("none"); + this.keywords.add("none"); } } @@ -93,24 +93,24 @@ public class AbilityFactory_Pump { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getSpellPump() { - SpellAbility spPump = new Spell(hostCard, AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility spPump = new Spell(this.hostCard, this.abilityFactory.getAbCost(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 42244224L; @Override public boolean canPlayAI() { - return pumpPlayAI(this); + return AbilityFactory_Pump.this.pumpPlayAI(this); } @Override public String getStackDescription() { - return pumpStackDescription(AF, this); + return AbilityFactory_Pump.this.pumpStackDescription(AbilityFactory_Pump.this.abilityFactory, this); } @Override public void resolve() { - pumpResolve(this); - }// resolve - };// SpellAbility + AbilityFactory_Pump.this.pumpResolve(this); + } // resolve + }; // SpellAbility return spPump; } @@ -123,30 +123,30 @@ public class AbilityFactory_Pump { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getAbilityPump() { - final SpellAbility abPump = new Ability_Activated(hostCard, AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility abPump = new Ability_Activated(this.hostCard, this.abilityFactory.getAbCost(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = -1118592153328758083L; @Override public boolean canPlayAI() { - return pumpPlayAI(this); + return AbilityFactory_Pump.this.pumpPlayAI(this); } @Override public String getStackDescription() { - return pumpStackDescription(AF, this); + return AbilityFactory_Pump.this.pumpStackDescription(AbilityFactory_Pump.this.abilityFactory, this); } @Override public void resolve() { - pumpResolve(this); - }// resolve() + AbilityFactory_Pump.this.pumpResolve(this); + } // resolve() @Override public boolean doTrigger(final boolean mandatory) { - return pumpTriggerAI(AF, this, mandatory); + return AbilityFactory_Pump.this.pumpTriggerAI(AbilityFactory_Pump.this.abilityFactory, this, mandatory); } - };// SpellAbility + }; // SpellAbility return abPump; } @@ -159,34 +159,34 @@ public class AbilityFactory_Pump { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getDrawbackPump() { - SpellAbility dbPump = new Ability_Sub(hostCard, AF.getAbTgt()) { + final SpellAbility dbPump = new Ability_Sub(this.hostCard, this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 42244224L; @Override public boolean canPlayAI() { - return pumpPlayAI(this); + return AbilityFactory_Pump.this.pumpPlayAI(this); } @Override public String getStackDescription() { - return pumpStackDescription(AF, this); + return AbilityFactory_Pump.this.pumpStackDescription(AbilityFactory_Pump.this.abilityFactory, this); } @Override public void resolve() { - pumpResolve(this); - }// resolve + AbilityFactory_Pump.this.pumpResolve(this); + } // resolve @Override public boolean chkAIDrawback() { - return pumpDrawbackAI(this); + return AbilityFactory_Pump.this.pumpDrawbackAI(this); } @Override public boolean doTrigger(final boolean mandatory) { - return pumpTriggerAI(AF, this, mandatory); + return AbilityFactory_Pump.this.pumpTriggerAI(AbilityFactory_Pump.this.abilityFactory, this, mandatory); } - };// SpellAbility + }; // SpellAbility return dbPump; } @@ -201,7 +201,7 @@ public class AbilityFactory_Pump { * @return a int. */ private int getNumAttack(final SpellAbility sa) { - return AbilityFactory.calculateAmount(hostCard, numAttack, sa); + return AbilityFactory.calculateAmount(this.hostCard, this.numAttack, sa); } /** @@ -214,7 +214,7 @@ public class AbilityFactory_Pump { * @return a int. */ private int getNumDefense(final SpellAbility sa) { - return AbilityFactory.calculateAmount(hostCard, numDefense, sa); + return AbilityFactory.calculateAmount(this.hostCard, this.numDefense, sa); } /** @@ -230,30 +230,31 @@ public class AbilityFactory_Pump { */ private CardList getPumpCreatures(final int defense, final int attack) { - final boolean kHaste = Keywords.contains("Haste"); - final boolean evasive = (Keywords.contains("Flying") || Keywords.contains("Horsemanship") - || Keywords.contains("HIDDEN Unblockable") || Keywords.contains("Fear") || Keywords + final boolean kHaste = this.keywords.contains("Haste"); + final boolean evasive = (this.keywords.contains("Flying") || this.keywords.contains("Horsemanship") + || this.keywords.contains("HIDDEN Unblockable") || this.keywords.contains("Fear") || this.keywords .contains("Intimidate")); - final boolean kSize = !Keywords.get(0).equals("none"); - String[] KWpump = { "none" }; - if (!Keywords.get(0).equals("none")) { - KWpump = Keywords.toArray(new String[Keywords.size()]); + final boolean kSize = !this.keywords.get(0).equals("none"); + String[] kwPump = { "none" }; + if (!this.keywords.get(0).equals("none")) { + kwPump = this.keywords.toArray(new String[this.keywords.size()]); } - final String[] KWs = KWpump; + final String[] keywords = kwPump; CardList list = AllZoneUtil.getCreaturesInPlay(AllZone.getComputerPlayer()); list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - if (!CardFactoryUtil.canTarget(hostCard, c)) { + if (!CardFactoryUtil.canTarget(AbilityFactory_Pump.this.hostCard, c)) { return false; } - if (c.getNetDefense() + defense <= 0) { + if ((c.getNetDefense() + defense) <= 0) { return false; } // Don't add duplicate keywords - boolean hKW = c.hasAnyKeyword(KWs); + final boolean hKW = c.hasAnyKeyword(keywords); if (kSize && hKW) { return false; } @@ -268,7 +269,7 @@ public class AbilityFactory_Pump { // give evasive keywords to creatures that can attack if (evasive && AllZone.getPhase().isPlayerTurn(AllZone.getComputerPlayer()) && CombatUtil.canAttack(c) && AllZone.getPhase().isBefore(Constant.Phase.COMBAT_DECLARE_ATTACKERS) - && c.getNetCombatDamage() > 0) { + && (c.getNetCombatDamage() > 0)) { return true; } @@ -289,14 +290,14 @@ public class AbilityFactory_Pump { // is the creature unblocked and the spell will pump its power? if (AllZone.getPhase().isAfter(Constant.Phase.COMBAT_DECLARE_BLOCKERS) - && AllZone.getCombat().isAttacking(c) && AllZone.getCombat().isUnblocked(c) && attack > 0) { + && AllZone.getCombat().isAttacking(c) && AllZone.getCombat().isUnblocked(c) && (attack > 0)) { return true; } // is the creature blocked and the blocker would survive if (AllZone.getPhase().isAfter(Constant.Phase.COMBAT_DECLARE_BLOCKERS) && AllZone.getCombat().isAttacking(c) && AllZone.getCombat().isBlocked(c) - && AllZone.getCombat().getBlockers(c) != null + && (AllZone.getCombat().getBlockers(c) != null) && !CombatUtil.blockerWouldBeDestroyed(AllZone.getCombat().getBlockers(c).get(0))) { return true; } @@ -315,7 +316,7 @@ public class AbilityFactory_Pump { } }); return list; - }// getPumpCreatures() + } // getPumpCreatures() /** *

@@ -332,38 +333,39 @@ public class AbilityFactory_Pump { */ private CardList getCurseCreatures(final SpellAbility sa, final int defense, final int attack) { CardList list = AllZoneUtil.getCreaturesInPlay(AllZone.getHumanPlayer()); - list = list.getTargetableCards(hostCard); + list = list.getTargetableCards(this.hostCard); - if (defense < 0 && !list.isEmpty()) { // with spells that give -X/-X, - // compi will try to destroy a - // creature + if ((defense < 0) && !list.isEmpty()) { // with spells that give -X/-X, + // compi will try to destroy a + // creature list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - if (c.getNetDefense() <= -defense) - { + if (c.getNetDefense() <= -defense) { return true; // can kill indestructible creatures } - return (c.getKillDamage() <= -defense && !c.hasKeyword("Indestructible")); + return ((c.getKillDamage() <= -defense) && !c.hasKeyword("Indestructible")); } }); // leaves all creatures that will be destroyed } // -X/-X end else if (!list.isEmpty()) { - String[] KWpump = { "none" }; - if (!Keywords.get(0).equals("none")) { - KWpump = Keywords.toArray(new String[Keywords.size()]); + String[] kwPump = { "none" }; + if (!this.keywords.get(0).equals("none")) { + kwPump = this.keywords.toArray(new String[this.keywords.size()]); } - final String[] KWs = KWpump; - final boolean addsKeywords = Keywords.size() > 0; + final String[] keywords = kwPump; + final boolean addsKeywords = this.keywords.size() > 0; if (addsKeywords) { - if (!containsCombatRelevantKeyword(Keywords) && AllZone.getPhase().isBefore(Constant.Phase.MAIN2)) - { + if (!this.containsCombatRelevantKeyword(this.keywords) + && AllZone.getPhase().isBefore(Constant.Phase.MAIN2)) { list.clear(); // this keyword is not combat relevenat } list = list.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - return !c.hasAnyKeyword(KWs); // don't add duplicate + return !c.hasAnyKeyword(keywords); // don't add duplicate // negative keywords } }); @@ -371,11 +373,11 @@ public class AbilityFactory_Pump { } return list; - }// getCurseCreatures() + } // getCurseCreatures() private boolean containsCombatRelevantKeyword(final ArrayList keywords) { boolean flag = false; - for (String keyword : keywords) { + for (final String keyword : keywords) { // since most keywords are combat relevant check for those that are // not if (!keyword.equals("HIDDEN This card doesn't untap during your next untap step.")) { @@ -396,35 +398,35 @@ public class AbilityFactory_Pump { */ private boolean pumpPlayAI(final SpellAbility sa) { // if there is no target and host card isn't in play, don't activate - if (AF.getAbTgt() == null && !AllZoneUtil.isCardInPlay(hostCard)) { + if ((this.abilityFactory.getAbTgt() == null) && !AllZoneUtil.isCardInPlay(this.hostCard)) { return false; } - Cost cost = sa.getPayCosts(); + final Cost cost = sa.getPayCosts(); - if (!CostUtil.checkLifeCost(cost, hostCard, 4)) { + if (!CostUtil.checkLifeCost(cost, this.hostCard, 4)) { return false; } - if (!CostUtil.checkDiscardCost(cost, hostCard)) { + if (!CostUtil.checkDiscardCost(cost, this.hostCard)) { return false; } - if (!CostUtil.checkCreatureSacrificeCost(cost, hostCard)) { + if (!CostUtil.checkCreatureSacrificeCost(cost, this.hostCard)) { return false; } - if (!CostUtil.checkRemoveCounterCost(cost, hostCard)) { + if (!CostUtil.checkRemoveCounterCost(cost, this.hostCard)) { return false; } - SpellAbility_Restriction restrict = sa.getRestrictions(); + final SpellAbility_Restriction restrict = sa.getRestrictions(); // Phase Restrictions - if (AllZone.getStack().size() == 0 && AllZone.getPhase().isBefore(Constant.Phase.COMBAT_BEGIN)) { + if ((AllZone.getStack().size() == 0) && AllZone.getPhase().isBefore(Constant.Phase.COMBAT_BEGIN)) { // Instant-speed pumps should not be cast outside of combat when the // stack is empty - if (!AF.isCurse() && !AbilityFactory.isSorcerySpeed(sa)) { + if (!this.abilityFactory.isCurse() && !AbilityFactory.isSorcerySpeed(sa)) { return false; } } else if (AllZone.getStack().size() > 0) { @@ -435,46 +437,47 @@ public class AbilityFactory_Pump { return false; } - int activations = restrict.getNumberTurnActivations(); - int sacActivations = restrict.getActivationNumberSacrifice(); + final int activations = restrict.getNumberTurnActivations(); + final int sacActivations = restrict.getActivationNumberSacrifice(); // don't risk sacrificing a creature just to pump it - if (sacActivations != -1 && activations >= (sacActivations - 1)) { + if ((sacActivations != -1) && (activations >= (sacActivations - 1))) { return false; } - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); if (source.getSVar("X").equals("Count$xPaid")) { source.setSVar("PayX", ""); } int defense; - if (numDefense.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + if (this.numDefense.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); defense = xPay; } else { - defense = getNumDefense(sa); + defense = this.getNumDefense(sa); } int attack; - if (numAttack.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + if (this.numAttack.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - String toPay = source.getSVar("PayX"); + final String toPay = source.getSVar("PayX"); if (toPay.equals("")) { - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); attack = xPay; } else { attack = Integer.parseInt(toPay); } } else { - attack = getNumAttack(sa); + attack = this.getNumAttack(sa); } - if (AF.getAbTgt() == null || !AF.getAbTgt().doesTarget()) { - ArrayList cards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); + if ((this.abilityFactory.getAbTgt() == null) || !this.abilityFactory.getAbTgt().doesTarget()) { + final ArrayList cards = AbilityFactory.getDefinedCards(sa.getSourceCard(), + this.params.get("Defined"), sa); if (cards.size() == 0) { return false; @@ -482,31 +485,31 @@ public class AbilityFactory_Pump { // when this happens we need to expand AI to consider if its ok for // everything? - for (Card card : cards) { + for (final Card card : cards) { // TODO: if AI doesn't control Card and Pump is a Curse, than // maybe use? - if ((card.getNetDefense() + defense > 0) && (!card.hasAnyKeyword(Keywords))) { - if (card.hasSickness() && Keywords.contains("Haste")) { + if (((card.getNetDefense() + defense) > 0) && (!card.hasAnyKeyword(this.keywords))) { + if (card.hasSickness() && this.keywords.contains("Haste")) { return true; - } else if (card.hasSickness() ^ Keywords.contains("Haste")) { + } else if (card.hasSickness() ^ this.keywords.contains("Haste")) { return false; - } else if (hostCard.equals(card)) { - Random r = MyRandom.getRandom(); + } else if (this.hostCard.equals(card)) { + final Random r = MyRandom.getRandom(); if (r.nextFloat() <= Math.pow(.6667, activations)) { return CardFactoryUtil.AI_doesCreatureAttack(card) && !sa.getPayCosts().getTap(); } } else { - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); return (r.nextFloat() <= Math.pow(.6667, activations)); } } } } else { - return pumpTgtAI(sa, defense, attack, false); + return this.pumpTgtAI(sa, defense, attack, false); } return false; - }// pumpPlayAI() + } // pumpPlayAI() /** *

@@ -525,17 +528,17 @@ public class AbilityFactory_Pump { */ private boolean pumpTgtAI(final SpellAbility sa, final int defense, final int attack, final boolean mandatory) { if (!mandatory && AllZone.getPhase().isAfter(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY) - && !(AF.isCurse() && (defense < 0 || !containsCombatRelevantKeyword(Keywords)))) { + && !(this.abilityFactory.isCurse() && ((defense < 0) || !this.containsCombatRelevantKeyword(this.keywords)))) { return false; } - Target tgt = AF.getAbTgt(); + final Target tgt = this.abilityFactory.getAbTgt(); tgt.resetTargets(); CardList list; - if (AF.isCurse()) { - list = getCurseCreatures(sa, defense, attack); + if (this.abilityFactory.isCurse()) { + list = this.getCurseCreatures(sa, defense, attack); } else { - list = getPumpCreatures(defense, attack); + list = this.getPumpCreatures(defense, attack); } list = list.getValidCards(tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -543,7 +546,7 @@ public class AbilityFactory_Pump { if (AllZone.getStack().size() == 0) { // If the cost is tapping, don't activate before declare // attack/block - if (sa.getPayCosts() != null && sa.getPayCosts().getTap()) { + if ((sa.getPayCosts() != null) && sa.getPayCosts().getTap()) { if (AllZone.getPhase().isBefore(Constant.Phase.COMBAT_DECLARE_ATTACKERS) && AllZone.getPhase().isPlayerTurn(AllZone.getComputerPlayer())) { list.remove(sa.getSourceCard()); @@ -556,7 +559,7 @@ public class AbilityFactory_Pump { } if (list.isEmpty()) { - return mandatory && pumpMandatoryTarget(AF, sa, mandatory); + return mandatory && this.pumpMandatoryTarget(this.abilityFactory, sa, mandatory); } while (tgt.getNumTargeted() < tgt.getMaxTargets(sa.getSourceCard(), sa)) { @@ -564,9 +567,9 @@ public class AbilityFactory_Pump { // boolean goodt = false; if (list.isEmpty()) { - if (tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa) || tgt.getNumTargeted() == 0) { + if ((tgt.getNumTargeted() < tgt.getMinTargets(sa.getSourceCard(), sa)) || (tgt.getNumTargeted() == 0)) { if (mandatory) { - return pumpMandatoryTarget(AF, sa, mandatory); + return this.pumpMandatoryTarget(this.abilityFactory, sa, mandatory); } tgt.resetTargets(); @@ -583,7 +586,7 @@ public class AbilityFactory_Pump { } return true; - }// pumpTgtAI() + } // pumpTgtAI() /** *

@@ -600,7 +603,7 @@ public class AbilityFactory_Pump { */ private boolean pumpMandatoryTarget(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); list = list.getValidCards(tgt.getValidTgts(), sa.getActivatingPlayer(), sa.getSourceCard()); if (list.size() < tgt.getMinTargets(sa.getSourceCard(), sa)) { @@ -609,12 +612,13 @@ public class AbilityFactory_Pump { } // Remove anything that's already been targeted - for (Card c : tgt.getTargetCards()) + for (final Card c : tgt.getTargetCards()) { list.remove(c); + } CardList pref; CardList forced; - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); if (af.isCurse()) { pref = list.getController(AllZone.getHumanPlayer()); @@ -664,7 +668,7 @@ public class AbilityFactory_Pump { } return true; - }// pumpMandatoryTarget() + } // pumpMandatoryTarget() /** *

@@ -684,32 +688,32 @@ public class AbilityFactory_Pump { return false; } - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); int defense; - if (numDefense.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + if (this.numDefense.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); defense = xPay; } else { - defense = getNumDefense(sa); + defense = this.getNumDefense(sa); } int attack; - if (numAttack.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + if (this.numAttack.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - String toPay = source.getSVar("PayX"); + final String toPay = source.getSVar("PayX"); if (toPay.equals("")) { - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); attack = xPay; } else { attack = Integer.parseInt(toPay); } } else { - attack = getNumAttack(sa); + attack = this.getNumAttack(sa); } if (sa.getTarget() == null) { @@ -717,11 +721,11 @@ public class AbilityFactory_Pump { return true; } } else { - return pumpTgtAI(sa, defense, attack, mandatory); + return this.pumpTgtAI(sa, defense, attack, mandatory); } return true; - }// pumpTriggerAI + } // pumpTriggerAI /** *

@@ -733,37 +737,37 @@ public class AbilityFactory_Pump { * @return a boolean. */ private boolean pumpDrawbackAI(final SpellAbility sa) { - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); int defense; - if (numDefense.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + if (this.numDefense.contains("X") && source.getSVar("X").equals("Count$xPaid")) { defense = Integer.parseInt(source.getSVar("PayX")); } else { - defense = getNumDefense(sa); + defense = this.getNumDefense(sa); } int attack; - if (numAttack.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + if (this.numAttack.contains("X") && source.getSVar("X").equals("Count$xPaid")) { attack = Integer.parseInt(source.getSVar("PayX")); } else { - attack = getNumAttack(sa); + attack = this.getNumAttack(sa); } - if (AF.getAbTgt() == null || !AF.getAbTgt().doesTarget()) { - if (hostCard.isCreature()) { - if (!hostCard.hasKeyword("Indestructible") - && hostCard.getNetDefense() + defense <= hostCard.getDamage()) { + if ((this.abilityFactory.getAbTgt() == null) || !this.abilityFactory.getAbTgt().doesTarget()) { + if (this.hostCard.isCreature()) { + if (!this.hostCard.hasKeyword("Indestructible") + && ((this.hostCard.getNetDefense() + defense) <= this.hostCard.getDamage())) { return false; } - if (hostCard.getNetDefense() + defense <= 0) { + if ((this.hostCard.getNetDefense() + defense) <= 0) { return false; } } } else { - return pumpTgtAI(sa, defense, attack, false); + return this.pumpTgtAI(sa, defense, attack, false); } return true; - }// pumpDrawbackAI() + } // pumpDrawbackAI() /** *

@@ -779,15 +783,15 @@ public class AbilityFactory_Pump { private String pumpStackDescription(final AbilityFactory af, final SpellAbility sa) { // when damageStackDescription is called, just build exactly what is // happening - StringBuilder sb = new StringBuilder(); - String name = af.getHostCard().getName(); + final StringBuilder sb = new StringBuilder(); + final String name = af.getHostCard().getName(); ArrayList tgtCards; - Target tgt = AF.getAbTgt(); + final Target tgt = this.abilityFactory.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { - tgtCards = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); + tgtCards = AbilityFactory.getDefinedCards(sa.getSourceCard(), this.params.get("Defined"), sa); } if (tgtCards.size() > 0) { @@ -798,8 +802,9 @@ public class AbilityFactory_Pump { sb.append(name).append(" - "); } - for (Card c : tgtCards) + for (final Card c : tgtCards) { sb.append(c.getName()).append(" "); + } if (af.getMapParams().containsKey("Radiance")) { sb.append(" and each other ").append(af.getMapParams().get("ValidTgts")) @@ -811,11 +816,11 @@ public class AbilityFactory_Pump { } } - final int atk = getNumAttack(sa); - final int def = getNumDefense(sa); + final int atk = this.getNumAttack(sa); + final int def = this.getNumDefense(sa); sb.append("gains "); - if (atk != 0 || def != 0) { + if ((atk != 0) || (def != 0)) { if (atk >= 0) { sb.append("+"); } @@ -828,24 +833,24 @@ public class AbilityFactory_Pump { sb.append(" "); } - for (int i = 0; i < Keywords.size(); i++) { - if (!Keywords.get(i).equals("none")) { - sb.append(Keywords.get(i)).append(" "); + for (int i = 0; i < this.keywords.size(); i++) { + if (!this.keywords.get(i).equals("none")) { + sb.append(this.keywords.get(i)).append(" "); } } - if (!params.containsKey("Permanent")) { + if (!this.params.containsKey("Permanent")) { sb.append("until end of turn."); } } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } return sb.toString(); - }// pumpStackDescription() + } // pumpStackDescription() /** *

@@ -857,23 +862,25 @@ public class AbilityFactory_Pump { */ private void pumpResolve(final SpellAbility sa) { ArrayList tgtCards; - ArrayList untargetedCards = new ArrayList(); - Target tgt = AF.getAbTgt(); + final ArrayList untargetedCards = new ArrayList(); + final Target tgt = this.abilityFactory.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { - tgtCards = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); + tgtCards = AbilityFactory.getDefinedCards(this.hostCard, this.params.get("Defined"), sa); } - if (params.containsKey("Radiance")) { - for (Card c : CardUtil.getRadiance(hostCard, tgtCards.get(0), params.get("ValidTgts").split(","))) { + if (this.params.containsKey("Radiance")) { + for (final Card c : CardUtil.getRadiance(this.hostCard, tgtCards.get(0), this.params.get("ValidTgts") + .split(","))) { untargetedCards.add(c); } } - Zone pumpZone = params.containsKey("PumpZone") ? Zone.smartValueOf(params.get("PumpZone")) : Zone.Battlefield; + final Zone pumpZone = this.params.containsKey("PumpZone") ? Zone.smartValueOf(this.params.get("PumpZone")) + : Zone.Battlefield; - int size = tgtCards.size(); + final int size = tgtCards.size(); for (int j = 0; j < size; j++) { final Card tgtC = tgtCards.get(j); @@ -883,11 +890,11 @@ public class AbilityFactory_Pump { } // if pump is a target, make sure we can still target now - if (tgt != null && !CardFactoryUtil.canTarget(AF.getHostCard(), tgtC)) { + if ((tgt != null) && !CardFactoryUtil.canTarget(this.abilityFactory.getHostCard(), tgtC)) { continue; } - applyPump(sa, tgtC); + this.applyPump(sa, tgtC); } for (int i = 0; i < untargetedCards.size(); i++) { @@ -897,37 +904,38 @@ public class AbilityFactory_Pump { continue; } - applyPump(sa, tgtC); + this.applyPump(sa, tgtC); } - }// pumpResolve() + } // pumpResolve() private void applyPump(final SpellAbility sa, final Card applyTo) { - final int a = getNumAttack(sa); - final int d = getNumDefense(sa); + final int a = this.getNumAttack(sa); + final int d = this.getNumDefense(sa); applyTo.addTempAttackBoost(a); applyTo.addTempDefenseBoost(d); - for (int i = 0; i < Keywords.size(); i++) { - if (!Keywords.get(i).equals("none")) { - applyTo.addExtrinsicKeyword(Keywords.get(i)); + for (int i = 0; i < this.keywords.size(); i++) { + if (!this.keywords.get(i).equals("none")) { + applyTo.addExtrinsicKeyword(this.keywords.get(i)); } } - if (!params.containsKey("Permanent")) { + if (!this.params.containsKey("Permanent")) { // If not Permanent, remove Pumped at EOT final Command untilEOT = new Command() { private static final long serialVersionUID = -42244224L; + @Override public void execute() { if (AllZoneUtil.isCardInPlay(applyTo)) { applyTo.addTempAttackBoost(-1 * a); applyTo.addTempDefenseBoost(-1 * d); - if (Keywords.size() > 0) { - for (int i = 0; i < Keywords.size(); i++) { - if (!Keywords.get(i).equals("none")) { - applyTo.removeExtrinsicKeyword(Keywords.get(i)); + if (AbilityFactory_Pump.this.keywords.size() > 0) { + for (int i = 0; i < AbilityFactory_Pump.this.keywords.size(); i++) { + if (!AbilityFactory_Pump.this.keywords.get(i).equals("none")) { + applyTo.removeExtrinsicKeyword(AbilityFactory_Pump.this.keywords.get(i)); } } } @@ -935,9 +943,9 @@ public class AbilityFactory_Pump { } } }; - if (params.containsKey("UntilEndOfCombat")) { + if (this.params.containsKey("UntilEndOfCombat")) { AllZone.getEndOfCombat().addUntil(untilEOT); - } else if (params.containsKey("UntilYourNextUpkeep")) { + } else if (this.params.containsKey("UntilYourNextUpkeep")) { AllZone.getUpkeep().addUntil(sa.getActivatingPlayer(), untilEOT); } else { AllZone.getEndOfTurn().addUntil(untilEOT); @@ -959,30 +967,30 @@ public class AbilityFactory_Pump { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getAbilityPumpAll() { - final SpellAbility abPumpAll = new Ability_Activated(hostCard, AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility abPumpAll = new Ability_Activated(this.hostCard, this.abilityFactory.getAbCost(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = -8299417521903307630L; @Override public boolean canPlayAI() { - return pumpAllCanPlayAI(this); + return AbilityFactory_Pump.this.pumpAllCanPlayAI(this); } @Override public String getStackDescription() { - return pumpAllStackDescription(AF, this); + return AbilityFactory_Pump.this.pumpAllStackDescription(AbilityFactory_Pump.this.abilityFactory, this); } @Override public void resolve() { - pumpAllResolve(this); - }// resolve() + AbilityFactory_Pump.this.pumpAllResolve(this); + } // resolve() @Override public boolean doTrigger(final boolean mandatory) { - return pumpAllTriggerAI(AF, this, mandatory); + return AbilityFactory_Pump.this.pumpAllTriggerAI(AbilityFactory_Pump.this.abilityFactory, this, mandatory); } - };// SpellAbility + }; // SpellAbility return abPumpAll; } @@ -995,22 +1003,24 @@ public class AbilityFactory_Pump { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getSpellPumpAll() { - SpellAbility spPumpAll = new Spell(hostCard, AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility spPumpAll = new Spell(this.hostCard, this.abilityFactory.getAbCost(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = -4055467978660824703L; + @Override public boolean canPlayAI() { - return pumpAllCanPlayAI(this); + return AbilityFactory_Pump.this.pumpAllCanPlayAI(this); } @Override public String getStackDescription() { - return pumpAllStackDescription(AF, this); + return AbilityFactory_Pump.this.pumpAllStackDescription(AbilityFactory_Pump.this.abilityFactory, this); } + @Override public void resolve() { - pumpAllResolve(this); - }// resolve - };// SpellAbility + AbilityFactory_Pump.this.pumpAllResolve(this); + } // resolve + }; // SpellAbility return spPumpAll; } @@ -1023,29 +1033,29 @@ public class AbilityFactory_Pump { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getDrawbackPumpAll() { - SpellAbility dbPumpAll = new Ability_Sub(hostCard, AF.getAbTgt()) { + final SpellAbility dbPumpAll = new Ability_Sub(this.hostCard, this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 6411531984691660342L; @Override public String getStackDescription() { - return pumpAllStackDescription(AF, this); + return AbilityFactory_Pump.this.pumpAllStackDescription(AbilityFactory_Pump.this.abilityFactory, this); } @Override public void resolve() { - pumpAllResolve(this); - }// resolve + AbilityFactory_Pump.this.pumpAllResolve(this); + } // resolve @Override public boolean chkAIDrawback() { - return pumpAllChkDrawbackAI(this); + return AbilityFactory_Pump.this.pumpAllChkDrawbackAI(this); } @Override public boolean doTrigger(final boolean mandatory) { - return pumpAllTriggerAI(AF, this, mandatory); + return AbilityFactory_Pump.this.pumpAllTriggerAI(AbilityFactory_Pump.this.abilityFactory, this, mandatory); } - };// SpellAbility + }; // SpellAbility return dbPumpAll; } @@ -1061,74 +1071,75 @@ public class AbilityFactory_Pump { */ private boolean pumpAllCanPlayAI(final SpellAbility sa) { String valid = ""; - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); // final Card source = sa.getSourceCard(); - params = AF.getMapParams(); - final int defense = getNumDefense(sa); + this.params = this.abilityFactory.getMapParams(); + final int defense = this.getNumDefense(sa); - boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); // to - // prevent - // runaway - // activations + final boolean chance = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn()); // to + // prevent + // runaway + // activations - if (params.containsKey("ValidCards")) { - valid = params.get("ValidCards"); + if (this.params.containsKey("ValidCards")) { + valid = this.params.get("ValidCards"); } CardList comp = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); - comp = comp.getValidCards(valid, hostCard.getController(), hostCard); + comp = comp.getValidCards(valid, this.hostCard.getController(), this.hostCard); CardList human = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); - human = human.getValidCards(valid, hostCard.getController(), hostCard); + human = human.getValidCards(valid, this.hostCard.getController(), this.hostCard); // only count creatures that can attack human = human.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - return CombatUtil.canAttack(c) && !AF.isCurse(); + return CombatUtil.canAttack(c) && !AbilityFactory_Pump.this.abilityFactory.isCurse(); } }); - if (AF.isCurse()) { + if (this.abilityFactory.isCurse()) { if (defense < 0) { // try to destroy creatures comp = comp.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - if (c.getNetDefense() <= -defense) - { + if (c.getNetDefense() <= -defense) { return true; // can kill indestructible creatures } - return (c.getKillDamage() <= -defense && !c.hasKeyword("Indestructible")); + return ((c.getKillDamage() <= -defense) && !c.hasKeyword("Indestructible")); } }); // leaves all creatures that will be destroyed human = human.filter(new CardListFilter() { + @Override public boolean addCard(final Card c) { - if (c.getNetDefense() <= -defense) - { + if (c.getNetDefense() <= -defense) { return true; // can kill indestructible creatures } - return (c.getKillDamage() <= -defense && !c.hasKeyword("Indestructible")); + return ((c.getKillDamage() <= -defense) && !c.hasKeyword("Indestructible")); } }); // leaves all creatures that will be destroyed } // -X/-X end // evaluate both lists and pass only if human creatures are more // valuable - if (CardFactoryUtil.evaluateCreatureList(comp) + 200 >= CardFactoryUtil.evaluateCreatureList(human)) { + if ((CardFactoryUtil.evaluateCreatureList(comp) + 200) >= CardFactoryUtil.evaluateCreatureList(human)) { return false; } return chance; - }// end Curse + } // end Curse // don't use non curse PumpAll after Combat_Begin until AI is improved if (AllZone.getPhase().isAfter(Constant.Phase.COMBAT_BEGIN)) { return false; } - if (comp.size() <= human.size() || comp.size() <= 1) { + if ((comp.size() <= human.size()) || (comp.size() <= 1)) { return false; } return (r.nextFloat() < .6667) && chance; - }// pumpAllCanPlayAI() + } // pumpAllCanPlayAI() /** *

@@ -1139,35 +1150,35 @@ public class AbilityFactory_Pump { * a {@link forge.card.spellability.SpellAbility} object. */ private void pumpAllResolve(final SpellAbility sa) { - AbilityFactory af = sa.getAbilityFactory(); + final AbilityFactory af = sa.getAbilityFactory(); CardList list; ArrayList tgtPlayers = null; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); - } else if (params.containsKey("Defined")) { + } else if (this.params.containsKey("Defined")) { // use it - tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); + tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), this.params.get("Defined"), sa); } - if (tgtPlayers == null || tgtPlayers.isEmpty()) { + if ((tgtPlayers == null) || tgtPlayers.isEmpty()) { list = AllZoneUtil.getCardsIn(Zone.Battlefield); } else { list = tgtPlayers.get(0).getCardsIn(Zone.Battlefield); } String valid = ""; - if (params.containsKey("ValidCards")) { - valid = params.get("ValidCards"); + if (this.params.containsKey("ValidCards")) { + valid = this.params.get("ValidCards"); } list = AbilityFactory.filterListByType(list, valid, sa); - final int a = getNumAttack(sa); - final int d = getNumDefense(sa); + final int a = this.getNumAttack(sa); + final int d = this.getNumDefense(sa); - for (Card c : list) { + for (final Card c : list) { final Card tgtC = c; // only pump things in play @@ -1178,26 +1189,27 @@ public class AbilityFactory_Pump { tgtC.addTempAttackBoost(a); tgtC.addTempDefenseBoost(d); - for (int i = 0; i < Keywords.size(); i++) { - if (!Keywords.get(i).equals("none")) { - tgtC.addExtrinsicKeyword(Keywords.get(i)); + for (int i = 0; i < this.keywords.size(); i++) { + if (!this.keywords.get(i).equals("none")) { + tgtC.addExtrinsicKeyword(this.keywords.get(i)); } } - if (!params.containsKey("Permanent")) { + if (!this.params.containsKey("Permanent")) { // If not Permanent, remove Pumped at EOT final Command untilEOT = new Command() { private static final long serialVersionUID = 5415795460189457660L; + @Override public void execute() { if (AllZoneUtil.isCardInPlay(tgtC)) { tgtC.addTempAttackBoost(-1 * a); tgtC.addTempDefenseBoost(-1 * d); - if (Keywords.size() > 0) { - for (int i = 0; i < Keywords.size(); i++) { - if (!Keywords.get(i).equals("none")) { - tgtC.removeExtrinsicKeyword(Keywords.get(i)); + if (AbilityFactory_Pump.this.keywords.size() > 0) { + for (int i = 0; i < AbilityFactory_Pump.this.keywords.size(); i++) { + if (!AbilityFactory_Pump.this.keywords.get(i).equals("none")) { + tgtC.removeExtrinsicKeyword(AbilityFactory_Pump.this.keywords.get(i)); } } } @@ -1208,7 +1220,7 @@ public class AbilityFactory_Pump { AllZone.getEndOfTurn().addUntil(untilEOT); } } - }// pumpAllResolve() + } // pumpAllResolve() /** *

@@ -1259,13 +1271,13 @@ public class AbilityFactory_Pump { * @return a {@link java.lang.String} object. */ private String pumpAllStackDescription(final AbilityFactory af, final SpellAbility sa) { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); String desc = ""; - if (params.containsKey("SpellDescription")) { - desc = params.get("SpellDescription"); - } else if (params.containsKey("PumpAllDescription")) { - desc = params.get("PumpAllDescription"); + if (this.params.containsKey("SpellDescription")) { + desc = this.params.get("SpellDescription"); + } else if (this.params.containsKey("PumpAllDescription")) { + desc = this.params.get("PumpAllDescription"); } if (!(sa instanceof Ability_Sub)) { @@ -1275,12 +1287,12 @@ public class AbilityFactory_Pump { } sb.append(desc); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } return sb.toString(); - }// pumpAllStackDescription() + } // pumpAllStackDescription() -}// end class AbilityFactory_Pump +} // end class AbilityFactory_Pump diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Regenerate.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Regenerate.java index f5c0f2ff495..7783c9e4b05 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Regenerate.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Regenerate.java @@ -57,25 +57,25 @@ public class AbilityFactory_Regenerate { @Override public boolean canPlayAI() { - return regenerateCanPlayAI(af, this); + return AbilityFactory_Regenerate.regenerateCanPlayAI(af, this); } @Override public void resolve() { - regenerateResolve(af, this); + AbilityFactory_Regenerate.regenerateResolve(af, this); } @Override public String getStackDescription() { - return regenerateStackDescription(af, this); + return AbilityFactory_Regenerate.regenerateStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return doTriggerAI(af, this, mandatory); + return AbilityFactory_Regenerate.doTriggerAI(af, this, mandatory); } - };// Ability_Activated + }; // Ability_Activated return abRegenerate; } @@ -96,17 +96,17 @@ public class AbilityFactory_Regenerate { @Override public boolean canPlayAI() { - return regenerateCanPlayAI(af, this); + return AbilityFactory_Regenerate.regenerateCanPlayAI(af, this); } @Override public void resolve() { - regenerateResolve(af, this); + AbilityFactory_Regenerate.regenerateResolve(af, this); } @Override public String getStackDescription() { - return regenerateStackDescription(af, this); + return AbilityFactory_Regenerate.regenerateStackDescription(af, this); } }; // Spell @@ -129,12 +129,12 @@ public class AbilityFactory_Regenerate { @Override public String getStackDescription() { - return regenerateStackDescription(af, this); + return AbilityFactory_Regenerate.regenerateStackDescription(af, this); } @Override public void resolve() { - regenerateResolve(af, this); + AbilityFactory_Regenerate.regenerateResolve(af, this); } @Override @@ -144,7 +144,7 @@ public class AbilityFactory_Regenerate { @Override public boolean doTrigger(final boolean mandatory) { - return doTriggerAI(af, this, mandatory); + return AbilityFactory_Regenerate.doTriggerAI(af, this, mandatory); } }; @@ -164,11 +164,11 @@ public class AbilityFactory_Regenerate { */ private static String regenerateStackDescription(final AbilityFactory af, final SpellAbility sa) { final HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -183,9 +183,9 @@ public class AbilityFactory_Regenerate { } sb.append("Regenerate "); - Iterator it = tgtCards.iterator(); + final Iterator it = tgtCards.iterator(); while (it.hasNext()) { - Card tgtC = it.next(); + final Card tgtC = it.next(); if (tgtC.isFaceDown()) { sb.append("Morph"); } else { @@ -199,7 +199,7 @@ public class AbilityFactory_Regenerate { } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -222,7 +222,7 @@ public class AbilityFactory_Regenerate { final HashMap params = af.getMapParams(); final Card hostCard = af.getHostCard(); boolean chance = false; - Cost abCost = af.getAbCost(); + final Cost abCost = af.getAbCost(); if (abCost != null) { // AI currently disabled for these costs if (!CostUtil.checkLifeCost(abCost, hostCard, 4)) { @@ -238,16 +238,16 @@ public class AbilityFactory_Regenerate { } } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt == null) { // As far as I can tell these Defined Cards will only have one of // them - ArrayList list = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); + final ArrayList list = AbilityFactory.getDefinedCards(hostCard, params.get("Defined"), sa); if (AllZone.getStack().size() > 0) { - ArrayList objects = AbilityFactory.predictThreatenedObjects(af); + final ArrayList objects = AbilityFactory.predictThreatenedObjects(af); - for (Card c : list) { + for (final Card c : list) { if (objects.contains(c)) { chance = true; } @@ -256,7 +256,7 @@ public class AbilityFactory_Regenerate { if (AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { boolean flag = false; - for (Card c : list) { + for (final Card c : list) { if (c.getShield() == 0) { flag |= CombatUtil.combatantWouldBeDestroyed(c); } @@ -281,12 +281,12 @@ public class AbilityFactory_Regenerate { if (AllZone.getStack().size() > 0) { // check stack for something on the stack will kill anything i // control - ArrayList objects = AbilityFactory.predictThreatenedObjects(af); + final ArrayList objects = AbilityFactory.predictThreatenedObjects(af); - CardList threatenedTargets = new CardList(); + final CardList threatenedTargets = new CardList(); - for (Card c : targetables) { - if (objects.contains(c) && c.getShield() == 0) { + for (final Card c : targetables) { + if (objects.contains(c) && (c.getShield() == 0)) { threatenedTargets.add(c); } } @@ -298,11 +298,11 @@ public class AbilityFactory_Regenerate { } } else { if (AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { - CardList combatants = targetables.getType("Creature"); + final CardList combatants = targetables.getType("Creature"); CardListUtil.sortByEvaluateCreature(combatants); - for (Card c : combatants) { - if (c.getShield() == 0 && CombatUtil.combatantWouldBeDestroyed(c)) { + for (final Card c : combatants) { + if ((c.getShield() == 0) && CombatUtil.combatantWouldBeDestroyed(c)) { tgt.addTarget(c); chance = true; break; @@ -312,13 +312,13 @@ public class AbilityFactory_Regenerate { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } return chance; - }// regenerateCanPlayAI + } // regenerateCanPlayAI /** *

@@ -340,15 +340,15 @@ public class AbilityFactory_Regenerate { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt == null) { // If there's no target on the trigger, just say yes. chance = true; } else { - chance = regenMandatoryTarget(af, sa, mandatory); + chance = AbilityFactory_Regenerate.regenMandatoryTarget(af, sa, mandatory); } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.doTrigger(mandatory); } @@ -371,27 +371,27 @@ public class AbilityFactory_Regenerate { */ private static boolean regenMandatoryTarget(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { final Card hostCard = af.getHostCard(); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); tgt.resetTargets(); // filter AIs battlefield by what I can target CardList targetables = AllZoneUtil.getCardsIn(Zone.Battlefield); targetables = targetables.getValidCards(tgt.getValidTgts(), AllZone.getComputerPlayer(), hostCard); - CardList compTargetables = targetables.getController(AllZone.getComputerPlayer()); + final CardList compTargetables = targetables.getController(AllZone.getComputerPlayer()); if (targetables.size() == 0) { return false; } - if (!mandatory && compTargetables.size() == 0) { + if (!mandatory && (compTargetables.size() == 0)) { return false; } if (compTargetables.size() > 0) { - CardList combatants = compTargetables.getType("Creature"); + final CardList combatants = compTargetables.getType("Creature"); CardListUtil.sortByEvaluateCreature(combatants); if (AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { - for (Card c : combatants) { - if (c.getShield() == 0 && CombatUtil.combatantWouldBeDestroyed(c)) { + for (final Card c : combatants) { + if ((c.getShield() == 0) && CombatUtil.combatantWouldBeDestroyed(c)) { tgt.addTarget(c); return true; } @@ -403,7 +403,7 @@ public class AbilityFactory_Regenerate { // choose my best X without regen if (compTargetables.getNotType("Creature").size() == 0) { - for (Card c : combatants) { + for (final Card c : combatants) { if (c.getShield() == 0) { tgt.addTarget(c); return true; @@ -413,7 +413,7 @@ public class AbilityFactory_Regenerate { return true; } else { CardListUtil.sortByMostExpensive(compTargetables); - for (Card c : compTargetables) { + for (final Card c : compTargetables) { if (c.getShield() == 0) { tgt.addTarget(c); return true; @@ -439,11 +439,11 @@ public class AbilityFactory_Regenerate { * a {@link forge.card.spellability.SpellAbility} object. */ private static void regenerateResolve(final AbilityFactory af, final SpellAbility sa) { - Card hostCard = af.getHostCard(); + final Card hostCard = af.getHostCard(); final HashMap params = af.getMapParams(); ArrayList tgtCards; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtCards = tgt.getTargetCards(); } else { @@ -454,17 +454,18 @@ public class AbilityFactory_Regenerate { final Command untilEOT = new Command() { private static final long serialVersionUID = 1922050611313909200L; + @Override public void execute() { tgtC.resetShield(); } }; - if (AllZoneUtil.isCardInPlay(tgtC) && (tgt == null || CardFactoryUtil.canTarget(hostCard, tgtC))) { + if (AllZoneUtil.isCardInPlay(tgtC) && ((tgt == null) || CardFactoryUtil.canTarget(hostCard, tgtC))) { tgtC.addShield(); AllZone.getEndOfTurn().addUntil(untilEOT); } } - }// regenerateResolve + } // regenerateResolve // ************************************************************** // ********************* RegenerateAll ************************* @@ -486,25 +487,25 @@ public class AbilityFactory_Regenerate { @Override public boolean canPlayAI() { - return regenerateAllCanPlayAI(af, this); + return AbilityFactory_Regenerate.regenerateAllCanPlayAI(af, this); } @Override public void resolve() { - regenerateAllResolve(af, this); + AbilityFactory_Regenerate.regenerateAllResolve(af, this); } @Override public String getStackDescription() { - return regenerateAllStackDescription(af, this); + return AbilityFactory_Regenerate.regenerateAllStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return regenerateAllDoTriggerAI(af, this, mandatory); + return AbilityFactory_Regenerate.regenerateAllDoTriggerAI(af, this, mandatory); } - };// Ability_Activated + }; // Ability_Activated return abRegenerateAll; } @@ -525,17 +526,17 @@ public class AbilityFactory_Regenerate { @Override public boolean canPlayAI() { - return regenerateAllCanPlayAI(af, this); + return AbilityFactory_Regenerate.regenerateAllCanPlayAI(af, this); } @Override public void resolve() { - regenerateAllResolve(af, this); + AbilityFactory_Regenerate.regenerateAllResolve(af, this); } @Override public String getStackDescription() { - return regenerateAllStackDescription(af, this); + return AbilityFactory_Regenerate.regenerateAllStackDescription(af, this); } }; // Spell @@ -558,12 +559,12 @@ public class AbilityFactory_Regenerate { @Override public String getStackDescription() { - return regenerateAllStackDescription(af, this); + return AbilityFactory_Regenerate.regenerateAllStackDescription(af, this); } @Override public void resolve() { - regenerateAllResolve(af, this); + AbilityFactory_Regenerate.regenerateAllResolve(af, this); } @Override @@ -573,7 +574,7 @@ public class AbilityFactory_Regenerate { @Override public boolean doTrigger(final boolean mandatory) { - return regenerateAllDoTriggerAI(af, this, mandatory); + return AbilityFactory_Regenerate.regenerateAllDoTriggerAI(af, this, mandatory); } }; @@ -593,8 +594,8 @@ public class AbilityFactory_Regenerate { */ private static String regenerateAllStackDescription(final AbilityFactory af, final SpellAbility sa) { final HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -611,7 +612,7 @@ public class AbilityFactory_Regenerate { sb.append(desc); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -634,7 +635,7 @@ public class AbilityFactory_Regenerate { final HashMap params = af.getMapParams(); final Card hostCard = af.getHostCard(); boolean chance = false; - Cost abCost = af.getAbCost(); + final Cost abCost = af.getAbCost(); if (abCost != null) { // AI currently disabled for these costs if (!CostUtil.checkSacrificeCost(abCost, hostCard)) { @@ -671,10 +672,10 @@ public class AbilityFactory_Regenerate { } else { if (AllZone.getPhase().is(Constant.Phase.COMBAT_DECLARE_BLOCKERS_INSTANT_ABILITY)) { - CardList combatants = list.getType("Creature"); + final CardList combatants = list.getType("Creature"); - for (Card c : combatants) { - if (c.getShield() == 0 && CombatUtil.combatantWouldBeDestroyed(c)) { + for (final Card c : combatants) { + if ((c.getShield() == 0) && CombatUtil.combatantWouldBeDestroyed(c)) { numSaved++; } } @@ -685,7 +686,7 @@ public class AbilityFactory_Regenerate { chance = true; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -706,14 +707,15 @@ public class AbilityFactory_Regenerate { * a boolean. * @return a boolean. */ - private static boolean regenerateAllDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { + private static boolean regenerateAllDoTriggerAI(final AbilityFactory af, final SpellAbility sa, + final boolean mandatory) { boolean chance = true; if (!ComputerUtil.canPayCost(sa)) { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.doTrigger(mandatory); } @@ -732,7 +734,7 @@ public class AbilityFactory_Regenerate { * a {@link forge.card.spellability.SpellAbility} object. */ private static void regenerateAllResolve(final AbilityFactory af, final SpellAbility sa) { - Card hostCard = af.getHostCard(); + final Card hostCard = af.getHostCard(); final HashMap params = af.getMapParams(); String valid = ""; @@ -747,6 +749,7 @@ public class AbilityFactory_Regenerate { final Command untilEOT = new Command() { private static final long serialVersionUID = 259368227093961103L; + @Override public void execute() { c.resetShield(); } @@ -757,6 +760,6 @@ public class AbilityFactory_Regenerate { AllZone.getEndOfTurn().addUntil(untilEOT); } } - }// regenerateAllResolve + } // regenerateAllResolve -}// end class AbilityFactory_Regenerate +} // end class AbilityFactory_Regenerate diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Reveal.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Reveal.java index 43fe0b3db08..f370681e165 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Reveal.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Reveal.java @@ -63,21 +63,22 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return digStackDescription(af, this); + return AbilityFactory_Reveal.digStackDescription(af, this); } + @Override public boolean canPlayAI() { - return digCanPlayAI(af, this); + return AbilityFactory_Reveal.digCanPlayAI(af, this); } @Override public void resolve() { - digResolve(af, this); + AbilityFactory_Reveal.digResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return digTriggerAI(af, this, mandatory); + return AbilityFactory_Reveal.digTriggerAI(af, this, mandatory); } }; @@ -99,16 +100,17 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return digStackDescription(af, this); + return AbilityFactory_Reveal.digStackDescription(af, this); } + @Override public boolean canPlayAI() { - return digCanPlayAI(af, this); + return AbilityFactory_Reveal.digCanPlayAI(af, this); } @Override public void resolve() { - digResolve(af, this); + AbilityFactory_Reveal.digResolve(af, this); } }; @@ -130,12 +132,12 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return digStackDescription(af, this); + return AbilityFactory_Reveal.digStackDescription(af, this); } @Override public void resolve() { - digResolve(af, this); + AbilityFactory_Reveal.digResolve(af, this); } @Override @@ -145,7 +147,7 @@ public final class AbilityFactory_Reveal { @Override public boolean doTrigger(final boolean mandatory) { - return digTriggerAI(af, this, mandatory); + return AbilityFactory_Reveal.digTriggerAI(af, this, mandatory); } }; @@ -164,10 +166,10 @@ public final class AbilityFactory_Reveal { * @return a {@link java.lang.String} object. */ private static String digStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); - StringBuilder sb = new StringBuilder(); - int numToDig = AbilityFactory.calculateAmount(af.getHostCard(), params.get("DigNum"), sa); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); + final StringBuilder sb = new StringBuilder(); + final int numToDig = AbilityFactory.calculateAmount(af.getHostCard(), params.get("DigNum"), sa); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); @@ -177,7 +179,7 @@ public final class AbilityFactory_Reveal { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -193,13 +195,13 @@ public final class AbilityFactory_Reveal { if (tgtPlayers.contains(host.getController())) { sb.append("his or her "); } else { - for (Player p : tgtPlayers) { + for (final Player p : tgtPlayers) { sb.append(p).append("'s "); } } sb.append("library."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -219,16 +221,16 @@ public final class AbilityFactory_Reveal { * @return a boolean. */ private static boolean digCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); double chance = .4; // 40 percent chance with instant speed stuff if (AbilityFactory.isSorcerySpeed(sa)) { chance = .667; // 66.7% chance for sorcery speed (since it will // never activate EOT) } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); Player libraryOwner = AllZone.getComputerPlayer(); if (sa.getTarget() != null) { @@ -257,7 +259,7 @@ public final class AbilityFactory_Reveal { } if (af.hasSubAbility()) { - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return randomReturn && abSub.chkAIDrawback(); } @@ -284,7 +286,7 @@ public final class AbilityFactory_Reveal { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (sa.getTarget() != null) { tgt.resetTargets(); @@ -305,28 +307,28 @@ public final class AbilityFactory_Reveal { * a {@link forge.card.spellability.SpellAbility} object. */ private static void digResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); - Player player = sa.getActivatingPlayer(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); + final Player player = sa.getActivatingPlayer(); int numToDig = AbilityFactory.calculateAmount(af.getHostCard(), params.get("DigNum"), sa); - Zone destZone1 = params.containsKey("DestinationZone") ? Zone.smartValueOf(params.get("DestinationZone")) + final Zone destZone1 = params.containsKey("DestinationZone") ? Zone.smartValueOf(params.get("DestinationZone")) : Zone.Hand; - Zone destZone2 = params.containsKey("DestinationZone2") ? Zone.smartValueOf(params.get("DestinationZone2")) - : Zone.Library; + final Zone destZone2 = params.containsKey("DestinationZone2") ? Zone.smartValueOf(params + .get("DestinationZone2")) : Zone.Library; - int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params.get("LibraryPosition")) - : -1; + final int libraryPosition = params.containsKey("LibraryPosition") ? Integer.parseInt(params + .get("LibraryPosition")) : -1; int destZone1ChangeNum = 1; - boolean mitosis = params.containsKey("Mitosis"); + final boolean mitosis = params.containsKey("Mitosis"); String changeValid = params.containsKey("ChangeValid") ? params.get("ChangeValid") : ""; - boolean anyNumber = params.containsKey("AnyNumber"); + final boolean anyNumber = params.containsKey("AnyNumber"); - int libraryPosition2 = params.containsKey("LibraryPosition2") ? Integer - .parseInt(params.get("LibraryPosition2")) : -1; - boolean optional = params.containsKey("Optional"); - boolean noMove = params.containsKey("NoMove"); + final int libraryPosition2 = params.containsKey("LibraryPosition2") ? Integer.parseInt(params + .get("LibraryPosition2")) : -1; + final boolean optional = params.containsKey("Optional"); + final boolean noMove = params.containsKey("NoMove"); boolean changeAll = false; - ArrayList keywords = new ArrayList(); + final ArrayList keywords = new ArrayList(); if (params.containsKey("Keywords")) { keywords.addAll(Arrays.asList(params.get("Keywords").split(" & "))); } @@ -341,20 +343,20 @@ public final class AbilityFactory_Reveal { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { - CardList top = new CardList(); + final CardList top = new CardList(); CardList valid = new CardList(); - CardList rest = new CardList(); - PlayerZone library = p.getZone(Constant.Zone.Library); + final CardList rest = new CardList(); + final PlayerZone library = p.getZone(Constant.Zone.Library); numToDig = Math.min(numToDig, library.size()); for (int i = 0; i < numToDig; i++) { @@ -362,7 +364,7 @@ public final class AbilityFactory_Reveal { } if (top.size() > 0) { - Card dummy = new Card(); + final Card dummy = new Card(); dummy.setName("[No valid cards]"); if (params.containsKey("Reveal")) { @@ -370,8 +372,8 @@ public final class AbilityFactory_Reveal { // AllZone.getGameAction().revealToCopmuter(top.toArray()); // - for when it exists } else if (params.containsKey("RevealValid")) { - String revealValid = params.get("RevealValid"); - CardList toReveal = top.getValidCards(revealValid, host.getController(), host); + final String revealValid = params.get("RevealValid"); + final CardList toReveal = top.getValidCards(revealValid, host.getController(), host); if (!toReveal.isEmpty()) { GuiUtils.getChoice("Revealing cards from library", toReveal.toArray()); } @@ -384,8 +386,8 @@ public final class AbilityFactory_Reveal { if (!noMove) { if (mitosis) { - valid = sharesNameWithCardOnBattlefield(top); - for (Card c : top) { + valid = AbilityFactory_Reveal.sharesNameWithCardOnBattlefield(top); + for (final Card c : top) { if (!valid.contains(c)) { rest.add(c); } @@ -395,7 +397,7 @@ public final class AbilityFactory_Reveal { changeValid = changeValid.replace("ChosenType", host.getChosenType()); } valid = top.getValidCards(changeValid.split(","), host.getController(), host); - for (Card c : top) { + for (final Card c : top) { if (!valid.contains(c)) { rest.add(c); } @@ -408,11 +410,11 @@ public final class AbilityFactory_Reveal { } if (changeAll) { - for (Card c : valid) { + for (final Card c : valid) { if (c.equals(dummy)) { continue; } - PlayerZone zone = c.getOwner().getZone(destZone1); + final PlayerZone zone = c.getOwner().getZone(destZone1); if (zone.is(Zone.Library)) { AllZone.getGameAction().moveToLibrary(c, libraryPosition); } else { @@ -428,14 +430,14 @@ public final class AbilityFactory_Reveal { } else { int j = 0; if (player.isHuman()) { - while (j < destZone1ChangeNum || (anyNumber && j < numToDig)) { + while ((j < destZone1ChangeNum) || (anyNumber && (j < numToDig))) { // let user get choice Card chosen = null; String prompt = "Choose a card to put into the "; - if (destZone1.equals(Zone.Library) && libraryPosition == -1) { + if (destZone1.equals(Zone.Library) && (libraryPosition == -1)) { prompt = "Put the rest on the bottom of the "; } - if (destZone1.equals(Zone.Library) && libraryPosition == 0) { + if (destZone1.equals(Zone.Library) && (libraryPosition == 0)) { prompt = "Put the rest on top of the "; } if (anyNumber || optional) { @@ -443,18 +445,18 @@ public final class AbilityFactory_Reveal { } else { chosen = GuiUtils.getChoice(prompt + destZone1, valid.toArray()); } - if (chosen == null || chosen.getName().equals("[No valid cards]")) { + if ((chosen == null) || chosen.getName().equals("[No valid cards]")) { break; } valid.remove(chosen); - PlayerZone zone = chosen.getOwner().getZone(destZone1); + final PlayerZone zone = chosen.getOwner().getZone(destZone1); if (zone.is(Zone.Library)) { // System.out.println("Moving to lib position: "+libraryPosition); AllZone.getGameAction().moveToLibrary(chosen, libraryPosition); } else { - Card c = AllZone.getGameAction().moveTo(zone, chosen); + final Card c = AllZone.getGameAction().moveTo(zone, chosen); if (destZone1.equals(Zone.Battlefield) && !keywords.isEmpty()) { - for (String kw : keywords) { + for (final String kw : keywords) { c.addExtrinsicKeyword(kw); } if (params.containsKey("Tapped")) { @@ -473,17 +475,17 @@ public final class AbilityFactory_Reveal { changeNum = valid.size(); // always take all } for (j = 0; j < changeNum; j++) { - Card chosen = valid.get(0); + final Card chosen = valid.get(0); if (chosen.equals(dummy)) { break; } - PlayerZone zone = chosen.getOwner().getZone(destZone1); + final PlayerZone zone = chosen.getOwner().getZone(destZone1); if (zone.is(Zone.Library)) { AllZone.getGameAction().moveToLibrary(chosen, libraryPosition); } else { - Card c = AllZone.getGameAction().moveTo(zone, chosen); + final Card c = AllZone.getGameAction().moveTo(zone, chosen); if (destZone1.equals(Zone.Battlefield) && !keywords.isEmpty()) { - for (String kw : keywords) { + for (final String kw : keywords) { chosen.addExtrinsicKeyword(kw); } if (params.containsKey("Tapped")) { @@ -535,10 +537,10 @@ public final class AbilityFactory_Reveal { // just move them randomly for (int i = 0; i < rest.size(); i++) { Card c = rest.get(i); - PlayerZone toZone = c.getOwner().getZone(destZone2); + final PlayerZone toZone = c.getOwner().getZone(destZone2); c = AllZone.getGameAction().moveTo(toZone, c); if (destZone2.equals(Zone.Battlefield) && !keywords.isEmpty()) { - for (String kw : keywords) { + for (final String kw : keywords) { c.addExtrinsicKeyword(kw); } } @@ -563,10 +565,10 @@ public final class AbilityFactory_Reveal { * @return a {@link forge.CardList} object. */ private static CardList sharesNameWithCardOnBattlefield(final CardList list) { - CardList toReturn = new CardList(); - CardList play = AllZoneUtil.getCardsIn(Zone.Battlefield); - for (Card c : list) { - for (Card p : play) { + final CardList toReturn = new CardList(); + final CardList play = AllZoneUtil.getCardsIn(Zone.Battlefield); + for (final Card c : list) { + for (final Card p : play) { if (p.getName().equals(c.getName())) { toReturn.add(c); } @@ -595,21 +597,22 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return digUntilStackDescription(af, this); + return AbilityFactory_Reveal.digUntilStackDescription(af, this); } + @Override public boolean canPlayAI() { - return digUntilCanPlayAI(af, this); + return AbilityFactory_Reveal.digUntilCanPlayAI(af, this); } @Override public void resolve() { - digUntilResolve(af, this); + AbilityFactory_Reveal.digUntilResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return digUntilTriggerAI(af, this, mandatory); + return AbilityFactory_Reveal.digUntilTriggerAI(af, this, mandatory); } }; @@ -631,16 +634,17 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return digUntilStackDescription(af, this); + return AbilityFactory_Reveal.digUntilStackDescription(af, this); } + @Override public boolean canPlayAI() { - return digUntilCanPlayAI(af, this); + return AbilityFactory_Reveal.digUntilCanPlayAI(af, this); } @Override public void resolve() { - digUntilResolve(af, this); + AbilityFactory_Reveal.digUntilResolve(af, this); } }; @@ -662,12 +666,12 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return digUntilStackDescription(af, this); + return AbilityFactory_Reveal.digUntilStackDescription(af, this); } @Override public void resolve() { - digUntilResolve(af, this); + AbilityFactory_Reveal.digUntilResolve(af, this); } @Override @@ -677,7 +681,7 @@ public final class AbilityFactory_Reveal { @Override public boolean doTrigger(final boolean mandatory) { - return digUntilTriggerAI(af, this, mandatory); + return AbilityFactory_Reveal.digUntilTriggerAI(af, this, mandatory); } }; @@ -696,9 +700,9 @@ public final class AbilityFactory_Reveal { * @return a {@link java.lang.String} object. */ private static String digUntilStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = sa.getSourceCard(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final Card host = sa.getSourceCard(); + final StringBuilder sb = new StringBuilder(); String desc = "Card"; if (params.containsKey("ValidDescription")) { @@ -718,14 +722,14 @@ public final class AbilityFactory_Reveal { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player pl : tgtPlayers) { + for (final Player pl : tgtPlayers) { sb.append(pl).append(" "); } @@ -736,8 +740,8 @@ public final class AbilityFactory_Reveal { } sb.append(". Put "); - String found = params.get("FoundDestination"); - String revealed = params.get("RevealedDestination"); + final String found = params.get("FoundDestination"); + final String revealed = params.get("RevealedDestination"); if (found != null) { sb.append(untilAmount > 1 ? "those cards" : "that card"); @@ -759,7 +763,7 @@ public final class AbilityFactory_Reveal { } } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -785,10 +789,10 @@ public final class AbilityFactory_Reveal { chance = .667; // 66.7% chance for sorcery speed (since it will // never activate EOT) } - Random r = MyRandom.getRandom(); - boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); + final Random r = MyRandom.getRandom(); + final boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); Player libraryOwner = AllZone.getComputerPlayer(); if (sa.getTarget() != null) { @@ -807,7 +811,7 @@ public final class AbilityFactory_Reveal { } if (af.hasSubAbility()) { - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return randomReturn && abSub.chkAIDrawback(); } @@ -834,7 +838,7 @@ public final class AbilityFactory_Reveal { return false; } - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (sa.getTarget() != null) { tgt.resetTargets(); @@ -855,8 +859,8 @@ public final class AbilityFactory_Reveal { * a {@link forge.card.spellability.SpellAbility} object. */ private static void digUntilResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card host = sa.getSourceCard(); String type = "Card"; if (params.containsKey("Valid")) { @@ -873,33 +877,33 @@ public final class AbilityFactory_Reveal { maxRevealed = AbilityFactory.calculateAmount(host, params.get("MaxRevealed"), sa); } - boolean remember = params.containsKey("RememberFound"); + final boolean remember = params.containsKey("RememberFound"); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(host, params.get("Defined"), sa); } - Zone foundDest = Zone.smartValueOf(params.get("FoundDestination")); - int foundLibPos = AbilityFactory.calculateAmount(host, params.get("FoundLibraryPosition"), sa); - Zone revealedDest = Zone.smartValueOf(params.get("RevealedDestination")); - int revealedLibPos = AbilityFactory.calculateAmount(host, params.get("RevealedLibraryPosition"), sa); + final Zone foundDest = Zone.smartValueOf(params.get("FoundDestination")); + final int foundLibPos = AbilityFactory.calculateAmount(host, params.get("FoundLibraryPosition"), sa); + final Zone revealedDest = Zone.smartValueOf(params.get("RevealedDestination")); + final int revealedLibPos = AbilityFactory.calculateAmount(host, params.get("RevealedLibraryPosition"), sa); - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { - CardList found = new CardList(); - CardList revealed = new CardList(); + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { + final CardList found = new CardList(); + final CardList revealed = new CardList(); - PlayerZone library = p.getZone(Constant.Zone.Library); + final PlayerZone library = p.getZone(Constant.Zone.Library); - int maxToDig = maxRevealed != null ? maxRevealed : library.size(); + final int maxToDig = maxRevealed != null ? maxRevealed : library.size(); for (int i = 0; i < maxToDig; i++) { - Card c = library.get(i); + final Card c = library.get(i); revealed.add(c); if (c.isValid(type, sa.getActivatingPlayer(), host)) { found.add(c); @@ -916,17 +920,17 @@ public final class AbilityFactory_Reveal { // TODO Allow Human to choose the order if (foundDest != null) { - Iterator itr = found.iterator(); + final Iterator itr = found.iterator(); while (itr.hasNext()) { - Card c = itr.next(); + final Card c = itr.next(); AllZone.getGameAction().moveTo(foundDest, c, foundLibPos); revealed.remove(c); } } - Iterator itr = revealed.iterator(); + final Iterator itr = revealed.iterator(); while (itr.hasNext()) { - Card c = itr.next(); + final Card c = itr.next(); AllZone.getGameAction().moveTo(revealedDest, c, revealedLibPos); } } // end foreach player @@ -952,22 +956,22 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return revealHandStackDescription(af, this); + return AbilityFactory_Reveal.revealHandStackDescription(af, this); } @Override public boolean canPlayAI() { - return revealHandCanPlayAI(af, this); + return AbilityFactory_Reveal.revealHandCanPlayAI(af, this); } @Override public void resolve() { - revealHandResolve(af, this); + AbilityFactory_Reveal.revealHandResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return revealHandTrigger(af, this, mandatory); + return AbilityFactory_Reveal.revealHandTrigger(af, this, mandatory); } }; @@ -989,17 +993,17 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return revealHandStackDescription(af, this); + return AbilityFactory_Reveal.revealHandStackDescription(af, this); } @Override public boolean canPlayAI() { - return revealHandCanPlayAI(af, this); + return AbilityFactory_Reveal.revealHandCanPlayAI(af, this); } @Override public void resolve() { - revealHandResolve(af, this); + AbilityFactory_Reveal.revealHandResolve(af, this); } }; @@ -1023,22 +1027,22 @@ public final class AbilityFactory_Reveal { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return revealHandStackDescription(af, this); + return AbilityFactory_Reveal.revealHandStackDescription(af, this); } @Override public void resolve() { - revealHandResolve(af, this); + AbilityFactory_Reveal.revealHandResolve(af, this); } @Override public boolean chkAIDrawback() { - return revealHandTargetAI(af, this, false, false); + return AbilityFactory_Reveal.revealHandTargetAI(af, this, false, false); } @Override public boolean doTrigger(final boolean mandatory) { - return revealHandTrigger(af, this, mandatory); + return AbilityFactory_Reveal.revealHandTrigger(af, this, mandatory); } }; @@ -1057,8 +1061,8 @@ public final class AbilityFactory_Reveal { * @return a {@link java.lang.String} object. */ private static String revealHandStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); @@ -1068,7 +1072,7 @@ public final class AbilityFactory_Reveal { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -1078,7 +1082,7 @@ public final class AbilityFactory_Reveal { sb.append(sa.getActivatingPlayer()).append(" looks at "); if (tgtPlayers.size() > 0) { - for (Player p : tgtPlayers) { + for (final Player p : tgtPlayers) { sb.append(p.toString()).append("'s "); } } else { @@ -1086,7 +1090,7 @@ public final class AbilityFactory_Reveal { } sb.append("hand."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1107,8 +1111,8 @@ public final class AbilityFactory_Reveal { */ private static boolean revealHandCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - Cost abCost = sa.getPayCosts(); - Card source = sa.getSourceCard(); + final Cost abCost = sa.getPayCosts(); + final Card source = sa.getSourceCard(); if (abCost != null) { // AI currently disabled for these costs @@ -1130,20 +1134,20 @@ public final class AbilityFactory_Reveal { } - boolean bFlag = revealHandTargetAI(af, sa, true, false); + final boolean bFlag = AbilityFactory_Reveal.revealHandTargetAI(af, sa, true, false); if (!bFlag) { return false; } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.667, sa.getActivationsThisTurn() + 1); if (AbilityFactory.playReusable(sa)) { randomReturn = true; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -1167,17 +1171,17 @@ public final class AbilityFactory_Reveal { */ private static boolean revealHandTargetAI(final AbilityFactory af, final SpellAbility sa, final boolean primarySA, final boolean mandatory) { - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); - int humanHandSize = AllZone.getHumanPlayer().getCardsIn(Zone.Hand).size(); + final int humanHandSize = AllZone.getHumanPlayer().getCardsIn(Zone.Hand).size(); if (tgt != null) { // ability is targeted tgt.resetTargets(); - boolean canTgtHuman = AllZone.getHumanPlayer().canTarget(sa); + final boolean canTgtHuman = AllZone.getHumanPlayer().canTarget(sa); - if (!canTgtHuman || humanHandSize == 0) { + if (!canTgtHuman || (humanHandSize == 0)) { return false; } else { tgt.addTarget(AllZone.getHumanPlayer()); @@ -1207,12 +1211,12 @@ public final class AbilityFactory_Reveal { return false; } - if (!revealHandTargetAI(af, sa, false, mandatory)) { + if (!AbilityFactory_Reveal.revealHandTargetAI(af, sa, false, mandatory)) { return false; } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -1231,26 +1235,26 @@ public final class AbilityFactory_Reveal { * a {@link forge.card.spellability.SpellAbility} object. */ private static void revealHandResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { - CardList hand = p.getCardsIn(Zone.Hand); + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { + final CardList hand = p.getCardsIn(Zone.Hand); if (sa.getActivatingPlayer().isHuman()) { if (hand.size() > 0) { GuiUtils.getChoice(p + "'s hand", hand.toArray()); } else { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append(p).append("'s hand is empty!"); javax.swing.JOptionPane.showMessageDialog(null, sb.toString(), p + "'s hand", JOptionPane.INFORMATION_MESSAGE); @@ -1260,7 +1264,7 @@ public final class AbilityFactory_Reveal { // cards...) } if (params.containsKey("RememberRevealed")) { - for (Card c : hand) { + for (final Card c : hand) { host.addRemembered(c); } } @@ -1287,21 +1291,22 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return scryStackDescription(af, this); + return AbilityFactory_Reveal.scryStackDescription(af, this); } + @Override public boolean canPlayAI() { - return scryCanPlayAI(af, this); + return AbilityFactory_Reveal.scryCanPlayAI(af, this); } @Override public void resolve() { - scryResolve(af, this); + AbilityFactory_Reveal.scryResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return scryTriggerAI(af, this); + return AbilityFactory_Reveal.scryTriggerAI(af, this); } }; @@ -1323,16 +1328,17 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return scryStackDescription(af, this); + return AbilityFactory_Reveal.scryStackDescription(af, this); } + @Override public boolean canPlayAI() { - return scryCanPlayAI(af, this); + return AbilityFactory_Reveal.scryCanPlayAI(af, this); } @Override public void resolve() { - scryResolve(af, this); + AbilityFactory_Reveal.scryResolve(af, this); } }; @@ -1356,22 +1362,22 @@ public final class AbilityFactory_Reveal { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return scryStackDescription(af, this); + return AbilityFactory_Reveal.scryStackDescription(af, this); } @Override public void resolve() { - scryResolve(af, this); + AbilityFactory_Reveal.scryResolve(af, this); } @Override public boolean chkAIDrawback() { - return scryTargetAI(af, this); + return AbilityFactory_Reveal.scryTargetAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return scryTriggerAI(af, this); + return AbilityFactory_Reveal.scryTriggerAI(af, this); } }; @@ -1389,7 +1395,7 @@ public final class AbilityFactory_Reveal { * a {@link forge.card.spellability.SpellAbility} object. */ private static void scryResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); int num = 1; if (params.containsKey("ScryNum")) { @@ -1398,15 +1404,15 @@ public final class AbilityFactory_Reveal { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { p.scry(num); } } @@ -1424,7 +1430,7 @@ public final class AbilityFactory_Reveal { * @return a boolean. */ private static boolean scryTargetAI(final AbilityFactory af, final SpellAbility sa) { - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { // It doesn't appear that Scry ever targets // ability is targeted @@ -1452,7 +1458,7 @@ public final class AbilityFactory_Reveal { return false; } - return scryTargetAI(af, sa); + return AbilityFactory_Reveal.scryTargetAI(af, sa); } // scryTargetAI() /** @@ -1467,8 +1473,8 @@ public final class AbilityFactory_Reveal { * @return a {@link java.lang.String} object. */ private static String scryStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -1478,14 +1484,14 @@ public final class AbilityFactory_Reveal { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { + for (final Player p : tgtPlayers) { sb.append(p.toString()).append(" "); } @@ -1496,7 +1502,7 @@ public final class AbilityFactory_Reveal { sb.append("scrys (").append(num).append(")."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1524,7 +1530,7 @@ public final class AbilityFactory_Reveal { chance = .667; // 66.7% chance for sorcery speed (since it will // never activate EOT) } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); if (AbilityFactory.playReusable(sa)) { @@ -1532,7 +1538,7 @@ public final class AbilityFactory_Reveal { } if (af.hasSubAbility()) { - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return randomReturn && abSub.chkAIDrawback(); } @@ -1559,7 +1565,7 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return rearrangeTopOfLibraryStackDescription(af, this); + return AbilityFactory_Reveal.rearrangeTopOfLibraryStackDescription(af, this); } @Override @@ -1569,12 +1575,12 @@ public final class AbilityFactory_Reveal { @Override public boolean doTrigger(final boolean mandatory) { - return rearrangeTopOfLibraryTrigger(af, this, mandatory); + return AbilityFactory_Reveal.rearrangeTopOfLibraryTrigger(af, this, mandatory); } @Override public void resolve() { - rearrangeTopOfLibraryResolve(af, this); + AbilityFactory_Reveal.rearrangeTopOfLibraryResolve(af, this); } }; @@ -1597,7 +1603,7 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return rearrangeTopOfLibraryStackDescription(af, this); + return AbilityFactory_Reveal.rearrangeTopOfLibraryStackDescription(af, this); } @Override @@ -1607,12 +1613,12 @@ public final class AbilityFactory_Reveal { @Override public boolean doTrigger(final boolean mandatory) { - return rearrangeTopOfLibraryTrigger(af, this, mandatory); + return AbilityFactory_Reveal.rearrangeTopOfLibraryTrigger(af, this, mandatory); } @Override public void resolve() { - rearrangeTopOfLibraryResolve(af, this); + AbilityFactory_Reveal.rearrangeTopOfLibraryResolve(af, this); } }; @@ -1637,12 +1643,12 @@ public final class AbilityFactory_Reveal { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return rearrangeTopOfLibraryStackDescription(af, this); + return AbilityFactory_Reveal.rearrangeTopOfLibraryStackDescription(af, this); } @Override public void resolve() { - rearrangeTopOfLibraryResolve(af, this); + AbilityFactory_Reveal.rearrangeTopOfLibraryResolve(af, this); } @Override @@ -1652,7 +1658,7 @@ public final class AbilityFactory_Reveal { @Override public boolean doTrigger(final boolean mandatory) { - return rearrangeTopOfLibraryTrigger(af, this, mandatory); + return AbilityFactory_Reveal.rearrangeTopOfLibraryTrigger(af, this, mandatory); } }; @@ -1671,13 +1677,13 @@ public final class AbilityFactory_Reveal { * @return a {@link java.lang.String} object. */ private static String rearrangeTopOfLibraryStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); int numCards = 0; ArrayList tgtPlayers; boolean shuffle = false; - Target tgt = af.getAbTgt(); - if (tgt != null && !params.containsKey("Defined")) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && !params.containsKey("Defined")) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); @@ -1686,7 +1692,7 @@ public final class AbilityFactory_Reveal { numCards = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumCards"), sa); shuffle = params.containsKey("MayShuffle"); - StringBuilder ret = new StringBuilder(); + final StringBuilder ret = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { ret.append(af.getHostCard().getName()); ret.append(" - "); @@ -1694,7 +1700,7 @@ public final class AbilityFactory_Reveal { ret.append("Look at the top "); ret.append(numCards); ret.append(" cards of "); - for (Player p : tgtPlayers) { + for (final Player p : tgtPlayers) { ret.append(p.getName()); ret.append("s"); ret.append(" & "); @@ -1733,13 +1739,13 @@ public final class AbilityFactory_Reveal { private static boolean rearrangeTopOfLibraryTrigger(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { // ability is targeted tgt.resetTargets(); - boolean canTgtHuman = AllZone.getHumanPlayer().canTarget(sa); + final boolean canTgtHuman = AllZone.getHumanPlayer().canTarget(sa); if (!canTgtHuman) { return false; @@ -1750,7 +1756,7 @@ public final class AbilityFactory_Reveal { // if it's just defined, no big deal } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -1769,14 +1775,14 @@ public final class AbilityFactory_Reveal { * a {@link forge.card.spellability.SpellAbility} object. */ private static void rearrangeTopOfLibraryResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); int numCards = 0; ArrayList tgtPlayers = new ArrayList(); boolean shuffle = false; if (sa.getActivatingPlayer().isHuman()) { - Target tgt = af.getAbTgt(); - if (tgt != null && !params.containsKey("Defined")) { + final Target tgt = af.getAbTgt(); + if ((tgt != null) && !params.containsKey("Defined")) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); @@ -1785,9 +1791,9 @@ public final class AbilityFactory_Reveal { numCards = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumCards"), sa); shuffle = params.containsKey("MayShuffle"); - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { - rearrangeTopOfLibrary(af.getHostCard(), p, numCards, shuffle); + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { + AbilityFactory_Reveal.rearrangeTopOfLibrary(af.getHostCard(), p, numCards, shuffle); } } } @@ -1808,13 +1814,13 @@ public final class AbilityFactory_Reveal { */ private static void rearrangeTopOfLibrary(final Card src, final Player player, final int numCards, final boolean mayshuffle) { - PlayerZone lib = player.getZone(Constant.Zone.Library); + final PlayerZone lib = player.getZone(Constant.Zone.Library); int maxCards = lib.size(); maxCards = Math.min(maxCards, numCards); if (maxCards == 0) { return; } - CardList topCards = new CardList(); + final CardList topCards = new CardList(); // show top n cards: for (int j = 0; j < maxCards; j++) { topCards.add(lib.get(j)); @@ -1834,12 +1840,12 @@ public final class AbilityFactory_Reveal { default: suffix = "th"; } - String title = "Put " + i + suffix + " from the top: "; - Object o = GuiUtils.getChoiceOptional(title, topCards.toArray()); + final String title = "Put " + i + suffix + " from the top: "; + final Object o = GuiUtils.getChoiceOptional(title, topCards.toArray()); if (o == null) { break; } - Card c1 = (Card) o; + final Card c1 = (Card) o; topCards.remove(c1); AllZone.getGameAction().moveToLibrary(c1, i - 1); } @@ -1869,22 +1875,22 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return revealStackDescription(af, this); + return AbilityFactory_Reveal.revealStackDescription(af, this); } @Override public boolean canPlayAI() { - return revealCanPlayAI(af, this); + return AbilityFactory_Reveal.revealCanPlayAI(af, this); } @Override public void resolve() { - revealResolve(af, this); + AbilityFactory_Reveal.revealResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return revealTrigger(af, this, mandatory); + return AbilityFactory_Reveal.revealTrigger(af, this, mandatory); } }; @@ -1906,17 +1912,17 @@ public final class AbilityFactory_Reveal { @Override public String getStackDescription() { - return revealStackDescription(af, this); + return AbilityFactory_Reveal.revealStackDescription(af, this); } @Override public boolean canPlayAI() { - return revealCanPlayAI(af, this); + return AbilityFactory_Reveal.revealCanPlayAI(af, this); } @Override public void resolve() { - revealResolve(af, this); + AbilityFactory_Reveal.revealResolve(af, this); } }; @@ -1940,23 +1946,23 @@ public final class AbilityFactory_Reveal { public String getStackDescription() { // when getStackDesc is called, just build exactly what is // happening - return revealStackDescription(af, this); + return AbilityFactory_Reveal.revealStackDescription(af, this); } @Override public void resolve() { - revealResolve(af, this); + AbilityFactory_Reveal.revealResolve(af, this); } @Override public boolean chkAIDrawback() { // reuse code from RevealHand - return revealHandTargetAI(af, this, false, false); + return AbilityFactory_Reveal.revealHandTargetAI(af, this, false, false); } @Override public boolean doTrigger(final boolean mandatory) { - return revealTrigger(af, this, mandatory); + return AbilityFactory_Reveal.revealTrigger(af, this, mandatory); } }; @@ -1975,8 +1981,8 @@ public final class AbilityFactory_Reveal { * @return a {@link java.lang.String} object. */ private static String revealStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -1986,7 +1992,7 @@ public final class AbilityFactory_Reveal { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -2008,7 +2014,7 @@ public final class AbilityFactory_Reveal { sb.append("Error - no target players for RevealHand. "); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -2029,8 +2035,8 @@ public final class AbilityFactory_Reveal { */ private static boolean revealCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI cannot use this properly until he can use SAs during Humans turn - Cost abCost = sa.getPayCosts(); - Card source = sa.getSourceCard(); + final Cost abCost = sa.getPayCosts(); + final Card source = sa.getSourceCard(); if (abCost != null) { // AI currently disabled for these costs @@ -2053,20 +2059,20 @@ public final class AbilityFactory_Reveal { } // we can reuse this function here... - boolean bFlag = revealHandTargetAI(af, sa, true, false); + final boolean bFlag = AbilityFactory_Reveal.revealHandTargetAI(af, sa, true, false); if (!bFlag) { return false; } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(.667, sa.getActivationsThisTurn() + 1); if (AbilityFactory.playReusable(sa)) { randomReturn = true; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -2091,12 +2097,12 @@ public final class AbilityFactory_Reveal { return false; } - if (!revealHandTargetAI(af, sa, false, mandatory)) { + if (!AbilityFactory_Reveal.revealHandTargetAI(af, sa, false, mandatory)) { return false; } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -2115,23 +2121,23 @@ public final class AbilityFactory_Reveal { * a {@link forge.card.spellability.SpellAbility} object. */ private static void revealResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final Card host = af.getHostCard(); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { - CardList handChoices = p.getCardsIn(Zone.Hand); + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { + final CardList handChoices = p.getCardsIn(Zone.Hand); if (handChoices.size() > 0) { - CardList revealed = new CardList(); + final CardList revealed = new CardList(); if (params.containsKey("Random")) { revealed.add(CardUtil.getRandom(handChoices.toArray())); GuiUtils.getChoice("Revealed card(s)", revealed.toArray()); @@ -2140,11 +2146,11 @@ public final class AbilityFactory_Reveal { if (params.containsKey("RevealValid")) { valid = valid.getValidCards(params.get("RevealValid"), p, host); } - revealed.addAll(getRevealedList(host, sa, valid)); + revealed.addAll(AbilityFactory_Reveal.getRevealedList(host, sa, valid)); } if (params.containsKey("RememberRevealed")) { - for (Card rem : revealed) { + for (final Card rem : revealed) { host.addRemembered(rem); } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Sacrifice.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Sacrifice.java index 002ce34b574..8bc420ebf2b 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Sacrifice.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Sacrifice.java @@ -51,22 +51,22 @@ public class AbilityFactory_Sacrifice { @Override public boolean canPlayAI() { - return sacrificeCanPlayAI(af, this); + return AbilityFactory_Sacrifice.sacrificeCanPlayAI(af, this); } @Override public void resolve() { - sacrificeResolve(af, this); + AbilityFactory_Sacrifice.sacrificeResolve(af, this); } @Override public String getStackDescription() { - return sacrificeDescription(af, this); + return AbilityFactory_Sacrifice.sacrificeDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return sacrificeTriggerAI(af, this, mandatory); + return AbilityFactory_Sacrifice.sacrificeTriggerAI(af, this, mandatory); } }; return abSacrifice; @@ -87,17 +87,17 @@ public class AbilityFactory_Sacrifice { @Override public boolean canPlayAI() { - return sacrificeCanPlayAI(af, this); + return AbilityFactory_Sacrifice.sacrificeCanPlayAI(af, this); } @Override public void resolve() { - sacrificeResolve(af, this); + AbilityFactory_Sacrifice.sacrificeResolve(af, this); } @Override public String getStackDescription() { - return sacrificeDescription(af, this); + return AbilityFactory_Sacrifice.sacrificeDescription(af, this); } }; return spSacrifice; @@ -118,22 +118,22 @@ public class AbilityFactory_Sacrifice { @Override public void resolve() { - sacrificeResolve(af, this); + AbilityFactory_Sacrifice.sacrificeResolve(af, this); } @Override public boolean chkAIDrawback() { - return sacrificePlayDrawbackAI(af, this); + return AbilityFactory_Sacrifice.sacrificePlayDrawbackAI(af, this); } @Override public String getStackDescription() { - return sacrificeDescription(af, this); + return AbilityFactory_Sacrifice.sacrificeDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return sacrificeTriggerAI(af, this, mandatory); + return AbilityFactory_Sacrifice.sacrificeTriggerAI(af, this, mandatory); } }; return dbSacrifice; @@ -151,8 +151,8 @@ public class AbilityFactory_Sacrifice { * @return a {@link java.lang.String} object. */ public static String sacrificeDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -160,12 +160,12 @@ public class AbilityFactory_Sacrifice { sb.append(sa.getSourceCard().getName()).append(" - "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); ArrayList tgts; if (tgt != null) { tgts = tgt.getTargetPlayers(); @@ -180,16 +180,17 @@ public class AbilityFactory_Sacrifice { String num = params.get("Amount"); num = (num == null) ? "1" : num; - int amount = AbilityFactory.calculateAmount(sa.getSourceCard(), num, sa); + final int amount = AbilityFactory.calculateAmount(sa.getSourceCard(), num, sa); if (valid.equals("Self")) { sb.append("Sacrifice ").append(sa.getSourceCard().toString()); } else if (valid.equals("Card.AttachedBy")) { - Card toSac = sa.getSourceCard().getEnchantingCard(); + final Card toSac = sa.getSourceCard().getEnchantingCard(); sb.append(toSac.getController()).append(" sacrifices ").append(toSac).append("."); } else { - for (Player p : tgts) + for (final Player p : tgts) { sb.append(p.getName()).append(" "); + } String msg = params.get("SacMessage"); if (msg == null) { @@ -199,7 +200,7 @@ public class AbilityFactory_Sacrifice { sb.append("Sacrifices ").append(amount).append(" ").append(msg).append("."); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -220,17 +221,17 @@ public class AbilityFactory_Sacrifice { */ public static boolean sacrificeCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - boolean chance = sacrificeTgtAI(af, sa); + final HashMap params = af.getMapParams(); + boolean chance = AbilityFactory_Sacrifice.sacrificeTgtAI(af, sa); // Some additional checks based on what is being sacrificed, and who is // sacrificing - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { - String valid = params.get("SacValid"); + final String valid = params.get("SacValid"); String num = params.get("Amount"); num = (num == null) ? "1" : num; - int amount = AbilityFactory.calculateAmount(sa.getSourceCard(), num, sa); + final int amount = AbilityFactory.calculateAmount(sa.getSourceCard(), num, sa); CardList list = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -239,14 +240,15 @@ public class AbilityFactory_Sacrifice { return false; } - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); if (num.equals("X") && source.getSVar(num).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = Math.min(ComputerUtil.determineLeftoverMana(sa), amount); + final int xPay = Math.min(ComputerUtil.determineLeftoverMana(sa), amount); source.setSVar("PayX", Integer.toString(xPay)); } - int half = amount / 2 + amount % 2; // Half of amount rounded up + final int half = (amount / 2) + (amount % 2); // Half of amount + // rounded up // If the Human has at least half rounded up of the amount to be // sacrificed, cast the spell @@ -255,7 +257,7 @@ public class AbilityFactory_Sacrifice { } } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -276,11 +278,11 @@ public class AbilityFactory_Sacrifice { */ public static boolean sacrificePlayDrawbackAI(final AbilityFactory af, final SpellAbility sa) { // AI should only activate this during Human's turn - boolean chance = sacrificeTgtAI(af, sa); + boolean chance = AbilityFactory_Sacrifice.sacrificeTgtAI(af, sa); // TODO: restrict the subAbility a bit - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -307,7 +309,7 @@ public class AbilityFactory_Sacrifice { } // AI should only activate this during Human's turn - boolean chance = sacrificeTgtAI(af, sa); + boolean chance = AbilityFactory_Sacrifice.sacrificeTgtAI(af, sa); // Improve AI for triggers. If source is a creature with: // When ETB, sacrifice a creature. Check to see if the AI has something @@ -316,7 +318,7 @@ public class AbilityFactory_Sacrifice { // Eventually, we can call the trigger of ETB abilities with not // mandatory as part of the checks to cast something - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -337,9 +339,9 @@ public class AbilityFactory_Sacrifice { */ public static boolean sacrificeTgtAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); - Target tgt = af.getAbTgt(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgt.resetTargets(); @@ -349,7 +351,7 @@ public class AbilityFactory_Sacrifice { return false; } } else { - String defined = params.get("Defined"); + final String defined = params.get("Defined"); if (defined == null) { // Self Sacrifice. } else if (defined.equals("Each")) { @@ -358,11 +360,11 @@ public class AbilityFactory_Sacrifice { // Only cast it if AI doesn't have the full amount of Valid // TODO: Cast if the type is favorable: my "worst" valid is // worse than his "worst" valid - String valid = params.get("SacValid"); - String num = params.containsKey("Amount") ? params.get("Amount") : "1"; + final String valid = params.get("SacValid"); + final String num = params.containsKey("Amount") ? params.get("Amount") : "1"; int amount = AbilityFactory.calculateAmount(card, num, sa); - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); if (num.equals("X") && source.getSVar(num).equals("Count$xPaid")) { // Set PayX here to maximum value. amount = Math.min(ComputerUtil.determineLeftoverMana(sa), amount); @@ -399,14 +401,14 @@ public class AbilityFactory_Sacrifice { * a {@link forge.card.spellability.SpellAbility} object. */ public static void sacrificeResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final HashMap params = af.getMapParams(); + final Card card = sa.getSourceCard(); // Expand Sacrifice keyword here depending on what we need out of it. - String num = params.containsKey("Amount") ? params.get("Amount") : "1"; - int amount = AbilityFactory.calculateAmount(card, num, sa); + final String num = params.containsKey("Amount") ? params.get("Amount") : "1"; + final int amount = AbilityFactory.calculateAmount(card, num, sa); - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); ArrayList tgts; if (tgt != null) { tgts = tgt.getTargetPlayers(); @@ -426,7 +428,7 @@ public class AbilityFactory_Sacrifice { msg = "Sacrifice a " + msg; - boolean remSacrificed = params.containsKey("RememberSacrificed"); + final boolean remSacrificed = params.containsKey("RememberSacrificed"); if (remSacrificed) { card.clearRemembered(); } @@ -441,7 +443,7 @@ public class AbilityFactory_Sacrifice { } // TODO - maybe this can be done smarter... else if (valid.equals("Card.AttachedBy")) { - Card toSac = card.getEnchantingCard(); + final Card toSac = card.getEnchantingCard(); if (AllZone.getZoneOf(card).is(Constant.Zone.Battlefield) && AllZoneUtil.isCardInPlay(toSac)) { AllZone.getGameAction().sacrifice(toSac); if (remSacrificed) { @@ -449,7 +451,7 @@ public class AbilityFactory_Sacrifice { } } } else if (valid.equals("TriggeredCard")) { - Card equipee = (Card) sa.getTriggeringObject("Card"); + final Card equipee = (Card) sa.getTriggeringObject("Card"); if (tgts.contains(card.getController()) && AllZoneUtil.isCardInPlay(equipee)) { AllZone.getGameAction().sacrifice(equipee); if (remSacrificed) { @@ -458,7 +460,7 @@ public class AbilityFactory_Sacrifice { } } else { CardList sacList = null; - for (Player p : tgts) { + for (final Player p : tgts) { // TODO - Can only add cards computer sacrificed to remembered // list because @@ -471,14 +473,14 @@ public class AbilityFactory_Sacrifice { // then actually sacrifice the cards in this resolve method. // (ArsenalNut 09/20/2011) if (p.isComputer()) { - sacList = sacrificeAI(p, amount, valid, sa); + sacList = AbilityFactory_Sacrifice.sacrificeAI(p, amount, valid, sa); if (remSacrificed) { for (int i = 0; i < sacList.size(); i++) { card.addRemembered(sacList.get(i)); } } } else { - sacrificeHuman(p, amount, valid, sa, msg); + AbilityFactory_Sacrifice.sacrificeHuman(p, amount, valid, sa, msg); } } @@ -504,7 +506,7 @@ public class AbilityFactory_Sacrifice { CardList list = p.getCardsIn(Zone.Battlefield); list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); - CardList sacList = ComputerUtil.sacrificePermanents(amount, list); + final CardList sacList = ComputerUtil.sacrificePermanents(amount, list); return sacList; } @@ -525,7 +527,8 @@ public class AbilityFactory_Sacrifice { * @param message * a {@link java.lang.String} object. */ - private static void sacrificeHuman(final Player p, final int amount, final String valid, final SpellAbility sa, final String message) { + private static void sacrificeHuman(final Player p, final int amount, final String valid, final SpellAbility sa, + final String message) { CardList list = p.getCardsIn(Zone.Battlefield); list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); @@ -554,22 +557,22 @@ public class AbilityFactory_Sacrifice { @Override public boolean canPlayAI() { - return sacrificeAllCanPlayAI(af, this); + return AbilityFactory_Sacrifice.sacrificeAllCanPlayAI(af, this); } @Override public void resolve() { - sacrificeAllResolve(af, this); + AbilityFactory_Sacrifice.sacrificeAllResolve(af, this); } @Override public String getStackDescription() { - return sacrificeAllStackDescription(af, this); + return AbilityFactory_Sacrifice.sacrificeAllStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return sacrificeAllCanPlayAI(af, this); + return AbilityFactory_Sacrifice.sacrificeAllCanPlayAI(af, this); } }; return abSacrifice; @@ -591,17 +594,17 @@ public class AbilityFactory_Sacrifice { @Override public boolean canPlayAI() { - return sacrificeAllCanPlayAI(af, this); + return AbilityFactory_Sacrifice.sacrificeAllCanPlayAI(af, this); } @Override public void resolve() { - sacrificeAllResolve(af, this); + AbilityFactory_Sacrifice.sacrificeAllResolve(af, this); } @Override public String getStackDescription() { - return sacrificeAllStackDescription(af, this); + return AbilityFactory_Sacrifice.sacrificeAllStackDescription(af, this); } }; return spSacrifice; @@ -623,7 +626,7 @@ public class AbilityFactory_Sacrifice { @Override public void resolve() { - sacrificeAllResolve(af, this); + AbilityFactory_Sacrifice.sacrificeAllResolve(af, this); } @Override @@ -633,12 +636,12 @@ public class AbilityFactory_Sacrifice { @Override public String getStackDescription() { - return sacrificeAllStackDescription(af, this); + return AbilityFactory_Sacrifice.sacrificeAllStackDescription(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return sacrificeAllCanPlayAI(af, this); + return AbilityFactory_Sacrifice.sacrificeAllCanPlayAI(af, this); } }; return dbSacrifice; @@ -659,9 +662,9 @@ public class AbilityFactory_Sacrifice { public static String sacrificeAllStackDescription(final AbilityFactory af, final SpellAbility sa) { // when getStackDesc is called, just build exactly what is happening - StringBuilder sb = new StringBuilder(); - Card host = af.getHostCard(); - HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -669,7 +672,7 @@ public class AbilityFactory_Sacrifice { sb.append(host).append(" - "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } @@ -685,7 +688,7 @@ public class AbilityFactory_Sacrifice { sb.append("Sacrifice permanents."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -708,28 +711,28 @@ public class AbilityFactory_Sacrifice { public static boolean sacrificeAllCanPlayAI(final AbilityFactory af, final SpellAbility sa) { // AI needs to be expanded, since this function can be pretty complex // based on what the expected targets could be - Random r = MyRandom.getRandom(); - Cost abCost = sa.getPayCosts(); + final Random r = MyRandom.getRandom(); + final Cost abCost = sa.getPayCosts(); final Card source = sa.getSourceCard(); final HashMap params = af.getMapParams(); - String Valid = ""; + String valid = ""; if (params.containsKey("ValidCards")) { - Valid = params.get("ValidCards"); + valid = params.get("ValidCards"); } - if (Valid.contains("X") && source.getSVar("X").equals("Count$xPaid")) { + if (valid.contains("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); - Valid = Valid.replace("X", Integer.toString(xPay)); + valid = valid.replace("X", Integer.toString(xPay)); } CardList humanlist = AllZone.getHumanPlayer().getCardsIn(Zone.Battlefield); CardList computerlist = AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield); - humanlist = humanlist.getValidCards(Valid.split(","), source.getController(), source); - computerlist = computerlist.getValidCards(Valid.split(","), source.getController(), source); + humanlist = humanlist.getValidCards(valid.split(","), source.getController(), source); + computerlist = computerlist.getValidCards(valid.split(","), source.getController(), source); if (abCost != null) { // AI currently disabled for some costs @@ -743,25 +746,25 @@ public class AbilityFactory_Sacrifice { // if only creatures are affected evaluate both lists and pass only if // human creatures are more valuable - if (humanlist.getNotType("Creature").size() == 0 && computerlist.getNotType("Creature").size() == 0) { - if (CardFactoryUtil.evaluateCreatureList(computerlist) + 200 >= CardFactoryUtil + if ((humanlist.getNotType("Creature").size() == 0) && (computerlist.getNotType("Creature").size() == 0)) { + if ((CardFactoryUtil.evaluateCreatureList(computerlist) + 200) >= CardFactoryUtil .evaluateCreatureList(humanlist)) { return false; } - }// only lands involved - else if (humanlist.getNotType("Land").size() == 0 && computerlist.getNotType("Land").size() == 0) { - if (CardFactoryUtil.evaluatePermanentList(computerlist) + 1 >= CardFactoryUtil + } // only lands involved + else if ((humanlist.getNotType("Land").size() == 0) && (computerlist.getNotType("Land").size() == 0)) { + if ((CardFactoryUtil.evaluatePermanentList(computerlist) + 1) >= CardFactoryUtil .evaluatePermanentList(humanlist)) { return false; } } // otherwise evaluate both lists by CMC and pass only if human // permanents are more valuable - else if (CardFactoryUtil.evaluatePermanentList(computerlist) + 3 >= CardFactoryUtil + else if ((CardFactoryUtil.evaluatePermanentList(computerlist) + 3) >= CardFactoryUtil .evaluatePermanentList(humanlist)) { return false; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { chance &= subAb.chkAIDrawback(); } @@ -781,36 +784,37 @@ public class AbilityFactory_Sacrifice { * @since 1.0.15 */ public static void sacrificeAllResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Card card = sa.getSourceCard(); + final Card card = sa.getSourceCard(); - String Valid = ""; + String valid = ""; if (params.containsKey("ValidCards")) { - Valid = params.get("ValidCards"); + valid = params.get("ValidCards"); } // Ugh. If calculateAmount needs to be called with DestroyAll it _needs_ // to use the X variable // We really need a better solution to this - if (Valid.contains("X")) { - Valid = Valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(card, "X", sa))); + if (valid.contains("X")) { + valid = valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(card, "X", sa))); } CardList list = AllZoneUtil.getCardsIn(Zone.Battlefield); - boolean remSacrificed = params.containsKey("RememberSacrificed"); + final boolean remSacrificed = params.containsKey("RememberSacrificed"); if (remSacrificed) { card.clearRemembered(); } - list = list.getValidCards(Valid.split(","), card.getController(), card); + list = list.getValidCards(valid.split(","), card.getController(), card); for (int i = 0; i < list.size(); i++) { - if (AllZone.getGameAction().sacrifice(list.get(i)) && remSacrificed) + if (AllZone.getGameAction().sacrifice(list.get(i)) && remSacrificed) { card.addRemembered(list.get(i)); + } } } -}// end class AbilityFactory_Sacrifice +} // end class AbilityFactory_Sacrifice diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Token.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Token.java index 9dfc5847e32..255b7dabc9f 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Token.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Token.java @@ -32,17 +32,17 @@ import forge.card.trigger.TriggerHandler; * @version $Id$ */ public class AbilityFactory_Token extends AbilityFactory { - private AbilityFactory AF = null; + private AbilityFactory abilityFactory = null; - private String tokenAmount; - private String tokenName; - private String[] tokenTypes; + private final String tokenAmount; + private final String tokenName; + private final String[] tokenTypes; private String tokenOwner; - private String[] tokenColors; - private String[] tokenKeywords; - private String tokenPower; - private String tokenToughness; - private String tokenImage; + private final String[] tokenColors; + private final String[] tokenKeywords; + private final String tokenPower; + private final String tokenToughness; + private final String tokenImage; private String[] tokenAbilities; private String[] tokenTriggers; private String[] tokenSVars; @@ -59,9 +59,9 @@ public class AbilityFactory_Token extends AbilityFactory { * a {@link forge.card.abilityFactory.AbilityFactory} object. */ public AbilityFactory_Token(final AbilityFactory af) { - AF = af; + this.abilityFactory = af; - HashMap mapParams = af.getMapParams(); + final HashMap mapParams = af.getMapParams(); String image; String[] keywords; @@ -79,49 +79,49 @@ public class AbilityFactory_Token extends AbilityFactory { } if (mapParams.containsKey("TokenTapped")) { - tokenTapped = mapParams.get("TokenTapped").equals("True"); + this.tokenTapped = mapParams.get("TokenTapped").equals("True"); } else { - tokenTapped = false; + this.tokenTapped = false; } if (mapParams.containsKey("TokenAttacking")) { - tokenAttacking = mapParams.get("TokenAttacking").equals("True"); + this.tokenAttacking = mapParams.get("TokenAttacking").equals("True"); } else { - tokenAttacking = false; + this.tokenAttacking = false; } if (mapParams.containsKey("TokenAbilities")) { - tokenAbilities = mapParams.get("TokenAbilities").split(","); + this.tokenAbilities = mapParams.get("TokenAbilities").split(","); } else { - tokenAbilities = null; + this.tokenAbilities = null; } if (mapParams.containsKey("TokenTriggers")) { - tokenTriggers = mapParams.get("TokenTriggers").split(","); + this.tokenTriggers = mapParams.get("TokenTriggers").split(","); } else { - tokenTriggers = null; + this.tokenTriggers = null; } if (mapParams.containsKey("TokenSVars")) { - tokenSVars = mapParams.get("TokenSVars").split(","); + this.tokenSVars = mapParams.get("TokenSVars").split(","); } else { - tokenSVars = null; + this.tokenSVars = null; } if (mapParams.containsKey("TokenStaticAbilities")) { - tokenStaticAbilities = mapParams.get("TokenStaticAbilities").split(","); + this.tokenStaticAbilities = mapParams.get("TokenStaticAbilities").split(","); } else { - tokenStaticAbilities = null; + this.tokenStaticAbilities = null; } - tokenAmount = mapParams.get("TokenAmount"); - tokenPower = mapParams.get("TokenPower"); - tokenToughness = mapParams.get("TokenToughness"); - tokenName = mapParams.get("TokenName"); - tokenTypes = mapParams.get("TokenTypes").split(","); - tokenColors = mapParams.get("TokenColors").split(","); - tokenKeywords = keywords; - tokenImage = image; + this.tokenAmount = mapParams.get("TokenAmount"); + this.tokenPower = mapParams.get("TokenPower"); + this.tokenToughness = mapParams.get("TokenToughness"); + this.tokenName = mapParams.get("TokenName"); + this.tokenTypes = mapParams.get("TokenTypes").split(","); + this.tokenColors = mapParams.get("TokenColors").split(","); + this.tokenKeywords = keywords; + this.tokenImage = image; if (mapParams.containsKey("TokenOwner")) { - tokenOwner = mapParams.get("TokenOwner"); + this.tokenOwner = mapParams.get("TokenOwner"); } else { - tokenOwner = "You"; + this.tokenOwner = "You"; } } @@ -134,27 +134,28 @@ public class AbilityFactory_Token extends AbilityFactory { */ public final SpellAbility getAbility() { - final SpellAbility abToken = new Ability_Activated(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility abToken = new Ability_Activated(this.abilityFactory.getHostCard(), this.abilityFactory.getAbCost(), + this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 8460074843405764620L; @Override public boolean canPlayAI() { - return tokenCanPlayAI(this); + return AbilityFactory_Token.this.tokenCanPlayAI(this); } @Override public void resolve() { - doResolve(this); + AbilityFactory_Token.this.doResolve(this); } @Override public String getStackDescription() { - return doStackDescription(this); + return AbilityFactory_Token.this.doStackDescription(this); } @Override public boolean doTrigger(final boolean mandatory) { - return tokenDoTriggerAI(this, mandatory); + return AbilityFactory_Token.this.tokenDoTriggerAI(this, mandatory); } }; @@ -169,22 +170,22 @@ public class AbilityFactory_Token extends AbilityFactory { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getSpell() { - final SpellAbility spToken = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()) { + final SpellAbility spToken = new Spell(this.abilityFactory.getHostCard(), this.abilityFactory.getAbCost(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = -8041427947613029670L; @Override public boolean canPlayAI() { - return tokenCanPlayAI(this); + return AbilityFactory_Token.this.tokenCanPlayAI(this); } @Override public void resolve() { - doResolve(this); + AbilityFactory_Token.this.doResolve(this); } @Override public String getStackDescription() { - return doStackDescription(this); + return AbilityFactory_Token.this.doStackDescription(this); } }; @@ -199,7 +200,7 @@ public class AbilityFactory_Token extends AbilityFactory { * @return a {@link forge.card.spellability.SpellAbility} object. */ public final SpellAbility getDrawback() { - final SpellAbility dbDealDamage = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()) { + final SpellAbility dbDealDamage = new Ability_Sub(this.abilityFactory.getHostCard(), this.abilityFactory.getAbTgt()) { private static final long serialVersionUID = 7239608350643325111L; @Override @@ -209,17 +210,17 @@ public class AbilityFactory_Token extends AbilityFactory { @Override public String getStackDescription() { - return doStackDescription(this); + return AbilityFactory_Token.this.doStackDescription(this); } @Override public void resolve() { - doResolve(this); + AbilityFactory_Token.this.doResolve(this); } @Override public boolean doTrigger(final boolean mandatory) { - return tokenDoTriggerAI(this, mandatory); + return AbilityFactory_Token.this.tokenDoTriggerAI(this, mandatory); } }; // Spell @@ -237,12 +238,12 @@ public class AbilityFactory_Token extends AbilityFactory { * @return a boolean. */ private boolean tokenCanPlayAI(final SpellAbility sa) { - Cost cost = sa.getPayCosts(); + final Cost cost = sa.getPayCosts(); - for (String type : tokenTypes) { + for (final String type : this.tokenTypes) { if (type.equals("Legendary")) { // Don't kill AIs Legendary tokens - if (AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield, tokenName).size() > 0) { + if (AllZone.getComputerPlayer().getCardsIn(Zone.Battlefield, this.tokenName).size() > 0) { return false; } } @@ -250,7 +251,7 @@ public class AbilityFactory_Token extends AbilityFactory { boolean haste = false; boolean oneShot = false; - for (String kw : tokenKeywords) { + for (final String kw : this.tokenKeywords) { if (kw.equals("Haste")) { haste = true; } @@ -280,11 +281,11 @@ public class AbilityFactory_Token extends AbilityFactory { // return true; // prevent run-away activations - first time will always return true - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); final Card source = sa.getSourceCard(); - boolean chance = r.nextFloat() <= Math.pow(.9, sa.getActivationsThisTurn()); + final boolean chance = r.nextFloat() <= Math.pow(.9, sa.getActivationsThisTurn()); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (tgt != null) { tgt.resetTargets(); if (tgt.canOnlyTgtOpponent()) { @@ -312,13 +313,13 @@ public class AbilityFactory_Token extends AbilityFactory { } } - if (tokenAmount.equals("X")) { - if (source.getSVar(tokenAmount).equals("Count$xPaid")) { + if (this.tokenAmount.equals("X")) { + if (source.getSVar(this.tokenAmount).equals("Count$xPaid")) { // Set PayX here to maximum value. - int xPay = ComputerUtil.determineLeftoverMana(sa); + final int xPay = ComputerUtil.determineLeftoverMana(sa); source.setSVar("PayX", Integer.toString(xPay)); } - if (AbilityFactory.calculateAmount(AF.getHostCard(), tokenAmount, sa) <= 0) { + if (AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenAmount, sa) <= 0) { return false; } } @@ -328,10 +329,10 @@ public class AbilityFactory_Token extends AbilityFactory { } if (sa.isAbility()) { - return (r.nextFloat() < .9 && chance); + return ((r.nextFloat() < .9) && chance); } - return (r.nextFloat() < .6667 && chance); + return ((r.nextFloat() < .6667) && chance); } /** @@ -363,15 +364,15 @@ public class AbilityFactory_Token extends AbilityFactory { * @return a {@link java.lang.String} object. */ private String doStackDescription(final SpellAbility sa) { - Card host = AF.getHostCard(); + final Card host = this.abilityFactory.getHostCard(); - int finalPower = AbilityFactory.calculateAmount(AF.getHostCard(), tokenPower, sa); - int finalToughness = AbilityFactory.calculateAmount(AF.getHostCard(), tokenToughness, sa); - int finalAmount = AbilityFactory.calculateAmount(AF.getHostCard(), tokenAmount, sa); + final int finalPower = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenPower, sa); + final int finalToughness = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenToughness, sa); + final int finalAmount = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenAmount, sa); - String substitutedName = tokenName.equals("ChosenType") ? host.getChosenType() : tokenName; + final String substitutedName = this.tokenName.equals("ChosenType") ? host.getChosenType() : this.tokenName; - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); if (sa instanceof Ability_Sub) { sb.append(" "); @@ -386,7 +387,7 @@ public class AbilityFactory_Token extends AbilityFactory { } sb.append(" onto the battlefield"); - if (tokenOwner.equals("Opponent")) { + if (this.tokenOwner.equals("Opponent")) { sb.append(" under your opponent's control."); } else { sb.append("."); @@ -408,12 +409,12 @@ public class AbilityFactory_Token extends AbilityFactory { * a {@link forge.card.spellability.SpellAbility} object. */ private void doResolve(final SpellAbility sa) { - Card host = AF.getHostCard(); + final Card host = this.abilityFactory.getHostCard(); String imageName = ""; Player controller; String cost = ""; // Construct colors - String[] substitutedColors = Arrays.copyOf(tokenColors, tokenColors.length); + final String[] substitutedColors = Arrays.copyOf(this.tokenColors, this.tokenColors.length); for (int i = 0; i < substitutedColors.length; i++) { if (substitutedColors[i].equals("ChosenColor")) { // this currently only supports 1 chosen color @@ -421,7 +422,7 @@ public class AbilityFactory_Token extends AbilityFactory { } } String colorDesc = ""; - for (String col : substitutedColors) { + for (final String col : substitutedColors) { if (col.equalsIgnoreCase("White")) { colorDesc += "W"; } else if (col.equalsIgnoreCase("Blue")) { @@ -436,61 +437,62 @@ public class AbilityFactory_Token extends AbilityFactory { colorDesc = "C"; } } - if (tokenImage.equals("")) { + if (this.tokenImage.equals("")) { - imageName += colorDesc + " " + tokenPower + " " + tokenToughness + " " + tokenName; + imageName += colorDesc + " " + this.tokenPower + " " + this.tokenToughness + " " + this.tokenName; } else { - imageName = tokenImage; + imageName = this.tokenImage; } // System.out.println("AF_Token imageName = " + imageName); - for (char c : colorDesc.toCharArray()) { + for (final char c : colorDesc.toCharArray()) { cost += c + ' '; } cost = colorDesc.replace('C', '1').trim(); - controller = AbilityFactory.getDefinedPlayers(AF.getHostCard(), tokenOwner, sa).get(0); + controller = AbilityFactory.getDefinedPlayers(this.abilityFactory.getHostCard(), this.tokenOwner, sa).get(0); - int finalPower = AbilityFactory.calculateAmount(AF.getHostCard(), tokenPower, sa); - int finalToughness = AbilityFactory.calculateAmount(AF.getHostCard(), tokenToughness, sa); - int finalAmount = AbilityFactory.calculateAmount(AF.getHostCard(), tokenAmount, sa); + final int finalPower = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenPower, sa); + final int finalToughness = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenToughness, sa); + final int finalAmount = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenAmount, sa); - String[] substitutedTypes = Arrays.copyOf(tokenTypes, tokenTypes.length); + final String[] substitutedTypes = Arrays.copyOf(this.tokenTypes, this.tokenTypes.length); for (int i = 0; i < substitutedTypes.length; i++) { if (substitutedTypes[i].equals("ChosenType")) { substitutedTypes[i] = host.getChosenType(); } } - String substitutedName = tokenName.equals("ChosenType") ? host.getChosenType() : tokenName; + final String substitutedName = this.tokenName.equals("ChosenType") ? host.getChosenType() : this.tokenName; - String remember = AF.getMapParams().get("RememberTokens"); + final String remember = this.abilityFactory.getMapParams().get("RememberTokens"); for (int i = 0; i < finalAmount; i++) { - CardList tokens = CardFactoryUtil.makeToken(substitutedName, imageName, controller, cost, substitutedTypes, - finalPower, finalToughness, tokenKeywords); + final CardList tokens = CardFactoryUtil.makeToken(substitutedName, imageName, controller, cost, + substitutedTypes, finalPower, finalToughness, this.tokenKeywords); // Grant abilities - if (tokenAbilities != null) { - AbilityFactory af = new AbilityFactory(); - for (String s : tokenAbilities) { - String actualAbility = AF.getHostCard().getSVar(s); - for (Card c : tokens) { - SpellAbility grantedAbility = af.getAbility(actualAbility, c); + if (this.tokenAbilities != null) { + final AbilityFactory af = new AbilityFactory(); + for (final String s : this.tokenAbilities) { + final String actualAbility = this.abilityFactory.getHostCard().getSVar(s); + for (final Card c : tokens) { + final SpellAbility grantedAbility = af.getAbility(actualAbility, c); c.addSpellAbility(grantedAbility); } } } // Grant triggers - if (tokenTriggers != null) { + if (this.tokenTriggers != null) { - for (String s : tokenTriggers) { - String actualTrigger = AF.getHostCard().getSVar(s); + for (final String s : this.tokenTriggers) { + final String actualTrigger = this.abilityFactory.getHostCard().getSVar(s); for (final Card c : tokens) { - Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, c, true); - String ability = AF.getHostCard().getSVar(parsedTrigger.getMapParams().get("Execute")); + final Trigger parsedTrigger = TriggerHandler.parseTrigger(actualTrigger, c, true); + final String ability = this.abilityFactory.getHostCard().getSVar( + parsedTrigger.getMapParams().get("Execute")); parsedTrigger.setOverridingAbility(new AbilityFactory().getAbility(ability, c)); c.addTrigger(parsedTrigger); } @@ -498,34 +500,34 @@ public class AbilityFactory_Token extends AbilityFactory { } // Grant SVars - if (tokenSVars != null) { - for (String s : tokenSVars) { - String actualSVar = AF.getHostCard().getSVar(s); - for (Card c : tokens) { + if (this.tokenSVars != null) { + for (final String s : this.tokenSVars) { + final String actualSVar = this.abilityFactory.getHostCard().getSVar(s); + for (final Card c : tokens) { c.setSVar(s, actualSVar); } } } // Grant static abilities - if (tokenStaticAbilities != null) { - for (String s : tokenStaticAbilities) { - String actualAbility = AF.getHostCard().getSVar(s); - for (Card c : tokens) { + if (this.tokenStaticAbilities != null) { + for (final String s : this.tokenStaticAbilities) { + final String actualAbility = this.abilityFactory.getHostCard().getSVar(s); + for (final Card c : tokens) { c.addStaticAbility(actualAbility); } } } - for (Card c : tokens) { - if (tokenTapped) { + for (final Card c : tokens) { + if (this.tokenTapped) { c.tap(); } - if (tokenAttacking) { + if (this.tokenAttacking) { AllZone.getCombat().addAttacker(c); } if (remember != null) { - AF.getHostCard().addRemembered(c); + this.abilityFactory.getHostCard().addRemembered(c); } } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Turns.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Turns.java index 82988b48bf5..f8904ec16d0 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Turns.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Turns.java @@ -41,22 +41,22 @@ public class AbilityFactory_Turns { @Override public String getStackDescription() { - return addTurnStackDescription(af, this); + return AbilityFactory_Turns.addTurnStackDescription(af, this); } @Override public boolean canPlayAI() { - return addTurnCanPlayAI(af, this); + return AbilityFactory_Turns.addTurnCanPlayAI(af, this); } @Override public void resolve() { - addTurnResolve(af, this); + AbilityFactory_Turns.addTurnResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return addTurnTriggerAI(af, this, mandatory); + return AbilityFactory_Turns.addTurnTriggerAI(af, this, mandatory); } }; @@ -78,17 +78,17 @@ public class AbilityFactory_Turns { @Override public String getStackDescription() { - return addTurnStackDescription(af, this); + return AbilityFactory_Turns.addTurnStackDescription(af, this); } @Override public boolean canPlayAI() { - return addTurnCanPlayAI(af, this); + return AbilityFactory_Turns.addTurnCanPlayAI(af, this); } @Override public void resolve() { - addTurnResolve(af, this); + AbilityFactory_Turns.addTurnResolve(af, this); } }; @@ -110,12 +110,12 @@ public class AbilityFactory_Turns { @Override public String getStackDescription() { - return addTurnStackDescription(af, this); + return AbilityFactory_Turns.addTurnStackDescription(af, this); } @Override public void resolve() { - addTurnResolve(af, this); + AbilityFactory_Turns.addTurnResolve(af, this); } @Override @@ -125,7 +125,7 @@ public class AbilityFactory_Turns { @Override public boolean doTrigger(final boolean mandatory) { - return addTurnTriggerAI(af, this, mandatory); + return AbilityFactory_Turns.addTurnTriggerAI(af, this, mandatory); } }; @@ -144,9 +144,9 @@ public class AbilityFactory_Turns { * @return a {@link java.lang.String} object. */ private static String addTurnStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard()).append(" - "); @@ -156,14 +156,14 @@ public class AbilityFactory_Turns { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player player : tgtPlayers) { + for (final Player player : tgtPlayers) { sb.append(player).append(" "); } @@ -179,7 +179,7 @@ public class AbilityFactory_Turns { } sb.append(" after this one."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -199,7 +199,7 @@ public class AbilityFactory_Turns { * @return a boolean. */ private static boolean addTurnCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - return addTurnTriggerAI(af, sa, false); + return AbilityFactory_Turns.addTurnTriggerAI(af, sa, false); } /** @@ -217,17 +217,17 @@ public class AbilityFactory_Turns { */ private static boolean addTurnTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Target tgt = sa.getTarget(); + final Target tgt = sa.getTarget(); if (sa.getTarget() != null) { tgt.resetTargets(); sa.getTarget().addTarget(AllZone.getComputerPlayer()); } else { - ArrayList tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), - sa); - for (Player p : tgtPlayers) { + final ArrayList tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), + params.get("Defined"), sa); + for (final Player p : tgtPlayers) { if (p.isHuman() && !mandatory) { return false; } @@ -249,20 +249,20 @@ public class AbilityFactory_Turns { * a {@link forge.card.spellability.SpellAbility} object. */ private static void addTurnResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa); + final HashMap params = af.getMapParams(); + final int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { for (int i = 0; i < numTurns; i++) { AllZone.getPhase().addExtraTurn(p); } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java index 88400d31992..38ea7a414c4 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_ZoneAffecting.java @@ -54,22 +54,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return drawStackDescription(af, this); + return AbilityFactory_ZoneAffecting.drawStackDescription(af, this); } @Override public boolean canPlayAI() { - return drawCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.drawCanPlayAI(af, this); } @Override public void resolve() { - drawResolve(af, this); + AbilityFactory_ZoneAffecting.drawResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return drawTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.drawTrigger(af, this, mandatory); } }; @@ -91,17 +91,17 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return drawStackDescription(af, this); + return AbilityFactory_ZoneAffecting.drawStackDescription(af, this); } @Override public boolean canPlayAI() { - return drawCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.drawCanPlayAI(af, this); } @Override public void resolve() { - drawResolve(af, this); + AbilityFactory_ZoneAffecting.drawResolve(af, this); } }; @@ -123,22 +123,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return drawStackDescription(af, this); + return AbilityFactory_ZoneAffecting.drawStackDescription(af, this); } @Override public void resolve() { - drawResolve(af, this); + AbilityFactory_ZoneAffecting.drawResolve(af, this); } @Override public boolean chkAIDrawback() { - return drawTargetAI(af, this, false, false); + return AbilityFactory_ZoneAffecting.drawTargetAI(af, this, false, false); } @Override public boolean doTrigger(final boolean mandatory) { - return drawTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.drawTrigger(af, this, mandatory); } }; @@ -157,8 +157,8 @@ public class AbilityFactory_ZoneAffecting { * @return a {@link java.lang.String} object. */ private static String drawStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -166,14 +166,14 @@ public class AbilityFactory_ZoneAffecting { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -181,7 +181,7 @@ public class AbilityFactory_ZoneAffecting { } if (tgtPlayers.size() > 0) { - Iterator it = tgtPlayers.iterator(); + final Iterator it = tgtPlayers.iterator(); while (it.hasNext()) { sb.append(it.next().toString()); if (it.hasNext()) { @@ -210,7 +210,7 @@ public class AbilityFactory_ZoneAffecting { sb.append("."); } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -230,11 +230,11 @@ public class AbilityFactory_ZoneAffecting { * @return a boolean. */ private static boolean drawCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Target tgt = sa.getTarget(); - Card source = sa.getSourceCard(); - Cost abCost = sa.getPayCosts(); + final Target tgt = sa.getTarget(); + final Card source = sa.getSourceCard(); + final Cost abCost = sa.getPayCosts(); if (abCost != null) { // AI currently disabled for these costs @@ -256,15 +256,15 @@ public class AbilityFactory_ZoneAffecting { } - boolean bFlag = drawTargetAI(af, sa, true, false); + final boolean bFlag = AbilityFactory_ZoneAffecting.drawTargetAI(af, sa, true, false); if (!bFlag) { return false; } if (tgt != null) { - ArrayList players = tgt.getTargetPlayers(); - if (players.size() > 0 && players.get(0).isHuman()) { + final ArrayList players = tgt.getTargetPlayers(); + if ((players.size() > 0) && players.get(0).isHuman()) { return true; } } @@ -281,23 +281,21 @@ public class AbilityFactory_ZoneAffecting { double chance = .4; // 40 percent chance of drawing with instant speed // stuff - if (AbilityFactory.isSorcerySpeed(sa)) - { + if (AbilityFactory.isSorcerySpeed(sa)) { chance = .667; // 66.7% chance for sorcery speed } if ((AllZone.getPhase().is(Constant.Phase.END_OF_TURN) && AllZone.getPhase().isNextTurn( - AllZone.getComputerPlayer()))) - { + AllZone.getComputerPlayer()))) { chance = .9; // 90% for end of opponents turn } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); if (AbilityFactory.playReusable(sa)) { randomReturn = true; } - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } @@ -319,15 +317,16 @@ public class AbilityFactory_ZoneAffecting { * a boolean. * @return a boolean. */ - private static boolean drawTargetAI(final AbilityFactory af, final SpellAbility sa, final boolean primarySA, final boolean mandatory) { - Target tgt = af.getAbTgt(); - HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); + private static boolean drawTargetAI(final AbilityFactory af, final SpellAbility sa, final boolean primarySA, + final boolean mandatory) { + final Target tgt = af.getAbTgt(); + final HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); - int computerHandSize = AllZone.getComputerPlayer().getCardsIn(Constant.Zone.Hand).size(); - int humanLibrarySize = AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Library).size(); - int computerLibrarySize = AllZone.getComputerPlayer().getCardsIn(Constant.Zone.Library).size(); - int computerMaxHandSize = AllZone.getComputerPlayer().getMaxHandSize(); + final int computerHandSize = AllZone.getComputerPlayer().getCardsIn(Constant.Zone.Hand).size(); + final int humanLibrarySize = AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Library).size(); + final int computerLibrarySize = AllZone.getComputerPlayer().getCardsIn(Constant.Zone.Library).size(); + final int computerMaxHandSize = AllZone.getComputerPlayer().getMaxHandSize(); int numCards = 1; if (params.containsKey("NumCards")) { @@ -335,8 +334,8 @@ public class AbilityFactory_ZoneAffecting { } boolean xPaid = false; - String num = params.get("NumCards"); - if (num != null && num.equals("X") && source.getSVar(num).equals("Count$xPaid")) { + final String num = params.get("NumCards"); + if ((num != null) && num.equals("X") && source.getSVar(num).equals("Count$xPaid")) { // Set PayX here to maximum value. if (sa instanceof Ability_Sub) { numCards = Integer.parseInt(source.getSVar("PayX")); @@ -355,15 +354,15 @@ public class AbilityFactory_ZoneAffecting { // ability is targeted tgt.resetTargets(); - boolean canTgtHuman = AllZone.getHumanPlayer().canTarget(sa); - boolean canTgtComp = AllZone.getComputerPlayer().canTarget(sa); + final boolean canTgtHuman = AllZone.getHumanPlayer().canTarget(sa); + final boolean canTgtComp = AllZone.getComputerPlayer().canTarget(sa); boolean tgtHuman = false; if (!canTgtHuman && !canTgtComp) { return false; } - if (canTgtHuman && !AllZone.getHumanPlayer().cantLose() && numCards >= humanLibrarySize) { + if (canTgtHuman && !AllZone.getHumanPlayer().cantLose() && (numCards >= humanLibrarySize)) { // Deck the Human? DO IT! tgt.addTarget(AllZone.getHumanPlayer()); return true; @@ -382,14 +381,15 @@ public class AbilityFactory_ZoneAffecting { } } - if (computerHandSize + numCards > computerMaxHandSize && AllZone.getPhase().getPlayerTurn().isComputer()) { + if (((computerHandSize + numCards) > computerMaxHandSize) + && AllZone.getPhase().getPlayerTurn().isComputer()) { if (xPaid) { numCards = computerMaxHandSize - computerHandSize; source.setSVar("PayX", Integer.toString(numCards)); } else { // Don't draw too many cards and then risk discarding cards // at EOT - if (!(params.containsKey("NextUpkeep") || sa instanceof Ability_Sub) && !mandatory) { + if (!(params.containsKey("NextUpkeep") || (sa instanceof Ability_Sub)) && !mandatory) { return false; } } @@ -415,16 +415,17 @@ public class AbilityFactory_ZoneAffecting { } } - if (computerHandSize + numCards > computerMaxHandSize && AllZone.getPhase().getPlayerTurn().isComputer()) { + if (((computerHandSize + numCards) > computerMaxHandSize) + && AllZone.getPhase().getPlayerTurn().isComputer()) { // Don't draw too many cards and then risk discarding cards at // EOT - if (!(params.containsKey("NextUpkeep") || sa instanceof Ability_Sub) && !mandatory) { + if (!(params.containsKey("NextUpkeep") || (sa instanceof Ability_Sub)) && !mandatory) { return false; } } } return true; - }// drawTargetAI() + } // drawTargetAI() /** *

@@ -444,12 +445,12 @@ public class AbilityFactory_ZoneAffecting { return false; } - if (!drawTargetAI(af, sa, false, mandatory)) { + if (!AbilityFactory_ZoneAffecting.drawTargetAI(af, sa, false, mandatory)) { return false; } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -468,9 +469,9 @@ public class AbilityFactory_ZoneAffecting { * a {@link forge.card.spellability.SpellAbility} object. */ private static void drawResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); int numCards = 1; if (params.containsKey("NumCards")) { numCards = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("NumCards"), sa); @@ -478,18 +479,18 @@ public class AbilityFactory_ZoneAffecting { ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(source, params.get("Defined"), sa); } - boolean optional = params.containsKey("OptionalDecider"); - boolean slowDraw = params.containsKey("NextUpkeep"); + final boolean optional = params.containsKey("OptionalDecider"); + final boolean slowDraw = params.containsKey("NextUpkeep"); - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { if (optional) { if (p.isComputer()) { if (numCards >= p.getCardsIn(Zone.Library).size()) { @@ -497,7 +498,7 @@ public class AbilityFactory_ZoneAffecting { continue; } } else { - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append("Do you want to draw ").append(numCards).append(" cards(s)"); if (slowDraw) { @@ -513,12 +514,13 @@ public class AbilityFactory_ZoneAffecting { } if (slowDraw) { - for (int i = 0; i < numCards; i++) + for (int i = 0; i < numCards; i++) { p.addSlowtripList(source); + } } else { - CardList drawn = p.drawCards(numCards); + final CardList drawn = p.drawCards(numCards); if (params.containsKey("RememberDrawn")) { - for (Card c : drawn) { + for (final Card c : drawn) { source.addRemembered(c); } } @@ -527,7 +529,7 @@ public class AbilityFactory_ZoneAffecting { } } - }// drawResolve() + } // drawResolve() // ********************************************************************** // ******************************* MILL ********************************* @@ -548,22 +550,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return millStackDescription(this, af); + return AbilityFactory_ZoneAffecting.millStackDescription(this, af); } @Override public boolean canPlayAI() { - return millCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.millCanPlayAI(af, this); } @Override public void resolve() { - millResolve(af, this); + AbilityFactory_ZoneAffecting.millResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return millTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.millTrigger(af, this, mandatory); } }; @@ -585,17 +587,17 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return millStackDescription(this, af); + return AbilityFactory_ZoneAffecting.millStackDescription(this, af); } @Override public boolean canPlayAI() { - return millCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.millCanPlayAI(af, this); } @Override public void resolve() { - millResolve(af, this); + AbilityFactory_ZoneAffecting.millResolve(af, this); } }; @@ -617,22 +619,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return millStackDescription(this, af); + return AbilityFactory_ZoneAffecting.millStackDescription(this, af); } @Override public void resolve() { - millResolve(af, this); + AbilityFactory_ZoneAffecting.millResolve(af, this); } @Override public boolean chkAIDrawback() { - return millDrawback(af, this); + return AbilityFactory_ZoneAffecting.millDrawback(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return millTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.millTrigger(af, this, mandatory); } }; @@ -651,13 +653,13 @@ public class AbilityFactory_ZoneAffecting { * @return a {@link java.lang.String} object. */ private static String millStackDescription(final SpellAbility sa, final AbilityFactory af) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); - int numCards = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("NumCards"), sa); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); + final int numCards = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("NumCards"), sa); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -670,17 +672,17 @@ public class AbilityFactory_ZoneAffecting { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } - for (Player p : tgtPlayers) { + for (final Player p : tgtPlayers) { sb.append(p.toString()).append(" "); } - Zone dest = Zone.smartValueOf(params.get("Destination")); - if (dest == null || dest.equals(Zone.Graveyard)) { + final Zone dest = Zone.smartValueOf(params.get("Destination")); + if ((dest == null) || dest.equals(Zone.Graveyard)) { sb.append("mills "); } else if (dest.equals(Zone.Exile)) { sb.append("exiles "); @@ -692,7 +694,7 @@ public class AbilityFactory_ZoneAffecting { } sb.append(" from the top of his or her library."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -712,10 +714,10 @@ public class AbilityFactory_ZoneAffecting { * @return a boolean. */ private static boolean millCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); - Cost abCost = af.getAbCost(); + final Card source = sa.getSourceCard(); + final Cost abCost = af.getAbCost(); if (abCost != null) { // AI currently disabled for these costs @@ -737,11 +739,11 @@ public class AbilityFactory_ZoneAffecting { } - if (!millTargetAI(af, sa, false)) { + if (!AbilityFactory_ZoneAffecting.millTargetAI(af, sa, false)) { return false; } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); // Don't use draw abilities before main 2 if possible if (AllZone.getPhase().isBefore(Constant.Phase.MAIN2) && !params.containsKey("ActivationPhases")) { @@ -755,30 +757,28 @@ public class AbilityFactory_ZoneAffecting { double chance = .4; // 40 percent chance of milling with instant speed // stuff - if (AbilityFactory.isSorcerySpeed(sa)) - { + if (AbilityFactory.isSorcerySpeed(sa)) { chance = .667; // 66.7% chance for sorcery speed } if ((AllZone.getPhase().is(Constant.Phase.END_OF_TURN) && AllZone.getPhase().isNextTurn( - AllZone.getComputerPlayer()))) - { + AllZone.getComputerPlayer()))) { chance = .9; // 90% for end of opponents turn } boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); - if (AbilityFactory.playReusable(sa)) - { + if (AbilityFactory.playReusable(sa)) { randomReturn = true; - // some other variables here, like deck size, and phase and other fun - // stuff + // some other variables here, like deck size, and phase and other + // fun + // stuff } if (params.get("NumCards").equals("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int cardsToDiscard = Math.min(ComputerUtil.determineLeftoverMana(sa), - AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Library).size()); + final int cardsToDiscard = Math.min(ComputerUtil.determineLeftoverMana(sa), AllZone.getHumanPlayer() + .getCardsIn(Constant.Zone.Library).size()); source.setSVar("PayX", Integer.toString(cardsToDiscard)); } @@ -799,8 +799,8 @@ public class AbilityFactory_ZoneAffecting { * @return a boolean. */ private static boolean millTargetAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { - Target tgt = af.getAbTgt(); - HashMap params = af.getMapParams(); + final Target tgt = af.getAbTgt(); + final HashMap params = af.getMapParams(); if (tgt != null) { tgt.resetTargets(); @@ -812,9 +812,9 @@ public class AbilityFactory_ZoneAffecting { return false; } - int numCards = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("NumCards"), sa); + final int numCards = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("NumCards"), sa); - CardList pLibrary = AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Library); + final CardList pLibrary = AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Library); if (pLibrary.size() == 0) { // deck already empty, no need to mill if (!mandatory) { @@ -853,12 +853,12 @@ public class AbilityFactory_ZoneAffecting { * @return a boolean. */ private static boolean millDrawback(final AbilityFactory af, final SpellAbility sa) { - if (!millTargetAI(af, sa, true)) { + if (!AbilityFactory_ZoneAffecting.millTargetAI(af, sa, true)) { return false; } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.chkAIDrawback(); } @@ -871,22 +871,22 @@ public class AbilityFactory_ZoneAffecting { return false; } - if (!millTargetAI(af, sa, mandatory)) { + if (!AbilityFactory_ZoneAffecting.millTargetAI(af, sa, mandatory)) { return false; } - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); + final Card source = sa.getSourceCard(); if (params.get("NumCards").equals("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int cardsToDiscard = Math.min(ComputerUtil.determineLeftoverMana(sa), - AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Library).size()); + final int cardsToDiscard = Math.min(ComputerUtil.determineLeftoverMana(sa), AllZone.getHumanPlayer() + .getCardsIn(Constant.Zone.Library).size()); source.setSVar("PayX", Integer.toString(cardsToDiscard)); } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -905,13 +905,13 @@ public class AbilityFactory_ZoneAffecting { * a {@link forge.card.spellability.SpellAbility} object. */ private static void millResolve(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - Card source = sa.getSourceCard(); - int numCards = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("NumCards"), sa); + final HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); + final int numCards = AbilityFactory.calculateAmount(sa.getSourceCard(), params.get("NumCards"), sa); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -923,12 +923,13 @@ public class AbilityFactory_ZoneAffecting { destination = Constant.Zone.Graveyard; } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { - CardList milled = p.mill(numCards, destination); + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { + final CardList milled = p.mill(numCards, destination); if (params.containsKey("RememberMilled")) { - for (Card c : milled) + for (final Card c : milled) { source.addRemembered(c); + } } } } @@ -973,22 +974,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return discardStackDescription(af, this); + return AbilityFactory_ZoneAffecting.discardStackDescription(af, this); } @Override public boolean canPlayAI() { - return discardCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.discardCanPlayAI(af, this); } @Override public void resolve() { - discardResolve(af, this); + AbilityFactory_ZoneAffecting.discardResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return discardTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.discardTrigger(af, this, mandatory); } }; @@ -1010,17 +1011,17 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return discardStackDescription(af, this); + return AbilityFactory_ZoneAffecting.discardStackDescription(af, this); } @Override public boolean canPlayAI() { - return discardCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.discardCanPlayAI(af, this); } @Override public void resolve() { - discardResolve(af, this); + AbilityFactory_ZoneAffecting.discardResolve(af, this); } }; @@ -1042,22 +1043,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return discardStackDescription(af, this); + return AbilityFactory_ZoneAffecting.discardStackDescription(af, this); } @Override public void resolve() { - discardResolve(af, this); + AbilityFactory_ZoneAffecting.discardResolve(af, this); } @Override public boolean chkAIDrawback() { - return discardCheckDrawbackAI(af, this); + return AbilityFactory_ZoneAffecting.discardCheckDrawbackAI(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return discardTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.discardTrigger(af, this, mandatory); } }; @@ -1075,28 +1076,28 @@ public class AbilityFactory_ZoneAffecting { * a {@link forge.card.spellability.SpellAbility} object. */ private static void discardResolve(final AbilityFactory af, final SpellAbility sa) { - Card source = sa.getSourceCard(); - HashMap params = af.getMapParams(); + final Card source = sa.getSourceCard(); + final HashMap params = af.getMapParams(); - String mode = params.get("Mode"); + final String mode = params.get("Mode"); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - CardList discarded = new CardList(); + final CardList discarded = new CardList(); - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { if (mode.equals("Hand")) { - CardList list = p.discardHand(sa); + final CardList list = p.discardHand(sa); if (params.containsKey("RememberDiscarded")) { - for (Card c : list) { + for (final Card c : list) { source.addRemembered(c); } } @@ -1109,7 +1110,7 @@ public class AbilityFactory_ZoneAffecting { } if (mode.equals("Random")) { - String valid = params.containsKey("DiscardValid") ? params.get("DiscardValid") : "Card"; + final String valid = params.containsKey("DiscardValid") ? params.get("DiscardValid") : "Card"; discarded.addAll(p.discardRandom(numCards, sa, valid)); } else if (mode.equals("TgtChoose")) { if (params.containsKey("UnlessType")) { @@ -1119,7 +1120,7 @@ public class AbilityFactory_ZoneAffecting { } } else if (mode.equals("RevealDiscardAll")) { // Reveal - CardList dPHand = p.getCardsIn(Zone.Hand); + final CardList dPHand = p.getCardsIn(Zone.Hand); if (p.isHuman()) { // "reveal to computer" for information gathering @@ -1136,24 +1137,24 @@ public class AbilityFactory_ZoneAffecting { valid = valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(source, "X", sa))); } - CardList dPChHand = dPHand.getValidCards(valid.split(","), source.getController(), source); + final CardList dPChHand = dPHand.getValidCards(valid.split(","), source.getController(), source); // Reveal cards that will be discarded? - for (Card c : dPChHand) { + for (final Card c : dPChHand) { p.discard(c, sa); discarded.add(c); } } else if (mode.equals("RevealYouChoose") || mode.equals("RevealOppChoose")) { // Is Reveal you choose right? I think the wrong player is // being used? - CardList dPHand = p.getCardsIn(Zone.Hand); + final CardList dPHand = p.getCardsIn(Zone.Hand); if (dPHand.size() != 0) { CardList dPChHand = new CardList(dPHand.toArray()); if (params.containsKey("DiscardValid")) { // Restrict // card // choices - String[] dValid = params.get("DiscardValid").split(","); + final String[] dValid = params.get("DiscardValid").split(","); dPChHand = dPHand.getValidCards(dValid, source.getController(), source); } Player chooser = null; @@ -1167,11 +1168,11 @@ public class AbilityFactory_ZoneAffecting { // AI for (int i = 0; i < numCards; i++) { if (dPChHand.size() > 0) { - CardList dChoices = new CardList(); + final CardList dChoices = new CardList(); if (params.containsKey("DiscardValid")) { - String dValid = params.get("DiscardValid"); + final String dValid = params.get("DiscardValid"); if (dValid.contains("Creature") && !dValid.contains("nonCreature")) { - Card c = CardFactoryUtil.AI_getBestCreature(dPChHand); + final Card c = CardFactoryUtil.AI_getBestCreature(dPChHand); if (c != null) { dChoices.add(CardFactoryUtil.AI_getBestCreature(dPChHand)); } @@ -1184,10 +1185,10 @@ public class AbilityFactory_ZoneAffecting { CardListUtil.sortCMC(dPChHand); dChoices.add(dPChHand.get(0)); - Card dC = dChoices.get(CardUtil.getRandomIndex(dChoices)); + final Card dC = dChoices.get(CardUtil.getRandomIndex(dChoices)); dPChHand.remove(dC); - CardList dCs = new CardList(); + final CardList dCs = new CardList(); dCs.add(dC); GuiUtils.getChoiceOptional("Computer has chosen", dCs.toArray()); discarded.add(dC); @@ -1202,7 +1203,8 @@ public class AbilityFactory_ZoneAffecting { for (int i = 0; i < numCards; i++) { if (dPChHand.size() > 0) { - Card dC = GuiUtils.getChoice("Choose a card to be discarded", dPChHand.toArray()); + final Card dC = GuiUtils.getChoice("Choose a card to be discarded", + dPChHand.toArray()); dPChHand.remove(dC); discarded.add(dC); @@ -1218,7 +1220,7 @@ public class AbilityFactory_ZoneAffecting { } if (params.containsKey("RememberDiscarded")) { - for (Card c : discarded) { + for (final Card c : discarded) { source.addRemembered(c); } } @@ -1237,13 +1239,13 @@ public class AbilityFactory_ZoneAffecting { * @return a {@link java.lang.String} object. */ private static String discardStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - String mode = params.get("Mode"); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final String mode = params.get("Mode"); + final StringBuilder sb = new StringBuilder(); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -1256,15 +1258,16 @@ public class AbilityFactory_ZoneAffecting { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } if (tgtPlayers.size() > 0) { - for (Player p : tgtPlayers) + for (final Player p : tgtPlayers) { sb.append(p.toString()).append(" "); + } if (mode.equals("RevealYouChoose")) { sb.append("reveals his or her hand.").append(" You choose ("); @@ -1306,13 +1309,13 @@ public class AbilityFactory_ZoneAffecting { } } - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } return sb.toString(); - }// discardStackDescription() + } // discardStackDescription() /** *

@@ -1326,11 +1329,11 @@ public class AbilityFactory_ZoneAffecting { * @return a boolean. */ private static boolean discardCanPlayAI(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); + final HashMap params = af.getMapParams(); - Target tgt = sa.getTarget(); - Card source = sa.getSourceCard(); - Cost abCost = sa.getPayCosts(); + final Target tgt = sa.getTarget(); + final Card source = sa.getSourceCard(); + final Cost abCost = sa.getPayCosts(); if (abCost != null) { // AI currently disabled for these costs @@ -1352,13 +1355,14 @@ public class AbilityFactory_ZoneAffecting { } - boolean humanHasHand = AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Hand).size() > 0; + final boolean humanHasHand = AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Hand).size() > 0; if (tgt != null) { - discardTargetAI(af, sa); + AbilityFactory_ZoneAffecting.discardTargetAI(af, sa); } else { // TODO: Add appropriate restrictions - ArrayList players = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); + final ArrayList players = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), + params.get("Defined"), sa); if (players.size() == 1) { if (players.get(0).isComputer()) { @@ -1381,7 +1385,7 @@ public class AbilityFactory_ZoneAffecting { if (!params.get("Mode").equals("Hand") && !params.get("Mode").equals("RevealDiscardAll")) { if (params.get("NumCards").equals("X") && source.getSVar("X").equals("Count$xPaid")) { // Set PayX here to maximum value. - int cardsToDiscard = Math.min(ComputerUtil.determineLeftoverMana(sa), AllZone.getHumanPlayer() + final int cardsToDiscard = Math.min(ComputerUtil.determineLeftoverMana(sa), AllZone.getHumanPlayer() .getCardsIn(Constant.Zone.Hand).size()); source.setSVar("PayX", Integer.toString(cardsToDiscard)); } @@ -1399,18 +1403,16 @@ public class AbilityFactory_ZoneAffecting { double chance = .5; // 50 percent chance of discarding with instant // speed stuff - if (AbilityFactory.isSorcerySpeed(sa)) - { + if (AbilityFactory.isSorcerySpeed(sa)) { chance = .75; // 75% chance for sorcery speed } if ((AllZone.getPhase().is(Constant.Phase.END_OF_TURN) && AllZone.getPhase().isNextTurn( - AllZone.getComputerPlayer()))) - { + AllZone.getComputerPlayer()))) { chance = .9; // 90% for end of opponents turn } - Random r = MyRandom.getRandom(); + final Random r = MyRandom.getRandom(); boolean randomReturn = r.nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); if (AbilityFactory.playReusable(sa)) { @@ -1419,12 +1421,12 @@ public class AbilityFactory_ZoneAffecting { // some other variables here, like handsize vs. maxHandSize - Ability_Sub subAb = sa.getSubAbility(); + final Ability_Sub subAb = sa.getSubAbility(); if (subAb != null) { randomReturn &= subAb.chkAIDrawback(); } return randomReturn; - }// discardCanPlayAI() + } // discardCanPlayAI() /** *

@@ -1438,9 +1440,10 @@ public class AbilityFactory_ZoneAffecting { * @return a boolean. */ private static boolean discardTargetAI(final AbilityFactory af, final SpellAbility sa) { - Target tgt = af.getAbTgt(); - if(AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Hand).size() < 1) + final Target tgt = af.getAbTgt(); + if (AllZone.getHumanPlayer().getCardsIn(Constant.Zone.Hand).size() < 1) { return false; + } if (tgt != null) { if (AllZone.getHumanPlayer().canTarget(sa)) { tgt.addTarget(AllZone.getHumanPlayer()); @@ -1448,7 +1451,7 @@ public class AbilityFactory_ZoneAffecting { } } return false; - }// discardTargetAI() + } // discardTargetAI() /** *

@@ -1468,9 +1471,9 @@ public class AbilityFactory_ZoneAffecting { return false; } - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { - if (!discardTargetAI(af, sa)) { + if (!AbilityFactory_ZoneAffecting.discardTargetAI(af, sa)) { if (mandatory && AllZone.getComputerPlayer().canTarget(sa)) { tgt.addTarget(AllZone.getComputerPlayer()); } else { @@ -1480,7 +1483,7 @@ public class AbilityFactory_ZoneAffecting { } return true; - }// discardTrigger() + } // discardTrigger() /** *

@@ -1496,13 +1499,13 @@ public class AbilityFactory_ZoneAffecting { private static boolean discardCheckDrawbackAI(final AbilityFactory af, final Ability_Sub subAb) { // Drawback AI improvements // if parent draws cards, make sure cards in hand + cards drawn > 0 - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { - return discardTargetAI(af, subAb); + return AbilityFactory_ZoneAffecting.discardTargetAI(af, subAb); } // TODO: check for some extra things return true; - }// discardCheckDrawbackAI() + } // discardCheckDrawbackAI() // ********************************************************************** // ******************************* Shuffle ****************************** @@ -1523,22 +1526,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return shuffleStackDescription(af, this); + return AbilityFactory_ZoneAffecting.shuffleStackDescription(af, this); } @Override public boolean canPlayAI() { - return shuffleCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.shuffleCanPlayAI(af, this); } @Override public void resolve() { - shuffleResolve(af, this); + AbilityFactory_ZoneAffecting.shuffleResolve(af, this); } @Override public boolean doTrigger(final boolean mandatory) { - return shuffleTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.shuffleTrigger(af, this, mandatory); } }; @@ -1560,17 +1563,17 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return shuffleStackDescription(af, this); + return AbilityFactory_ZoneAffecting.shuffleStackDescription(af, this); } @Override public boolean canPlayAI() { - return shuffleCanPlayAI(af, this); + return AbilityFactory_ZoneAffecting.shuffleCanPlayAI(af, this); } @Override public void resolve() { - shuffleResolve(af, this); + AbilityFactory_ZoneAffecting.shuffleResolve(af, this); } }; @@ -1592,22 +1595,22 @@ public class AbilityFactory_ZoneAffecting { @Override public String getStackDescription() { - return shuffleStackDescription(af, this); + return AbilityFactory_ZoneAffecting.shuffleStackDescription(af, this); } @Override public void resolve() { - shuffleResolve(af, this); + AbilityFactory_ZoneAffecting.shuffleResolve(af, this); } @Override public boolean chkAIDrawback() { - return shuffleTargetAI(af, this, false, false); + return AbilityFactory_ZoneAffecting.shuffleTargetAI(af, this, false, false); } @Override public boolean doTrigger(final boolean mandatory) { - return shuffleTrigger(af, this, mandatory); + return AbilityFactory_ZoneAffecting.shuffleTrigger(af, this, mandatory); } }; @@ -1626,8 +1629,8 @@ public class AbilityFactory_ZoneAffecting { * @return a {@link java.lang.String} object. */ private static String shuffleStackDescription(final AbilityFactory af, final SpellAbility sa) { - HashMap params = af.getMapParams(); - StringBuilder sb = new StringBuilder(); + final HashMap params = af.getMapParams(); + final StringBuilder sb = new StringBuilder(); if (!(sa instanceof Ability_Sub)) { sb.append(sa.getSourceCard().getName()).append(" - "); @@ -1635,14 +1638,14 @@ public class AbilityFactory_ZoneAffecting { sb.append(" "); } - String conditionDesc = params.get("ConditionDescription"); + final String conditionDesc = params.get("ConditionDescription"); if (conditionDesc != null) { sb.append(conditionDesc).append(" "); } ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { @@ -1650,7 +1653,7 @@ public class AbilityFactory_ZoneAffecting { } if (tgtPlayers.size() > 0) { - Iterator it = tgtPlayers.iterator(); + final Iterator it = tgtPlayers.iterator(); while (it.hasNext()) { sb.append(it.next().getName()); if (it.hasNext()) { @@ -1668,7 +1671,7 @@ public class AbilityFactory_ZoneAffecting { } sb.append("."); - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); } @@ -1722,9 +1725,10 @@ public class AbilityFactory_ZoneAffecting { * a boolean. * @return a boolean. */ - private static boolean shuffleTargetAI(final AbilityFactory af, final SpellAbility sa, final boolean primarySA, final boolean mandatory) { + private static boolean shuffleTargetAI(final AbilityFactory af, final SpellAbility sa, final boolean primarySA, + final boolean mandatory) { return false; - }// shuffleTargetAI() + } // shuffleTargetAI() /** *

@@ -1744,12 +1748,12 @@ public class AbilityFactory_ZoneAffecting { return false; } - if (!shuffleTargetAI(af, sa, false, mandatory)) { + if (!AbilityFactory_ZoneAffecting.shuffleTargetAI(af, sa, false, mandatory)) { return false; } // check SubAbilities DoTrigger? - Ability_Sub abSub = sa.getSubAbility(); + final Ability_Sub abSub = sa.getSubAbility(); if (abSub != null) { return abSub.doTrigger(mandatory); } @@ -1768,21 +1772,21 @@ public class AbilityFactory_ZoneAffecting { * a {@link forge.card.spellability.SpellAbility} object. */ private static void shuffleResolve(final AbilityFactory af, final SpellAbility sa) { - Card host = af.getHostCard(); - HashMap params = af.getMapParams(); - boolean optional = params.containsKey("Optional"); + final Card host = af.getHostCard(); + final HashMap params = af.getMapParams(); + final boolean optional = params.containsKey("Optional"); ArrayList tgtPlayers; - Target tgt = af.getAbTgt(); + final Target tgt = af.getAbTgt(); if (tgt != null) { tgtPlayers = tgt.getTargetPlayers(); } else { tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); } - for (Player p : tgtPlayers) { - if (tgt == null || p.canTarget(sa)) { + for (final Player p : tgtPlayers) { + if ((tgt == null) || p.canTarget(sa)) { if (optional && sa.getActivatingPlayer().isHuman() && !GameActionUtil.showYesNoDialog(host, "Have " + p + " shuffle?")) { } else { @@ -1792,4 +1796,4 @@ public class AbilityFactory_ZoneAffecting { } } -}// end class AbilityFactory_ZoneAffecting +} // end class AbilityFactory_ZoneAffecting