From 25930b55761a2e08af5455cbb6e1488e6342ba4c Mon Sep 17 00:00:00 2001 From: Northmoc <103371817+Northmoc@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:31:24 -0500 Subject: [PATCH] MKM: innocent_bystander.txt + support (#4577) --- .../game/trigger/TriggerDamageDoneOnce.java | 24 ++++++++++++------- .../upcoming/innocent_bystander.txt | 8 +++++++ 2 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 forge-gui/res/cardsfolder/upcoming/innocent_bystander.txt diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java index b401e8e5959..429cfe288ba 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDoneOnce.java @@ -7,6 +7,7 @@ import forge.game.card.Card; import forge.game.card.CardCollection; import forge.game.card.CardUtil; import forge.game.spellability.SpellAbility; +import forge.util.Expressions; import forge.util.Localizer; public class TriggerDamageDoneOnce extends Trigger { @@ -24,18 +25,25 @@ public class TriggerDamageDoneOnce extends Trigger { } } - if (hasParam("ValidSource")) { - final Map damageMap = (Map) runParams.get(AbilityKey.DamageMap); - - if (getDamageAmount(damageMap) <= 0) { - return false; - } - } - if (!matchesValidParam("ValidTarget", runParams.get(AbilityKey.DamageTarget))) { return false; } + final int damageAmount = getDamageAmount((Map) runParams.get(AbilityKey.DamageMap)); + + if (hasParam("ValidSource")) { + if (damageAmount <= 0) return false; + } + + if (hasParam("DamageAmount")) { + final String fullParam = getParam("DamageAmount"); + + final String operator = fullParam.substring(0, 2); + final int operand = Integer.parseInt(fullParam.substring(2)); + + if (!Expressions.compare(damageAmount, operator, operand)) return false; + } + return true; } diff --git a/forge-gui/res/cardsfolder/upcoming/innocent_bystander.txt b/forge-gui/res/cardsfolder/upcoming/innocent_bystander.txt new file mode 100644 index 00000000000..6552e6c6c94 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/innocent_bystander.txt @@ -0,0 +1,8 @@ +Name:Innocent Bystander +ManaCost:1 R +Types:Creature Goblin Citizen +PT:2/1 +T:Mode$ DamageDoneOnce | ValidTarget$ Card.Self | DamageAmount$ GE3 | Execute$ TrigInvestigate | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt 3 or more damage, investigate. (Create a Clue token. It's an artifact with "{2}, Sacrifice this artifact: Draw a card.") +SVar:TrigInvestigate:DB$ Investigate +DeckHas:Ability$Token|Investigate|Sacrifice & Type$Artifact|Clue +Oracle:Whenever Innocent Bystander is dealt 3 or more damage, investigate. (Create a Clue token. It's an artifact with "{2}, Sacrifice this artifact: Draw a card.")