mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
- Improved detection of combat death in AttachAi for flash auras.
This commit is contained in:
@@ -27,6 +27,7 @@ import forge.game.staticability.StaticAbility;
|
|||||||
import forge.game.trigger.Trigger;
|
import forge.game.trigger.Trigger;
|
||||||
import forge.game.trigger.TriggerType;
|
import forge.game.trigger.TriggerType;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
import forge.util.Aggregates;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -192,6 +193,29 @@ public class AttachAi extends SpellAbilityAi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean canSurviveCombat = true;
|
||||||
|
if (combat != null && combat.isBlocked(attachTarget)) {
|
||||||
|
if (!attachTarget.hasKeyword(Keyword.INDESTRUCTIBLE) && !ComputerUtil.canRegenerate(ai, attachTarget)) {
|
||||||
|
boolean dangerous = false;
|
||||||
|
int totalAtkPower = 0;
|
||||||
|
for (Card attacker : combat.getBlockers(attachTarget)) {
|
||||||
|
if (attacker.hasKeyword(Keyword.DEATHTOUCH) || attacker.hasKeyword(Keyword.INFECT)
|
||||||
|
|| attacker.hasKeyword(Keyword.WITHER)) {
|
||||||
|
dangerous = true;
|
||||||
|
}
|
||||||
|
totalAtkPower += attacker.getNetPower();
|
||||||
|
}
|
||||||
|
if (totalAtkPower > attachTarget.getNetToughness() + toughness || dangerous) {
|
||||||
|
canSurviveCombat = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!canSurviveCombat) {
|
||||||
|
// don't buff anything that will die or get seriously crippled in combat
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int chanceToCastAtEOT = aic.getIntProperty(AiProps.FLASH_BUFF_AURA_CHANCE_CAST_AT_EOT);
|
int chanceToCastAtEOT = aic.getIntProperty(AiProps.FLASH_BUFF_AURA_CHANCE_CAST_AT_EOT);
|
||||||
int chanceToCastEarly = aic.getIntProperty(AiProps.FLASH_BUFF_AURA_CHANCE_TO_CAST_EARLY);
|
int chanceToCastEarly = aic.getIntProperty(AiProps.FLASH_BUFF_AURA_CHANCE_TO_CAST_EARLY);
|
||||||
int chanceToRespondToStack = aic.getIntProperty(AiProps.FLASH_BUFF_AURA_CHANCE_TO_RESPOND_TO_STACK);
|
int chanceToRespondToStack = aic.getIntProperty(AiProps.FLASH_BUFF_AURA_CHANCE_TO_RESPOND_TO_STACK);
|
||||||
|
|||||||
Reference in New Issue
Block a user