Rename Attack/Defense to Power/Toughness for consistency

This commit is contained in:
drdev
2014-10-13 04:37:55 +00:00
parent 75f60f07c8
commit f8a54eed14
42 changed files with 225 additions and 225 deletions

View File

@@ -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

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -487,8 +487,8 @@ public class ComputerUtil {
remaining = CardLists.filter(remaining, new Predicate<Card>() {
@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)) {

View File

@@ -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);
}
}
}

View File

@@ -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);
}

View File

@@ -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<Card>() {
@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;
}
});
}

View File

@@ -61,7 +61,7 @@ public abstract class CountersAi {
final List<Card> killable = CardLists.filter(list, new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.getNetDefense() <= amount;
return c.getNetToughness() <= amount;
}
});
if (killable.size() > 0) {

View File

@@ -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<Card> canBlock = CardLists.filter(creats, new Predicate<Card>() {
@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()) {

View File

@@ -83,7 +83,7 @@ public class CountersPutAllAi extends SpellAbilityAi {
final List<Card> killable = CardLists.filter(hList, new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.getNetDefense() <= amount;
return c.getNetToughness() <= amount;
}
});
if (!(killable.size() > 2)) {

View File

@@ -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<Card> 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;

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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<Card>() {
@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<String>(), false, timestamp);
Set<CounterType> types = c.getCounters().keySet();
for(CounterType ct : types) {

View File

@@ -67,7 +67,7 @@ public class PumpAllAi extends PumpAiBase {
comp = CardLists.filter(comp, new Predicate<Card>() {
@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<Card>() {
@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;

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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));
}

View File

@@ -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();
}
}

View File

@@ -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));
}

View File

@@ -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<String>(), 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) {

View File

@@ -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<String>(), 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) {

View File

@@ -191,8 +191,8 @@ public class Card extends GameEntity implements Comparable<Card>, IIdentifiable
// stack of set power/toughness
private ArrayList<CardPowerToughness> newPT = new ArrayList<CardPowerToughness>();
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<Card>, 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<String, Integer> xManaCostPaidByColor;
@@ -2404,39 +2404,39 @@ public class Card extends GameEntity implements Comparable<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, 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<Card>, IIdentifiable
}
public final boolean canBeDestroyed() {
return isInPlay() && (!hasKeyword("Indestructible") || (isCreature() && getNetDefense() <= 0));
return isInPlay() && (!hasKeyword("Indestructible") || (isCreature() && getNetToughness() <= 0));
}
@Override

View File

@@ -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<Card> 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<Card> list = new ArrayList<Card>();
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++) {

View File

@@ -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;

View File

@@ -55,7 +55,7 @@ public class CardLists {
return CardLists.filter(in, new Predicate<Card>() {
@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<Card> ToughnessComparator = new Comparator<Card>() {
@Override
public int compare(final Card a, final Card b) {
return a.getNetDefense() - b.getNetDefense();
return a.getNetToughness() - b.getNetToughness();
}
};
public static final Comparator<Card> PowerComparator = new Comparator<Card>() {
@@ -291,7 +291,7 @@ public class CardLists {
public static int getTotalPower(Iterable<Card> cardList) {
int total = 0;
for (final Card crd : cardList) {
total += crd.getNetAttack();
total += crd.getNetPower();
}
return total;
}

View File

@@ -355,14 +355,14 @@ public final class CardPredicates {
public static final Function<Card, Integer> fnGetDefense = new Function<Card, Integer>() {
@Override
public Integer apply(Card a) {
return a.getNetDefense();
return a.getNetToughness();
}
};
public static final Function<Card, Integer> fnGetNetAttack = new Function<Card, Integer>() {
public static final Function<Card, Integer> fnGetNetPower = new Function<Card, Integer>() {
@Override
public Integer apply(Card a) {
return a.getNetAttack();
return a.getNetPower();
}
};

View File

@@ -48,8 +48,8 @@ public class CardState {
private ManaCost manaCost = ManaCost.NO_COST;
private List<CardColor> cardColor = new ArrayList<CardColor>();
private String oracleText = "";
private int baseAttack = 0;
private int baseDefense = 0;
private int basePower = 0;
private int baseToughness = 0;
private List<String> intrinsicKeywords = new ArrayList<String>();
private final FCollection<SpellAbility> nonManaAbilities = new FCollection<SpellAbility>();
private final FCollection<SpellAbility> manaAbilities = new FCollection<SpellAbility>();
@@ -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<String>(source.intrinsicKeywords);
unparsedAbilities = new ArrayList<String>(source.unparsedAbilities);
staticAbilityStrings = new ArrayList<String>(source.staticAbilityStrings);

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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;
}

View File

@@ -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 );
}
}

View File

@@ -1636,7 +1636,7 @@ public class Player extends GameEntity implements Comparable<Player> {
final CardCollectionView ferocious = CardLists.filter(list, new Predicate<Card>() {
@Override
public boolean apply(final Card c) {
return c.getNetAttack() > 3;
return c.getNetPower() > 3;
}
});
return !ferocious.isEmpty();

View File

@@ -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();
}

View File

@@ -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());

View File

@@ -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

View File

@@ -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;
}
}

View File

@@ -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())) {

View File

@@ -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.

View File

@@ -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);