From ae96e3ec6ac48e546229b24e0fdc72945f941c78 Mon Sep 17 00:00:00 2001 From: Sloth Date: Mon, 1 Oct 2012 08:22:52 +0000 Subject: [PATCH] - Reverted Triangle of War and fixed an issue with the AI targeting. --- res/cardsfolder/t/triangle_of_war.txt | 3 +- .../AbilityFactoryDealDamage.java | 102 +++++++----------- 2 files changed, 39 insertions(+), 66 deletions(-) diff --git a/res/cardsfolder/t/triangle_of_war.txt b/res/cardsfolder/t/triangle_of_war.txt index 167953b20a9..ab32b7b8663 100644 --- a/res/cardsfolder/t/triangle_of_war.txt +++ b/res/cardsfolder/t/triangle_of_war.txt @@ -2,8 +2,7 @@ Name:Triangle of War ManaCost:1 Types:Artifact Text:no text -A:AB$ Pump | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | SubAbility$ StartFight | StackDescription$ None | SpellDescription$ Choose target creature you control and target creature an opponent controls. Each of those creatures deals damage equal to its power to the other. -SVar:StartFight:DB$ Fight | Defined$ Targeted | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control +A:AB$ Fight | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | TargetsFromDifferentZone$ True | TargetMin$ 2 | TargetMax$ 2 | SpellDescription$ Target creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/triangle_of_war.jpg SetInfo:VIS|Rare|http://magiccards.info/scans/en/vi/158.jpg diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java index fc1845c11ec..5a2ec9755d4 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java @@ -1829,44 +1829,27 @@ public class AbilityFactoryDealDamage { private String fightStackDescription(final AbilityFactory af, final SpellAbility sa) { final StringBuilder sb = new StringBuilder(); final HashMap params = af.getMapParams(); - - if (params.containsKey("StackDescription")) { - sb.append(params.get("StackDescription").replaceAll("CARDNAME", sa.getSourceCard().getName())); + Card fighter1 = null; + Card fighter2 = null; + final Target tgt = sa.getTarget(); + ArrayList tgts = tgt.getTargetCards(); + if (tgts.size() > 0) { + fighter1 = tgts.get(0); } - else { - Card fighter1 = null; - Card fighter2 = null; - final Target tgt = sa.getTarget(); - ArrayList tgts = null; - if (tgt != null) { - tgts = tgt.getTargetCards(); - if (tgts.size() > 0) { - fighter1 = tgts.get(0); - } - } - if (params.containsKey("Defined")) { - ArrayList defined = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); - // Allow both fighters to come from defined list if first fighter not already found - if (defined.size() > 1 && fighter1 == null) { - fighter1 = defined.get(0); - fighter2 = defined.get(1); - } - else { - fighter2 = defined.get(0); - } - } else if (tgts.size() > 1) { - fighter2 = tgts.get(1); - } - - if (sa instanceof AbilitySub) { - sb.append(" "); - } else { - sb.append(sa.getSourceCard()).append(" - "); - } - - sb.append(fighter1 + " fights " + fighter2); + if (params.containsKey("Defined")) { + fighter2 = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa).get(0); + } else if (tgts.size() > 1) { + fighter2 = tgts.get(1); } + if (sa instanceof AbilitySub) { + sb.append(" "); + } else { + sb.append(sa.getSourceCard()).append(" - "); + } + + sb.append(fighter1 + " fights " + fighter2); + final AbilitySub abSub = sa.getSubAbility(); if (abSub != null) { sb.append(abSub.getStackDescription()); @@ -1897,19 +1880,21 @@ public class AbilityFactoryDealDamage { return false; } - if (params.containsKey("TargetsFromDifferentZone") && humCreatures.size() > 0 && aiCreatures.size() > 0) { - for (Card humanCreature : humCreatures) { - for (Card aiCreature : aiCreatures) { - if (humanCreature.getKillDamage() <= aiCreature.getNetAttack() - && humanCreature.getNetAttack() < aiCreature.getKillDamage()) { - // todo: check min/max targets; see if we picked the best matchup - tgt.addTarget(humanCreature); - tgt.addTarget(aiCreature); - return true; - } else if (humanCreature.getSVar("Targeting").equals("Dies")) { - tgt.addTarget(humanCreature); - tgt.addTarget(aiCreature); - return true; + if (params.containsKey("TargetsFromDifferentZone")) { + if (humCreatures.size() > 0 && aiCreatures.size() > 0) { + for (Card humanCreature : humCreatures) { + for (Card aiCreature : aiCreatures) { + if (humanCreature.getKillDamage() <= aiCreature.getNetAttack() + && humanCreature.getNetAttack() < aiCreature.getKillDamage()) { + // todo: check min/max targets; see if we picked the best matchup + tgt.addTarget(humanCreature); + tgt.addTarget(aiCreature); + return true; + } else if (humanCreature.getSVar("Targeting").equals("Dies")) { + tgt.addTarget(humanCreature); + tgt.addTarget(aiCreature); + return true; + } } } } @@ -1933,7 +1918,7 @@ public class AbilityFactoryDealDamage { } } } - + return false; } @@ -1950,23 +1935,12 @@ public class AbilityFactoryDealDamage { Card fighter1 = null; Card fighter2 = null; final Target tgt = sa.getTarget(); - ArrayList tgts = null; - if (tgt != null) { - tgts = tgt.getTargetCards(); - if (tgts.size() > 0) { - fighter1 = tgts.get(0); - } + ArrayList tgts = tgt.getTargetCards(); + if (tgts.size() > 0) { + fighter1 = tgts.get(0); } if (params.containsKey("Defined")) { - ArrayList defined = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa); - // Allow both fighters to come from defined list if first fighter not already found - if (defined.size() > 1 && fighter1 == null) { - fighter1 = defined.get(0); - fighter2 = defined.get(1); - } - else { - fighter2 = defined.get(0); - } + fighter2 = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa).get(0); } else if (tgts.size() > 1) { fighter2 = tgts.get(1); }