mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
- Moved AI_discardNumType to ComputerUtil.
This commit is contained in:
@@ -922,6 +922,48 @@ public class ComputerUtil {
|
|||||||
for (int i = count; i < amount; i++) sacList.add(typeList.get(i));
|
for (int i = count; i < amount; i++) sacList.add(typeList.get(i));
|
||||||
return sacList;
|
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>
|
* <p>chooseExileType.</p>
|
||||||
|
|||||||
@@ -484,34 +484,6 @@ public class GameAction {
|
|||||||
return moveToStack(c);
|
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>
|
* <p>discard_PutIntoPlayInstead.</p>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import forge.ButtonUtil;
|
|||||||
import forge.Card;
|
import forge.Card;
|
||||||
import forge.CardList;
|
import forge.CardList;
|
||||||
import forge.CardListUtil;
|
import forge.CardListUtil;
|
||||||
|
import forge.ComputerUtil;
|
||||||
import forge.Constant;
|
import forge.Constant;
|
||||||
import forge.Player;
|
import forge.Player;
|
||||||
import forge.PlayerZone;
|
import forge.PlayerZone;
|
||||||
@@ -197,7 +198,7 @@ public class CostDiscard extends CostPartWithList {
|
|||||||
list = CardListUtil.getRandomSubList(hand, c);
|
list = CardListUtil.getRandomSubList(hand, c);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
list = AllZone.getGameAction().AI_discardNumType(c, type.split(";"), ability);
|
list = ComputerUtil.AI_discardNumType(c, type.split(";"), ability);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list != null;
|
return list != null;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import forge.AllZoneUtil;
|
|||||||
import forge.ButtonUtil;
|
import forge.ButtonUtil;
|
||||||
import forge.Card;
|
import forge.Card;
|
||||||
import forge.CardList;
|
import forge.CardList;
|
||||||
|
import forge.ComputerUtil;
|
||||||
import forge.Constant;
|
import forge.Constant;
|
||||||
import forge.Player;
|
import forge.Player;
|
||||||
import forge.card.abilityFactory.AbilityFactory;
|
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;
|
return list != null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user