From f4ee28d067cc33c7622ed134196a8af94236f771 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 7 Sep 2012 18:50:50 +0400 Subject: [PATCH] Enhanced combat tracing --- Mage/src/mage/util/trace/TraceUtil.java | 35 ++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Mage/src/mage/util/trace/TraceUtil.java b/Mage/src/mage/util/trace/TraceUtil.java index 681861c4186..2595aff126f 100644 --- a/Mage/src/mage/util/trace/TraceUtil.java +++ b/Mage/src/mage/util/trace/TraceUtil.java @@ -1,6 +1,10 @@ package mage.util.trace; +import mage.Constants; +import mage.MageObject; import mage.abilities.Ability; +import mage.abilities.StaticAbility; +import mage.abilities.effects.ContinuousEffectsList; import mage.abilities.effects.RestrictionEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReachAbility; @@ -111,12 +115,41 @@ public class TraceUtil { log.error(uuid+"Restriction effects:"); Ability ability = attacker.getAbilities().size() > 0 ? attacker.getAbilities().get(0) : null; - for (RestrictionEffect effect : game.getState().getContinuousEffects().getRestrictionEffects()) { + ContinuousEffectsList restrictionEffects = (ContinuousEffectsList) game.getContinuousEffects().getRestrictionEffects(); + for (RestrictionEffect effect : restrictionEffects) { log.error(uuid+" " + effect); log.error(uuid+" id=" + effect.getId()); log.error(uuid+" applies to attacker=" + effect.applies(attacker, ability, game)); log.error(uuid+" applies to blocker=" + effect.applies(blocker, ability, game)); } + + for (RestrictionEffect effect: restrictionEffects) { + ability = restrictionEffects.getAbility(effect.getId()); + if (!(ability instanceof StaticAbility) || ability.isInUseableZone(game, false)) { + log.error(uuid+" ability=" + ability + ", applies_to_attacker=" + effect.applies(attacker, ability, game)); + log.error(uuid+" ability=" + ability + ", applies_to_blocker=" + effect.applies(blocker, ability, game)); + } else { + boolean usable = ability.isInUseableZone(game, false); + log.error(uuid+" instanceof: " + (ability instanceof StaticAbility) + ", ability=" + ability); + log.error(uuid+" usable: " + usable + ", ability=" + ability); + if (!usable) { + Constants.Zone zone = ability.getZone(); + log.error(uuid+" zone: " + zone); + MageObject object = game.getObject(ability.getSourceId()); + log.error(uuid+" object: " + object); + if (object != null) { + log.error(uuid + " contains:" + object.getAbilities().contains(ability)); + } + Constants.Zone test = game.getState().getZone(ability.getSourceId()); + log.error(uuid+" test_zone: " + test); + } + } + } + log.error(uuid); } + + public static void trace(String msg) { + log.info(msg); + } }