From 16613fe1d01767d70bd1ed198802ff23b0fc241b Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Wed, 13 Apr 2022 11:46:12 +0200 Subject: [PATCH] set castSA on copy --- .../src/main/java/forge/game/GameAction.java | 2 +- .../src/main/java/forge/game/card/Card.java | 7 ++--- .../java/forge/game/card/CardFactory.java | 5 ++-- .../java/forge/game/card/CardProperty.java | 28 +++++++++---------- 4 files changed, 19 insertions(+), 23 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index a69075a3342..85adc237c6a 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -815,7 +815,7 @@ public class GameAction { } else { c.setCastFrom(zoneFrom); } - if (cause != null && cause.isSpell() && c.equals(cause.getHostCard()) && !c.isCopiedSpell()) { + if (cause != null && cause.isSpell() && c.equals(cause.getHostCard())) { c.setCastSA(cause); } else { c.setCastSA(null); diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index d64b0a5b3af..1452ab0f760 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1258,8 +1258,8 @@ public class Card extends GameEntity implements Comparable, IHasSVars { } public final int getXManaCostPaid() { - if (getCastSAFallBack() != null) { - Integer paid = getCastSAFallBack().getXManaCostPaid(); + if (getCastSA() != null) { + Integer paid = getCastSA().getXManaCostPaid(); return paid == null ? 0 : paid; } return 0; @@ -6086,9 +6086,6 @@ public class Card extends GameEntity implements Comparable, IHasSVars { public SpellAbility getCastSA() { return castSA; } - public SpellAbility getCastSAFallBack() { - return getCopiedPermanent() != null ? getCopiedPermanent().getCastSA() : castSA; - } public void setCastSA(SpellAbility castSA) { this.castSA = castSA; 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 2a9b6e232bf..3cf97aedde0 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -163,6 +163,8 @@ public class CardFactory { c.setCopiedSpell(true); c.setCopiedPermanent(original); + c.setCastSA(targetSA); + c.setXManaCostPaidByColor(original.getXManaCostPaidByColor()); c.setKickerMagnitude(original.getKickerMagnitude()); @@ -792,9 +794,6 @@ public class CardFactory { state.setImageKey(ImageKeys.getTokenKey("eternalize_" + name + "_" + set)); } - // set the host card for copied replacement effects - // needed for copied xPaid ETB effects (for the copy, xPaid = 0) - if (sa.hasParam("GainTextOf") && originalState != null) { state.setSetCode(originalState.getSetCode()); state.setRarity(originalState.getRarity()); diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 59dc0bdedc4..0e5c27ffb0e 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -1680,40 +1680,40 @@ public class CardProperty { if (!card.isOptionalCostPaid(OptionalCost.Generic)) return false; } } else if (property.equals("surged")) { - if (card.getCastSAFallBack() == null) { + if (card.getCastSA() == null) { return false; } - return card.getCastSAFallBack().isSurged(); + return card.getCastSA().isSurged(); } else if (property.equals("blitzed")) { - if (card.getCastSAFallBack() == null) { + if (card.getCastSA() == null) { return false; } - return card.getCastSAFallBack().isBlitz(); + return card.getCastSA().isBlitz(); } else if (property.equals("dashed")) { - if (card.getCastSAFallBack() == null) { + if (card.getCastSA() == null) { return false; } - return card.getCastSAFallBack().isDash(); + return card.getCastSA().isDash(); } else if (property.equals("escaped")) { - if (card.getCastSAFallBack() == null) { + if (card.getCastSA() == null) { return false; } - return card.getCastSAFallBack().isEscape(); + return card.getCastSA().isEscape(); } else if (property.equals("evoked")) { - if (card.getCastSAFallBack() == null) { + if (card.getCastSA() == null) { return false; } - return card.getCastSAFallBack().isEvoke(); + return card.getCastSA().isEvoke(); } else if (property.equals("prowled")) { - if (card.getCastSAFallBack() == null) { + if (card.getCastSA() == null) { return false; } - return card.getCastSAFallBack().isProwl(); + return card.getCastSA().isProwl(); } else if (property.equals("spectacle")) { - if (card.getCastSAFallBack() == null) { + if (card.getCastSA() == null) { return false; } - return card.getCastSAFallBack().isSpectacle(); + return card.getCastSA().isSpectacle(); } else if (property.equals("foretold")) { if (!card.isForetold()) { return false;