mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
- Cleanup in ComputerUtil.
This commit is contained in:
@@ -5,6 +5,7 @@ PT:3/3
|
|||||||
T:Mode$ SpellCast | ValidCard$ Artifact | Execute$ TrigControl | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts an artifact spell, that player gains control of CARDNAME. (This effect lasts indefinitely.)
|
T:Mode$ SpellCast | ValidCard$ Artifact | Execute$ TrigControl | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts an artifact spell, that player gains control of CARDNAME. (This effect lasts indefinitely.)
|
||||||
SVar:TrigControl:AB$ GainControl | Cost$ 0 | Defined$ Self | NewController$ TriggeredPlayer
|
SVar:TrigControl:AB$ GainControl | Cost$ 0 | Defined$ Self | NewController$ TriggeredPlayer
|
||||||
SVar:RemRandomDeck:True
|
SVar:RemRandomDeck:True
|
||||||
|
SVar:AntiBuffedBy:Artifact
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/drooling_ogre.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/drooling_ogre.jpg
|
||||||
Oracle:Whenever a player casts an artifact spell, that player gains control of Drooling Ogre. (This effect lasts indefinitely.)
|
Oracle:Whenever a player casts an artifact spell, that player gains control of Drooling Ogre. (This effect lasts indefinitely.)
|
||||||
SetInfo:DST Common
|
SetInfo:DST Common
|
||||||
@@ -725,7 +725,6 @@ public class ComputerUtil {
|
|||||||
continue; // Not a Regenerate ability
|
continue; // Not a Regenerate ability
|
||||||
}
|
}
|
||||||
sa.setActivatingPlayer(controller);
|
sa.setActivatingPlayer(controller);
|
||||||
// sa.setActivatingPlayer(controller);
|
|
||||||
if (!(sa.canPlay() && ComputerUtilCost.canPayCost(sa, controller))) {
|
if (!(sa.canPlay() && ComputerUtilCost.canPayCost(sa, controller))) {
|
||||||
continue; // Can't play ability
|
continue; // Can't play ability
|
||||||
}
|
}
|
||||||
@@ -733,7 +732,6 @@ public class ComputerUtil {
|
|||||||
if (controller == ai) {
|
if (controller == ai) {
|
||||||
final Cost abCost = sa.getPayCosts();
|
final Cost abCost = sa.getPayCosts();
|
||||||
if (abCost != null) {
|
if (abCost != null) {
|
||||||
// AI currently disabled for these costs
|
|
||||||
if (!ComputerUtilCost.checkLifeCost(controller, abCost, c, 4, null)) {
|
if (!ComputerUtilCost.checkLifeCost(controller, abCost, c, 4, null)) {
|
||||||
continue; // Won't play ability
|
continue; // Won't play ability
|
||||||
}
|
}
|
||||||
@@ -758,8 +756,7 @@ public class ComputerUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} catch (final Exception ex) {
|
} catch (final Exception ex) {
|
||||||
BugReporter.reportException(ex, "There is an error in the card code for %s:%n", c.getName(),
|
BugReporter.reportException(ex, "There is an error in the card code for %s:%n", c.getName(), ex.getMessage());
|
||||||
ex.getMessage());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -883,9 +880,8 @@ public class ComputerUtil {
|
|||||||
|
|
||||||
// get all cards the human controls with AntiBuffedBy
|
// get all cards the human controls with AntiBuffedBy
|
||||||
final List<Card> antibuffed = ai.getOpponent().getCardsIn(ZoneType.Battlefield);
|
final List<Card> antibuffed = ai.getOpponent().getCardsIn(ZoneType.Battlefield);
|
||||||
for (int k = 0; k < antibuffed.size(); k++) {
|
for (Card buffedcard : antibuffed) {
|
||||||
final Card buffedcard = antibuffed.get(k);
|
if (buffedcard.hasSVar("AntiBuffedBy")) {
|
||||||
if (buffedcard.getSVar("AntiBuffedBy").length() > 0) {
|
|
||||||
final String buffedby = buffedcard.getSVar("AntiBuffedBy");
|
final String buffedby = buffedcard.getSVar("AntiBuffedBy");
|
||||||
final String[] bffdby = buffedby.split(",");
|
final String[] bffdby = buffedby.split(",");
|
||||||
if (card.isValid(bffdby, buffedcard.getController(), buffedcard)) {
|
if (card.isValid(bffdby, buffedcard.getController(), buffedcard)) {
|
||||||
@@ -894,7 +890,7 @@ public class ComputerUtil {
|
|||||||
}
|
}
|
||||||
} // AntiBuffedBy
|
} // AntiBuffedBy
|
||||||
final List<Card> vengevines = ai.getCardsIn(ZoneType.Graveyard, "Vengevine");
|
final List<Card> vengevines = ai.getCardsIn(ZoneType.Graveyard, "Vengevine");
|
||||||
if (vengevines.size() > 0) {
|
if (!vengevines.isEmpty()) {
|
||||||
final List<Card> creatures = ai.getCardsIn(ZoneType.Hand);
|
final List<Card> creatures = ai.getCardsIn(ZoneType.Hand);
|
||||||
final List<Card> creatures2 = new ArrayList<Card>();
|
final List<Card> creatures2 = new ArrayList<Card>();
|
||||||
for (int i = 0; i < creatures.size(); i++) {
|
for (int i = 0; i < creatures.size(); i++) {
|
||||||
@@ -1015,7 +1011,7 @@ public class ComputerUtil {
|
|||||||
final SpellAbility sub = sa.getSubAbility();
|
final SpellAbility sub = sa.getSubAbility();
|
||||||
|
|
||||||
// Cipher spells
|
// Cipher spells
|
||||||
if (sub != null && ApiType.Encode == sa.getSubAbility().getApi() && !ai.getCreaturesInPlay().isEmpty()) {
|
if (sub != null && ApiType.Encode == sub.getApi() && !ai.getCreaturesInPlay().isEmpty()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
final List<Card> buffed = ai.getCardsIn(ZoneType.Battlefield);
|
final List<Card> buffed = ai.getCardsIn(ZoneType.Battlefield);
|
||||||
@@ -1029,6 +1025,18 @@ public class ComputerUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// get all cards the human controls with AntiBuffedBy
|
||||||
|
final List<Card> antibuffed = ai.getOpponent().getCardsIn(ZoneType.Battlefield);
|
||||||
|
for (Card buffedcard : antibuffed) {
|
||||||
|
if (buffedcard.hasSVar("AntiBuffedBy")) {
|
||||||
|
final String buffedby = buffedcard.getSVar("AntiBuffedBy");
|
||||||
|
final String[] bffdby = buffedby.split(",");
|
||||||
|
if (source.isValid(bffdby, buffedcard.getController(), buffedcard)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // AntiBuffedBy
|
||||||
|
|
||||||
if (sub != null) {
|
if (sub != null) {
|
||||||
return castSpellInMain1(ai, sub);
|
return castSpellInMain1(ai, sub);
|
||||||
}
|
}
|
||||||
@@ -1344,7 +1352,7 @@ public class ComputerUtil {
|
|||||||
boolean bottom = false;
|
boolean bottom = false;
|
||||||
if (c.isBasicLand()) {
|
if (c.isBasicLand()) {
|
||||||
List<Card> bl = player.getCardsIn(ZoneType.Battlefield);
|
List<Card> bl = player.getCardsIn(ZoneType.Battlefield);
|
||||||
int nBasicLands = Iterables.size(Iterables.filter(bl, CardPredicates.Presets.BASIC_LANDS));
|
int nBasicLands = Iterables.size(Iterables.filter(bl, CardPredicates.Presets.LANDS));
|
||||||
bottom = nBasicLands > 5; // if control more than 5 Basic land, probably don't need more
|
bottom = nBasicLands > 5; // if control more than 5 Basic land, probably don't need more
|
||||||
} else if (c.isCreature()) {
|
} else if (c.isCreature()) {
|
||||||
List<Card> cl = player.getCardsIn(ZoneType.Battlefield);
|
List<Card> cl = player.getCardsIn(ZoneType.Battlefield);
|
||||||
@@ -1405,7 +1413,7 @@ public class ComputerUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static List<Card> getCardsToDiscardFromFriend(Player aiChooser, Player p, SpellAbility sa, List<Card> validCards, int min, int max) {
|
public static List<Card> getCardsToDiscardFromFriend(Player aiChooser, Player p, SpellAbility sa, List<Card> validCards, int min, int max) {
|
||||||
if (p.isComputer()) { // ask that ai player what he would like to discard
|
if (p == aiChooser) { // ask that ai player what he would like to discard
|
||||||
final AiController aic = ((PlayerControllerAi)p.getController()).getAi();
|
final AiController aic = ((PlayerControllerAi)p.getController()).getAi();
|
||||||
return aic.getCardsToDiscard(min, max, validCards, sa);
|
return aic.getCardsToDiscard(min, max, validCards, sa);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user