SpellAbility: set CardState inside constructor

This commit is contained in:
tool4EvEr
2025-06-03 13:18:44 +02:00
committed by Hans Mackowiak
parent 057dd867a8
commit 104bc8fc55
5 changed files with 19 additions and 9 deletions

View File

@@ -434,15 +434,10 @@ public class CardState extends GameObject implements IHasSVars, ITranslatable {
return; return;
} }
if (getCard().isInPlay()) {
return;
}
CardTypeView type = getTypeWithChanges(); CardTypeView type = getTypeWithChanges();
if (type.isLand()) { if (type.isLand()) {
if (landAbility == null) { if (landAbility == null) {
landAbility = new LandAbility(card); landAbility = new LandAbility(card, this);
landAbility.setCardState(this);
} }
newCol.add(landAbility); newCol.add(landAbility);
} else if (type.isAura()) { } else if (type.isAura()) {

View File

@@ -22,6 +22,7 @@ import com.esotericsoftware.minlog.Log;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.game.Game; import forge.game.Game;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardState;
import forge.game.cost.Cost; import forge.game.cost.Cost;
/** /**
@@ -37,6 +38,9 @@ public abstract class Ability extends SpellAbility {
protected Ability(final Card sourceCard, final ManaCost manaCost) { protected Ability(final Card sourceCard, final ManaCost manaCost) {
this(sourceCard, new Cost(manaCost, true), null); 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) { protected Ability(final Card sourceCard, final ManaCost manaCost, SpellAbilityView view0) {
this(sourceCard, new Cost(manaCost, true), view0); this(sourceCard, new Cost(manaCost, true), view0);
} }

View File

@@ -19,6 +19,7 @@ package forge.game.spellability;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardState;
import forge.game.cost.Cost; 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) { public AbilityStatic(final Card sourceCard, final ManaCost manaCost) {
super(sourceCard, 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) { public AbilityStatic(final Card sourceCard, final Cost abCost, final TargetRestrictions tgt) {
super(sourceCard, abCost); super(sourceCard, abCost);

View File

@@ -21,6 +21,7 @@ import forge.card.CardStateName;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.game.card.Card; import forge.game.card.Card;
import forge.game.card.CardCopyService; import forge.game.card.CardCopyService;
import forge.game.card.CardState;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.staticability.StaticAbility; import forge.game.staticability.StaticAbility;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
@@ -31,8 +32,8 @@ import org.apache.commons.lang3.StringUtils;
public class LandAbility extends AbilityStatic { public class LandAbility extends AbilityStatic {
public LandAbility(Card sourceCard) { public LandAbility(Card sourceCard, CardState state) {
super(sourceCard, ManaCost.NO_COST); super(sourceCard, ManaCost.NO_COST, state);
getRestrictions().setZone(ZoneType.Hand); getRestrictions().setZone(ZoneType.Hand);
} }

View File

@@ -195,12 +195,18 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
} }
protected SpellAbility(final Card iSourceCard, final Cost toPay) { 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) { 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(); id = nextId();
hostCard = iSourceCard; hostCard = iSourceCard;
payCosts = toPay; payCosts = toPay;
if (cs != null) {
cardState = cs;
}
if (view0 == null) { if (view0 == null) {
view0 = new SpellAbilityView(this); view0 = new SpellAbilityView(this);
} }