Search in sources :

Example 1 with SearchEffect

use of mage.abilities.effects.SearchEffect in project mage by magefree.

the class ComputerPlayer6 method resolve.

protected void resolve(SimulationNode2 node, int depth, Game game) {
    StackObject stackObject = game.getStack().getFirst();
    if (stackObject instanceof StackAbility) {
        // AI hint for search effects (calc all possible cards for best score)
        SearchEffect effect = getSearchEffect((StackAbility) stackObject);
        if (effect != null && stackObject.getControllerId().equals(playerId)) {
            Target target = effect.getTarget();
            if (!target.doneChosing()) {
                for (UUID targetId : target.possibleTargets(stackObject.getSourceId(), stackObject.getControllerId(), game)) {
                    Game sim = game.copy();
                    StackAbility newAbility = (StackAbility) stackObject.copy();
                    SearchEffect newEffect = getSearchEffect(newAbility);
                    newEffect.getTarget().addTarget(targetId, newAbility, sim);
                    sim.getStack().push(newAbility);
                    SimulationNode2 newNode = new SimulationNode2(node, sim, depth, stackObject.getControllerId());
                    node.children.add(newNode);
                    newNode.getTargets().add(targetId);
                    logger.trace("Sim search -- node#: " + SimulationNode2.getCount() + " for player: " + sim.getPlayer(stackObject.getControllerId()).getName());
                }
                return;
            }
        }
    }
    stackObject.resolve(game);
    if (stackObject instanceof StackAbility) {
        game.getStack().remove(stackObject, game);
    }
    game.applyEffects();
    game.getPlayers().resetPassed();
    game.getPlayerList().setCurrent(game.getActivePlayerId());
}
Also used : SearchEffect(mage.abilities.effects.SearchEffect) Target(mage.target.Target) Game(mage.game.Game) StackObject(mage.game.stack.StackObject) StackAbility(mage.game.stack.StackAbility)

Example 2 with SearchEffect

use of mage.abilities.effects.SearchEffect in project mage by magefree.

the class ComputerPlayer2 method resolve.

protected void resolve(SimulationNode node, Game game) {
    StackObject ability = game.getStack().pop();
    if (ability instanceof StackAbility) {
        SearchEffect effect = getSearchEffect((StackAbility) ability);
        if (effect != null && ability.getControllerId().equals(playerId)) {
            Target target = effect.getTarget();
            if (!target.doneChosing()) {
                for (UUID targetId : target.possibleTargets(ability.getSourceId(), ability.getControllerId(), game)) {
                    Game sim = game.copy();
                    StackAbility newAbility = (StackAbility) ability.copy();
                    SearchEffect newEffect = getSearchEffect((StackAbility) newAbility);
                    newEffect.getTarget().addTarget(targetId, newAbility, sim);
                    sim.getStack().push(newAbility);
                    SimulationNode newNode = new SimulationNode(node, sim, ability.getControllerId());
                    node.children.add(newNode);
                    newNode.getTargets().add(targetId);
                    logger.debug(indent(node.depth) + "simulating search -- node#: " + SimulationNode.getCount() + "for player: " + sim.getPlayer(ability.getControllerId()).getName());
                }
                return;
            }
        }
    }
    logger.debug(indent(node.depth) + "simulating resolve ");
    ability.resolve(game);
    game.applyEffects();
    game.getPlayers().resetPassed();
    game.getPlayerList().setCurrent(game.getActivePlayerId());
}
Also used : SearchEffect(mage.abilities.effects.SearchEffect) Target(mage.target.Target) Game(mage.game.Game) StackObject(mage.game.stack.StackObject) StackAbility(mage.game.stack.StackAbility)

Aggregations

SearchEffect (mage.abilities.effects.SearchEffect)2 Game (mage.game.Game)2 StackAbility (mage.game.stack.StackAbility)2 StackObject (mage.game.stack.StackObject)2 Target (mage.target.Target)2