diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index b256da58437..49da31d94b7 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -193,7 +193,7 @@ public class AiAttackController { public final boolean isEffectiveAttacker(final Player ai, final Card attacker, final Combat combat) { // if the attacker will die when attacking don't attack - if ((attacker.getNetDefense() + ComputerUtilCombat.predictToughnessBonusOfAttacker(attacker, null, combat, true)) <= 0) { + if ((attacker.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfAttacker(attacker, null, combat, true)) <= 0) { return false; } @@ -316,14 +316,14 @@ public class AiAttackController { // // total attack = biggest creature + exalted, *2 if Rafiq is in // play - int humanBaseAttack = this.getAttack(this.oppList.get(0)) + humanExaltedBonus; + int humanBasePower = this.getAttack(this.oppList.get(0)) + humanExaltedBonus; if (nFinestHours > 0) { // For Finest Hour, one creature could attack and get the // bonus TWICE - humanBaseAttack = humanBaseAttack + humanExaltedBonus; + humanBasePower = humanBasePower + humanExaltedBonus; } - final int totalExaltedAttack = opp.isCardInPlay("Rafiq of the Many") ? 2 * humanBaseAttack - : humanBaseAttack; + final int totalExaltedAttack = opp.isCardInPlay("Rafiq of the Many") ? 2 * humanBasePower + : humanBasePower; if (ai.getLife() - 3 <= totalExaltedAttack) { // We will lose if there is an Exalted attack -- keep one // blocker diff --git a/forge-ai/src/main/java/forge/ai/AiBlockController.java b/forge-ai/src/main/java/forge/ai/AiBlockController.java index 40e498ca4f2..6af962516ee 100644 --- a/forge-ai/src/main/java/forge/ai/AiBlockController.java +++ b/forge-ai/src/main/java/forge/ai/AiBlockController.java @@ -213,7 +213,7 @@ public class AiBlockController { || ComputerUtilCombat.canDestroyBlocker(ai, blocker, other, combat, false)) { continue; } - int damageNext = other.getNetAttack(); + int damageNext = other.getNetPower(); if (other.hasKeyword("Trample")) { damageNext -= blocker.getLethalDamage(); } diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 0f891aa2795..25f1f0a3928 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1165,7 +1165,7 @@ public class AiController { } } - if (card.isCreature() && (card.getNetDefense() <= 0) && !card.hasStartOfKeyword("etbCounter") + if (card.isCreature() && (card.getNetToughness() <= 0) && !card.hasStartOfKeyword("etbCounter") && mana.countX() == 0 && !card.hasETBTrigger() && !card.hasETBReplacement()) { return AiPlayDecision.WouldBecomeZeroToughnessCreature; diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index 91226624d46..be8194cf895 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -487,8 +487,8 @@ public class ComputerUtil { remaining = CardLists.filter(remaining, new Predicate() { @Override public boolean apply(final Card c) { - if ((c.getCMC() <= 1 && c.getNetAttack() < 3) - || c.getNetAttack() + c.getNetDefense() <= 3) { + if ((c.getCMC() <= 1 && c.getNetPower() < 3) + || c.getNetPower() + c.getNetToughness() <= 3) { return true; } return false; @@ -693,7 +693,7 @@ public class ComputerUtil { return true; } if (buffedcard.hasKeyword("Evolve")) { - if (buffedcard.getNetAttack() < card.getNetAttack() || buffedcard.getNetDefense() < card.getNetDefense()) { + if (buffedcard.getNetPower() < card.getNetPower() || buffedcard.getNetToughness() < card.getNetToughness()) { return true; } } @@ -1155,13 +1155,13 @@ public class ComputerUtil { for (final Object o : objects) { if (o instanceof Card) { final Card c = (Card) o; - final boolean canRemove = (c.getNetDefense() <= dmg) + final boolean canRemove = (c.getNetToughness() <= dmg) || (!c.hasKeyword("Indestructible") && c.getShieldCount() == 0 && (dmg >= ComputerUtilCombat.getDamageToKill(c))); if (!canRemove) { continue; } if (saviourApi == ApiType.Pump || saviourApi == ApiType.PumpAll) { - final boolean cantSave = c.getNetDefense() + defense <= dmg + final boolean cantSave = c.getNetToughness() + defense <= dmg || (!c.hasKeyword("Indestructible") && c.getShieldCount() == 0 && !grantIndestructible && (dmg >= defense + ComputerUtilCombat.getDamageToKill(c))); if (cantSave && (tgt == null || !grantShroud)) { diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 846e926aadd..188abee6f97 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -380,7 +380,7 @@ public class ComputerUtilCard { value = 80; // tokens should be worth less than actual cards } int power = c.getNetCombatDamage(); - final int toughness = c.getNetDefense(); + final int toughness = c.getNetToughness(); for (String keyword : c.getKeywords()) { if (keyword.equals("Prevent all combat damage that would be dealt by CARDNAME.") || keyword.equals("Prevent all damage that would be dealt by CARDNAME.") @@ -948,7 +948,7 @@ public class ComputerUtilCard { if (sa.getDescription().contains("would die, exile it instead")) { destination = ZoneType.Exile; } - valueBurn = 1.0f * c.getNetDefense() / dmg; + valueBurn = 1.0f * c.getNetToughness() / dmg; valueBurn *= valueBurn; if (sa.getTargetRestrictions().canTgtPlayer()) { valueBurn /= 2; //preserve option to burn to the face @@ -1079,7 +1079,7 @@ public class ComputerUtilCard { } else { att = AbilityUtils.calculateAmount(c, addP, stAb); } - vCard.addTempAttackBoost(att); + vCard.addTempPowerBoost(att); } if (params.containsKey("AddToughness")) { String addT = params.get("AddToughness"); @@ -1089,7 +1089,7 @@ public class ComputerUtilCard { } else { def = AbilityUtils.calculateAmount(c, addT, stAb); } - vCard.addTempDefenseBoost(def); + vCard.addTempToughnessBoost(def); } } } diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index 132a397eba0..7aa2b8fddef 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -497,10 +497,10 @@ public class ComputerUtilCombat { flankingMagnitude = attacker.getAmountOfKeyword("Flanking"); - if (flankingMagnitude >= defender.getNetDefense()) { + if (flankingMagnitude >= defender.getNetToughness()) { return 0; } - if ((flankingMagnitude >= (defender.getNetDefense() - defender.getDamage())) + if ((flankingMagnitude >= (defender.getNetToughness() - defender.getDamage())) && !defender.hasKeyword("Indestructible")) { return 0; } @@ -510,9 +510,9 @@ public class ComputerUtilCombat { return 0; } - int defenderDamage = defender.getNetAttack() + ComputerUtilCombat.predictPowerBonusOfBlocker(attacker, defender, true); + int defenderDamage = defender.getNetPower() + ComputerUtilCombat.predictPowerBonusOfBlocker(attacker, defender, true); if (game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.toughnessAssignsDamage)) { - defenderDamage = defender.getNetDefense() + ComputerUtilCombat.predictToughnessBonusOfBlocker(attacker, defender, true); + defenderDamage = defender.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfBlocker(attacker, defender, true); } // consider static Damage Prevention @@ -564,10 +564,10 @@ public class ComputerUtilCombat { flankingMagnitude = attacker.getAmountOfKeyword("Flanking"); - if (flankingMagnitude >= defender.getNetDefense()) { + if (flankingMagnitude >= defender.getNetToughness()) { return 0; } - if ((flankingMagnitude >= (defender.getNetDefense() - defender.getDamage())) + if ((flankingMagnitude >= (defender.getNetToughness() - defender.getDamage())) && !defender.hasKeyword("Indestructible")) { return 0; } @@ -779,9 +779,9 @@ public class ComputerUtilCombat { // Serene Master switches power with attacker if (blocker.getName().equals("Serene Master")) { - power += attacker.getNetAttack() - blocker.getNetAttack(); + power += attacker.getNetPower() - blocker.getNetPower(); } else if (blocker.getName().equals("Shape Stealer")) { - power += attacker.getNetAttack() - blocker.getNetAttack(); + power += attacker.getNetPower() - blocker.getNetPower(); } // if the attacker has first strike and wither the blocker will deal @@ -940,7 +940,7 @@ public class ComputerUtilCombat { } if (blocker.getName().equals("Shape Stealer")) { - toughness += attacker.getNetDefense() - blocker.getNetDefense(); + toughness += attacker.getNetToughness() - blocker.getNetToughness(); } toughness += blocker.getKeywordMagnitude("Bushido"); @@ -1088,9 +1088,9 @@ public class ComputerUtilCombat { // Serene Master switches power with attacker if (blocker!= null && blocker.getName().equals("Serene Master")) { - power += blocker.getNetAttack() - attacker.getNetAttack(); + power += blocker.getNetPower() - attacker.getNetPower(); } else if (blocker != null && attacker.getName().equals("Shape Stealer")) { - power += blocker.getNetAttack() - attacker.getNetAttack(); + power += blocker.getNetPower() - attacker.getNetPower(); } final Game game = attacker.getGame(); @@ -1270,7 +1270,7 @@ public class ComputerUtilCombat { } if (blocker != null && attacker.getName().equals("Shape Stealer")) { - toughness += blocker.getNetDefense() - attacker.getNetDefense(); + toughness += blocker.getNetToughness() - attacker.getNetToughness(); } final Game game = attacker.getGame(); @@ -1583,10 +1583,10 @@ public class ComputerUtilCombat { flankingMagnitude = attacker.getAmountOfKeyword("Flanking"); - if (flankingMagnitude >= defender.getNetDefense()) { + if (flankingMagnitude >= defender.getNetToughness()) { return false; } - if ((flankingMagnitude >= (defender.getNetDefense() - defender.getDamage())) + if ((flankingMagnitude >= (defender.getNetToughness() - defender.getDamage())) && !defender.hasKeyword("Indestructible")) { return false; } @@ -1616,14 +1616,14 @@ public class ComputerUtilCombat { return false; } - int defenderDamage = defender.getNetAttack() + int defenderDamage = defender.getNetPower() + ComputerUtilCombat.predictPowerBonusOfBlocker(attacker, defender, withoutAbilities); - int attackerDamage = attacker.getNetAttack() + int attackerDamage = attacker.getNetPower() + ComputerUtilCombat.predictPowerBonusOfAttacker(attacker, defender, combat, withoutAbilities); if (ai.getGame().getStaticEffects().getGlobalRuleChange(GlobalRuleChange.toughnessAssignsDamage)) { - defenderDamage = defender.getNetDefense() + defenderDamage = defender.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfBlocker(attacker, defender, withoutAbilities); - attackerDamage = attacker.getNetDefense() + attackerDamage = attacker.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfAttacker(attacker, defender, combat, withoutAbilities); } @@ -1749,7 +1749,7 @@ public class ComputerUtilCombat { flankingMagnitude = attacker.getAmountOfKeyword("Flanking"); - if (flankingMagnitude >= defender.getNetDefense()) { + if (flankingMagnitude >= defender.getNetToughness()) { return true; } if ((flankingMagnitude >= ComputerUtilCombat.getDamageToKill(defender)) && !defender.hasKeyword("Indestructible")) { @@ -1778,14 +1778,14 @@ public class ComputerUtilCombat { } } - int defenderDamage = defender.getNetAttack() + int defenderDamage = defender.getNetPower() + ComputerUtilCombat.predictPowerBonusOfBlocker(attacker, defender, withoutAbilities); - int attackerDamage = attacker.getNetAttack() + int attackerDamage = attacker.getNetPower() + ComputerUtilCombat.predictPowerBonusOfAttacker(attacker, defender, combat, withoutAbilities); if (game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.toughnessAssignsDamage)) { - defenderDamage = defender.getNetDefense() + defenderDamage = defender.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfBlocker(attacker, defender, withoutAbilities); - attackerDamage = attacker.getNetDefense() + attackerDamage = attacker.getNetToughness() + ComputerUtilCombat.predictToughnessBonusOfAttacker(attacker, defender, combat, withoutAbilities); } diff --git a/forge-ai/src/main/java/forge/ai/ability/AttachAi.java b/forge-ai/src/main/java/forge/ai/ability/AttachAi.java index 507349cf7bf..3625abfbcef 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AttachAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AttachAi.java @@ -452,7 +452,7 @@ public class AttachAi extends SpellAbilityAi { @Override public boolean apply(final Card c) { // Don't enchant creatures that can survive - if (!c.canBeDestroyed() || c.getNetCombatDamage() < c.getNetDefense() || c.isEnchantedBy("Guilty Conscience")) { + if (!c.canBeDestroyed() || c.getNetCombatDamage() < c.getNetToughness() || c.isEnchantedBy("Guilty Conscience")) { return false; } return true; @@ -590,7 +590,7 @@ public class AttachAi extends SpellAbilityAi { return true; } - return c.getNetDefense() <= Math.abs(tgh); + return c.getNetToughness() <= Math.abs(tgh); } }); } @@ -616,7 +616,7 @@ public class AttachAi extends SpellAbilityAi { prefList = CardLists.filter(prefList, new Predicate() { @Override public boolean apply(final Card c) { - return ComputerUtil.canAttackNextTurn(c) && c.getNetAttack() > 0; + return ComputerUtil.canAttackNextTurn(c) && c.getNetPower() > 0; } }); } @@ -953,7 +953,7 @@ public class AttachAi extends SpellAbilityAi { if (!c.isCreature()) { return true; } - return ComputerUtil.canAttackNextTurn(c) && powerBonus + c.getNetAttack() > 0; + return ComputerUtil.canAttackNextTurn(c) && powerBonus + c.getNetPower() > 0; } }); } diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersAi.java index 59851665a17..291c653491b 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersAi.java @@ -61,7 +61,7 @@ public abstract class CountersAi { final List killable = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { - return c.getNetDefense() <= amount; + return c.getNetToughness() <= amount; } }); if (killable.size() > 0) { diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java index 0da9376fa10..e0c05a77947 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java @@ -437,7 +437,7 @@ public class CountersPutAi extends SpellAbilityAi { @Override public boolean apply(Card c) { return CombatUtil.canBlock(source, c, !isHaste) - && (c.getNetDefense() > source.getNetAttack() + tributeAmount || c.hasKeyword("DeathTouch")); + && (c.getNetToughness() > source.getNetPower() + tributeAmount || c.hasKeyword("DeathTouch")); } }); if (!threatening.isEmpty()) { @@ -454,7 +454,7 @@ public class CountersPutAi extends SpellAbilityAi { List canBlock = CardLists.filter(creats, new Predicate() { @Override public boolean apply(Card c) { - return CombatUtil.canBlock(source, c) && (c.getNetDefense() > source.getNetAttack() || c.hasKeyword("DeathTouch")); + return CombatUtil.canBlock(source, c) && (c.getNetToughness() > source.getNetPower() || c.hasKeyword("DeathTouch")); } }); if (!canBlock.isEmpty()) { diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAllAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAllAi.java index a73c79f9c91..16434add2c2 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAllAi.java @@ -83,7 +83,7 @@ public class CountersPutAllAi extends SpellAbilityAi { final List killable = CardLists.filter(hList, new Predicate() { @Override public boolean apply(final Card c) { - return c.getNetDefense() <= amount; + return c.getNetToughness() <= amount; } }); if (!(killable.size() > 2)) { diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java index 1eb06873190..d2e8017e778 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -68,7 +68,7 @@ public class DamageDealAi extends DamageAiBase { } else if ("WildHunt".equals(logic)) { // This dummy ability will just deal 0 damage, but holds the logic for the AI for Master of Wild Hunt List wolves = CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), "Creature.Wolf+untapped+YouCtrl+Other", ai, source); - dmg = Aggregates.sum(wolves, CardPredicates.Accessors.fnGetNetAttack); + dmg = Aggregates.sum(wolves, CardPredicates.Accessors.fnGetNetPower); } if (dmg <= 0) { @@ -295,7 +295,7 @@ public class DamageDealAi extends DamageAiBase { dmg -= assignedDamage; } if (!source.hasProtectionFrom(humanCreature)) { - dmgTaken += humanCreature.getNetAttack(); + dmgTaken += humanCreature.getNetPower(); } if (dmg == 0) { return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/FightAi.java b/forge-ai/src/main/java/forge/ai/ability/FightAi.java index 05c398d2115..80736929aa0 100644 --- a/forge-ai/src/main/java/forge/ai/ability/FightAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/FightAi.java @@ -37,8 +37,8 @@ public class FightAi extends SpellAbilityAi { if (sa.hasParam("Defined")) { Card fighter1 = AbilityUtils.getDefinedCards(source, sa.getParam("Defined"), sa).get(0); for (Card humanCreature : humCreatures) { - if (ComputerUtilCombat.getDamageToKill(humanCreature) <= fighter1.getNetAttack() - && humanCreature.getNetAttack() < ComputerUtilCombat.getDamageToKill(fighter1)) { + if (ComputerUtilCombat.getDamageToKill(humanCreature) <= fighter1.getNetPower() + && humanCreature.getNetPower() < ComputerUtilCombat.getDamageToKill(fighter1)) { // todo: check min/max targets; see if we picked the best matchup sa.getTargets().add(humanCreature); return true; @@ -53,8 +53,8 @@ public class FightAi extends SpellAbilityAi { if (!(humCreatures.isEmpty() && aiCreatures.isEmpty())) { for (Card humanCreature : humCreatures) { for (Card aiCreature : aiCreatures) { - if (ComputerUtilCombat.getDamageToKill(humanCreature) <= aiCreature.getNetAttack() - && humanCreature.getNetAttack() < ComputerUtilCombat.getDamageToKill(aiCreature)) { + if (ComputerUtilCombat.getDamageToKill(humanCreature) <= aiCreature.getNetPower() + && humanCreature.getNetPower() < ComputerUtilCombat.getDamageToKill(aiCreature)) { // todo: check min/max targets; see if we picked the best matchup sa.getTargets().add(humanCreature); sa.getTargets().add(aiCreature); @@ -78,8 +78,8 @@ public class FightAi extends SpellAbilityAi { && creature1.sharesCreatureTypeWith(creature2)) { continue; } - if (ComputerUtilCombat.getDamageToKill(creature1) <= creature2.getNetAttack() - && creature1.getNetAttack() >= ComputerUtilCombat.getDamageToKill(creature2)) { + if (ComputerUtilCombat.getDamageToKill(creature1) <= creature2.getNetPower() + && creature1.getNetPower() >= ComputerUtilCombat.getDamageToKill(creature2)) { // todo: check min/max targets; see if we picked the best matchup sa.getTargets().add(creature1); sa.getTargets().add(creature2); @@ -110,14 +110,14 @@ public class FightAi extends SpellAbilityAi { if (sa.hasParam("Defined")) { Card aiCreature = AbilityUtils.getDefinedCards(source, sa.getParam("Defined"), sa).get(0); for (Card humanCreature : humCreatures) { - if (ComputerUtilCombat.getDamageToKill(humanCreature) <= aiCreature.getNetAttack() + if (ComputerUtilCombat.getDamageToKill(humanCreature) <= aiCreature.getNetPower() && ComputerUtilCard.evaluateCreature(humanCreature) > ComputerUtilCard.evaluateCreature(aiCreature)) { sa.getTargets().add(humanCreature); return true; } } for (Card humanCreature : humCreatures) { - if (ComputerUtilCombat.getDamageToKill(aiCreature) > humanCreature.getNetAttack()) { + if (ComputerUtilCombat.getDamageToKill(aiCreature) > humanCreature.getNetPower()) { sa.getTargets().add(humanCreature); return true; } @@ -148,7 +148,7 @@ public class FightAi extends SpellAbilityAi { || opponent.getShieldCount() > 0 || ComputerUtil.canRegenerate(opponent.getController(), opponent)) { return false; } - if (fighter.hasKeyword("Deathtouch") || ComputerUtilCombat.getDamageToKill(opponent) <= fighter.getNetAttack() + pumpAttack) { + if (fighter.hasKeyword("Deathtouch") || ComputerUtilCombat.getDamageToKill(opponent) <= fighter.getNetPower() + pumpAttack) { return true; } return false; diff --git a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java index 47c22834b20..4216325bc8d 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PumpAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PumpAi.java @@ -515,10 +515,10 @@ public class PumpAi extends PumpAiBase { if ((sa.getTargetRestrictions() == null) || !sa.getTargetRestrictions().doesTarget()) { if (source.isCreature()) { if (!source.hasKeyword("Indestructible") - && ((source.getNetDefense() + defense) <= source.getDamage())) { + && ((source.getNetToughness() + defense) <= source.getDamage())) { return false; } - if ((source.getNetDefense() + defense) <= 0) { + if ((source.getNetToughness() + defense) <= 0) { return false; } } diff --git a/forge-ai/src/main/java/forge/ai/ability/PumpAiBase.java b/forge-ai/src/main/java/forge/ai/ability/PumpAiBase.java index 98a8319db4a..d3a59f0030f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PumpAiBase.java +++ b/forge-ai/src/main/java/forge/ai/ability/PumpAiBase.java @@ -381,7 +381,7 @@ public abstract class PumpAiBase extends SpellAbilityAi { return false; } } else if (keyword.equals("Persist")) { - if (card.getBaseDefense() <= 1 || card.hasKeyword("Undying")) { + if (card.getBaseToughness() <= 1 || card.hasKeyword("Undying")) { return false; } } else if (keyword.equals("Islandwalk")) { @@ -436,7 +436,7 @@ public abstract class PumpAiBase extends SpellAbilityAi { return false; } - if ((c.getNetDefense() + defense) <= 0) { + if ((c.getNetToughness() + defense) <= 0) { return false; } @@ -487,7 +487,7 @@ public abstract class PumpAiBase extends SpellAbilityAi { if (CardLists.filter(oppCreatures, CardPredicates.possibleBlockers(pumped)).isEmpty()) { threat *= 2; } - if (c.getNetAttack() == 0 && c == sa.getHostCard() && attack > 0 ) { + if (c.getNetPower() == 0 && c == sa.getHostCard() && attack > 0 ) { threat *= 4; //over-value self +attack for 0 power creatures which may be pumped further after attacking } chance += threat; @@ -669,7 +669,7 @@ public abstract class PumpAiBase extends SpellAbilityAi { list = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { - if (c.getNetDefense() <= -defense) { + if (c.getNetToughness() <= -defense) { return true; // can kill indestructible creatures } return ((ComputerUtilCombat.getDamageToKill(c) <= -defense) && !c.hasKeyword("Indestructible")); @@ -695,11 +695,11 @@ public abstract class PumpAiBase extends SpellAbilityAi { if (combat == null || !combat.isAttacking(c)) { return false; } - if (c.getNetAttack() > 0 && ai.getLife() < 5) { + if (c.getNetPower() > 0 && ai.getLife() < 5) { return true; } //Don't waste a -7/-0 spell on a 1/1 creature - if (c.getNetAttack() + attack > -2 || c.getNetAttack() > 3) { + if (c.getNetPower() + attack > -2 || c.getNetPower() > 3) { return true; } return false; @@ -753,8 +753,8 @@ public abstract class PumpAiBase extends SpellAbilityAi { kws.add(kw); } } - pumped.addTempAttackBoost(c.getTempAttackBoost() + a); - pumped.addTempDefenseBoost(c.getTempDefenseBoost() + d); + pumped.addTempPowerBoost(c.getTempPowerBoost() + a); + pumped.addTempToughnessBoost(c.getTempToughnessBoost() + d); pumped.addChangedCardKeywords(kws, new ArrayList(), false, timestamp); Set types = c.getCounters().keySet(); for(CounterType ct : types) { diff --git a/forge-ai/src/main/java/forge/ai/ability/PumpAllAi.java b/forge-ai/src/main/java/forge/ai/ability/PumpAllAi.java index d55772f0377..83c15929972 100644 --- a/forge-ai/src/main/java/forge/ai/ability/PumpAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/PumpAllAi.java @@ -67,7 +67,7 @@ public class PumpAllAi extends PumpAiBase { comp = CardLists.filter(comp, new Predicate() { @Override public boolean apply(final Card c) { - if (c.getNetDefense() <= -defense) { + if (c.getNetToughness() <= -defense) { return true; // can kill indestructible creatures } return ((ComputerUtilCombat.getDamageToKill(c) <= -defense) && !c.hasKeyword("Indestructible")); @@ -76,7 +76,7 @@ public class PumpAllAi extends PumpAiBase { human = CardLists.filter(human, new Predicate() { @Override public boolean apply(final Card c) { - if (c.getNetDefense() <= -defense) { + if (c.getNetToughness() <= -defense) { return true; // can kill indestructible creatures } return ((ComputerUtilCombat.getDamageToKill(c) <= -defense) && !c.hasKeyword("Indestructible")); @@ -95,12 +95,12 @@ public class PumpAllAi extends PumpAiBase { if (combat == null || !combat.isAttacking(c)) { continue; } - totalPower += Math.min(c.getNetAttack(), power * -1); + totalPower += Math.min(c.getNetPower(), power * -1); if (phase == PhaseType.COMBAT_DECLARE_BLOCKERS && combat.isUnblocked(c)) { if (ComputerUtilCombat.lifeInDanger(sa.getActivatingPlayer(), combat)) { return true; } - totalPower += Math.min(c.getNetAttack(), power * -1); + totalPower += Math.min(c.getNetPower(), power * -1); } if (totalPower >= power * -2) { return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/StoreSVarAi.java b/forge-ai/src/main/java/forge/ai/ability/StoreSVarAi.java index e2a97c9fb72..9aaf6ab35a6 100644 --- a/forge-ai/src/main/java/forge/ai/ability/StoreSVarAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/StoreSVarAi.java @@ -68,7 +68,7 @@ public class StoreSVarAi extends SpellAbilityAi { } return false; } - else if (ComputerUtil.waitForBlocking(sa) || ai.getLife() + 1 >= source.getNetDefense() + else if (ComputerUtil.waitForBlocking(sa) || ai.getLife() + 1 >= source.getNetToughness() || (ai.getLife() > 5 && !ComputerUtilCombat.lifeInSeriousDanger(ai, ai.getGame().getCombat()))) { return false; } diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index efc33a25134..e24067bf276 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -684,12 +684,12 @@ public class GameAction { for (Card c : game.getCardsIn(ZoneType.Battlefield)) { if (c.isCreature()) { // Rule 704.5f - Put into grave (no regeneration) for toughness <= 0 - if (c.getNetDefense() <= 0) { + if (c.getNetToughness() <= 0) { noRegCreats.add(c); checkAgain = true; } else if (c.hasKeyword("CARDNAME can't be destroyed by lethal damage unless lethal damage dealt by a single source is marked on it.")) { for (final Integer dmg : c.getReceivedDamageFromThisTurn().values()) { - if (c.getNetDefense() <= dmg.intValue()) { + if (c.getNetToughness() <= dmg.intValue()) { desCreats.add(c); checkAgain = true; break; @@ -697,7 +697,7 @@ public class GameAction { } } // Rule 704.5g - Destroy due to lethal damage - else if (c.getNetDefense() <= c.getDamage()) { + else if (c.getNetToughness() <= c.getDamage()) { desCreats.add(c); checkAgain = true; } @@ -1112,7 +1112,7 @@ public class GameAction { return false; } - if (c.canBeShielded() && (!c.isCreature() || c.getNetDefense() > 0) + if (c.canBeShielded() && (!c.isCreature() || c.getNetToughness() > 0) && (c.getShieldCount() > 0 || c.hasKeyword("If CARDNAME would be destroyed, regenerate it."))) { c.subtractShield(c.getController().getController().chooseRegenerationShield(c)); c.setDamage(0); diff --git a/forge-game/src/main/java/forge/game/StaticEffects.java b/forge-game/src/main/java/forge/game/StaticEffects.java index d54c0c09888..4a1ea42fe39 100644 --- a/forge-game/src/main/java/forge/game/StaticEffects.java +++ b/forge-game/src/main/java/forge/game/StaticEffects.java @@ -201,8 +201,8 @@ public class StaticEffects { if (addT.startsWith("AffectedX")) { toughnessBonus = se.getXMapValue(affectedCard); } - affectedCard.addSemiPermanentAttackBoost(powerBonus * -1); - affectedCard.addSemiPermanentDefenseBoost(toughnessBonus * -1); + affectedCard.addSemiPermanentPowerBoost(powerBonus * -1); + affectedCard.addSemiPermanentToughnessBoost(toughnessBonus * -1); // remove keywords // TODO regular keywords currently don't try to use keyword multiplier diff --git a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java index 5c555ec39d9..6bff4f10a4a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java @@ -267,7 +267,7 @@ public class CloneEffect extends SpellAbilityEffect { } catch (final NumberFormatException e) { power = CardFactoryUtil.xCount(tgtCard, tgtCard.getSVar(rhs)); } - tgtCard.setBaseAttack(power); + tgtCard.setBasePower(power); } // set toughness of clone @@ -279,7 +279,7 @@ public class CloneEffect extends SpellAbilityEffect { } catch (final NumberFormatException e) { toughness = CardFactoryUtil.xCount(tgtCard, tgtCard.getSVar(rhs)); } - tgtCard.setBaseDefense(toughness); + tgtCard.setBaseToughness(toughness); } // colors to be added or changed to diff --git a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java index 1002137bad9..3a551b88bd6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java @@ -39,8 +39,8 @@ public class FightEffect extends SpellAbilityEffect { return; } - int dmg2 = fighters.get(1).getNetAttack(); - fighters.get(1).addDamage(fighters.get(0).getNetAttack(), fighters.get(0)); + int dmg2 = fighters.get(1).getNetPower(); + fighters.get(1).addDamage(fighters.get(0).getNetPower(), fighters.get(0)); fighters.get(0).addDamage(dmg2, fighters.get(1)); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java index 254e301c77d..e2d49d01f7d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PermanentCreatureEffect.java @@ -27,8 +27,8 @@ public class PermanentCreatureEffect extends SpellAbilityEffect { public String getStackDescription(final SpellAbility sa) { final Card sourceCard = sa.getHostCard(); final StringBuilder sb = new StringBuilder(); - sb.append(sourceCard.getName()).append(" - Creature ").append(sourceCard.getNetAttack()); - sb.append(" / ").append(sourceCard.getNetDefense()); + sb.append(sourceCard.getName()).append(" - Creature ").append(sourceCard.getNetPower()); + sb.append(" / ").append(sourceCard.getNetToughness()); return sb.toString(); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java index 31279df3db9..f9064949177 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PowerExchangeEffect.java @@ -52,11 +52,11 @@ public class PowerExchangeEffect extends SpellAbilityEffect { if (!c1.isInPlay() || !c2.isInPlay()) { return; } - final int power1 = c1.getNetAttack(); - final int power2 = c2.getNetAttack(); + final int power1 = c1.getNetPower(); + final int power2 = c2.getNetPower(); - c1.addTempAttackBoost(power2 - power1); - c2.addTempAttackBoost(power1 - power2); + c1.addTempPowerBoost(power2 - power1); + c2.addTempPowerBoost(power1 - power2); game.fireEvent(new GameEventCardStatsChanged(c1)); game.fireEvent(new GameEventCardStatsChanged(c2)); @@ -69,8 +69,8 @@ public class PowerExchangeEffect extends SpellAbilityEffect { @Override public void run() { - c1.addTempAttackBoost(power1 - power2); - c2.addTempAttackBoost(power2 - power1); + c1.addTempPowerBoost(power1 - power2); + c2.addTempPowerBoost(power2 - power1); game.fireEvent(new GameEventCardStatsChanged(c1)); game.fireEvent(new GameEventCardStatsChanged(c2)); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java index c73e0a5955b..12ad4036a0f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java @@ -51,8 +51,8 @@ public class PumpAllEffect extends SpellAbilityEffect { continue; } - tgtC.addTempAttackBoost(a); - tgtC.addTempDefenseBoost(d); + tgtC.addTempPowerBoost(a); + tgtC.addTempToughnessBoost(d); tgtC.addChangedCardKeywords(kws, new ArrayList(), false, timestamp); for (String kw : hiddenkws) { @@ -75,8 +75,8 @@ public class PumpAllEffect extends SpellAbilityEffect { @Override public void run() { - tgtC.addTempAttackBoost(-1 * a); - tgtC.addTempDefenseBoost(-1 * d); + tgtC.addTempPowerBoost(-1 * a); + tgtC.addTempToughnessBoost(-1 * d); tgtC.removeChangedCardKeywords(timestamp); for (String kw : hiddenkws) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java index 4a4f5e414aa..5745d9234ba 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java @@ -47,8 +47,8 @@ public class PumpEffect extends SpellAbilityEffect { } } - applyTo.addTempAttackBoost(a); - applyTo.addTempDefenseBoost(d); + applyTo.addTempPowerBoost(a); + applyTo.addTempToughnessBoost(d); applyTo.addChangedCardKeywords(kws, new ArrayList(), false, timestamp); if (!sa.hasParam("Permanent")) { @@ -58,8 +58,8 @@ public class PumpEffect extends SpellAbilityEffect { @Override public void run() { - applyTo.addTempAttackBoost(-1 * a); - applyTo.addTempDefenseBoost(-1 * d); + applyTo.addTempPowerBoost(-1 * a); + applyTo.addTempToughnessBoost(-1 * d); if (keywords.size() > 0) { for (String kw : keywords) { diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 8b541ba4972..521551cb644 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -191,8 +191,8 @@ public class Card extends GameEntity implements Comparable, IIdentifiable // stack of set power/toughness private ArrayList newPT = new ArrayList(); private int baseLoyalty = 0; - private String baseAttackString = null; - private String baseDefenseString = null; + private String basePowerString = null; + private String baseToughnessString = null; private int damage; @@ -202,11 +202,11 @@ public class Card extends GameEntity implements Comparable, IIdentifiable private int turnInZone; - private int tempAttackBoost = 0; - private int tempDefenseBoost = 0; + private int tempPowerBoost = 0; + private int tempToughnessBoost = 0; - private int semiPermanentAttackBoost = 0; - private int semiPermanentDefenseBoost = 0; + private int semiPermanentPowerBoost = 0; + private int semiPermanentToughnessBoost = 0; private int xManaCostPaid = 0; private Map xManaCostPaidByColor; @@ -2404,39 +2404,39 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } // values that are printed on card - public final int getBaseAttack() { - return currentState.getBaseAttack(); + public final int getBasePower() { + return currentState.getBasePower(); } - public final int getBaseDefense() { - return currentState.getBaseDefense(); + public final int getBaseToughness() { + return currentState.getBaseToughness(); } // values that are printed on card - public final void setBaseAttack(final int n) { - currentState.setBaseAttack(n); + public final void setBasePower(final int n) { + currentState.setBasePower(n); } - public final void setBaseDefense(final int n) { - currentState.setBaseDefense(n); + public final void setBaseToughness(final int n) { + currentState.setBaseToughness(n); } // values that are printed on card - public final String getBaseAttackString() { - return (null == baseAttackString) ? "" + getBaseAttack() : baseAttackString; + public final String getBasePowerString() { + return (null == basePowerString) ? "" + getBasePower() : basePowerString; } - public final String getBaseDefenseString() { - return (null == baseDefenseString) ? "" + getBaseDefense() : baseDefenseString; + public final String getBaseToughnessString() { + return (null == baseToughnessString) ? "" + getBaseToughness() : baseToughnessString; } // values that are printed on card - public final void setBaseAttackString(final String s) { - baseAttackString = s; + public final void setBasePowerString(final String s) { + basePowerString = s; } - public final void setBaseDefenseString(final String s) { - baseDefenseString = s; + public final void setBaseToughnessString(final String s) { + baseToughnessString = s; } public final int getSetPower() { @@ -2504,7 +2504,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } public final int getCurrentPower() { - int total = getBaseAttack(); + int total = getBasePower(); final int setPower = getSetPower(); if (setPower != -1) { total = setPower; @@ -2513,7 +2513,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } public final int getUnswitchedPower() { - return getCurrentPower() + getTempAttackBoost() + getSemiPermanentAttackBoost() + getPowerBonusFromCounters(); + return getCurrentPower() + getTempPowerBoost() + getSemiPermanentPowerBoost() + getPowerBonusFromCounters(); } public final int getPowerBonusFromCounters() { @@ -2522,7 +2522,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable - 2 * getCounters(CounterType.M2M2) - getCounters(CounterType.M1M0) + 2 * getCounters(CounterType.P2P0); } - public final int getNetAttack() { + public final int getNetPower() { if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) { return getUnswitchedToughness(); } @@ -2530,7 +2530,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } public final int getCurrentToughness() { - int total = getBaseDefense(); + int total = getBaseToughness(); final int setToughness = getSetToughness(); if (setToughness != -1) { total = setToughness; @@ -2539,7 +2539,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } public final int getUnswitchedToughness() { - return getCurrentToughness() + getTempDefenseBoost() + getSemiPermanentDefenseBoost() + getToughnessBonusFromCounters(); + return getCurrentToughness() + getTempToughnessBoost() + getSemiPermanentToughnessBoost() + getToughnessBonusFromCounters(); } public final int getToughnessBonusFromCounters() { @@ -2549,7 +2549,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable + 2 * getCounters(CounterType.P0P2); } - public final int getNetDefense() { + public final int getNetToughness() { if (getAmountOfKeyword("CARDNAME's power and toughness are switched") % 2 != 0) { return getUnswitchedPower(); } @@ -2563,9 +2563,9 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } if (getGame().getStaticEffects().getGlobalRuleChange(GlobalRuleChange.toughnessAssignsDamage)) { - return getNetDefense(); + return getNetToughness(); } - return getNetAttack(); + return getNetPower(); } private int multiKickerMagnitude = 0; @@ -2585,56 +2585,56 @@ public class Card extends GameEntity implements Comparable, IIdentifiable public final int getPseudoKickerMagnitude() { return pseudoKickerMagnitude; } // for cards like Giant Growth, etc. - public final int getTempAttackBoost() { - return tempAttackBoost; + public final int getTempPowerBoost() { + return tempPowerBoost; } - public final int getTempDefenseBoost() { - return tempDefenseBoost; + public final int getTempToughnessBoost() { + return tempToughnessBoost; } - public final void addTempAttackBoost(final int n) { + public final void addTempPowerBoost(final int n) { if (n == 0) { return; } - tempAttackBoost += n; + tempPowerBoost += n; currentState.getView().updatePower(this); } - public final void addTempDefenseBoost(final int n) { + public final void addTempToughnessBoost(final int n) { if (n == 0) { return; } - tempDefenseBoost += n; + tempToughnessBoost += n; currentState.getView().updateToughness(this); } // for cards like Glorious Anthem, etc. - public final int getSemiPermanentAttackBoost() { - return semiPermanentAttackBoost; + public final int getSemiPermanentPowerBoost() { + return semiPermanentPowerBoost; } - public final int getSemiPermanentDefenseBoost() { - return semiPermanentDefenseBoost; + public final int getSemiPermanentToughnessBoost() { + return semiPermanentToughnessBoost; } - public final void addSemiPermanentAttackBoost(final int n) { + public final void addSemiPermanentPowerBoost(final int n) { if (n == 0) { return; } - semiPermanentAttackBoost += n; + semiPermanentPowerBoost += n; currentState.getView().updatePower(this); } - public final void addSemiPermanentDefenseBoost(final int n) { + public final void addSemiPermanentToughnessBoost(final int n) { if (n == 0) { return; } - semiPermanentDefenseBoost += n; + semiPermanentToughnessBoost += n; currentState.getView().updateToughness(this); } - public final void setSemiPermanentAttackBoost(final int n) { - if (semiPermanentAttackBoost == n) { return; } - semiPermanentAttackBoost = n; + public final void setSemiPermanentPowerBoost(final int n) { + if (semiPermanentPowerBoost == n) { return; } + semiPermanentPowerBoost = n; currentState.getView().updatePower(this); } - public final void setSemiPermanentDefenseBoost(final int n) { - if (semiPermanentDefenseBoost == n) { return; } - semiPermanentDefenseBoost = n; + public final void setSemiPermanentToughnessBoost(final int n) { + if (semiPermanentToughnessBoost == n) { return; } + semiPermanentToughnessBoost = n; currentState.getView().updateToughness(this); } @@ -4474,28 +4474,28 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } } for (final Card crd : cards) { - if (crd.getNetAttack() > getNetAttack()) { + if (crd.getNetPower() > getNetPower()) { return false; } } } else if (property.startsWith("yardGreatestPower")) { final CardCollectionView cards = CardLists.filter(sourceController.getCardsIn(ZoneType.Graveyard), Presets.CREATURES); for (final Card crd : cards) { - if (crd.getNetAttack() > getNetAttack()) { + if (crd.getNetPower() > getNetPower()) { return false; } } } else if (property.startsWith("leastPower")) { final CardCollectionView cards = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES); for (final Card crd : cards) { - if (crd.getNetAttack() < getNetAttack()) { + if (crd.getNetPower() < getNetPower()) { return false; } } } else if (property.startsWith("leastToughness")) { final CardCollectionView cards = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES); for (final Card crd : cards) { - if (crd.getNetDefense() < getNetDefense()) { + if (crd.getNetToughness() < getNetToughness()) { return false; } } @@ -4615,10 +4615,10 @@ public class Card extends GameEntity implements Comparable, IIdentifiable if (property.startsWith("power")) { rhs = property.substring(7); - y = getNetAttack(); + y = getNetPower(); } else if (property.startsWith("toughness")) { rhs = property.substring(11); - y = getNetDefense(); + y = getNetToughness(); } else if (property.startsWith("cmc")) { rhs = property.substring(5); if (isSplitCard() && getCurrentStateName() == CardStateName.Original) { @@ -4629,7 +4629,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } } else if (property.startsWith("totalPT")) { rhs = property.substring(10); - y = getNetAttack() + getNetDefense(); + y = getNetPower() + getNetToughness(); } try { x = Integer.parseInt(rhs); @@ -5103,7 +5103,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable // this is the minimal damage a trampling creature has to assign to a blocker public final int getLethalDamage() { - return getNetDefense() - getDamage() - getTotalAssignedDamage(); + return getNetToughness() - getDamage() - getTotalAssignedDamage(); } public final int getDamage() { @@ -5801,7 +5801,7 @@ public class Card extends GameEntity implements Comparable, IIdentifiable } public final boolean canBeDestroyed() { - return isInPlay() && (!hasKeyword("Indestructible") || (isCreature() && getNetDefense() <= 0)); + return isInPlay() && (!hasKeyword("Indestructible") || (isCreature() && getNetToughness() <= 0)); } @Override diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index 36e0c47ca63..61d412447fc 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -423,12 +423,12 @@ public class CardFactory { c.setColor(ccc); if ( face.getIntPower() >= 0 ) { - c.setBaseAttack(face.getIntPower()); - c.setBaseAttackString(face.getPower()); + c.setBasePower(face.getIntPower()); + c.setBasePowerString(face.getPower()); } if ( face.getIntToughness() >= 0 ) { - c.setBaseDefense(face.getIntToughness()); - c.setBaseDefenseString(face.getToughness()); + c.setBaseToughness(face.getIntToughness()); + c.setBaseToughnessString(face.getToughness()); } } @@ -555,8 +555,8 @@ public class CardFactory { public static void copyState(final Card from, final CardStateName fromState, final Card to, final CardStateName toState) { // copy characteristics not associated with a state to.setBaseLoyalty(from.getBaseLoyalty()); - to.setBaseAttackString(from.getBaseAttackString()); - to.setBaseDefenseString(from.getBaseDefenseString()); + to.setBasePowerString(from.getBasePowerString()); + to.setBaseToughnessString(from.getBaseToughnessString()); to.setText(from.getSpellText()); // get CardCharacteristics for desired state @@ -617,7 +617,7 @@ public class CardFactory { } public static List makeToken(final String name, final String imageName, final Player controller, - final String manaCost, final String[] types, final int baseAttack, final int baseDefense, + final String manaCost, final String[] types, final int basePower, final int baseToughness, final String[] intrinsicKeywords) { final List list = new ArrayList(); final Card c = new Card(controller.getGame().nextCardId()); @@ -633,8 +633,8 @@ public class CardFactory { c.addType(t); } - c.setBaseAttack(baseAttack); - c.setBaseDefense(baseDefense); + c.setBasePower(basePower); + c.setBaseToughness(baseToughness); final int multiplier = controller.getTokenDoublersMagnitude(); for (int i = 0; i < multiplier; i++) { diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index a1bf6683d24..2493f3fd037 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -891,8 +891,8 @@ public class CardFactoryUtil { CardCollection list = CardLists.getValidCards(cc.getGame().getCardsIn(ZoneType.Battlefield), rest, cc, c); int highest = 0; for (final Card crd : list) { - if (crd.getNetAttack() > highest) { - highest = crd.getNetAttack(); + if (crd.getNetPower() > highest) { + highest = crd.getNetPower(); } } return highest; @@ -904,8 +904,8 @@ public class CardFactoryUtil { CardCollection list = CardLists.getValidCards(cc.getGame().getCardsIn(ZoneType.Battlefield), rest, cc, c); int highest = 0; for (final Card crd : list) { - if (crd.getNetDefense() > highest) { - highest = crd.getNetDefense(); + if (crd.getNetToughness() > highest) { + highest = crd.getNetToughness(); } } return highest; @@ -1224,13 +1224,13 @@ public class CardFactoryUtil { } if (sq[0].contains("CardPower")) { - return doXMath(c.getNetAttack(), m, c); + return doXMath(c.getNetPower(), m, c); } if (sq[0].contains("CardToughness")) { - return doXMath(c.getNetDefense(), m, c); + return doXMath(c.getNetToughness(), m, c); } if (sq[0].contains("CardSumPT")) { - return doXMath((c.getNetAttack() + c.getNetDefense()), m, c); + return doXMath((c.getNetPower() + c.getNetToughness()), m, c); } // Count$SumPower_valid @@ -1238,7 +1238,7 @@ public class CardFactoryUtil { final String[] restrictions = l[0].split("_"); final String[] rest = restrictions[1].split(","); CardCollection filteredCards = CardLists.getValidCards(cc.getGame().getCardsIn(ZoneType.Battlefield), rest, cc, c); - return doXMath(Aggregates.sum(filteredCards, CardPredicates.Accessors.fnGetNetAttack), m, c); + return doXMath(Aggregates.sum(filteredCards, CardPredicates.Accessors.fnGetNetPower), m, c); } // Count$CardManaCost if (sq[0].contains("CardManaCost")) { @@ -1977,7 +1977,7 @@ public class CardFactoryUtil { int neededDamage = -1; if ((target != null)) { - neededDamage = target.getNetDefense() - target.getDamage(); + neededDamage = target.getNetToughness() - target.getDamage(); } return neededDamage; diff --git a/forge-game/src/main/java/forge/game/card/CardLists.java b/forge-game/src/main/java/forge/game/card/CardLists.java index b85c270d6e3..06a77d919b4 100644 --- a/forge-game/src/main/java/forge/game/card/CardLists.java +++ b/forge-game/src/main/java/forge/game/card/CardLists.java @@ -55,7 +55,7 @@ public class CardLists { return CardLists.filter(in, new Predicate() { @Override public boolean apply(Card c) { - return c.getNetDefense() <= atLeastToughness; + return c.getNetToughness() <= atLeastToughness; } }); } @@ -63,7 +63,7 @@ public class CardLists { public static final Comparator ToughnessComparator = new Comparator() { @Override public int compare(final Card a, final Card b) { - return a.getNetDefense() - b.getNetDefense(); + return a.getNetToughness() - b.getNetToughness(); } }; public static final Comparator PowerComparator = new Comparator() { @@ -291,7 +291,7 @@ public class CardLists { public static int getTotalPower(Iterable cardList) { int total = 0; for (final Card crd : cardList) { - total += crd.getNetAttack(); + total += crd.getNetPower(); } return total; } diff --git a/forge-game/src/main/java/forge/game/card/CardPredicates.java b/forge-game/src/main/java/forge/game/card/CardPredicates.java index 47700e7f8b4..f3bfefb06b3 100644 --- a/forge-game/src/main/java/forge/game/card/CardPredicates.java +++ b/forge-game/src/main/java/forge/game/card/CardPredicates.java @@ -355,14 +355,14 @@ public final class CardPredicates { public static final Function fnGetDefense = new Function() { @Override public Integer apply(Card a) { - return a.getNetDefense(); + return a.getNetToughness(); } }; - public static final Function fnGetNetAttack = new Function() { + public static final Function fnGetNetPower = new Function() { @Override public Integer apply(Card a) { - return a.getNetAttack(); + return a.getNetPower(); } }; diff --git a/forge-game/src/main/java/forge/game/card/CardState.java b/forge-game/src/main/java/forge/game/card/CardState.java index 94466c38371..584e63353ae 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -48,8 +48,8 @@ public class CardState { private ManaCost manaCost = ManaCost.NO_COST; private List cardColor = new ArrayList(); private String oracleText = ""; - private int baseAttack = 0; - private int baseDefense = 0; + private int basePower = 0; + private int baseToughness = 0; private List intrinsicKeywords = new ArrayList(); private final FCollection nonManaAbilities = new FCollection(); private final FCollection manaAbilities = new FCollection(); @@ -146,21 +146,21 @@ public class CardState { view.updateOracleText(this); } - public final int getBaseAttack() { - return baseAttack; + public final int getBasePower() { + return basePower; } - public final void setBaseAttack(final int baseAttack0) { - if (baseAttack == baseAttack0) { return; } - baseAttack = baseAttack0; + public final void setBasePower(final int basePower0) { + if (basePower == basePower0) { return; } + basePower = basePower0; view.updatePower(this); } - public final int getBaseDefense() { - return baseDefense; + public final int getBaseToughness() { + return baseToughness; } - public final void setBaseDefense(final int baseDefense0) { - if (baseDefense == baseDefense0) { return; } - baseDefense = baseDefense0; + public final void setBaseToughness(final int baseToughness0) { + if (baseToughness == baseToughness0) { return; } + baseToughness = baseToughness0; view.updateToughness(this); } @@ -370,8 +370,8 @@ public class CardState { setType(source.type); setManaCost(source.getManaCost()); setCardColor(source.getCardColor()); - setBaseAttack(source.getBaseAttack()); - setBaseDefense(source.getBaseDefense()); + setBasePower(source.getBasePower()); + setBaseToughness(source.getBaseToughness()); intrinsicKeywords = new ArrayList(source.intrinsicKeywords); unparsedAbilities = new ArrayList(source.unparsedAbilities); staticAbilityStrings = new ArrayList(source.staticAbilityStrings); diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index 8b9398ba216..36722ac16aa 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -230,8 +230,8 @@ public final class CardUtil { } // lock in the current P/T without bonus from counters - newCopy.setBaseAttack(in.getCurrentPower() + in.getTempAttackBoost() + in.getSemiPermanentAttackBoost()); - newCopy.setBaseDefense(in.getCurrentToughness() + in.getTempDefenseBoost() + in.getSemiPermanentDefenseBoost()); + newCopy.setBasePower(in.getCurrentPower() + in.getTempPowerBoost() + in.getSemiPermanentPowerBoost()); + newCopy.setBaseToughness(in.getCurrentToughness() + in.getTempToughnessBoost() + in.getSemiPermanentToughnessBoost()); newCopy.setCounters(in.getCounters()); newCopy.setExtrinsicKeyword(in.getExtrinsicKeyword()); @@ -286,8 +286,8 @@ public final class CardUtil { type.add("Creature"); final CardState ret = new CardState(c.getView().createAlternateState(CardStateName.FaceDown)); - ret.setBaseAttack(2); - ret.setBaseDefense(2); + ret.setBasePower(2); + ret.setBaseToughness(2); ret.setName(""); ret.setType(type); diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index c302433490a..c7c8c44b675 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -638,7 +638,7 @@ public class CardView extends GameEntityView { return get(TrackableProperty.Power); } void updatePower(Card c) { - set(TrackableProperty.Power, c.getNetAttack()); + set(TrackableProperty.Power, c.getNetPower()); } void updatePower(CardState c) { if (CardView.this.getCurrentState() == this) { @@ -648,14 +648,14 @@ public class CardView extends GameEntityView { return; } } - set(TrackableProperty.Power, c.getBaseAttack()); + set(TrackableProperty.Power, c.getBasePower()); } public int getToughness() { return get(TrackableProperty.Toughness); } void updateToughness(Card c) { - set(TrackableProperty.Toughness, c.getNetDefense()); + set(TrackableProperty.Toughness, c.getNetToughness()); } void updateToughness(CardState c) { if (CardView.this.getCurrentState() == this) { @@ -665,7 +665,7 @@ public class CardView extends GameEntityView { return; } } - set(TrackableProperty.Toughness, c.getBaseDefense()); + set(TrackableProperty.Toughness, c.getBaseToughness()); } public int getLoyalty() { diff --git a/forge-game/src/main/java/forge/game/combat/CombatUtil.java b/forge-game/src/main/java/forge/game/combat/CombatUtil.java index 8929a65cd48..8f04b8c1f1d 100644 --- a/forge-game/src/main/java/forge/game/combat/CombatUtil.java +++ b/forge-game/src/main/java/forge/game/combat/CombatUtil.java @@ -617,7 +617,7 @@ public class CombatUtil { return false; } - if (attacker.hasKeyword("Creatures with power less than CARDNAME's power can't block it.") && attacker.getNetAttack() > blocker.getNetAttack()) { + if (attacker.hasKeyword("Creatures with power less than CARDNAME's power can't block it.") && attacker.getNetPower() > blocker.getNetPower()) { return false; } diff --git a/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java b/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java index b3244fdb244..5fbf035c3b9 100644 --- a/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java +++ b/forge-game/src/main/java/forge/game/event/GameEventCardStatsChanged.java @@ -36,9 +36,9 @@ public class GameEventCardStatsChanged extends GameEvent { if ( null == card ) return "Card state changes: (empty list)"; if( cards.size() == 1) - return String.format("Card state changes: %s (%s) %d/%d", card.getName(), StringUtils.join(card.getType(), ' '), card.getNetAttack(), card.getNetDefense() ); + return String.format("Card state changes: %s (%s) %d/%d", card.getName(), StringUtils.join(card.getType(), ' '), card.getNetPower(), card.getNetToughness() ); else - return String.format("Card state changes: %s (%s) %d/%d and %d more", card.getName(), StringUtils.join(card.getType(), ' '), card.getNetAttack(), card.getNetDefense(), cards.size() - 1 ); + return String.format("Card state changes: %s (%s) %d/%d and %d more", card.getName(), StringUtils.join(card.getType(), ' '), card.getNetPower(), card.getNetToughness(), cards.size() - 1 ); } } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 1e947e6e848..7847af13fc6 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1636,7 +1636,7 @@ public class Player extends GameEntity implements Comparable { final CardCollectionView ferocious = CardLists.filter(list, new Predicate() { @Override public boolean apply(final Card c) { - return c.getNetAttack() > 3; + return c.getNetPower() > 3; } }); return !ferocious.isEmpty(); diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 386cb42146c..5eabd965569 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -658,7 +658,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } switch (related) { case "LEPower" : - return c.getNetAttack() <= parentTarget.getNetAttack(); + return c.getNetPower() <= parentTarget.getNetPower(); case "LECMC" : return c.getCMC() <= parentTarget.getCMC(); } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java b/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java index 6898b737ce9..6c860285de3 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellPermanent.java @@ -48,8 +48,8 @@ public class SpellPermanent extends Spell { if (sourceCard.isCreature()) { final StringBuilder sb = new StringBuilder(); - sb.append(sourceCard.getName()).append(" - Creature ").append(sourceCard.getNetAttack()); - sb.append(" / ").append(sourceCard.getNetDefense()); + sb.append(sourceCard.getName()).append(" - Creature ").append(sourceCard.getNetPower()); + sb.append(" / ").append(sourceCard.getNetToughness()); this.setStackDescription(sb.toString()); } else { this.setStackDescription(sourceCard.getName()); diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java index 6ad1fe2048d..995f439935e 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityContinuous.java @@ -396,10 +396,10 @@ public class StaticAbilityContinuous { // set P/T if (params.containsKey("CharacteristicDefining")) { if (setPower != -1) { - affectedCard.setBaseAttack(setPower); + affectedCard.setBasePower(setPower); } if (setToughness != -1) { - affectedCard.setBaseDefense(setToughness); + affectedCard.setBaseToughness(setToughness); } } else // non CharacteristicDefining if ((setPower != -1) || (setToughness != -1)) { @@ -421,8 +421,8 @@ public class StaticAbilityContinuous { toughnessBonus = CardFactoryUtil.xCount(affectedCard, AbilityUtils.getSVar(stAb, addT)); se.addXMapValue(affectedCard, toughnessBonus); } - affectedCard.addSemiPermanentAttackBoost(powerBonus); - affectedCard.addSemiPermanentDefenseBoost(toughnessBonus); + affectedCard.addSemiPermanentPowerBoost(powerBonus); + affectedCard.addSemiPermanentToughnessBoost(toughnessBonus); // add keywords // TODO regular keywords currently don't try to use keyword multiplier diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index f76d81e102a..1ec280caf6d 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -270,8 +270,8 @@ public abstract class Trigger extends TriggerReplacementBase { // sb.append(this.getHostCard().getName()); // throw new RuntimeException(sb.toString()); } - if (moved.getNetAttack() <= this.getHostCard().getNetAttack() - && moved.getNetDefense() <= this.getHostCard().getNetDefense()) { + if (moved.getNetPower() <= this.getHostCard().getNetPower() + && moved.getNetToughness() <= this.getHostCard().getNetToughness()) { return false; } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java index 53b98fc1d32..e3a8f4af21d 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttackerBlockedByCreature.java @@ -62,7 +62,7 @@ public class TriggerAttackerBlockedByCreature extends Trigger { if (this.mapParams.containsKey("ValidCard")) { final String validCard = this.mapParams.get("ValidCard"); if (validCard.equals("LessPowerThanBlocker")) { - if (attacker.getNetAttack() >= blocker.getNetAttack()) { + if (attacker.getNetPower() >= blocker.getNetPower()) { return false; } } else if (!matchesValid(attacker, validCard.split(","), this.getHostCard())) { @@ -73,7 +73,7 @@ public class TriggerAttackerBlockedByCreature extends Trigger { if (this.mapParams.containsKey("ValidBlocker")) { final String validBlocker = this.mapParams.get("ValidBlocker"); if (validBlocker.equals("LessPowerThanAttacker")) { - if (blocker.getNetAttack() >= attacker.getNetAttack()) { + if (blocker.getNetPower() >= attacker.getNetPower()) { return false; } } else if (!matchesValid(blocker, validBlocker.split(","), this.getHostCard())) { diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java b/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java index f4d15fe3416..99d8f8b60df 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java @@ -232,8 +232,8 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen || panel.getCard().isCopiedSpell() || !panel.getCard().getCounters().equals(firstPanel.getCard().getCounters()) || (panel.getCard().isSick() != firstPanel.getCard().isSick()) - || (panel.getCard().getNetAttack() != firstPanel.getCard().getNetAttack()) - || (panel.getCard().getNetDefense() != firstPanel.getCard().getNetDefense()) + || (panel.getCard().getNetPower() != firstPanel.getCard().getNetPower()) + || (panel.getCard().getNetToughness() != firstPanel.getCard().getNetToughness()) || (stack.size() == creatureStackMax)) { // If this creature has attachments or the stack is full, // put it to the right. diff --git a/forge-gui-desktop/src/test/java/forge/RunTest.java b/forge-gui-desktop/src/test/java/forge/RunTest.java index a13ff814f1d..d7a34f14484 100644 --- a/forge-gui-desktop/src/test/java/forge/RunTest.java +++ b/forge-gui-desktop/src/test/java/forge/RunTest.java @@ -35,8 +35,8 @@ public class RunTest { this.check("2.2", c.isType("Elf")); this.check("2.3", c.isType("Warrior")); this.check("3", c.getText().equals("")); - this.check("4", c.getNetAttack() == 2); - this.check("5", c.getNetDefense() == 3); + this.check("4", c.getNetPower() == 2); + this.check("5", c.getNetToughness() == 3); this.check("6", c.getKeyword().isEmpty()); c = cf.getCard("Shock", null);