mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
- Moved AI_discardNumType to ComputerUtil.
This commit is contained in:
@@ -923,6 +923,48 @@ public class ComputerUtil {
|
||||
return sacList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <p>AI_discardNumType.</p>
|
||||
*
|
||||
* @param numDiscard a int.
|
||||
* @param uTypes an array of {@link java.lang.String} objects.
|
||||
* @param sa a {@link forge.card.spellability.SpellAbility} object.
|
||||
* @return a CardList of discarded cards.
|
||||
*/
|
||||
static public CardList AI_discardNumType(int numDiscard, String[] uTypes, SpellAbility sa) {
|
||||
CardList hand = AllZoneUtil.getPlayerHand(AllZone.getComputerPlayer());
|
||||
hand = hand.getValidCards(uTypes, sa.getActivatingPlayer(), sa.getSourceCard());
|
||||
|
||||
if (hand.size() < numDiscard){
|
||||
return null;
|
||||
}
|
||||
|
||||
CardList discardList = new CardList();
|
||||
int count = 0;
|
||||
|
||||
while (count < numDiscard) {
|
||||
Card prefCard = getCardPreference(sa.getSourceCard(), "DiscardCost", hand);
|
||||
if (prefCard != null) {
|
||||
discardList.add(prefCard);
|
||||
hand.remove(prefCard);
|
||||
count++;
|
||||
} else
|
||||
break;
|
||||
}
|
||||
|
||||
int discardsLeft = numDiscard - count;
|
||||
|
||||
CardListUtil.sortCMC(hand);
|
||||
hand.reverse();
|
||||
for (int i = 0; i < discardsLeft; i++){
|
||||
discardList.add(hand.get(i));
|
||||
}
|
||||
|
||||
return discardList;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>chooseExileType.</p>
|
||||
*
|
||||
|
||||
@@ -484,34 +484,6 @@ public class GameAction {
|
||||
return moveToStack(c);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>AI_discardNumType.</p>
|
||||
*
|
||||
* @param numDiscard a int.
|
||||
* @param uTypes an array of {@link java.lang.String} objects.
|
||||
* @param sa a {@link forge.card.spellability.SpellAbility} object.
|
||||
* @return a CardList of discarded cards.
|
||||
*/
|
||||
public CardList AI_discardNumType(int numDiscard, String[] uTypes, SpellAbility sa) {
|
||||
CardList hand = AllZoneUtil.getPlayerHand(AllZone.getComputerPlayer());
|
||||
hand = hand.getValidCards(uTypes, sa.getActivatingPlayer(), sa.getSourceCard());
|
||||
|
||||
if (hand.size() < numDiscard){
|
||||
return null;
|
||||
}
|
||||
|
||||
CardList discard = new CardList();
|
||||
|
||||
CardListUtil.sortCMC(hand);
|
||||
hand.reverse();
|
||||
for (int i = 0; i < numDiscard; i++){
|
||||
discard.add(hand.get(i));
|
||||
}
|
||||
|
||||
return discard;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>discard_PutIntoPlayInstead.</p>
|
||||
*
|
||||
|
||||
@@ -6,6 +6,7 @@ import forge.ButtonUtil;
|
||||
import forge.Card;
|
||||
import forge.CardList;
|
||||
import forge.CardListUtil;
|
||||
import forge.ComputerUtil;
|
||||
import forge.Constant;
|
||||
import forge.Player;
|
||||
import forge.PlayerZone;
|
||||
@@ -197,7 +198,7 @@ public class CostDiscard extends CostPartWithList {
|
||||
list = CardListUtil.getRandomSubList(hand, c);
|
||||
}
|
||||
else{
|
||||
list = AllZone.getGameAction().AI_discardNumType(c, type.split(";"), ability);
|
||||
list = ComputerUtil.AI_discardNumType(c, type.split(";"), ability);
|
||||
}
|
||||
}
|
||||
return list != null;
|
||||
|
||||
@@ -5,6 +5,7 @@ import forge.AllZoneUtil;
|
||||
import forge.ButtonUtil;
|
||||
import forge.Card;
|
||||
import forge.CardList;
|
||||
import forge.ComputerUtil;
|
||||
import forge.Constant;
|
||||
import forge.Player;
|
||||
import forge.card.abilityFactory.AbilityFactory;
|
||||
@@ -65,7 +66,7 @@ public class CostReveal extends CostPartWithList {
|
||||
}
|
||||
}
|
||||
|
||||
list = AllZone.getGameAction().AI_discardNumType(c, type.split(";"), ability);
|
||||
list = ComputerUtil.AI_discardNumType(c, type.split(";"), ability);
|
||||
}
|
||||
return list != null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user