From 9a5aab4c4aed75740d6e7c68e014d3e07a363c06 Mon Sep 17 00:00:00 2001 From: Sloth Date: Sat, 24 Nov 2012 22:48:27 +0000 Subject: [PATCH] - Cleanup of CloneEffect. --- .../abilityfactory/effects/CloneEffect.java | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/main/java/forge/card/abilityfactory/effects/CloneEffect.java b/src/main/java/forge/card/abilityfactory/effects/CloneEffect.java index 64cec42cb47..d0613ae10dc 100644 --- a/src/main/java/forge/card/abilityfactory/effects/CloneEffect.java +++ b/src/main/java/forge/card/abilityfactory/effects/CloneEffect.java @@ -2,7 +2,6 @@ package forge.card.abilityfactory.effects; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.Map; import forge.Card; @@ -23,38 +22,47 @@ public class CloneEffect extends SpellEffect { @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); + final Card host = sa.getSourceCard(); + Card tgtCard = host; - final List tgts = getTargetCards(sa); + Card cardToCopy = host; + final Target tgt = sa.getTarget(); + if (sa.hasParam("Defined")) { + ArrayList cloneSources = AbilityFactory.getDefinedCards(host, sa.getParam("Defined"), sa); + if (!cloneSources.isEmpty()) { + cardToCopy = cloneSources.get(0); + } + } else if (tgt != null) { + cardToCopy = tgt.getTargetCards().get(0); + } - sb.append(sa.getSourceCard()); - sb.append(" becomes a copy of "); - if (!tgts.isEmpty()) { - sb.append(tgts.get(0)).append("."); - } - else { - sb.append("target creature."); + ArrayList cloneTargets = AbilityFactory.getDefinedCards(host, sa.getParam("CloneTarget"), sa); + if (!cloneTargets.isEmpty()) { + tgtCard = cloneTargets.get(0); } + + sb.append(tgtCard); + sb.append(" becomes a copy of " + cardToCopy + "."); + return sb.toString(); } // end cloneStackDescription() @Override public void resolve(SpellAbility sa) { - Card tgtCard; final Card host = sa.getSourceCard(); + Card tgtCard = host; Map origSVars = host.getSVars(); - // find cloning source i.e. thing to be copied Card cardToCopy = null; final Target tgt = sa.getTarget(); - if (tgt != null) { - cardToCopy = tgt.getTargetCards().get(0); - } - else if (sa.hasParam("Defined")) { + if (sa.hasParam("Defined")) { ArrayList cloneSources = AbilityFactory.getDefinedCards(host, sa.getParam("Defined"), sa); if (!cloneSources.isEmpty()) { cardToCopy = cloneSources.get(0); } + } else if (tgt != null) { + cardToCopy = tgt.getTargetCards().get(0); } if (cardToCopy == null) { return; @@ -73,9 +81,6 @@ public class CloneEffect extends SpellEffect { if (!cloneTargets.isEmpty()) { tgtCard = cloneTargets.get(0); } - else { - tgtCard = host; - } String imageFileName = host.getImageFilename(); @@ -275,7 +280,6 @@ public class CloneEffect extends SpellEffect { } } tgtCard.addColor(shortColors, tgtCard, !sa.hasParam("OverwriteColors"), true); - } }