- Experimental: for Dingus Egg, do not check the time stamp of the card that changed zone (fixes interaction with Sacred Ground). Should this be the default behavior for ChangesZone triggers that do not seem to care for how many times the card had changed zones before the trigger resolves?

This commit is contained in:
Agetian
2017-09-13 14:52:09 +00:00
parent 7a92712f0b
commit 0b7fc67c3f
3 changed files with 11 additions and 5 deletions

View File

@@ -451,20 +451,26 @@ public class WrappedAbility extends Ability {
Card card = (Card) o; Card card = (Card) o;
Card current = game.getCardState(card); Card current = game.getCardState(card);
if (current.getTimestamp() != card.getTimestamp()) { if (current.getTimestamp() != card.getTimestamp()) {
// TODO: figure out if NoTimestampCheck should be the default for ChangesZone triggers
if (!triggerParams.containsKey("NoTimestampCheck")) {
sa.getTriggerRemembered().remove(o); sa.getTriggerRemembered().remove(o);
} }
} }
} }
}
final Map<String, Object> triggerMap = new HashMap<String, Object>(sa.getTriggeringObjects()); final Map<String, Object> triggerMap = new HashMap<String, Object>(sa.getTriggeringObjects());
for (Entry<String, Object> ev : triggerMap.entrySet()) { for (Entry<String, Object> ev : triggerMap.entrySet()) {
if (ev.getValue() instanceof Card) { if (ev.getValue() instanceof Card) {
Card card = (Card) ev.getValue(); Card card = (Card) ev.getValue();
Card current = game.getCardState(card); Card current = game.getCardState(card);
if (card.isInPlay() && current.isInPlay() && current.getTimestamp() != card.getTimestamp()) { if (card.isInPlay() && current.isInPlay() && current.getTimestamp() != card.getTimestamp()) {
// TODO: figure out if NoTimestampCheck should be the default for ChangesZone triggers
if (!triggerParams.containsKey("NoTimestampCheck")) {
sa.getTriggeringObjects().remove(ev.getKey()); sa.getTriggeringObjects().remove(ev.getKey());
} }
} }
} }
}
// TODO: CardCollection // TODO: CardCollection
getActivatingPlayer().getController().playSpellAbilityNoStack(sa, false); getActivatingPlayer().getController().playSpellAbilityNoStack(sa, false);

View File

@@ -1,8 +1,8 @@
Name:Dingus Egg Name:Dingus Egg
ManaCost:4 ManaCost:4
Types:Artifact Types:Artifact
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Land | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a land is put into a graveyard from the battlefield, CARDNAME deals 2 damage to that land's controller. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Land | TriggerZones$ Battlefield | Execute$ TrigDamage | NoTimestampCheck$ True | TriggerDescription$ Whenever a land is put into a graveyard from the battlefield, CARDNAME deals 2 damage to that land's controller.
SVar:TrigDamage:AB$DealDamage | Cost$ 0 | Defined$ TriggeredCardController | NumDmg$ 2 SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredCardController | NumDmg$ 2
SVar:RemRandomDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/dingus_egg.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/dingus_egg.jpg
Oracle:Whenever a land is put into a graveyard from the battlefield, Dingus Egg deals 2 damage to that land's controller. Oracle:Whenever a land is put into a graveyard from the battlefield, Dingus Egg deals 2 damage to that land's controller.

View File

@@ -3,7 +3,7 @@ ManaCost:1 W
Types:Enchantment Types:Enchantment
T:Mode$ Sacrificed | ValidCard$ Land.YouOwn | ValidSourceController$ Player.Opponent | Execute$ TrigReturn | TriggerZones$ Battlefield | TriggerDescription$ Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield. T:Mode$ Sacrificed | ValidCard$ Land.YouOwn | ValidSourceController$ Player.Opponent | Execute$ TrigReturn | TriggerZones$ Battlefield | TriggerDescription$ Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield.
T:Mode$ Destroyed | ValidCauser$ Player.Opponent | ValidCard$ Land.YouOwn | Execute$ TrigReturn | Secondary$ True | TriggerZones$ Battlefield | TriggerDescription$ Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield. T:Mode$ Destroyed | ValidCauser$ Player.Opponent | ValidCard$ Land.YouOwn | Execute$ TrigReturn | Secondary$ True | TriggerZones$ Battlefield | TriggerDescription$ Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield.
SVar:TrigReturn:AB$ ChangeZone | Cost$ 0 | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Battlefield SVar:TrigReturn:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Battlefield
SVar:RemRandomDeck:True SVar:RemRandomDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/sacred_ground.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/sacred_ground.jpg
Oracle:Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield. Oracle:Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield.