Skip to content

Commit 7be8175

Browse files
liamiak1claude
andcommitted
Storied: give the inline ability its card state
AbilityFactory.getAbility(abString, card) passes card.getCurrentState(), which is what makes getOriginalHost() resolve. Setting it here keeps the inline ability equivalent: getOriginalHost is no longer null, so the set code comes from the original card rather than the copy on a copied trait, matching Ascend. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 217f3aa commit 7be8175

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

forge-game/src/main/java/forge/game/card/CardFactoryUtil.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ public static void addTriggerAbility(final KeywordInterface inst, final Card car
649649
+ " | TriggerDescription$ Storied (" + inst.getReminderText() + ")";
650650

651651
final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic);
652-
trigger.setOverridingAbility(new AbilityStatic(card, Cost.Zero, null) {
652+
final SpellAbility gainStory = new AbilityStatic(card, Cost.Zero, null) {
653653
@Override
654654
public Cost getPayCosts() {
655655
// AiController.doTrigger only runs an API-less trigger when it recognises a
@@ -662,10 +662,13 @@ public Cost getPayCosts() {
662662
public void resolve() {
663663
final Player p = getActivatingPlayer();
664664
if (p != null && p.isInGame()) {
665-
p.setEnduringStory(true, getHostCard().getSetCode());
665+
p.setEnduringStory(true, getOriginalHost().getSetCode());
666666
}
667667
}
668-
});
668+
};
669+
// as AbilityFactory would have done, so getOriginalHost resolves on a copied trait
670+
gainStory.setCardState(card.getCurrentState());
671+
trigger.setOverridingAbility(gainStory);
669672

670673
inst.addTrigger(trigger);
671674
}

0 commit comments

Comments
 (0)