From af9e11059f4c17fd847419175b3b927d41cf9ffd Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 12 Nov 2020 12:04:17 -0500 Subject: [PATCH 1/4] sengir_the_dark_baron.txt --- .../cardsfolder/upcoming/sengir_the_dark_baron.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/sengir_the_dark_baron.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sengir_the_dark_baron.txt b/forge-gui/res/cardsfolder/upcoming/sengir_the_dark_baron.txt new file mode 100644 index 00000000000..6487b7c6666 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sengir_the_dark_baron.txt @@ -0,0 +1,13 @@ +Name:Sengir, the Dark Baron +ManaCost:4 B B +Types:Legendary Creature Vampire Noble +PT:4/4 +K:Flying +K:Partner +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever another creature dies, put two +1/+1 counters on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 2 +T:Mode$ LosesGame | ValidPlayer$ Player.Other | Execute$ TrigGainLife | TriggerDescription$ Whenever another player loses the game, you gain life equal to that player's life total as the turn began. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X +SVar:X:TriggeredPlayer$LifeStartedThisTurnWith +DeckHas:Ability$Counters +Oracle:Whenever another creature dies, put two +1/+1 counters on Sengir, the Dark Baron.\nWhenever another player loses the game, you gain life equal to that player's life total as the turn began.\nPartner (You can have two commanders if both have partner.) From 2dd8fc27b567d03d1795746c10f6e4f9033e7369 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 12 Nov 2020 12:07:24 -0500 Subject: [PATCH 2/4] support "that player's life total as the turn began" --- .../src/main/java/forge/game/card/CardFactoryUtil.java | 6 ++++++ forge-game/src/main/java/forge/game/player/Player.java | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 63779e818c6..7d50157c0db 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -609,9 +609,15 @@ public class CardFactoryUtil { if (value.contains("LifeGainedThisTurn")) { return doXMath(player.getLifeGainedThisTurn(), m, source); } + if (value.contains("LifeGainedByTeamThisTurn")) { return doXMath(player.getLifeGainedByTeamThisTurn(), m, source); } + + if (value.contains("LifeStartedThisTurnWith")) { + return doXMath(player.getLifeStartedThisTurnWith(), m, source); + } + if (value.contains("PoisonCounters")) { return doXMath(player.getPoisonCounters(), m, source); } 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 2fb3783d30d..dee7395bb1d 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -82,6 +82,7 @@ public class Player extends GameEntity implements Comparable { private int life = 20; private int startingLife = 20; + private int lifeStartedThisTurnWith = startingLife; private final Map assignedDamage = Maps.newHashMap(); private final Map assignedCombatDamage = Maps.newHashMap(); private int spellsCastThisTurn = 0; @@ -1660,6 +1661,13 @@ public class Player extends GameEntity implements Comparable { numCardsInHandStartedThisTurnWith = num; } + public int getLifeStartedThisTurnWith() { + return lifeStartedThisTurnWith; + } + public void setLifeStartedThisTurnWith(int l) { + lifeStartedThisTurnWith = l; + } + public void addNoteForName(String notedFor, String noted) { if (!notes.containsKey(notedFor)) { notes.put(notedFor, new FCollection<>()); @@ -3265,6 +3273,7 @@ public class Player extends GameEntity implements Comparable { lifeGainedThisTurn = 0; lifeGainedTimesThisTurn = 0; lifeGainedByTeamThisTurn = 0; + setLifeStartedThisTurnWith(getLife()); setLibrarySearched(0); setNumManaConversion(0); From 615f2a47aa3cb815224bc0880a944575dbe347fe Mon Sep 17 00:00:00 2001 From: Northmoc Date: Tue, 24 Nov 2020 19:49:05 -0500 Subject: [PATCH 3/4] curse_of_vengeance.txt --- forge-gui/res/cardsfolder/c/curse_of_vengeance.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 forge-gui/res/cardsfolder/c/curse_of_vengeance.txt diff --git a/forge-gui/res/cardsfolder/c/curse_of_vengeance.txt b/forge-gui/res/cardsfolder/c/curse_of_vengeance.txt new file mode 100644 index 00000000000..26dfe82480f --- /dev/null +++ b/forge-gui/res/cardsfolder/c/curse_of_vengeance.txt @@ -0,0 +1,13 @@ +Name:Curse of Vengeance +ManaCost:B +Types:Enchantment Aura Curse +K:Enchant player +A:SP$ Attach | Cost$ B | ValidTgts$ Player | AILogic$ Curse +T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player.EnchantedBy | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted player casts a spell, put a spite counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ SPITE | CounterNum$ 1 +T:Mode$ LosesGame | ValidPlayer$ Player.EnchantedBy | Execute$ TrigGainLife | TriggerDescription$ When enchanted player loses the game, you gain X life and draw X cards, where X is the number of spite counters on CARDNAME. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | References$ X +SVar:X:Count$CardCounters.SPITE +DeckHas:Ability$Counters & Ability$LifeGain +Oracle:Enchant player\nWhenever enchanted player casts a spell, put a spite counter on Curse of Vengeance. When enchanted player loses the game, you gain X life and draw X cards, where X is the number of spite counters on Curse of Vengeance. From c8bbc8b95e54ef4db2725305f82743c7d836b590 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 25 Nov 2020 10:13:06 -0500 Subject: [PATCH 4/4] finalize change to Player.java --- forge-game/src/main/java/forge/game/player/Player.java | 4 ---- 1 file changed, 4 deletions(-) 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 dee7395bb1d..58066b1e23f 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -2174,10 +2174,6 @@ public class Player extends GameEntity implements Comparable { @Override public final boolean isValid(final String restriction, final Player sourceController, final Card source, SpellAbility spellAbility) { - // if the current player has already lost the game, he can't be a valid target - if (hasLost()) { - return false; - } final String[] incR = restriction.split("\\.", 2);