mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
- Stopped AI from crewing vehicles with stronger or equal (ie. crew vehicle with another copy of crewed vehicle) creatures
This commit is contained in:
@@ -32,6 +32,7 @@ import com.google.common.collect.Iterables;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
|
import forge.ai.ability.AnimateAi;
|
||||||
import forge.ai.ability.ProtectAi;
|
import forge.ai.ability.ProtectAi;
|
||||||
import forge.card.CardType;
|
import forge.card.CardType;
|
||||||
import forge.card.MagicColor;
|
import forge.card.MagicColor;
|
||||||
@@ -44,6 +45,7 @@ import forge.game.ability.effects.CharmEffect;
|
|||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
import forge.game.card.CardCollection;
|
import forge.game.card.CardCollection;
|
||||||
import forge.game.card.CardCollectionView;
|
import forge.game.card.CardCollectionView;
|
||||||
|
import forge.game.card.CardFactory;
|
||||||
import forge.game.card.CardLists;
|
import forge.game.card.CardLists;
|
||||||
import forge.game.card.CardPredicates;
|
import forge.game.card.CardPredicates;
|
||||||
import forge.game.card.CardPredicates.Presets;
|
import forge.game.card.CardPredicates.Presets;
|
||||||
@@ -497,10 +499,12 @@ public class ComputerUtil {
|
|||||||
return tapList;
|
return tapList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CardCollection chooseTapTypeAccumulatePower(final Player ai, final String type, final SpellAbility sa, final boolean tap, final int amount, final CardCollectionView exclude) {
|
public static CardCollection chooseTapTypeAccumulatePower(final Player ai, final String type, final SpellAbility sa,
|
||||||
|
final boolean tap, final int amount, final CardCollectionView exclude) {
|
||||||
// Used for Crewing vehicles, ideally we sort by useless creatures. Can't Attack/Defender
|
// Used for Crewing vehicles, ideally we sort by useless creatures. Can't Attack/Defender
|
||||||
int totalPower = 0;
|
int totalPower = 0;
|
||||||
final Card activate = sa.getHostCard();
|
final Card activate = sa.getHostCard();
|
||||||
|
int vehicleValue = 0;
|
||||||
|
|
||||||
CardCollection all = new CardCollection(ai.getCardsIn(ZoneType.Battlefield));
|
CardCollection all = new CardCollection(ai.getCardsIn(ZoneType.Battlefield));
|
||||||
all.removeAll(exclude);
|
all.removeAll(exclude);
|
||||||
@@ -509,6 +513,9 @@ public class ComputerUtil {
|
|||||||
|
|
||||||
if (sa.hasParam("Crew")) {
|
if (sa.hasParam("Crew")) {
|
||||||
typeList = CardLists.getNotKeyword(typeList, "CARDNAME can't crew Vehicles.");
|
typeList = CardLists.getNotKeyword(typeList, "CARDNAME can't crew Vehicles.");
|
||||||
|
Card vehicle = CardFactory.copyCard(sa.getHostCard(), true);
|
||||||
|
AnimateAi.becomeAnimated(vehicle, false, sa);
|
||||||
|
vehicleValue = ComputerUtilCard.evaluateCreature(vehicle);
|
||||||
}
|
}
|
||||||
|
|
||||||
// is this needed?
|
// is this needed?
|
||||||
@@ -524,7 +531,7 @@ public class ComputerUtil {
|
|||||||
// Very very rudimentary
|
// Very very rudimentary
|
||||||
for (Card next : typeList) {
|
for (Card next : typeList) {
|
||||||
int pow = next.getNetPower();
|
int pow = next.getNetPower();
|
||||||
if (pow <= 0) {
|
if (pow <= 0 || ComputerUtilCard.evaluateCreature(next) > vehicleValue) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
totalPower += pow;
|
totalPower += pow;
|
||||||
|
|||||||
Reference in New Issue
Block a user