From 08ff96bd173f499eaa05add4e123c289d8f11fad Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Tue, 28 May 2013 05:38:04 +0000 Subject: [PATCH] deal damage - improved stack description --- .../ability/effects/DamageDealEffect.java | 76 ++++++++----------- 1 file changed, 33 insertions(+), 43 deletions(-) diff --git a/src/main/java/forge/card/ability/effects/DamageDealEffect.java b/src/main/java/forge/card/ability/effects/DamageDealEffect.java index 8c23a62014e..179cc480d50 100644 --- a/src/main/java/forge/card/ability/effects/DamageDealEffect.java +++ b/src/main/java/forge/card/ability/effects/DamageDealEffect.java @@ -10,6 +10,7 @@ import forge.card.ability.AbilityUtils; import forge.card.ability.SpellAbilityEffect; import forge.card.spellability.SpellAbility; import forge.game.player.Player; +import forge.util.Lang; public class DamageDealEffect extends SpellAbilityEffect { @@ -25,52 +26,41 @@ public class DamageDealEffect extends SpellAbilityEffect { List tgts = getTargetObjects(sa); - if (tgts.size() > 0) { - - final List definedSources = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DamageSource"), sa); - Card source = new Card(); - if (!definedSources.isEmpty()) { - source = definedSources.get(0); - } - - if (source != sa.getSourceCard()) { - sb.append(source.toString()).append(" deals"); - } else { - sb.append("Deals"); - } - - sb.append(" ").append(dmg).append(" damage "); - - if (sa.hasParam("DivideEvenly")) { - sb.append("divided evenly (rounded down) "); - } else if (sa.hasParam("DividedAsYouChoose")) { - sb.append("divided as you choose "); - } - sb.append("to "); - - for (int i = 0; i < tgts.size(); i++) { - sb.append(" "); - - final Object o = tgts.get(i); - if ((o instanceof Card) || (o instanceof Player)) { - sb.append(o.toString()); - } - } - - if (sa.hasParam("Radiance")) { - sb.append(" and each other ").append(sa.getParam("ValidTgts")) - .append(" that shares a color with "); - if (tgts.size() > 1) { - sb.append("them"); - } else { - sb.append("it"); - } - } - - sb.append(". "); + if (tgts.isEmpty()) + return ""; + final List definedSources = AbilityUtils.getDefinedCards(sa.getSourceCard(), sa.getParam("DamageSource"), sa); + Card source = new Card(); + if (!definedSources.isEmpty()) { + source = definedSources.get(0); } + if (source != sa.getSourceCard()) { + sb.append(source.toString()).append(" deals"); + } else { + sb.append("Deals"); + } + + sb.append(" ").append(dmg).append(" damage "); + + if (sa.hasParam("DivideEvenly")) { + sb.append("divided evenly (rounded down) "); + } else if (sa.hasParam("DividedAsYouChoose")) { + sb.append("divided as you choose "); + } + sb.append("to ").append(Lang.joinHomogenous(tgts)); + + if (sa.hasParam("Radiance")) { + sb.append(" and each other ").append(sa.getParam("ValidTgts")) + .append(" that shares a color with "); + if (tgts.size() > 1) { + sb.append("them"); + } else { + sb.append("it"); + } + } + + sb.append(". "); return sb.toString(); }