mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
When a card that allows "free cast" is in play, do not prefer to discard "unplayable" cards based on CMS, instead discard worst as normal.
...but AI still isn't very eager to actually play them for some reason.
This commit is contained in:
@@ -1046,8 +1046,22 @@ public class AiController {
|
||||
numLandsAvailable++;
|
||||
}
|
||||
|
||||
//Discard unplayable card
|
||||
// Discard unplayable card
|
||||
boolean discardedUnplayable = false;
|
||||
// But check if there is a card in play that allows casting spells for free!
|
||||
// if yes, nothing is unplayable, at least based on CMC
|
||||
boolean dreamHalls = false;
|
||||
for (Card cardInPlay : game.getCardsIn(ZoneType.Battlefield)) {
|
||||
if (cardInPlay.hasSVar("AllowFreeCast")) {
|
||||
if ("Everyone".equals((cardInPlay.getSVar("AllowFreeCast")))) {
|
||||
dreamHalls = true;
|
||||
} else if (("Owner".equals((cardInPlay.getSVar("AllowFreeCast"))))
|
||||
&& (cardInPlay.getOwner().equals(player))) {
|
||||
dreamHalls = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!dreamHalls) {
|
||||
for (int j = 0; j < validCards.size(); j++) {
|
||||
if (validCards.get(j).getCMC() > numLandsAvailable && !validCards.get(j).hasSVar("DoNotDiscardIfAble")) {
|
||||
discardList.add(validCards.get(j));
|
||||
@@ -1059,6 +1073,7 @@ public class AiController {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!discardedUnplayable) {
|
||||
// discard worst card
|
||||
|
||||
@@ -65,6 +65,20 @@ public class AiCostDecision extends CostDecisionMakerBase {
|
||||
final String type = cost.getType();
|
||||
CardCollectionView hand = player.getCardsIn(ZoneType.Hand);
|
||||
|
||||
/* // Dream Halls
|
||||
if (type.equals("Card.SharesColorWith")) {
|
||||
Card bestfound= null;
|
||||
for (Card card : hand) {
|
||||
if ((card.sharesColorWith(source))
|
||||
&& (!card.equals(source))) {
|
||||
if (bestfound==null) { bestfound=card; }
|
||||
if (card.getCMC()<bestfound.getCMC()) { bestfound=card; }
|
||||
}
|
||||
}
|
||||
if (bestfound==null) { return null; } else
|
||||
{ return PaymentDecision.card(bestfound); }
|
||||
} else */
|
||||
|
||||
if (type.equals("LastDrawn")) {
|
||||
if (!hand.contains(player.getLastDrawnCard())) {
|
||||
return null;
|
||||
|
||||
@@ -4,5 +4,6 @@ Types:Enchantment
|
||||
S:Mode$ Continuous | Affected$ Card.nonToken | AddKeyword$ Alternative Cost:Discard<1/Card.SharesColorWith/color sharing> | AffectedZone$ Hand,Graveyard,Exile,Library,Command | Description$ Rather than pay the mana cost for a spell, its controller may discard a card that shares a color with that spell.
|
||||
SVar:NonStackingEffect:True
|
||||
AI:RemoveDeck:Random
|
||||
SVar:AllowFreeCast:Everyone
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/dream_halls.jpg
|
||||
Oracle:Rather than pay the mana cost for a spell, its controller may discard a card that shares a color with that spell.
|
||||
|
||||
@@ -2,6 +2,7 @@ Name:Omniscience
|
||||
ManaCost:7 U U U
|
||||
Types:Enchantment
|
||||
S:Mode$ Continuous | Affected$ Card.nonLand+YouOwn | MayPlay$ True | MayPlayWithoutManaCost$ True | AffectedZone$ Hand | Description$ You may cast spells from your hand without paying their mana costs.
|
||||
SVar:AllowFreeCast:Owner
|
||||
AI:RemoveDeck:Random
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/omniscience.jpg
|
||||
Oracle:You may cast spells from your hand without paying their mana costs.
|
||||
|
||||
Reference in New Issue
Block a user