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..58066b1e23f 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<>()); @@ -2166,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); @@ -3265,6 +3269,7 @@ public class Player extends GameEntity implements Comparable { lifeGainedThisTurn = 0; lifeGainedTimesThisTurn = 0; lifeGainedByTeamThisTurn = 0; + setLifeStartedThisTurnWith(getLife()); setLibrarySearched(0); setNumManaConversion(0); 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. 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.)