From e4cb8711040b9a45d47744368d88b7bad5a9ce46 Mon Sep 17 00:00:00 2001 From: moomarc Date: Fri, 28 Dec 2012 18:43:22 +0000 Subject: [PATCH] - More cards ready for multiplayer --- res/cardsfolder/a/abyssal_gatekeeper.txt | 2 +- res/cardsfolder/a/acidic_soil.txt | 8 +++---- res/cardsfolder/a/akki_blizzard_herder.txt | 2 +- res/cardsfolder/a/all_hallows_eve.txt | 4 ++-- res/cardsfolder/a/antagonism.txt | 12 ++++------ .../card/abilityfactory/AbilityFactory.java | 14 +++++------ .../effects/SacrificeAllEffect.java | 7 ------ .../card/cardfactory/CardFactoryUtil.java | 24 ++++++++++++++++++- 8 files changed, 42 insertions(+), 31 deletions(-) diff --git a/res/cardsfolder/a/abyssal_gatekeeper.txt b/res/cardsfolder/a/abyssal_gatekeeper.txt index 73375884f0a..1df8948d95c 100644 --- a/res/cardsfolder/a/abyssal_gatekeeper.txt +++ b/res/cardsfolder/a/abyssal_gatekeeper.txt @@ -4,7 +4,7 @@ Types:Creature Horror Text:no text PT:1/1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, each player sacrifices a creature. -SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Creature | Defined$ Each +SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | SacValid$ Creature | Defined$ Each SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/abyssal_gatekeeper.jpg SetInfo:WTH|Common|http://magiccards.info/scans/en/wl/1.jpg diff --git a/res/cardsfolder/a/acidic_soil.txt b/res/cardsfolder/a/acidic_soil.txt index 3e7aa6c220c..10965f02ff9 100644 --- a/res/cardsfolder/a/acidic_soil.txt +++ b/res/cardsfolder/a/acidic_soil.txt @@ -2,10 +2,10 @@ Name:Acidic Soil ManaCost:2 R Types:Sorcery Text:no text -A:SP$ DealDamage | Cost$ 2 R | Defined$ You | NumDmg$ X | SubAbility$ DBDamageOpp | References$ X | SpellDescription$ CARDNAME deals damage to each player equal to the number of lands he or she controls. -SVar:DBDamageOpp:DB$DealDamage | Defined$ Opponent | NumDmg$ Y | References$ Y -SVar:X:Count$TypeYouCtrl.Land -SVar:Y:Count$TypeOppCtrl.Land +A:SP$ RepeatEach | Cost$ 2 R | RepeatPlayers$ Player | RepeatSubAbility$ DBDamageOpp | SpellDescription$ CARDNAME deals damage to each player equal to the number of lands he or she controls. +SVar:DBDamageOpp:DB$ DealDamage | Defined$ Remembered | NumDmg$ X | References$ X +SVar:X:Count$Valid Land.RememberedPlayerCtrl +SVar:AIPlayForSub:True SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/acidic_soil.jpg diff --git a/res/cardsfolder/a/akki_blizzard_herder.txt b/res/cardsfolder/a/akki_blizzard_herder.txt index 5309994540a..3f3a6c4ee47 100644 --- a/res/cardsfolder/a/akki_blizzard_herder.txt +++ b/res/cardsfolder/a/akki_blizzard_herder.txt @@ -4,7 +4,7 @@ Types:Creature Goblin Shaman Text:no text PT:1/1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSac | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, each player sacrifices a land. -SVar:TrigSac:AB$Sacrifice | Cost$ 0 | SacValid$ Land | Defined$ Each +SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | SacValid$ Land | Defined$ Each SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/akki_blizzard_herder.jpg SetInfo:BOK|Common|http://magiccards.info/scans/en/bok/91.jpg diff --git a/res/cardsfolder/a/all_hallows_eve.txt b/res/cardsfolder/a/all_hallows_eve.txt index aa249356e39..dade4880705 100644 --- a/res/cardsfolder/a/all_hallows_eve.txt +++ b/res/cardsfolder/a/all_hallows_eve.txt @@ -7,8 +7,8 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self+counters T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self+counters_EQ0_SCREAM | PresentZone$ Exile | Execute$ TrigMoveToGraveyard | TriggerZones$ Exile | Secondary$ True | TriggerDescription$ Put CARDNAME into your graveyard and return all creatures to the battlefield. SVar:TrigRemoveCounter:AB$ RemoveCounter | Cost$ 0 | Defined$ Self | CounterType$ SCREAM | CounterNum$ 1 SVar:TrigMoveToGraveyard:AB$ ChangeZone | Cost$ 0 | Origin$ Exile | Destination$ Graveyard | Defined$ Self | SubAbility$ DBResurrection -SVar:DBResurrection:DB$ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature -SVar:DBPutCounter:DB$PutCounter | Defined$ Remembered | CounterType$ SCREAM | CounterNum$ 2 +SVar:DBResurrection:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature +SVar:DBPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ SCREAM | CounterNum$ 2 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/all_hallows_eve.jpg SetInfo:LEG|Rare|http://magiccards.info/scans/en/lg/2.jpg diff --git a/res/cardsfolder/a/antagonism.txt b/res/cardsfolder/a/antagonism.txt index e1ed52115b4..1a79d1d5351 100644 --- a/res/cardsfolder/a/antagonism.txt +++ b/res/cardsfolder/a/antagonism.txt @@ -2,13 +2,11 @@ Name:Antagonism ManaCost:3 R Types:Enchantment Text:no text -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TeaseYou | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2 damage to that player unless one of his or her opponents was dealt damage this turn. -SVar:TeaseYou:DB$ DealDamage | Defined$ You | NumDmg$ 2 | ConditionCheckSVar$ AntagonismX | ConditionSVarCompare$ LE0 | References$ AntagonismX -SVar:AntagonismX:Count$OppDamageThisTurn -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | Execute$ TeaseOpp | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2 damage to that player unless one of his or her opponents was dealt damage this turn. -SVar:TeaseOpp:DB$ DealDamage | Defined$ Opponent | NumDmg$ 2 | ConditionCheckSVar$ AntagonismY | ConditionSVarCompare$ LE0 | References$ AntagonismY | -SVar:AntagonismY:Count$YourDamageThisTurn -SVar:NeedsToPlayVar:AntagonismX GE1 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | Execute$ TeaseYou | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's end step, CARDNAME deals 2 damage to that player unless one of his or her opponents was dealt damage this turn. +SVar:TeaseYou:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ 2 | ConditionCheckSVar$ AntagonismX | ConditionSVarCompare$ LE0 | References$ AntagonismX +SVar:AntagonismX:TriggeredPlayer$DamageToOppsThisTurn +SVar:Check:PlayerCountOpponents$DamageToOppsThisTurn +SVar:NeedsToPlayVar:Check GE1 SVar:RemRandomDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/antagonism.jpg diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index ceb8bdc2fff..e0e901423a9 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -1126,14 +1126,12 @@ public class AbilityFactory { if (!players.contains(p)) { players.add(p); } - } else if (defined.equals("You") || defined.equals("Opponent") || defined.equals("Each")) { - if (defined.equals("You") || defined.equals("Each")) { - players.add(sa.getActivatingPlayer()); - } - - if (defined.equals("Opponent") || defined.equals("Each")) { - players.add(sa.getActivatingPlayer().getOpponent()); - } + } else if (defined.equals("You")) { + players.add(sa.getActivatingPlayer()); + } else if (defined.equals("Each")) { + players.addAll(Singletons.getModel().getGame().getPlayers()); + } else if (defined.equals("Opponent")) { + players.add(sa.getActivatingPlayer().getOpponent()); } else { for (Player p : Singletons.getModel().getGame().getPlayers()) { if (p.isValid(defined, sa.getActivatingPlayer(), sa.getSourceCard())) { diff --git a/src/main/java/forge/card/abilityfactory/effects/SacrificeAllEffect.java b/src/main/java/forge/card/abilityfactory/effects/SacrificeAllEffect.java index c070cdc697e..1ec4b1f096d 100644 --- a/src/main/java/forge/card/abilityfactory/effects/SacrificeAllEffect.java +++ b/src/main/java/forge/card/abilityfactory/effects/SacrificeAllEffect.java @@ -42,13 +42,6 @@ public class SacrificeAllEffect extends SpellEffect { valid = sa.getParam("ValidCards"); } - // Ugh. If calculateAmount needs to be called with DestroyAll it _needs_ - // to use the X variable - // We really need a better solution to this - if (valid.contains("X")) { - valid = valid.replace("X", Integer.toString(AbilityFactory.calculateAmount(card, "X", sa))); - } - List list; if (sa.hasParam("Defined")) { list = new ArrayList(AbilityFactory.getDefinedCards(sa.getSourceCard(), sa.getParam("Defined"), sa)); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index d71f159e7fd..ebfd7e880fc 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -1884,7 +1884,9 @@ public class CardFactoryUtil { } if (sq[0].contains("LifeLostThisTurn")) { - return CardFactoryUtil.doXMath(players.get(0).getLifeLostThisTurn(), m, source); + if (players.size() > 0) { + return CardFactoryUtil.doXMath(players.get(0).getLifeLostThisTurn(), m, source); + } } if (sq[0].contains("TopOfLibraryCMC")) { @@ -1918,6 +1920,26 @@ public class CardFactoryUtil { } } + if (sq[0].contains("DamageToOppsThisTurn")) { + if (players.size() > 0) { + int oppDmg = 0; + for (Player opp : players.get(0).getOpponents()) { + oppDmg += opp.getAssignedDamage(); + } + return CardFactoryUtil.doXMath(oppDmg, m, source); + } + } + + if (sq[0].contains("DamageThisTurn")) { + if (players.size() > 0) { + int totDmg = 0; + for (Player p : players) { + totDmg += p.getAssignedDamage(); + } + return CardFactoryUtil.doXMath(totDmg, m, source); + } + } + return CardFactoryUtil.doXMath(n, m, source); }