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
|
ManaCost:1
|
||||||
Types:Artifact
|
Types:Artifact
|
||||||
Text:no text
|
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.
|
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:StartFight:DB$ Fight | Defined$ Targeted | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control
|
|
||||||
SVar:Rarity:Rare
|
SVar:Rarity:Rare
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/triangle_of_war.jpg
|
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
|
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) {
|
private String fightStackDescription(final AbilityFactory af, final SpellAbility sa) {
|
||||||
final StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
final HashMap<String, String> params = af.getMapParams();
|
final HashMap<String, String> params = af.getMapParams();
|
||||||
|
Card fighter1 = null;
|
||||||
if (params.containsKey("StackDescription")) {
|
Card fighter2 = null;
|
||||||
sb.append(params.get("StackDescription").replaceAll("CARDNAME", sa.getSourceCard().getName()));
|
final Target tgt = sa.getTarget();
|
||||||
|
ArrayList<Card> tgts = tgt.getTargetCards();
|
||||||
|
if (tgts.size() > 0) {
|
||||||
|
fighter1 = tgts.get(0);
|
||||||
}
|
}
|
||||||
else {
|
if (params.containsKey("Defined")) {
|
||||||
Card fighter1 = null;
|
fighter2 = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa).get(0);
|
||||||
Card fighter2 = null;
|
} else if (tgts.size() > 1) {
|
||||||
final Target tgt = sa.getTarget();
|
fighter2 = tgts.get(1);
|
||||||
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 (sa instanceof AbilitySub) {
|
||||||
|
sb.append(" ");
|
||||||
|
} else {
|
||||||
|
sb.append(sa.getSourceCard()).append(" - ");
|
||||||
|
}
|
||||||
|
|
||||||
|
sb.append(fighter1 + " fights " + fighter2);
|
||||||
|
|
||||||
final AbilitySub abSub = sa.getSubAbility();
|
final AbilitySub abSub = sa.getSubAbility();
|
||||||
if (abSub != null) {
|
if (abSub != null) {
|
||||||
sb.append(abSub.getStackDescription());
|
sb.append(abSub.getStackDescription());
|
||||||
@@ -1897,19 +1880,21 @@ public class AbilityFactoryDealDamage {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.containsKey("TargetsFromDifferentZone") && humCreatures.size() > 0 && aiCreatures.size() > 0) {
|
if (params.containsKey("TargetsFromDifferentZone")) {
|
||||||
for (Card humanCreature : humCreatures) {
|
if (humCreatures.size() > 0 && aiCreatures.size() > 0) {
|
||||||
for (Card aiCreature : aiCreatures) {
|
for (Card humanCreature : humCreatures) {
|
||||||
if (humanCreature.getKillDamage() <= aiCreature.getNetAttack()
|
for (Card aiCreature : aiCreatures) {
|
||||||
&& humanCreature.getNetAttack() < aiCreature.getKillDamage()) {
|
if (humanCreature.getKillDamage() <= aiCreature.getNetAttack()
|
||||||
// todo: check min/max targets; see if we picked the best matchup
|
&& humanCreature.getNetAttack() < aiCreature.getKillDamage()) {
|
||||||
tgt.addTarget(humanCreature);
|
// todo: check min/max targets; see if we picked the best matchup
|
||||||
tgt.addTarget(aiCreature);
|
tgt.addTarget(humanCreature);
|
||||||
return true;
|
tgt.addTarget(aiCreature);
|
||||||
} else if (humanCreature.getSVar("Targeting").equals("Dies")) {
|
return true;
|
||||||
tgt.addTarget(humanCreature);
|
} else if (humanCreature.getSVar("Targeting").equals("Dies")) {
|
||||||
tgt.addTarget(aiCreature);
|
tgt.addTarget(humanCreature);
|
||||||
return true;
|
tgt.addTarget(aiCreature);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1933,7 +1918,7 @@ public class AbilityFactoryDealDamage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1950,23 +1935,12 @@ public class AbilityFactoryDealDamage {
|
|||||||
Card fighter1 = null;
|
Card fighter1 = null;
|
||||||
Card fighter2 = null;
|
Card fighter2 = null;
|
||||||
final Target tgt = sa.getTarget();
|
final Target tgt = sa.getTarget();
|
||||||
ArrayList<Card> tgts = null;
|
ArrayList<Card> tgts = tgt.getTargetCards();
|
||||||
if (tgt != null) {
|
if (tgts.size() > 0) {
|
||||||
tgts = tgt.getTargetCards();
|
fighter1 = tgts.get(0);
|
||||||
if (tgts.size() > 0) {
|
|
||||||
fighter1 = tgts.get(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (params.containsKey("Defined")) {
|
if (params.containsKey("Defined")) {
|
||||||
ArrayList<Card> defined = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa);
|
fighter2 = AbilityFactory.getDefinedCards(sa.getSourceCard(), params.get("Defined"), sa).get(0);
|
||||||
// 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) {
|
} else if (tgts.size() > 1) {
|
||||||
fighter2 = tgts.get(1);
|
fighter2 = tgts.get(1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user