From 4f185a527f8045cbedc655b4a89fe60ce62b37fd Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 17 Jun 2015 19:53:32 +0000 Subject: [PATCH] - Attempting to fix a NPE caused by cloning a transformed card. --- .../main/java/forge/game/ability/effects/CloneEffect.java | 3 ++- forge-game/src/main/java/forge/game/card/CardFactory.java | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java index e83691bbfb8..a956dbdcd32 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java @@ -99,7 +99,8 @@ public class CloneEffect extends SpellAbilityEffect { final boolean keepName = sa.hasParam("KeepName"); final String originalName = tgtCard.getName(); final boolean copyingSelf = (tgtCard == cardToCopy); - final CardStateName origState = cardToCopy.getCurrentStateName(); + final boolean isTransformed = cardToCopy.getCurrentStateName() == CardStateName.Transformed; + final CardStateName origState = isTransformed ? CardStateName.Original : cardToCopy.getCurrentStateName(); if (!copyingSelf) { if (tgtCard.isCloned()) { // cloning again diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index 823fb721713..0f3fd161bd1 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -470,8 +470,14 @@ public class CardFactory { } copyState(from, CardStateName.Flipped, to, CardStateName.Flipped); } else { - copyState(from, from.getCurrentStateName(), to, to.getCurrentStateName()); + final boolean fromIsTransformedCard = from.getView().getCurrentState().getState() == CardStateName.Transformed; + if (fromIsTransformedCard) { + copyState(from, CardStateName.Transformed, to, CardStateName.Original); + } else { + copyState(from, from.getCurrentStateName(), to, to.getCurrentStateName()); + } } + } /**