Package mage.game.stack

Examples of mage.game.stack.StackObject


    public boolean canTarget(UUID id, Ability source, Game game) {
        if (source != null && source.getSourceId().equals(id)) {
            return false;
        }

        StackObject stackObject = game.getStack().getStackObject(id);
        if (stackObject.getStackAbility() != null && stackObject.getStackAbility() instanceof TriggeredAbility) {
            return true;
        }
        return false;
    }
View Full Code Here


        return filter;
    }

    @Override
    public boolean canTarget(UUID id, Ability source, Game game) {
        StackObject stackObject = game.getStack().getStackObject(id);
        if (stackObject != null) {
            return filter.match(stackObject, game);
        }
        return false;
    }
View Full Code Here

            UUID sourceControllerId = null;
            Permanent permanent = game.getPermanent(event.getSourceId());
            if (permanent != null) {
                sourceControllerId = permanent.getControllerId();
            } else {
                StackObject sourceStackObject = game.getStack().getStackObject(event.getSourceId());
                if (sourceStackObject != null) {
                    sourceControllerId = sourceStackObject.getControllerId();
                }
            }
            if (event.getTargetId().equals(controllerId) && game.getOpponents(controllerId).contains(sourceControllerId)) {
                return true;
            }
View Full Code Here

    @Override
    public boolean applies(GameEvent event, Ability source, Game game) {
        switch (event.getType()) {
            case CREATE_TOKEN:
                StackObject spell = game.getStack().getStackObject(event.getSourceId());
                if (spell != null && spell.getControllerId().equals(source.getControllerId())) {
                    event.setAmount(event.getAmount() * 2);
                }
        }
        return false;
    }
View Full Code Here

        throw new UnsupportedOperationException("Not supported."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public boolean canTarget(UUID id, Ability source, Game game) {
        StackObject stackObject = game.getStack().getStackObject(id);
        if ((stackObject instanceof Spell) || (stackObject instanceof StackAbility)) {
            return true;
        }
        return false;
    }
View Full Code Here

        return fInstance;
    }

    @Override
    public boolean apply(Game game, Ability source) {
        StackObject sourceSpell = game.getStack().getStackObject(source.getSourceId());
        if (sourceSpell != null && sourceSpell.getStackAbility().getTargets().isChosen()) {
            StackObject objectToCounter = game.getStack().getStackObject(sourceSpell.getStackAbility().getTargets().getFirstTarget());
            if (objectToCounter != null) {
                for (Target target : objectToCounter.getStackAbility().getTargets()) {
                    for (UUID targetId : target.getTargets()) {
                        Permanent targetedPermanent = game.getPermanentOrLKIBattlefield(targetId);
                        if (targetedPermanent != null && filter.match(targetedPermanent, sourceSpell.getSourceId(), sourceSpell.getControllerId(), game)) {
                            return true;
                        }
View Full Code Here

    }

    @Override
    public boolean replaceEvent(GameEvent event, Ability source, Game game) {
        UUID eventObject = ((ZoneChangeEvent) event).getTargetId();
        StackObject card = game.getStack().getStackObject(eventObject);
        if (card != null) {
            if (card instanceof Spell) {
                game.rememberLKI(card.getId(), Zone.STACK, (Spell) card);
            }
            if (card instanceof Card && eventObject.equals(cardId)) {
                ((Card) card).moveToExile(null, null, source.getSourceId(), game);
                return true;
            }
View Full Code Here

        staticText = "Counter target spell if you control more creatures than that spell's controller";
    }

    @Override
    public boolean apply(Game game, Ability source) {
        StackObject stackObject = game.getStack().getStackObject(source.getFirstTarget());
        if (stackObject != null) {
            if (game.getBattlefield().countAll(filter, source.getControllerId(), game) > game.getBattlefield().countAll(filter, stackObject.getControllerId(), game)) {
                return game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game);
            }
            return true;
        }
        return false;
View Full Code Here

    @Override
    public boolean apply(Game game, Ability source) {
        UUID objectId = targetPointer.getFirst(game, source);
        UUID sourceId = source.getSourceId();

        StackObject stackObject = game.getStack().getStackObject(objectId);
        if (stackObject != null && !game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.COUNTER, objectId, sourceId, stackObject.getControllerId()))) {
            game.rememberLKI(objectId, Zone.STACK, stackObject);
            game.getStack().remove(stackObject);
            if (!((Spell) stackObject).isCopiedSpell()) {
                MageObject card = game.getObject(stackObject.getSourceId());
                if (card instanceof Card) {
                    ((Card) card).moveToZone(Zone.EXILED, sourceId, game, true);
                    ContinuousEffect effect = new KheruSpellsnatcherCastFromExileEffect();
                    effect.setTargetPointer(new FixedTarget(card.getId()));
                    game.addEffect(effect, source);
                }
            }
            game.fireEvent(GameEvent.getEvent(GameEvent.EventType.COUNTERED, objectId, sourceId, stackObject.getControllerId()));
            return true;
        }
        return false;
    }
View Full Code Here

        return new BrowbeatDrawEffect(this);
    }

    @Override
    public boolean apply(Game game, Ability source) {
        StackObject spell = null;
        for(StackObject object : game.getStack()){
            if(object instanceof Spell && object.getSourceId().equals(source.getSourceId())){
                spell = object;
            }
        }
        if(spell != null){
            boolean drawCards = true;
            for(UUID uuid : game.getPlayerList()){
                Player player = game.getPlayer(uuid);
                if(player != null && player.chooseUse(Outcome.Detriment, "Have " + spell.getName() + " deal 5 damage to you?", game)){
                    drawCards = false;
                    player.damage(5, source.getSourceId(), game, false, true);
                    game.informPlayers(player.getName() + " has " + spell.getName() + " deal 5 to him or her");
                }
            }
            if (drawCards) {
                UUID targetPlayer = getTargetPointer().getFirst(game, source);
                if (targetPlayer != null) {
View Full Code Here

TOP

Related Classes of mage.game.stack.StackObject

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.