@Override
                public void resolve() {
                    CardList wolves = AllZoneUtil.getPlayerCardsInPlay(card.getController());
                    wolves = wolves.getType("Wolf");

                    wolves = wolves.filter(new CardListFilter() {
                        public boolean addCard(Card c) {
                            return c.isUntapped() && c.isCreature();
                        }
                    });

                    final Card target = getTargetCard();

                    if (wolves.size() == 0)
                        return;

                    if (!(CardFactoryUtil.canTarget(card, target) && AllZoneUtil.isCardInPlay(target)))
                        return;

                    for (Card c : wolves) {
                        c.tap();
                        target.addDamage(c.getNetAttack(), c);
                    }

                    if (target.getController().isHuman()) {    // Human choose spread damage
                        for (int x = 0; x < target.getNetAttack(); x++) {
                            AllZone.getInputControl().setInput(CardFactoryUtil.MasteroftheWildHunt_input_targetCreature(this, wolves, new Command() {
                                private static final long serialVersionUID = -328305150127775L;

                                public void execute() {
                                    getTargetCard().addDamage(1, target);
                                    AllZone.getGameAction().checkStateEffects();
                                }
                            }));
                        }
                    } else {        // AI Choose spread Damage
                        CardList damageableWolves = wolves.filter(new CardListFilter() {
                            public boolean addCard(Card c) {
                                return (c.predictDamage(target.getNetAttack(), target, false) > 0);
                            }
                        });

                        if (damageableWolves.size() == 0)    // don't bother if I can't damage anything
                            return;

                        CardList wolvesLeft = damageableWolves.filter(new CardListFilter() {
                            public boolean addCard(Card c) {
                                return !c.hasKeyword("Indestructible");
                            }
                        });

                        for (int i = 0; i < target.getNetAttack(); i++) {
                            wolvesLeft = wolvesLeft.filter(new CardListFilter() {
                                public boolean addCard(Card c) {
                                    return c.getKillDamage() > 0 && (c.getKillDamage() <= target.getNetAttack()
                                            || target.hasKeyword("Deathtouch"));
                                }
                            });

                            // Kill Wolves that can be killed first
                            if (wolvesLeft.size() > 0) {
                                Card best = CardFactoryUtil.AI_getBestCreature(wolvesLeft);
                                best.addDamage(1, target);
                                if (best.getKillDamage() <= 0 || target.hasKeyword("Deathtouch")) {
                                    wolvesLeft.remove(best);
                                }
                            } else {
                                // Add -1/-1s to Random Indestructibles
                                if (target.hasKeyword("Infect") || target.hasKeyword("Wither")) {
                                    CardList indestructibles = damageableWolves.filter(new CardListFilter() {
                                        public boolean addCard(Card c) {
                                            return c.hasKeyword("Indestructible");
                                        }
                                    });
                                    indestructibles.shuffle();
                                    indestructibles.get(0).addDamage(1, target);
                                }

                                // Then just add Damage randomnly

                                else {
                                    damageableWolves.shuffle();
                                    wolves.get(0).addDamage(1, target);
                                }
                            }
                        }
                    }
                }