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