CardTraitBase & SpellAbility: mapParams need to be copied on clone too so they can be changed.

This commit is contained in:
Hanmac
2016-10-07 10:39:58 +00:00
parent 7ea58267da
commit 06522aedbe
2 changed files with 5 additions and 1 deletions

View File

@@ -29,7 +29,7 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView {
protected Card hostCard; protected Card hostCard;
/** The map params. */ /** The map params. */
protected final Map<String, String> originalMapParams = Maps.newHashMap(), protected Map<String, String> originalMapParams = Maps.newHashMap(),
mapParams = Maps.newHashMap(); mapParams = Maps.newHashMap();
/** The is intrinsic. */ /** The is intrinsic. */

View File

@@ -18,6 +18,7 @@
package forge.game.spellability; package forge.game.spellability;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.game.CardTraitBase; import forge.game.CardTraitBase;
@@ -645,6 +646,9 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
if (clone.hostCard != null && clone.hostCard.getGame() != null) { if (clone.hostCard != null && clone.hostCard.getGame() != null) {
clone.hostCard.getGame().addSpellAbility(clone.id, clone); clone.hostCard.getGame().addSpellAbility(clone.id, clone);
} }
// need to clone the maps too so they can be changed
clone.originalMapParams = Maps.newHashMap(this.originalMapParams);
clone.mapParams = Maps.newHashMap(this.mapParams);
} catch (final CloneNotSupportedException e) { } catch (final CloneNotSupportedException e) {
System.err.println(e); System.err.println(e);
} }