From 9e84472d4ccecfca82a10116f87bbccff23a41df Mon Sep 17 00:00:00 2001 From: Hanmac Date: Sun, 25 Jun 2017 23:59:07 +0000 Subject: [PATCH] CopyPermanentEffect: add missing SetColor, move the remove Static Abilties into later code and check them for Embalm and Eternalize too --- .../ability/effects/CopyPermanentEffect.java | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java index e17ebf46994..4ee692226cd 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java @@ -202,6 +202,11 @@ public class CopyPermanentEffect extends SpellAbilityEffect { copy.setType(CardType.parse(newType.toString())); } + + if (sa.hasParam("SetColor")) { + copy.setColor(sa.getParam("SetColor")); + } + for (final String type : types) { copy.addType(type); } @@ -230,11 +235,6 @@ public class CopyPermanentEffect extends SpellAbilityEffect { } catch (final NumberFormatException e) { power = CardFactoryUtil.xCount(copy, copy.getSVar(rhs)); } - for (StaticAbility sta : copy.getStaticAbilities()) { - Map params = sta.getMapParams(); - if (params.containsKey("CharacteristicDefining") && params.containsKey("SetPower")) - copy.removeStaticAbility(sta); - } copy.setBasePower(power); } @@ -247,11 +247,6 @@ public class CopyPermanentEffect extends SpellAbilityEffect { } catch (final NumberFormatException e) { toughness = CardFactoryUtil.xCount(copy, copy.getSVar(rhs)); } - for (StaticAbility sta : copy.getStaticAbilities()) { - Map params = sta.getMapParams(); - if (params.containsKey("CharacteristicDefining") && params.containsKey("SetToughness")) - copy.removeStaticAbility(sta); - } copy.setBaseToughness(toughness); } @@ -280,6 +275,37 @@ public class CopyPermanentEffect extends SpellAbilityEffect { copy.setImageKey(ImageKeys.getTokenKey("eternalize_" + name)); } + // remove some characteristic static abilties + if (sa.hasParam("SetPower") || sa.hasParam("Eternalize")) { + for (StaticAbility sta : copy.getStaticAbilities()) { + Map params = sta.getMapParams(); + if (params.containsKey("CharacteristicDefining") && params.containsKey("SetPower")) + copy.removeStaticAbility(sta); + } + } + + if (sa.hasParam("SetToughness") || sa.hasParam("Eternalize")) { + for (StaticAbility sta : copy.getStaticAbilities()) { + Map params = sta.getMapParams(); + if (params.containsKey("CharacteristicDefining") && params.containsKey("SetToughness")) + copy.removeStaticAbility(sta); + } + } + + if (sa.hasParam("SetCreatureTypes")) { + for (StaticAbility sta : copy.getStaticAbilities()) { + Map params = sta.getMapParams(); + if (params.containsKey("CharacteristicDefining") && params.containsKey("AddType")) + copy.removeStaticAbility(sta); + } + copy.removeIntrinsicKeyword("Changeling"); + } + + if (sa.hasParam("SetColor") || sa.hasParam("Embalm") || sa.hasParam("Eternalize")) { + // there is currently no characteristic static ability, but remove Devoid keyword + copy.removeIntrinsicKeyword("Devoid"); + } + copy.updateStateForView(); // Temporarily register triggers of an object created with CopyPermanent