mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
- Reverted Triangle of War and fixed an issue with the AI targeting.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user