mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 10:18:01 +00:00
Switch to SpawningAbility
This commit is contained in:
@@ -326,6 +326,7 @@ public abstract class SpellAbilityEffect {
|
||||
final SpellAbility newSa = AbilityFactory.getAbility(trigSA, sa.getHostCard());
|
||||
newSa.setIntrinsic(intrinsic);
|
||||
trig.setOverridingAbility(newSa);
|
||||
trig.setSpawningAbility(sa.copy(sa.getHostCard(), sa.getActivatingPlayer(), true));
|
||||
sa.getActivatingPlayer().getGame().getTriggerHandler().registerDelayedTrigger(trig);
|
||||
}
|
||||
|
||||
@@ -641,10 +642,16 @@ public abstract class SpellAbilityEffect {
|
||||
final Card hostCard = sa.getHostCard();
|
||||
final Game game = hostCard.getGame();
|
||||
hostCard.addUntilLeavesBattlefield(triggerList.allCards());
|
||||
final TriggerHandler trigHandler = game.getTriggerHandler();
|
||||
final Card lki = CardUtil.getLKICopy(hostCard);
|
||||
lki.clearControllers();
|
||||
lki.setOwner(sa.getActivatingPlayer());
|
||||
final TriggerHandler trigHandler = game.getTriggerHandler();
|
||||
|
||||
final Card lki;
|
||||
if (sa.hasParam("ReturnAbility")) {
|
||||
lki = CardUtil.getLKICopy(hostCard);
|
||||
lki.clearControllers();
|
||||
lki.setOwner(sa.getActivatingPlayer());
|
||||
} else {
|
||||
lki = null;
|
||||
}
|
||||
|
||||
return new GameCommand() {
|
||||
|
||||
@@ -671,14 +678,13 @@ public abstract class SpellAbilityEffect {
|
||||
if (newCard == null || !newCard.equalsWithTimestamp(c)) {
|
||||
continue;
|
||||
}
|
||||
Trigger trig = null;
|
||||
if (sa.hasAdditionalAbility("ReturnAbility")) {
|
||||
String valid = sa.getParamOrDefault("ReturnValid", "Card.IsTriggerRemembered");
|
||||
|
||||
String trigSA = "Mode$ ChangesZone | Origin$ " + cell.getColumnKey() + " | Destination$ " + cell.getRowKey() + " | ValidCard$ " + valid +
|
||||
" | TriggerDescription$ " + sa.getAdditionalAbility("ReturnAbility").getParam("SpellDescription");
|
||||
|
||||
trig = TriggerHandler.parseTrigger(trigSA, hostCard, sa.isIntrinsic(), null);
|
||||
Trigger trig = TriggerHandler.parseTrigger(trigSA, hostCard, sa.isIntrinsic(), null);
|
||||
trig.setSpawningAbility(sa.copy(lki, sa.getActivatingPlayer(), true));
|
||||
trig.setActiveZone(null);
|
||||
trig.addRemembered(newCard);
|
||||
|
||||
@@ -67,6 +67,7 @@ public class AddPhaseEffect extends SpellAbilityEffect {
|
||||
SpellAbility overridingSA = AbilityFactory.getAbility(sa.getSVar(sa.getParam("ExtraPhaseDelayedTriggerExcute")), sa.getHostCard());
|
||||
overridingSA.setActivatingPlayer(sa.getActivatingPlayer());
|
||||
delTrig.setOverridingAbility(overridingSA);
|
||||
delTrig.setSpawningAbility(sa.copy(sa.getHostCard(), sa.getActivatingPlayer(), true));
|
||||
extraPhase.addTrigger(delTrig);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ public class AddTurnEffect extends SpellAbilityEffect {
|
||||
SpellAbility overridingSA = AbilityFactory.getAbility(sa.getSVar(sa.getParam("ExtraTurnDelayedTriggerExcute")), sa.getHostCard());
|
||||
overridingSA.setActivatingPlayer(sa.getActivatingPlayer());
|
||||
delTrig.setOverridingAbility(overridingSA);
|
||||
delTrig.setSpawningAbility(sa.copy(sa.getHostCard(), sa.getActivatingPlayer(), true));
|
||||
extra.addTrigger(delTrig);
|
||||
}
|
||||
if (sa.hasParam("SkipUntap")) {
|
||||
|
||||
@@ -665,6 +665,7 @@ public class CountersPutEffect extends SpellAbilityEffect {
|
||||
final SpellAbility newSa = AbilityFactory.getAbility(trigSA, host);
|
||||
newSa.setIntrinsic(intrinsic);
|
||||
trig.setOverridingAbility(newSa);
|
||||
trig.setSpawningAbility(sa.copy(host, sa.getActivatingPlayer(), true));
|
||||
sa.getActivatingPlayer().getGame().getTriggerHandler().registerDelayedTrigger(trig);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -531,7 +531,6 @@ public abstract class Trigger extends TriggerReplacementBase {
|
||||
public SpellAbility getSpawningAbility() {
|
||||
return spawningAbility;
|
||||
}
|
||||
|
||||
public void setSpawningAbility(SpellAbility ability) {
|
||||
spawningAbility = ability;
|
||||
}
|
||||
|
||||
@@ -541,7 +541,7 @@ public class TriggerHandler {
|
||||
sa.changeText();
|
||||
}
|
||||
} else {
|
||||
Player controller = delayedTriggers.contains(regtrig) ? sa.getActivatingPlayer() : host.getController();
|
||||
Player controller = regtrig.getSpawningAbility() != null ? regtrig.getSpawningAbility().getActivatingPlayer() : host.getController();
|
||||
// need to copy the SA because of TriggeringObjects
|
||||
sa = sa.copy(host, controller, false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user