From 15016ccf80ddabb994e69f4602c4eba598d9153a Mon Sep 17 00:00:00 2001 From: Hans Mackowiak Date: Thu, 4 Feb 2021 18:37:05 +0100 Subject: [PATCH] Extend DamagedBy and add Aegar the freezing Flame --- .../java/forge/game/card/CardProperty.java | 34 +++++++++++-------- .../upcoming/aegar_the_freezing_flame.txt | 8 +++++ 2 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/aegar_the_freezing_flame.txt diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 2da6fca758d..550ee2bcbaa 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -651,24 +651,28 @@ public class CardProperty { if ((property.endsWith("Source") || property.equals("DamagedBy")) && !card.getReceivedDamageFromThisTurn().containsKey(source)) { return false; - } else if (property.endsWith("Remembered")) { - boolean matched = false; - for (final Object obj : source.getRemembered()) { - if (!(obj instanceof Card)) { - continue; + } else { + String prop = property.substring("DamagedBy".length()); + + boolean found = false; + for (Card d : card.getReceivedDamageFromThisTurn().keySet()) { + if (d.isValid(prop, sourceController, source, spellAbility)) { + found = true; + break; } - matched |= card.getReceivedDamageFromThisTurn().containsKey(obj); } - if (!matched) - return false; - } else if (property.endsWith("Equipped")) { - final Card equipee = source.getEquipping(); - if (equipee == null || !card.getReceivedDamageFromThisTurn().containsKey(equipee)) - return false; - } else if (property.endsWith("Enchanted")) { - final Card equipee = source.getEnchantingCard(); - if (equipee == null || !card.getReceivedDamageFromThisTurn().containsKey(equipee)) + + if (!found) { + for (Card d : AbilityUtils.getDefinedCards(source, prop, spellAbility)) { + if (card.getReceivedDamageFromThisTurn().containsKey(d)) { + found = true; + break; + } + } + } + if (!found) { return false; + } } } else if (property.startsWith("Damaged")) { if (!card.getDealtDamageToThisTurn().containsKey(source)) { diff --git a/forge-gui/res/cardsfolder/upcoming/aegar_the_freezing_flame.txt b/forge-gui/res/cardsfolder/upcoming/aegar_the_freezing_flame.txt new file mode 100644 index 00000000000..cc8965d715b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/aegar_the_freezing_flame.txt @@ -0,0 +1,8 @@ +Name:Aegar, the Freezing Flame +ManaCost:1 U R +Types:Legendary Creature Giant Wizard +PT:3/3 +T:Mode$ ExcessDamage | ValidTarget$ Creature.OppCtrl+DamagedByGiant.YouCtrl,Creature.OppCtrl+DamagedByWizard.YouCtrl,Creature.OppCtrl+DamagedBySpell.YouCtrl,Planeswalker.OppCtrl+DamagedByGiant.YouCtrl,Planeswalker.OppCtrl+DamagedByWizard.YouCtrl,Planeswalker.OppCtrl+DamagedBySpell.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a creature or planeswalker an opponent controls is dealt excess damage, if a Giant, Wizard, or spell you controlled dealt damage to it this turn, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Whenever a creature or planeswalker an opponent controls is dealt excess damage, if a Giant, Wizard, or spell you controlled dealt damage to it this turn, draw a card. +