From 075a0e99afe8c98144d3b434e37348e61665002c Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Sun, 1 Mar 2020 17:37:06 +0100 Subject: [PATCH] Merieke Ri Berit: use Effect for Destroy Trigger --- .../ability/effects/ControlGainEffect.java | 57 +------------------ .../res/cardsfolder/m/merieke_ri_berit.txt | 7 ++- 2 files changed, 6 insertions(+), 58 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java index 2e5d858272b..a69a02623f3 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java @@ -6,7 +6,6 @@ import java.util.List; import com.google.common.collect.Lists; import forge.GameCommand; -import forge.card.mana.ManaCost; import forge.game.Game; import forge.game.GameEntity; import forge.game.ability.AbilityUtils; @@ -18,7 +17,6 @@ import forge.game.combat.Combat; import forge.game.event.GameEventCardStatsChanged; import forge.game.event.GameEventCombatChanged; import forge.game.player.Player; -import forge.game.spellability.Ability; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; import forge.util.collect.FCollectionView; @@ -26,9 +24,7 @@ import forge.util.Localizer; import forge.util.CardTranslation; public class ControlGainEffect extends SpellAbilityEffect { - /* (non-Javadoc) - * @see forge.card.abilityfactory.SpellEffect#getStackDescription(java.util.Map, forge.card.spellability.SpellAbility) - */ + @Override protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); @@ -86,11 +82,9 @@ public class ControlGainEffect extends SpellAbilityEffect { final boolean bUntap = sa.hasParam("Untap"); final boolean bTapOnLose = sa.hasParam("TapOnLose"); - final boolean bNoRegen = sa.hasParam("NoRegen"); final boolean remember = sa.hasParam("RememberControlled"); final boolean forget = sa.hasParam("ForgetControlled"); final boolean attacking = sa.hasParam("Attacking"); - final List destroyOn = sa.hasParam("DestroyTgt") ? Arrays.asList(sa.getParam("DestroyTgt").split(",")) : null; final List keywords = sa.hasParam("AddKWs") ? Arrays.asList(sa.getParam("AddKWs").split(" & ")) : null; final List lose = sa.hasParam("LoseControl") ? Arrays.asList(sa.getParam("LoseControl").split(",")) : null; @@ -191,18 +185,6 @@ public class ControlGainEffect extends SpellAbilityEffect { } } - if (destroyOn != null) { - if (destroyOn.contains("LeavesPlay")) { - sa.getHostCard().addLeavesPlayCommand(getDestroyCommand(tgtC, source, bNoRegen)); - } - if (destroyOn.contains("Untap")) { - sa.getHostCard().addUntapCommand(getDestroyCommand(tgtC, source, bNoRegen)); - } - if (destroyOn.contains("LoseControl")) { - sa.getHostCard().addChangeControllerCommand(getDestroyCommand(tgtC, source, bNoRegen)); - } - } - if (keywords != null) { // Add keywords only until end of turn final GameCommand untilKeywordEOT = new GameCommand() { @@ -243,43 +225,6 @@ public class ControlGainEffect extends SpellAbilityEffect { } // end foreach target } - /** - *

- * getDestroyCommand. - *

- * - * @param i - * a int. - * @return a {@link forge.GameCommand} object. - */ - private static GameCommand getDestroyCommand(final Card c, final Card hostCard, final boolean bNoRegen) { - final GameCommand destroy = new GameCommand() { - private static final long serialVersionUID = 878543373519872418L; - - @Override - public void run() { - final Game game = hostCard.getGame(); - final Ability ability = new Ability(hostCard, ManaCost.ZERO) { - @Override - public void resolve() { - game.getAction().destroy(c, null, !bNoRegen, null); - } - }; - final StringBuilder sb = new StringBuilder(); - sb.append(hostCard).append(" - destroy ").append(c.getName()).append("."); - if (bNoRegen) { - sb.append(" It can't be regenerated."); - } - ability.setStackDescription(sb.toString()); - ability.setTrigger(true); - - game.getStack().addSimultaneousStackEntry(ability); - } - - }; - return destroy; - } - /** *

* getLoseControlCommand. diff --git a/forge-gui/res/cardsfolder/m/merieke_ri_berit.txt b/forge-gui/res/cardsfolder/m/merieke_ri_berit.txt index 62ef6f9f744..8faa699cf53 100644 --- a/forge-gui/res/cardsfolder/m/merieke_ri_berit.txt +++ b/forge-gui/res/cardsfolder/m/merieke_ri_berit.txt @@ -3,6 +3,9 @@ ManaCost:W U B Types:Legendary Creature Human PT:1/1 K:CARDNAME doesn't untap during your untap step. -A:AB$ GainControl | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | LoseControl$ LeavesPlay,LoseControl | DestroyTgt$ LeavesPlay,LoseControl,Untap | NoRegen$ True | SpellDescription$ Gain control of target creature for as long as you control CARDNAME. When CARDNAME leaves the battlefield or becomes untapped, destroy that creature. It can't be regenerated. -SVar:Picture:http://www.wizards.com/global/images/magic/general/merieke_ri_berit.jpg +A:AB$ GainControl | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | LoseControl$ LeavesPlay,LoseControl | SubAbility$ DBEffect | SpellDescription$ Gain control of target creature for as long as you control CARDNAME. When CARDNAME leaves the battlefield or becomes untapped, destroy that creature. It can't be regenerated. +SVar:DBEffect:DB$ Effect | RememberObjects$ ParentTarget | ForgetOnMoved$ Battlefield | Triggers$ LeavesPlay,Untap | References$ LeavesPlay,Untap | Duration$ UntilHostLeavesPlay +SVar:LeavesPlay:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.EffectSource | Execute$ DBDestroy | TriggerDescription$ When EFFECTSOURCE leaves the battlefield, or becomes untapped, destroy that creature. It can't be regenerated. +SVar:Untap:Mode$ Untaps | ValidCard$ Card.EffectSource | Execute$ DBDestroy | Secondary$ True | TriggerDescription$ When EFFECTSOURCE leaves the battlefield, or becomes untapped, destroy that creature. It can't be regenerated. +SVar:DBDestroy:DB$ Destroy | Defined$ Remembered | NoRegen$ True Oracle:Merieke Ri Berit doesn't untap during your untap step.\n{T}: Gain control of target creature for as long as you control Merieke Ri Berit. When Merieke Ri Berit leaves the battlefield or becomes untapped, destroy that creature. It can't be regenerated.