From faf8c579072534a076e62b6886c80a17bb954af2 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 31 Mar 2020 13:36:45 +0800 Subject: [PATCH 1/4] Fix stack description Fix "null damage" & "null counter" stack description, and Volcano Hellion crash --- .../ability/effects/CountersPutEffect.java | 19 +++++----- .../ability/effects/DamageDealEffect.java | 36 +++++++++++-------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index 2f48a5a20f6..9a1048d83fb 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -78,13 +78,15 @@ public class CountersPutEffect extends SpellAbilityEffect { final List 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 diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java index 9a80817d6e3..8e123ccab94 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java @@ -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 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) From ec463b414f93de8ed979ca46ea5faaa7c7bde392 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 31 Mar 2020 14:44:37 +0800 Subject: [PATCH 2/4] Refactor description --- .../ability/effects/CountersPutEffect.java | 20 ++++++------ .../ability/effects/DamageDealEffect.java | 31 ++++++++++--------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index 9a1048d83fb..76c8ed3b6a8 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -78,15 +78,15 @@ public class CountersPutEffect extends SpellAbilityEffect { final List targetCards = SpellAbilityEffect.getTargetCards(spellAbility); for(int i = 0; i < targetCards.size(); i++) { Card targetCard = targetCards.get(i); - if (spellAbility.getTargetRestrictions().getDividedMap().get(targetCard) != null) { // fix null counter stack description - stringBuilder.append(targetCard).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetCard)).append(" counter)"); + stringBuilder.append(targetCard); + if (spellAbility.getTargetRestrictions().getDividedMap().get(targetCard) != null) // fix null counter stack description + stringBuilder.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 { @@ -105,8 +105,8 @@ public class CountersPutEffect extends SpellAbilityEffect { } } } - //stringBuilder.append("."); - return stringBuilder.toString().trim() + "."; + stringBuilder.append("."); + return stringBuilder.toString(); } @Override diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java index 8e123ccab94..304ad563c05 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java @@ -58,7 +58,8 @@ public class DamageDealEffect extends DamageBaseEffect { stringBuilder.append("divided evenly (rounded down) to\n"); } else if (spellAbility.hasParam("DividedAsYouChoose")) { stringBuilder.append("divided to\n"); - } + } else + stringBuilder.append(" to "); final List targetCards = SpellAbilityEffect.getTargetCards(spellAbility); final List players = SpellAbilityEffect.getTargetPlayers(spellAbility); @@ -68,28 +69,28 @@ public class DamageDealEffect extends DamageBaseEffect { // target cards for (int i = 0; i < targetCards.size(); i++) { Card targetCard = targetCards.get(i); - if (spellAbility.getTargetRestrictions().getDividedMap().get(targetCard) != null) { //fix null damage stack description - stringBuilder.append(targetCard).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetCard)).append(" damage)"); + stringBuilder.append(targetCard); + if (spellAbility.getTargetRestrictions().getDividedMap().get(targetCard) != null) //fix null damage stack description + stringBuilder.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); - if (spellAbility.getTargetRestrictions().getDividedMap().get(targetPlayer) != null) { //fix null damage stack description - stringBuilder.append(targetPlayer).append(" (").append(spellAbility.getTargetRestrictions().getDividedMap().get(targetPlayer)).append(" damage)"); + stringBuilder.append(targetPlayer); + if (spellAbility.getTargetRestrictions().getDividedMap().get(targetPlayer) != null) //fix null damage stack description + stringBuilder.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(", "); } } From bf7b446586eb55e9dcb004299b3fe7c660fb0af6 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 31 Mar 2020 14:46:42 +0800 Subject: [PATCH 3/4] period --- .../java/forge/game/ability/effects/DamageDealEffect.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java index 304ad563c05..a8b53b4c711 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java @@ -113,8 +113,8 @@ public class DamageDealEffect extends DamageBaseEffect { } } - //stringBuilder.append("."); - return stringBuilder.toString().trim() + "."; + stringBuilder.append("."); + return stringBuilder.toString(); } /* (non-Javadoc) From 6bf72e682818f304b4bf30aa1d1385e871538409 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Tue, 31 Mar 2020 14:49:24 +0800 Subject: [PATCH 4/4] space --- .../main/java/forge/game/ability/effects/DamageDealEffect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java index a8b53b4c711..2162c2d6b1c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java @@ -59,7 +59,7 @@ public class DamageDealEffect extends DamageBaseEffect { } else if (spellAbility.hasParam("DividedAsYouChoose")) { stringBuilder.append("divided to\n"); } else - stringBuilder.append(" to "); + stringBuilder.append("to "); final List targetCards = SpellAbilityEffect.getTargetCards(spellAbility); final List players = SpellAbilityEffect.getTargetPlayers(spellAbility);