Package mage.game.stack

Examples of mage.game.stack.StackObject


    @Override
    public boolean applies(GameEvent event, Ability source, Game game) {
        if (event.getType() == GameEvent.EventType.TARGET) {
            Card targetCard = game.getCard(event.getTargetId());
            StackObject stackObject = (StackObject) game.getStack().getStackObject(event.getSourceId());
            if (targetCard != null && stackObject != null) {
                Zone zone = game.getState().getZone(targetCard.getId());
                if (zone != null && zone.equals(Zone.GRAVEYARD)) {
                    return true;
                }
View Full Code Here


        return new TrickbindCounterEffect(this);
    }

    @Override
    public boolean apply(Game game, Ability source) {
        StackObject stackObject = game.getStack().getStackObject(source.getFirstTarget());
        if(stackObject != null && game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game)) {
            TrickbindCantActivateEffect effect = new TrickbindCantActivateEffect();
            effect.setTargetPointer(new FixedTarget(stackObject.getSourceId()));
            game.getContinuousEffects().addEffect(effect, source);
            return true;
        }
        return false;
    }
View Full Code Here

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

        StackObject stackObject = game.getStack().getStackObject(objectId);
        if (stackObject != null && !game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.COUNTER, objectId, sourceId, stackObject.getControllerId()))) {
            if (stackObject instanceof Spell) {
                game.rememberLKI(objectId, Zone.STACK, (Spell) stackObject);
                game.getStack().remove(stackObject);
                if (!((Spell) stackObject).isCopiedSpell() && filter.match(stackObject, source.getControllerId(), game)) {
                    MageObject card = game.getObject(stackObject.getSourceId());
                    if (card instanceof Card) {
                        ((Card) card).putOntoBattlefield(game, Zone.STACK, source.getSourceId(), source.getControllerId());
                    }
                } else {
                    stackObject.counter(sourceId, game);
                }
                game.fireEvent(GameEvent.getEvent(GameEvent.EventType.COUNTERED, objectId, sourceId, stackObject.getControllerId()));
                return true;
            }
        }
        return false;
    }
View Full Code Here

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

        StackObject stackObject = game.getStack().getStackObject(id);
        return stackObject != null && stackObject.getStackAbility() != null && stackObject.getStackAbility().getAbilityType().equals(AbilityType.ACTIVATED);
    }
View Full Code Here

         * If the number of Faeries you control has decreased enough in that time to make the target
         * illegal, Spellstutter Sprite's ability will be countered (and the targeted spell will
         * resolve as normal).
         */
        int numberFaeries = game.getState().getBattlefield().countAll(SpellstutterSprite.filter, source.getControllerId(), game);
        StackObject stackObject = game.getStack().getStackObject(source.getFirstTarget());
        if (stackObject.getManaCost().convertedManaCost() <= numberFaeries) {
            if (game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game)) {
                return true;
            }
        }
        return false;
View Full Code Here

        return new MysticGenesisEffect(this);
    }

    @Override
    public boolean apply(Game game, Ability source) {
        StackObject stackObject = game.getStack().getStackObject(targetPointer.getFirst(game, source));
        if (stackObject != null && game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game)) {
            if ( stackObject != null ) {
                int cmc = stackObject.getManaCost().convertedManaCost();
                if ( cmc > 0 ) {
                    MysticGenesisOozeToken oozeToken = new MysticGenesisOozeToken();
                    oozeToken.getPower().initValue(cmc);
                    oozeToken.getToughness().initValue(cmc);
                    oozeToken.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId());
View Full Code Here

    }

    @Override
    public boolean apply(Game game, Ability source) {
        boolean countered = false;
        StackObject stackObject = game.getStack().getStackObject(targetPointer.getFirst(game, source));
        if (game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game)) {
            countered = true;
        }
        if (stackObject != null) {
            Player controller = game.getPlayer(stackObject.getControllerId());
            if (controller != null) {
                int cardsCount = Math.min(2, controller.getLibrary().size());
                for (int i = 0; i < cardsCount; i++) {
                    Card card = controller.getLibrary().removeFromTop(game);
                    if (card != null) {
View Full Code Here

    }

    @Override
    public boolean apply(Game game, Ability source) {
       
        StackObject spell = null;
        for(StackObject objet : game.getStack()){
            if(objet instanceof Spell && objet.getSourceId().equals(source.getSourceId())){
                spell = objet;
            }
        }
        if(spell != null){
            for(UUID uuid : game.getPlayerList()){
                Player player = game.getPlayer(uuid);
                if(player.chooseUse(Outcome.Detriment, "Discard three cards to counter " + spell.getName() + "?", game)){
                    DiscardTargetCost cost = new DiscardTargetCost(new TargetCardInHand(3, 3, new FilterCard()));
                    if(cost.pay(source, game, source.getSourceId(), uuid, false)){
                        game.informPlayers(player.getName() + " discards 3 cards to counter " + spell.getName() + ".");
                        game.getStack().counter(spell.getId(), source.getSourceId(), game);
                        return true;
                    }
                }
            }
            return true;
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)) {
                getEffects().get(0).setTargetPointer(new FixedTarget(sourceControllerId));
                return true;
View Full Code Here

        public Filter getFilter() {
            return filter;
        }

        private boolean targetsMyPermanent(UUID id, UUID controllerId, Game game) {
            StackObject spell = game.getStack().getStackObject(id);
            if (spell != null) {
                Ability ability = spell.getStackAbility();
                for (Target target : ability.getTargets()) {
                    for (UUID permanentId : target.getTargets()) {
                        Permanent permanent = game.getPermanent(permanentId);
                        if (permanent != null && permanent.getControllerId().equals(controllerId)) {
                            return true;
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.