From ba7515e8f5c764d33792d05ef4eae0a0d780ab5e Mon Sep 17 00:00:00 2001 From: ArsenalNut Date: Mon, 6 Feb 2012 08:22:26 +0000 Subject: [PATCH] added support for StackDescription to Token and AlterLife AFs --- .../AbilityFactoryAlterLife.java | 35 +++++++++------- .../abilityfactory/AbilityFactoryToken.java | 41 +++++++++++-------- 2 files changed, 44 insertions(+), 32 deletions(-) diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java index f9e79e99743..189710bbfb1 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java @@ -219,26 +219,31 @@ public class AbilityFactoryAlterLife { sb.append(" "); } - final String conditionDesc = params.get("ConditionDescription"); - if (conditionDesc != null) { - sb.append(conditionDesc).append(" "); + if (params.containsKey("StackDescription")) { + sb.append(params.get("StackDescription")); } + else { + final String conditionDesc = params.get("ConditionDescription"); + if (conditionDesc != null) { + sb.append(conditionDesc).append(" "); + } - ArrayList tgtPlayers; + ArrayList tgtPlayers; - final Target tgt = sa.getTarget(); - if (tgt != null) { - tgtPlayers = tgt.getTargetPlayers(); - } else { - tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); + final Target tgt = sa.getTarget(); + if (tgt != null) { + tgtPlayers = tgt.getTargetPlayers(); + } else { + tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), params.get("Defined"), sa); + } + + for (final Player player : tgtPlayers) { + sb.append(player).append(" "); + } + + sb.append("gains ").append(amount).append(" life."); } - for (final Player player : tgtPlayers) { - sb.append(player).append(" "); - } - - sb.append("gains ").append(amount).append(" life."); - final AbilitySub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java index c365905d68c..4876f6f46c4 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryToken.java @@ -413,16 +413,10 @@ public class AbilityFactoryToken extends AbilityFactory { * @return a {@link java.lang.String} object. */ private String doStackDescription(final SpellAbility sa) { - final Card host = this.abilityFactory.getHostCard(); - - final int finalPower = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenPower, sa); - final int finalToughness = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), - this.tokenToughness, sa); - final int finalAmount = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenAmount, sa); - - final String substitutedName = this.tokenName.equals("ChosenType") ? host.getChosenType() : this.tokenName; + final HashMap params = this.abilityFactory.getMapParams(); final StringBuilder sb = new StringBuilder(); + final Card host = this.abilityFactory.getHostCard(); if (sa instanceof AbilitySub) { sb.append(" "); @@ -430,17 +424,30 @@ public class AbilityFactoryToken extends AbilityFactory { sb.append(host.getName()).append(" - "); } - sb.append("Put (").append(finalAmount).append(") ").append(finalPower).append("/").append(finalToughness); - sb.append(" ").append(substitutedName).append(" token"); - if (finalAmount != 1) { - sb.append("s"); + if (params.containsKey("StackDescription")) { + sb.append(params.get("StackDescription")); } - sb.append(" onto the battlefield"); + else { - if (this.tokenOwner.equals("Opponent")) { - sb.append(" under your opponent's control."); - } else { - sb.append("."); + final int finalPower = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenPower, sa); + final int finalToughness = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), + this.tokenToughness, sa); + final int finalAmount = AbilityFactory.calculateAmount(this.abilityFactory.getHostCard(), this.tokenAmount, sa); + + final String substitutedName = this.tokenName.equals("ChosenType") ? host.getChosenType() : this.tokenName; + + sb.append("Put (").append(finalAmount).append(") ").append(finalPower).append("/").append(finalToughness); + sb.append(" ").append(substitutedName).append(" token"); + if (finalAmount != 1) { + sb.append("s"); + } + sb.append(" onto the battlefield"); + + if (this.tokenOwner.equals("Opponent")) { + sb.append(" under your opponent's control."); + } else { + sb.append("."); + } } if (sa.getSubAbility() != null) {