- Reverted Triangle of War and fixed an issue with the AI targeting.

This commit is contained in:
Sloth
2012-10-01 08:22:52 +00:00
parent 85b0d773aa
commit ae96e3ec6a
2 changed files with 39 additions and 66 deletions

View File

@@ -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

View File

@@ -1829,44 +1829,27 @@ public class AbilityFactoryDealDamage {
private String fightStackDescription(final AbilityFactory af, final SpellAbility sa) {
final StringBuilder sb = new StringBuilder();
final HashMap<String, String> 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<Card> tgts = tgt.getTargetCards();
if (tgts.size() > 0) {
fighter1 = tgts.get(0);
}
else {
Card fighter1 = null;
Card fighter2 = null;
final Target tgt = sa.getTarget();
ArrayList<Card> tgts = null;
if (tgt != null) {
tgts = tgt.getTargetCards();
if (tgts.size() > 0) {
fighter1 = tgts.get(0);
}
}
if (params.containsKey("Defined")) {
ArrayList<Card> 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<Card> tgts = null;
if (tgt != null) {
tgts = tgt.getTargetCards();
if (tgts.size() > 0) {
fighter1 = tgts.get(0);
}
ArrayList<Card> tgts = tgt.getTargetCards();
if (tgts.size() > 0) {
fighter1 = tgts.get(0);
}
if (params.containsKey("Defined")) {
ArrayList<Card> 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);
}