@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
if (permanent.getId().equals(source.getFirstTarget())) {
Permanent blocker = game.getPermanent(source.getFirstTarget());
if (blocker != null && blocker.canBlock(source.getSourceId(), game)) {
Permanent attacker = game.getPermanent(source.getSourceId());
if (attacker != null) {
BlockedAttackerWatcher blockedAttackerWatcher = (BlockedAttackerWatcher) game.getState().getWatchers().get("BlockedAttackerWatcher");
if (blockedAttackerWatcher != null && blockedAttackerWatcher.creatureHasBlockedAttacker(attacker, blocker)) {
// has already blocked this turn, so no need to do again