Merge branch 'master' into 'master'

Fix and improve AI for Band Together and Courage in Crisis

Closes #1041

See merge request core-developers/forge!1806
This commit is contained in:
Michael Kamensky
2019-06-08 04:11:27 +00:00
3 changed files with 39 additions and 12 deletions

View File

@@ -105,7 +105,11 @@ public class CountersProliferateAi extends SpellAbilityAi {
*/
@Override
public boolean chkAIDrawback(SpellAbility sa, Player ai) {
return canPlayAI(ai, sa);
if ("Always".equals(sa.getParam("AILogic"))) {
return true;
}
return checkApiLogic(ai, sa);
}
/*

View File

@@ -192,6 +192,28 @@ public class FightAi extends SpellAbilityAi {
toughness += bonus;
}
if ("PowerDmg".equals(sa.getParam("AILogic"))) {
if ("2".equals(sa.getParam("TargetMax"))) {
// Band Together, uses up to two targets to deal damage to a single target
// TODO: Generalize this so that other TargetMax values can be properly accounted for
CardCollection aiCreaturesByPower = new CardCollection(aiCreatures);
CardLists.sortByPowerDesc(aiCreaturesByPower);
Card maxPower = aiCreaturesByPower.getFirst();
if (maxPower != null && maxPower != aiCreature) {
power += maxPower.getNetPower(); // potential bonus from adding a second target
}
if (FightAi.canKill(aiCreature, humanCreature, power)) {
sa.getTargets().add(aiCreature);
if (maxPower != null) {
sa.getTargets().add(maxPower);
}
if (!isChandrasIgnition) {
tgtFight.resetTargets();
tgtFight.getTargets().add(humanCreature);
}
return true;
}
} else {
// Other cards that use AILogic PowerDmg and a single target
if (FightAi.canKill(aiCreature, humanCreature, power)) {
sa.getTargets().add(aiCreature);
if (!isChandrasIgnition) {
@@ -200,6 +222,7 @@ public class FightAi extends SpellAbilityAi {
}
return true;
}
}
} else {
if (FightAi.shouldFight(aiCreature, humanCreature, power, toughness)) {
if ("Time to Feed".equals(sourceName)) { // flip targets

View File

@@ -1,7 +1,7 @@
Name:Band Together
ManaCost:2 G
Types:Instant
A:SP$ Pump | Cost$ 2 G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to two target creatures you control | AILogic$ PowerDamage | SubAbility$ SoulsDamage | TargetMin$ 0 | TargetMax$ 2 | StackDescription$ None | SpellDescription$ Up to two target creatures you control each deal damage equal to their power to another target creature.
SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature to be dealt damage | NumDmg$ X | References$ X | TargetUnique$ True | DamageSource$ ParentTarget | AILogic$ PowerDamage
A:SP$ Pump | Cost$ 2 G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select up to two target creatures you control | AILogic$ PowerDmg | SubAbility$ SoulsDamage | TargetMin$ 0 | TargetMax$ 2 | StackDescription$ None | SpellDescription$ Up to two target creatures you control each deal damage equal to their power to another target creature.
SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature to be dealt damage | NumDmg$ X | References$ X | TargetUnique$ True | DamageSource$ ParentTarget
SVar:X:ParentTargeted$CardPower
Oracle:Up to two target creatures you control each deal damage equal to their power to another target creature.