log.error(prefix+"Reach ability id: " + ReachAbility.getInstance().getId()); log.error(prefix+"Intimidate ability id: " + IntimidateAbility.getInstance().getId()); log.error(prefix);
@Override public boolean applies(Permanent permanent, Ability source, Game game) { if (permanent.hasAbility(FlyingAbility.getInstance().getId(), game) || permanent.hasAbility(ReachAbility.getInstance().getId(), game)) { return false; } return game.getOpponents(source.getControllerId()).contains(permanent.getControllerId()); }
@Override public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { if (blocker.getAbilities().containsKey(FlyingAbility.getInstance().getId()) || blocker.getAbilities().containsKey(ReachAbility.getInstance().getId())) { return true; } return false; }
@Override public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { return blocker.getAbilities().containsKey(FlyingAbility.getInstance().getId()) || blocker.getAbilities().containsKey(ReachAbility.getInstance().getId()) || (null != game.getContinuousEffects().asThough(blocker.getId(), AsThoughEffectType.BLOCK_DRAGON, source, blocker.getControllerId(), game) && attacker.hasSubtype(SubType.DRAGON, game)); }
&& !blocker.getAbilities().containsKey(ReachAbility.getInstance().getId())) { safeToAttack = true;