Fix stack description

Fix "null damage" & "null counter" stack description, and Volcano Hellion crash
This commit is contained in:
Anthony Calosa
2020-03-31 13:36:45 +08:00
parent 7b90b6a801
commit faf8c57907
2 changed files with 32 additions and 23 deletions

View File

@@ -78,13 +78,15 @@ public class CountersPutEffect extends SpellAbilityEffect {
final List<Card> targetCards = SpellAbilityEffect.getTargetCards(spellAbility);
for(int i = 0; i < targetCards.size(); i++) {
Card targetCard = targetCards.get(i);
stringBuilder.append(targetCard).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetCard)).append(" counter)");
if (spellAbility.getTargetRestrictions().getDividedMap().get(targetCard) != null) { // fix null counter stack description
stringBuilder.append(targetCard).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetCard)).append(" counter)");
if(i == targetCards.size() - 2) {
stringBuilder.append(" and ");
}
else if(i + 1 < targetCards.size()) {
stringBuilder.append(", ");
if(i == targetCards.size() - 2) {
stringBuilder.append(" and ");
}
else if(i + 1 < targetCards.size()) {
stringBuilder.append(", ");
}
}
}
} else {
@@ -103,9 +105,8 @@ public class CountersPutEffect extends SpellAbilityEffect {
}
}
}
stringBuilder.append(".");
return stringBuilder.toString();
//stringBuilder.append(".");
return stringBuilder.toString().trim() + ".";
}
@Override

View File

@@ -30,7 +30,12 @@ public class DamageDealEffect extends DamageBaseEffect {
// when damageStackDescription is called, just build exactly what is happening
final StringBuilder stringBuilder = new StringBuilder();
final String damage = spellAbility.getParam("NumDmg");
final int dmg = AbilityUtils.calculateAmount(spellAbility.getHostCard(), damage, spellAbility);
int dmg;
try { // try-catch to fix Volcano Hellion Crash
dmg = AbilityUtils.calculateAmount(spellAbility.getHostCard(), damage, spellAbility);
} catch (NullPointerException e) {
dmg = 0;
}
List<GameObject> targets = SpellAbilityEffect.getTargets(spellAbility);
if (targets.isEmpty()) {
@@ -63,25 +68,28 @@ public class DamageDealEffect extends DamageBaseEffect {
// target cards
for (int i = 0; i < targetCards.size(); i++) {
Card targetCard = targetCards.get(i);
stringBuilder.append(targetCard).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetCard)).append(" damage)");
if (spellAbility.getTargetRestrictions().getDividedMap().get(targetCard) != null) { //fix null damage stack description
stringBuilder.append(targetCard).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetCard)).append(" damage)");
if (i == targetCount - 2) {
stringBuilder.append(" and ");
} else if (i + 1 < targetCount) {
stringBuilder.append(", ");
if (i == targetCount - 2) {
stringBuilder.append(" and ");
} else if (i + 1 < targetCount) {
stringBuilder.append(", ");
}
}
}
// target players
for (int i = 0; i < players.size(); i++) {
Player targetPlayer = players.get(i);
stringBuilder.append(targetPlayer).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetPlayer)).append(" damage)");
if (spellAbility.getTargetRestrictions().getDividedMap().get(targetPlayer) != null) { //fix null damage stack description
stringBuilder.append(targetPlayer).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetPlayer)).append(" damage)");
if (i == players.size() - 2) {
stringBuilder.append(" and ");
} else if (i + 1 < players.size()) {
stringBuilder.append(", ");
if (i == players.size() - 2) {
stringBuilder.append(" and ");
} else if (i + 1 < players.size()) {
stringBuilder.append(", ");
}
}
}
@@ -104,8 +112,8 @@ public class DamageDealEffect extends DamageBaseEffect {
}
}
stringBuilder.append(".");
return stringBuilder.toString();
//stringBuilder.append(".");
return stringBuilder.toString().trim() + ".";
}
/* (non-Javadoc)