mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
BOT: "new" mechanics (#1679)
* CardFactoryUtil.addStaticAbility support "Living metal" keyword * GameActionUtil.getAlternativeCosts() add "More Than Meets the Eye" * Keyword.LIVING_METAL and Keyword.MORE_THAN_MEETS_THE_EYE * TypeLists add Robot * AlternativeCost.MTMtE * ultra_magnus_tactician_ultra_magnus_armored_carrier.txt * CardSplitType.Convert * CardStateName.Converted * GameState.addCard Converted check * DevModeCheats for Converted * Card.changeCardState() add Convert mode * Card.isConvertable() * PaperCard.hasBackFace add Convert * Card implement convertedTimestamp * Card.keywordsToText add Living metal to list * DamageDealEffect.internalDamageDeal move "ExcessSVar" for more flexibility * ComputerUtil.choosePermanentsToSacrifice improve AI for Megatron * megatron_tyrant_megatron_destructive_force.txt * optimus_prime_hero_optimus_prime_autobot_leader.txt * ChangeZoneEffect.changeKnownOriginResolve support "Converted" * Card.changeCardState() fixup
This commit is contained in:
@@ -840,12 +840,13 @@ public class ComputerUtil {
|
||||
|
||||
String logic = source.getParamOrDefault("AILogic", "");
|
||||
if (logic.startsWith("SacForDamage")) {
|
||||
if (c.getNetPower() <= 0) {
|
||||
final int damageAmt = logic.contains("cmc") ? c.getManaCost().getCMC() : c.getNetPower();
|
||||
if (damageAmt <= 0) {
|
||||
return false;
|
||||
} else if (c.getNetPower() >= ai.getOpponentsSmallestLifeTotal()) {
|
||||
} else if (damageAmt >= ai.getOpponentsSmallestLifeTotal()) {
|
||||
return true;
|
||||
} else if (logic.endsWith(".GiantX2") && c.getType().hasCreatureType("Giant")
|
||||
&& c.getNetPower() * 2 >= ai.getOpponentsSmallestLifeTotal()) {
|
||||
&& damageAmt * 2 >= ai.getOpponentsSmallestLifeTotal()) {
|
||||
return true; // TODO: generalize this for any type and actually make the AI prefer giants?
|
||||
}
|
||||
}
|
||||
|
||||
@@ -313,6 +313,8 @@ public abstract class GameState {
|
||||
newText.append("|Meld");
|
||||
} else if (c.getCurrentStateName().equals(CardStateName.Modal)) {
|
||||
newText.append("|Modal");
|
||||
} else if (c.getCurrentStateName().equals(CardStateName.Converted)) {
|
||||
newText.append("|Converted");
|
||||
}
|
||||
|
||||
if (c.getPlayerAttachedTo() != null) {
|
||||
|
||||
Reference in New Issue
Block a user