From 2fae485655281ce67eb6685e218f137465553387 Mon Sep 17 00:00:00 2001 From: Sloth Date: Sun, 22 Jan 2012 09:49:18 +0000 Subject: [PATCH] - Improved attachDoTriggerAI. --- .../abilityfactory/AbilityFactoryAttach.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java index e79f1e2c8d7..de486be281e 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java @@ -920,14 +920,30 @@ public class AbilityFactoryAttach { * @return true, if successful */ public static boolean attachDoTriggerAI(final AbilityFactory af, final SpellAbility sa, final boolean mandatory) { + final Map params = af.getMapParams(); + final Card card = sa.getSourceCard(); + if (!ComputerUtil.canPayCost(sa)) { // usually not mandatory return false; } // Check if there are any valid targets + ArrayList targets = new ArrayList(); + final Target tgt = af.getAbTgt(); + if (tgt == null) { + targets = AbilityFactory.getDefinedObjects(sa.getSourceCard(), params.get("Defined"), sa); + } - // Now are Valid Targets better than my targets? + if (card.isEquipment() && card.isEquipping() && !targets.isEmpty()) { + Card oldTarget = card.getEquipping().get(0); + Card newTarget = (Card) targets.get(0); + + if (newTarget.getController().isPlayer(AllZone.getHumanPlayer()) + || CardFactoryUtil.evaluateCreature(oldTarget) > CardFactoryUtil.evaluateCreature(newTarget)) { + return false; + } + } // check SubAbilities DoTrigger? final AbilitySub abSub = sa.getSubAbility(); @@ -990,7 +1006,6 @@ public class AbilityFactoryAttach { final boolean gainControl = "GainControl".equals(af.getMapParams().get("AILogic")); AbilityFactoryAttach.handleAura(card, c, gainControl); } else if (card.isEquipment()) { - System.out.println("equip: " + o); if (card.isEquipping()) { card.unEquipCard(card.getEquipping().get(0)); }