From 1adc9a9129a747b52e1b5cc1e347c385498bcced Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Sun, 24 Apr 2022 10:23:00 +0200 Subject: [PATCH] Improve DelayedTrigger for effects "during its controller's next turn" --- .../game/ability/effects/DelayedTriggerEffect.java | 11 +++++++++++ .../res/cardsfolder/g/grand_master_of_flowers.txt | 2 +- .../k/kytheon_hero_of_akros_gideon_battle_forged.txt | 2 +- forge-gui/res/cardsfolder/w/wall_of_dust.txt | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java index 308acb5431d..1b815df1edf 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DelayedTriggerEffect.java @@ -108,6 +108,17 @@ public class DelayedTriggerEffect extends SpellAbilityEffect { } }; game.getCleanup().addUntil(nextTurnTrig); + } else if (mapParams.containsKey("UpcomingTurn")) { + final GameCommand upcomingTurnTrig = new GameCommand() { + private static final long serialVersionUID = -5860518814760461373L; + + @Override + public void run() { + trigHandler.registerDelayedTrigger(delTrig); + + } + }; + game.getCleanup().addUntil(upcomingTurnTrig); } else { trigHandler.registerDelayedTrigger(delTrig); } diff --git a/forge-gui/res/cardsfolder/g/grand_master_of_flowers.txt b/forge-gui/res/cardsfolder/g/grand_master_of_flowers.txt index 78da22fcdf6..6f6bd8ab14d 100644 --- a/forge-gui/res/cardsfolder/g/grand_master_of_flowers.txt +++ b/forge-gui/res/cardsfolder/g/grand_master_of_flowers.txt @@ -3,7 +3,7 @@ ManaCost:2 W W Types:Legendary Planeswalker Bahamut Loyalty:3 S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Card.Self+counters_GE7_LOYALTY | AddKeyword$ Flying & Indestructible | AddType$ Creature & Dragon & God | SetPower$ 7 | SetToughness$ 7 | RemoveCardTypes$ True | CharacteristicDefining$ True | Description$ As long as CARDNAME has seven or more loyalty counters on him, he's a 7/7 Dragon God creature with flying and indestructible. -A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature.withoutFirst Strike+withoutDouble Strike+withoutVigilance | TgtPrompt$ Target creature without first strike, double strike, or vigilance | Select KW$ HIDDEN CARDNAME can't attack or block. | IsCurse$ True | Duration$ UntilYourNextTurn | AILogic$ DetainNonLand | SpellDescription$ Target creature without first strike, double strike, or vigilance can't attack or block until your next turn. +A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature.withoutFirst Strike+withoutDouble Strike+withoutVigilance | TgtPrompt$ Target creature without first strike, double strike, or vigilance | KW$ HIDDEN CARDNAME can't attack or block. | IsCurse$ True | Duration$ UntilYourNextTurn | AILogic$ DetainNonLand | SpellDescription$ Target creature without first strike, double strike, or vigilance can't attack or block until your next turn. A:AB$ ChangeZone | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Origin$ Library | OriginChoice$ True | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Hand | ChangeType$ Card.namedMonk of the Open Hand | ChangeNum$ 1 | Optional$ True | SpellDescription$ Search your library and/or graveyard for a card named Monk of the Open Hand, reveal it, and put it into your hand. If you search your library this way, shuffle. DeckHas:Type$Dragon|God DeckHints:Name$Monk of the Open Hand diff --git a/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros_gideon_battle_forged.txt b/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros_gideon_battle_forged.txt index d136fc81359..7cb9aecd648 100644 --- a/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros_gideon_battle_forged.txt +++ b/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros_gideon_battle_forged.txt @@ -20,7 +20,7 @@ ManaCost:no cost Colors:white Types:Legendary Planeswalker Gideon Loyalty:3 -A:AB$ DelayedTrigger | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | Mode$ Phase | Phase$ Upkeep-> | Player$ TargetedController | NextTurn$ True | RememberObjects$ Targeted | Execute$ TrigEffect | Static$ True | SpellDescription$ Up to one target creature an opponent controls attacks CARDNAME during its controller's next turn if able. +A:AB$ DelayedTrigger | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | Mode$ Phase | Phase$ Upkeep-> | ValidPlayer$ Player.controlsCard.IsTriggerRemembered | UpcomingTurn$ True | RememberObjects$ Targeted | Execute$ TrigEffect | Static$ True | SpellDescription$ Up to one target creature an opponent controls attacks CARDNAME during its controller's next turn if able. SVar:TrigEffect:DB$ Effect | RememberObjects$ DelayTriggerRemembered | StaticAbilities$ MustAttack | SubAbility$ DBCleanup SVar:MustAttack:Mode$ MustAttack | EffectZone$ Command | ValidCreature$ Remembered | MustAttack$ EffectSource | Description$ This creature attacks EFFECTSOURCE during its controller's next turn if able. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/w/wall_of_dust.txt b/forge-gui/res/cardsfolder/w/wall_of_dust.txt index 9f7f793d8fc..2932042cf80 100644 --- a/forge-gui/res/cardsfolder/w/wall_of_dust.txt +++ b/forge-gui/res/cardsfolder/w/wall_of_dust.txt @@ -4,6 +4,6 @@ Types:Creature Wall PT:1/4 K:Defender T:Mode$ AttackerBlocked | ValidBlocker$ Card.Self | Execute$ DelTrig | TriggerDescription$ Whenever CARDNAME blocks a creature, that creature can't attack during its controller's next turn. -SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Opponent | Execute$ TrigPump | RememberObjects$ TriggeredAttacker | TriggerDescription$ Creatures blocked by CARDNAME can't attack this turn. +SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep-> | ValidPlayer$ Player.controlsCard.IsTriggerRemembered | UpcomingTurn$ True | Static$ True | Execute$ TrigPump | RememberObjects$ TriggeredAttacker | TriggerDescription$ Creatures blocked by CARDNAME can't attack this turn. SVar:TrigPump:DB$ Pump | IsCurse$ True | Defined$ DelayTriggerRemembered | KW$ HIDDEN CARDNAME can't attack. Oracle:Defender (This creature can't attack.)\nWhenever Wall of Dust blocks a creature, that creature can't attack during its controller's next turn.