From 1329b52b3c9c759b6bd1600b405b8864101446e6 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 3 Nov 2021 11:27:57 -0400 Subject: [PATCH 1/2] curse_of_hospitality.txt --- .../cardsfolder/upcoming/curse_of_hospitality.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/curse_of_hospitality.txt diff --git a/forge-gui/res/cardsfolder/upcoming/curse_of_hospitality.txt b/forge-gui/res/cardsfolder/upcoming/curse_of_hospitality.txt new file mode 100644 index 00000000000..c2803625792 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/curse_of_hospitality.txt @@ -0,0 +1,12 @@ +Name:Curse of Hospitality +ManaCost:2 R +Types:Enchantment Aura Curse +K:Enchant player +A:SP$ Attach | ValidTgts$ Player | TgtPrompt$ Select player to curse | AILogic$ Curse +S:Mode$ Continuous | Affected$ Creature.attacking EnchantedPlayer | AddKeyword$ Trample | Description$ Creatures attacking enchanted player have trample. +T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Player.EnchantedBy | TriggerZones$ Battlefield | CombatDamage$ True | Execute$ TrigExile | TriggerDescription$ Whenever a creature deals combat damage to enchanted player, that player exiles the top card of their library. Until end of turn, that creature's controller may play that card and they may spend mana as though it were mana of any color to cast that spell. +SVar:TrigExile:DB$ Dig | Defined$ TriggeredTarget | DigNum$ 1 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | EffectOwner$ TriggeredSourceController | Duration$ EndOfTurn | RememberObjects$ Remembered | StaticAbilities$ STPlay | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:STPlay:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreColor$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until end of turn, you may play the exiled card and may spend mana as though it were mana of any color to cast it. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Enchant player\nCreatures attacking enchanted player have trample.\nWhenever a creature deals combat damage to enchanted player, that player exiles the top card of their library. Until end of turn, that creature's controller may play that card and they may spend mana as though it were mana of any color to cast that spell. From d656b39f0611461b865484f586adb38fd25921c6 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 3 Nov 2021 11:28:23 -0400 Subject: [PATCH 2/2] CardProperty: implement generic "attacking DefinedGameEntity" --- .../src/main/java/forge/game/card/CardProperty.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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 8efc6986776..9158dbea0aa 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -25,6 +25,7 @@ import forge.game.zone.ZoneType; import forge.item.PaperCard; import forge.util.Expressions; import forge.util.TextUtil; +import forge.util.collect.FCollection; import forge.util.collect.FCollectionView; import org.apache.commons.lang3.StringUtils; @@ -1467,6 +1468,14 @@ public class CardProperty { return false; } } + if (property.startsWith("attacking ")) { // generic "attacking [DefinedGameEntity]" + FCollection defined = AbilityUtils.getDefinedEntities(source, property.split(" ")[1], + spellAbility); + final GameEntity defender = combat.getDefenderByAttacker(card); + if (!defined.contains(defender)) { + return false; + } + } } else if (property.startsWith("notattacking")) { return null == combat || !combat.isAttacking(card); } else if (property.equals("attackedThisCombat")) {