- Improved AI attacking with creatures with "becomes blocked" triggers.

This commit is contained in:
Sloth
2016-02-20 12:11:44 +00:00
parent be01e1d927
commit 98d46755e3
18 changed files with 37 additions and 12 deletions

View File

@@ -200,6 +200,10 @@ public class AiAttackController {
return false;
}
if ("TRUE".equals(attacker.getSVar("HasAttackEffect"))) {
return true;
}
final Player opp = this.defendingOpponent;
if (ComputerUtilCombat.damageIfUnblocked(attacker, opp, combat, true) > 0) {
return true;
@@ -918,7 +922,8 @@ public class AiAttackController {
}
boolean hasAttackEffect = attacker.getSVar("HasAttackEffect").equals("TRUE") || attacker.hasStartOfKeyword("Annihilator");
// is there a gain in attacking even when the blocker is not killed (Lifelink, Wither,...)
boolean hasCombatEffect = attacker.getSVar("HasCombatEffect").equals("TRUE");
boolean hasCombatEffect = attacker.getSVar("HasCombatEffect").equals("TRUE")
|| "Blocked".equals(attacker.getSVar("HasAttackEffect"));
if (!hasCombatEffect) {
for (String keyword : attacker.getKeywords()) {
if (keyword.equals("Wither") || keyword.equals("Infect") || keyword.equals("Lifelink")) {

View File

@@ -1763,6 +1763,10 @@ public class ComputerUtilCombat {
}
}
if (attacker.getName().equals("Elven Warhounds")) {
return true;
}
int flankingMagnitude = 0;
if (attacker.hasKeyword("Flanking") && !blocker.hasKeyword("Flanking")) {

View File

@@ -3,6 +3,7 @@ ManaCost:1 B B
Types:Creature Human Mercenary
PT:2/2
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player discards a card.
SVar:TrigDiscard:AB$Discard | Cost$ 0 | Defined$ DefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
SVar:TrigDiscard:AB$ Discard | Cost$ 0 | Defined$ DefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/alley_grifters.jpg
Oracle:Whenever Alley Grifters becomes blocked, defending player discards a card.

View File

@@ -3,6 +3,7 @@ ManaCost:2 U
Types:Creature Nautilus Beast
PT:2/2
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME becomes blocked, you may draw a card.
SVar:TrigDraw:AB$Draw | Cost$ 0 | Defined$ You | NumCards$ 1
SVar:TrigDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 1
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/chambered_nautilus.jpg
Oracle:Whenever Chambered Nautilus becomes blocked, you may draw a card.

View File

@@ -4,5 +4,6 @@ Types:Creature Human Advisor
PT:1/1
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, target opponent discards a card.
SVar:TrigDiscard:AB$ Discard | Cost$ 0 | ValidTgts$ Opponent | TgtPrompt$ Select an opponent | NumCards$ 1 | Mode$ TgtChoose
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/corrupt_court_official.jpg
Oracle:When Corrupt Court Official enters the battlefield, target opponent discards a card.

View File

@@ -3,6 +3,7 @@ ManaCost:4 G
Types:Creature Beast
PT:2/4
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigGain | TriggerDescription$ Whenever CARDNAME becomes blocked, you gain 2 life.
SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 2
SVar:TrigGain:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 2
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/deepwood_tantiv.jpg
Oracle:Whenever Deepwood Tantiv becomes blocked, you gain 2 life.

View File

@@ -3,6 +3,7 @@ ManaCost:4 U
Types:Creature Yeti Mutant
PT:3/3
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME becomes blocked, you may draw two cards.
SVar:TrigDraw:AB$Draw | Cost$ 0 | Defined$ You | NumCards$ 2
SVar:TrigDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 2
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/drelnoch.jpg
Oracle:Whenever Drelnoch becomes blocked, you may draw two cards.

View File

@@ -3,6 +3,7 @@ ManaCost:R
Types:Snow Creature Wolverine Beast
PT:1/1
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME becomes blocked, you may have it deal 1 damage to target creature or player.
SVar:TrigDealDamage:AB$DealDamage | Cost$ 0 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1
SVar:TrigDealDamage:AB$ DealDamage | Cost$ 0 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/karplusan_wolverine.jpg
Oracle:Whenever Karplusan Wolverine becomes blocked, you may have it deal 1 damage to target creature or player.

View File

@@ -4,5 +4,6 @@ Types:Creature Fish
PT:1/1
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, put a -1/-1 counter on that creature.
SVar:TrigPutCounter:AB$ PutCounter | Cost$ 0 | Defined$ TriggeredBlocker | CounterType$ M1M1 | CounterNum$ 1 | IsCurse$ True
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/quagmire_lamprey.jpg
Oracle:Whenever Quagmire Lamprey becomes blocked by a creature, put a -1/-1 counter on that creature.

View File

@@ -4,5 +4,6 @@ Types:Creature Insect
PT:4/5
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME becomes blocked, you may destroy target artifact or enchantment defending player controls.
SVar:TrigDestroy:AB$ Destroy | Cost$ 0 | ValidTgts$ Artifact.DefenderCtrl,Enchantment.DefenderCtrl | TgtPrompt$ Select target artifact or enchantment defending player control
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/rust_scarab.jpg
Oracle:Whenever Rust Scarab becomes blocked, you may destroy target artifact or enchantment defending player controls.

View File

@@ -3,6 +3,7 @@ ManaCost:G
Types:Creature Horse
PT:1/1
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigGain | TriggerDescription$ Whenever CARDNAME becomes blocked, you gain 1 life.
SVar:TrigGain:AB$GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 1
SVar:TrigGain:AB$ GainLife | Cost$ 0 | Defined$ You | LifeAmount$ 1
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/sacred_prey.jpg
Oracle:Whenever Sacred Prey becomes blocked, you gain 1 life.

View File

@@ -3,6 +3,7 @@ ManaCost:1 U
Types:Creature Merfolk
PT:1/1
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME becomes blocked, you may draw three cards.
SVar:TrigDraw:AB$Draw | Cost$ 0 | Defined$ You | NumCards$ 3
SVar:TrigDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 3
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/saprazzan_heir.jpg
Oracle:Whenever Saprazzan Heir becomes blocked, you may draw three cards.

View File

@@ -3,6 +3,7 @@ ManaCost:2 B
Types:Creature Human Warrior
PT:2/2
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player discards a card.
SVar:TrigDiscard:AB$Discard | Cost$ 0 | Defined$ DefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
SVar:TrigDiscard:AB$ Discard | Cost$ 0 | Defined$ DefendingPlayer | NumCards$ 1 | Mode$ TgtChoose
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/slate_street_ruffian.jpg
Oracle:Whenever Slate Street Ruffian becomes blocked, defending player discards a card.

View File

@@ -3,8 +3,9 @@ ManaCost:1 U U
Types:Creature Slith
PT:1/1
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME becomes blocked, draw a card.
SVar:TrigDraw:AB$Draw | Cost$ 0 | Defined$ You | NumCards$ 1
SVar:TrigDraw:AB$ Draw | Cost$ 0 | Defined$ You | NumCards$ 1
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, put a +1/+1 counter on it.
SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
SVar:TrigPutCounter:AB$ PutCounter | Cost$ 0 | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/slith_strider.jpg
Oracle:Whenever Slith Strider becomes blocked, draw a card.\nWhenever Slith Strider deals combat damage to a player, put a +1/+1 counter on it.

View File

@@ -4,5 +4,6 @@ Types:Creature Demon
PT:2/5
T:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ You | Execute$ TrigGainControl | TriggerZones$ Battlefield | TriggerDescription$ At end of combat, gain control of all creatures blocking CARDNAME for as long as you control CARDNAME.
SVar:TrigGainControl:AB$ GainControl | Cost$ 0 | AllValid$ Card.blockingSource | LoseControl$ LoseControl,LeavesPlay
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/the_wretched.jpg
Oracle:At end of combat, gain control of all creatures blocking The Wretched for as long as you control The Wretched.

View File

@@ -4,5 +4,6 @@ Types:Creature Beast
PT:4/4
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player sacrifices a land.
SVar:TrigSac:AB$ Sacrifice | Cost$ 0 | SacValid$ Land | Defined$ DefendingPlayer | ChangeNum$ 1
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/thresher_beast.jpg
Oracle:Whenever Thresher Beast becomes blocked, defending player sacrifices a land.

View File

@@ -5,5 +5,6 @@ PT:1/1
T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | DelayedTrigger$ DelTrig | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, gain control of that creature at end of combat.
SVar:DelTrig:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | Execute$ TrigGainControl | TriggerDescription$ Gain control of blocking creature.
SVar:TrigGainControl:AB$ GainControl | Cost$ 0 | Defined$ TriggeredBlocker | NewController$ TriggeredAttackerController
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/tolarian_entrancer.jpg
Oracle:Whenever Tolarian Entrancer becomes blocked by a creature, gain control of that creature at end of combat.

View File

@@ -3,6 +3,7 @@ ManaCost:U B
Types:Creature Vedalken Zombie
PT:1/1
T:Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ Whenever CARDNAME becomes blocked, defending player loses 4 life.
SVar:TrigDrain:AB$LoseLife | Cost$ 0 | Defined$ DefendingPlayer | LifeAmount$ 4
SVar:TrigDrain:AB$ LoseLife | Cost$ 0 | Defined$ DefendingPlayer | LifeAmount$ 4
SVar:HasAttackEffect:Blocked
SVar:Picture:http://www.wizards.com/global/images/magic/general/vedalken_ghoul.jpg
Oracle:Whenever Vedalken Ghoul becomes blocked, defending player loses 4 life.