From bd7b76ddb3cc4b4ee5741d1edd946dbec997c71f Mon Sep 17 00:00:00 2001 From: Tim Mocny Date: Sun, 6 Feb 2022 05:00:36 +0000 Subject: [PATCH] NEO: Hidetsugu Consumes All // Vessel of the All-Consuming and support --- .../main/java/forge/game/player/Player.java | 4 +++ .../forge/game/trigger/TriggerDamageDone.java | 19 +++++++++++++ ...nsumes_all_vessel_of_the_all_consuming.txt | 27 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/hidetsugu_consumes_all_vessel_of_the_all_consuming.txt diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index b00c98a713f..6058b49e275 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -846,6 +846,10 @@ public class Player extends GameEntity implements Comparable { return assignedDamage.keySet(); } + public final int getAssignedDamage(final Card c) { + return assignedDamage.get(c); + } + public final int getAssignedDamage(final String type) { final Map valueMap = Maps.newHashMap(); for (final Card c : assignedDamage.keySet()) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDone.java b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDone.java index 12726eeebb6..3df9d4ffc39 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerDamageDone.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerDamageDone.java @@ -22,6 +22,7 @@ import java.util.Map; import forge.game.ability.AbilityKey; import forge.game.card.Card; import forge.game.card.CardUtil; +import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.util.Expressions; import forge.util.Localizer; @@ -90,6 +91,24 @@ public class TriggerDamageDone extends Trigger { } } + if (hasParam("DamageToTargetThisTurnCondition")) { + final String fullParam = getParam("DamageToTargetThisTurnCondition"); + + final String operator = fullParam.substring(0, 2); + final int operand = Integer.parseInt(fullParam.substring(2)); + final Object target = runParams.get(AbilityKey.DamageTarget); + final Card source = (Card) runParams.get(AbilityKey.DamageSource); + + if (target instanceof Player) { + final Player trigTgt = (Player) target; + if (!Expressions.compare(trigTgt.getAssignedDamage(source), operator, operand)) { + return false; + } + } else { + return false; //for now this is only used to check damage assigned to a player + } + } + return true; } diff --git a/forge-gui/res/cardsfolder/upcoming/hidetsugu_consumes_all_vessel_of_the_all_consuming.txt b/forge-gui/res/cardsfolder/upcoming/hidetsugu_consumes_all_vessel_of_the_all_consuming.txt new file mode 100644 index 00000000000..cc302aa0bf7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hidetsugu_consumes_all_vessel_of_the_all_consuming.txt @@ -0,0 +1,27 @@ +Name:Hidetsugu Consumes All +ManaCost:1 B R +Types:Enchantment Saga +K:Saga:3:DBDestroyAll,DBExile,DBTransform +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Permanent.nonLand+cmcLE1 | SpellDescription$ Destroy each nonland permanent with mana value 1 or less. +SVar:DBExile:DB$ ChangeZoneAll | ChangeType$ Card | Origin$ Graveyard | Destination$ Exile | SpellDescription$ Exile all graveyards. +SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SpellDescription$ Exile this Saga, then return it to the battlefield transformed under your control. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | GainControl$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AlternateMode:DoubleFaced +Oracle:(As this Saga enters and after your draw step, add a lore counter.)\nI — Destroy each nonland permanent with mana value 1 or less.\nII — Exile all graveyards.\nIII — Exile this Saga, then return it to the battlefield transformed under your control. + +ALTERNATE + +Name:Vessel of the All-Consuming +ManaCost:no cost +Colors:black,red +Types:Enchantment Creature Ogre Shaman +PT:3/3 +K:Trample +T:Mode$ DamageDealtOnce | ValidSource$ Card.Self | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals damage, put a +1/+1 counter on it. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigLose | DamageToTargetThisTurnCondition$ GE10 | TriggerDescription$ Whenever CARDNAME deals damage to a player, if it has dealt 10 or more damage to that player this turn, they lose the game. +SVar:TrigLose:DB$ LosesGame | Defined$ TriggeredTarget +DeckHas:Ability$Counters +Oracle:Trample\nWhenever Vessel of the All-Consuming deals damage, put a +1/+1 counter on it. +Whenever Vessel of the All-Consuming deals damage to a player, if it has dealt 10 or more damage to that player this turn, they lose the game.