From 104bc8fc55bb7b65e5e2da1c13c60c6c8675358d Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Tue, 3 Jun 2025 13:18:44 +0200 Subject: [PATCH] SpellAbility: set CardState inside constructor --- forge-game/src/main/java/forge/game/card/CardState.java | 7 +------ .../src/main/java/forge/game/spellability/Ability.java | 4 ++++ .../main/java/forge/game/spellability/AbilityStatic.java | 4 ++++ .../main/java/forge/game/spellability/LandAbility.java | 5 +++-- .../main/java/forge/game/spellability/SpellAbility.java | 8 +++++++- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardState.java b/forge-game/src/main/java/forge/game/card/CardState.java index 66ebbf573ff..4425de97497 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -434,15 +434,10 @@ public class CardState extends GameObject implements IHasSVars, ITranslatable { return; } - if (getCard().isInPlay()) { - return; - } - CardTypeView type = getTypeWithChanges(); if (type.isLand()) { if (landAbility == null) { - landAbility = new LandAbility(card); - landAbility.setCardState(this); + landAbility = new LandAbility(card, this); } newCol.add(landAbility); } else if (type.isAura()) { diff --git a/forge-game/src/main/java/forge/game/spellability/Ability.java b/forge-game/src/main/java/forge/game/spellability/Ability.java index 2880966829e..8fa29edb1aa 100644 --- a/forge-game/src/main/java/forge/game/spellability/Ability.java +++ b/forge-game/src/main/java/forge/game/spellability/Ability.java @@ -22,6 +22,7 @@ import com.esotericsoftware.minlog.Log; import forge.card.mana.ManaCost; import forge.game.Game; import forge.game.card.Card; +import forge.game.card.CardState; import forge.game.cost.Cost; /** @@ -37,6 +38,9 @@ public abstract class Ability extends SpellAbility { protected Ability(final Card sourceCard, final ManaCost manaCost) { this(sourceCard, new Cost(manaCost, true), null); } + protected Ability(final Card sourceCard, final ManaCost manaCost, final CardState state) { + super(sourceCard, new Cost(manaCost, true), null, state); + } protected Ability(final Card sourceCard, final ManaCost manaCost, SpellAbilityView view0) { this(sourceCard, new Cost(manaCost, true), view0); } diff --git a/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java b/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java index 096990b5ceb..87228070b81 100644 --- a/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java +++ b/forge-game/src/main/java/forge/game/spellability/AbilityStatic.java @@ -19,6 +19,7 @@ package forge.game.spellability; import forge.card.mana.ManaCost; import forge.game.card.Card; +import forge.game.card.CardState; import forge.game.cost.Cost; /** @@ -43,6 +44,9 @@ public abstract class AbilityStatic extends Ability implements Cloneable { public AbilityStatic(final Card sourceCard, final ManaCost manaCost) { super(sourceCard, manaCost); } + public AbilityStatic(final Card sourceCard, final ManaCost manaCost, final CardState state) { + super(sourceCard, manaCost, state); + } public AbilityStatic(final Card sourceCard, final Cost abCost, final TargetRestrictions tgt) { super(sourceCard, abCost); diff --git a/forge-game/src/main/java/forge/game/spellability/LandAbility.java b/forge-game/src/main/java/forge/game/spellability/LandAbility.java index 4745c4a060c..5739535660e 100644 --- a/forge-game/src/main/java/forge/game/spellability/LandAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/LandAbility.java @@ -21,6 +21,7 @@ import forge.card.CardStateName; import forge.card.mana.ManaCost; import forge.game.card.Card; import forge.game.card.CardCopyService; +import forge.game.card.CardState; import forge.game.player.Player; import forge.game.staticability.StaticAbility; import forge.game.zone.ZoneType; @@ -31,8 +32,8 @@ import org.apache.commons.lang3.StringUtils; public class LandAbility extends AbilityStatic { - public LandAbility(Card sourceCard) { - super(sourceCard, ManaCost.NO_COST); + public LandAbility(Card sourceCard, CardState state) { + super(sourceCard, ManaCost.NO_COST, state); getRestrictions().setZone(ZoneType.Hand); } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java index 7782484530e..d816b3d4bb6 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -195,12 +195,18 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } protected SpellAbility(final Card iSourceCard, final Cost toPay) { - this(iSourceCard, toPay, null); + this(iSourceCard, toPay, null, null); } protected SpellAbility(final Card iSourceCard, final Cost toPay, SpellAbilityView view0) { + this(iSourceCard, toPay, view0, null); + } + protected SpellAbility(final Card iSourceCard, final Cost toPay, SpellAbilityView view0, CardState cs) { id = nextId(); hostCard = iSourceCard; payCosts = toPay; + if (cs != null) { + cardState = cs; + } if (view0 == null) { view0 = new SpellAbilityView(this); }