Search in sources :

Example 11 with PreventDamageEvent

use of mage.game.events.PreventDamageEvent in project mage by magefree.

the class TemperPreventDamageTargetEffect method replaceEvent.

@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
    if (!initialized) {
        amount = dVal.calculate(game, source, this);
        initialized = true;
    }
    GameEvent preventEvent = new PreventDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), event.getAmount(), ((DamageEvent) event).isCombatDamage());
    if (!game.replaceEvent(preventEvent)) {
        int prevented = 0;
        if (event.getAmount() >= this.amount) {
            int damage = amount;
            event.setAmount(event.getAmount() - amount);
            this.used = true;
            game.fireEvent(new PreventedDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), damage));
            prevented = damage;
        } else {
            int damage = event.getAmount();
            event.setAmount(0);
            amount -= damage;
            game.fireEvent(new PreventedDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), damage));
            prevented = damage;
        }
        // add counters now
        if (prevented > 0) {
            Permanent targetPermanent = game.getPermanent(source.getTargets().getFirstTarget());
            if (targetPermanent != null) {
                targetPermanent.addCounters(CounterType.P1P1.createInstance(prevented), source.getControllerId(), source, game);
                game.informPlayers("Temper: Prevented " + prevented + " damage ");
                game.informPlayers("Temper: Adding " + prevented + " +1/+1 counters to " + targetPermanent.getName());
            }
        }
    }
    return false;
}
Also used : Permanent(mage.game.permanent.Permanent) TargetCreaturePermanent(mage.target.common.TargetCreaturePermanent) GameEvent(mage.game.events.GameEvent) PreventedDamageEvent(mage.game.events.PreventedDamageEvent) PreventDamageEvent(mage.game.events.PreventDamageEvent)

Example 12 with PreventDamageEvent

use of mage.game.events.PreventDamageEvent in project mage by magefree.

the class UnbreathingHordeEffect2 method replaceEvent.

@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
    boolean retValue = false;
    GameEvent preventEvent = new PreventDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), event.getAmount(), ((DamageEvent) event).isCombatDamage());
    int damage = event.getAmount();
    if (!game.replaceEvent(preventEvent)) {
        event.setAmount(0);
        game.fireEvent(new PreventedDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), damage));
        retValue = true;
    }
    Permanent permanent = game.getPermanent(source.getSourceId());
    if (permanent != null) {
        permanent.removeCounters(CounterType.P1P1.createInstance(), source, game);
    }
    return retValue;
}
Also used : Permanent(mage.game.permanent.Permanent) FilterCreaturePermanent(mage.filter.common.FilterCreaturePermanent) GameEvent(mage.game.events.GameEvent) PreventedDamageEvent(mage.game.events.PreventedDamageEvent) PreventDamageEvent(mage.game.events.PreventDamageEvent)

Example 13 with PreventDamageEvent

use of mage.game.events.PreventDamageEvent in project mage by magefree.

the class CandlesGlowPreventDamageTargetEffect method replaceEvent.

@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
    GameEvent preventEvent = new PreventDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), event.getAmount(), ((DamageEvent) event).isCombatDamage());
    if (!game.replaceEvent(preventEvent)) {
        int prevented;
        if (event.getAmount() >= this.amount) {
            int damage = amount;
            event.setAmount(event.getAmount() - amount);
            this.used = true;
            game.fireEvent(new PreventedDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), damage));
            prevented = damage;
        } else {
            int damage = event.getAmount();
            event.setAmount(0);
            amount -= damage;
            game.fireEvent(new PreventedDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), damage));
            prevented = damage;
        }
        // add live now
        if (prevented > 0) {
            Player controller = game.getPlayer(source.getControllerId());
            if (controller != null) {
                controller.gainLife(prevented, game, source);
                game.informPlayers("Candles' Glow: Prevented " + prevented + " damage ");
                game.informPlayers("Candles' Glow: " + controller.getLogName() + " gained " + prevented + "life");
            }
        }
    }
    return false;
}
Also used : Player(mage.players.Player) GameEvent(mage.game.events.GameEvent) PreventedDamageEvent(mage.game.events.PreventedDamageEvent) PreventDamageEvent(mage.game.events.PreventDamageEvent)

Example 14 with PreventDamageEvent

use of mage.game.events.PreventDamageEvent in project mage by magefree.

the class EnergyFieldEffect method replaceEvent.

@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
    GameEvent preventEvent = new PreventDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), event.getAmount(), ((DamageEvent) event).isCombatDamage());
    if (!game.replaceEvent(preventEvent)) {
        int damage = event.getAmount();
        event.setAmount(0);
        game.informPlayers("Damage has been prevented: " + damage);
        game.fireEvent(new PreventedDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), damage));
    }
    return false;
}
Also used : GameEvent(mage.game.events.GameEvent) PreventedDamageEvent(mage.game.events.PreventedDamageEvent) PreventDamageEvent(mage.game.events.PreventDamageEvent)

Example 15 with PreventDamageEvent

use of mage.game.events.PreventDamageEvent in project mage by magefree.

the class GideonsInterventionPreventAllDamageEffect method replaceEvent.

@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
    GameEvent preventEvent = new PreventDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), event.getAmount(), ((DamageEvent) event).isCombatDamage());
    if (!game.replaceEvent(preventEvent)) {
        int damage = event.getAmount();
        event.setAmount(0);
        game.informPlayers("Damage has been prevented: " + damage);
        game.fireEvent(new PreventedDamageEvent(event.getTargetId(), source.getSourceId(), source, source.getControllerId(), damage));
    }
    return false;
}
Also used : GameEvent(mage.game.events.GameEvent) PreventedDamageEvent(mage.game.events.PreventedDamageEvent) PreventDamageEvent(mage.game.events.PreventDamageEvent)

Aggregations

PreventDamageEvent (mage.game.events.PreventDamageEvent)24 PreventedDamageEvent (mage.game.events.PreventedDamageEvent)24 GameEvent (mage.game.events.GameEvent)23 Permanent (mage.game.permanent.Permanent)11 Player (mage.players.Player)5 TargetCreaturePermanent (mage.target.common.TargetCreaturePermanent)4 FilterCreaturePermanent (mage.filter.common.FilterCreaturePermanent)2 MageObject (mage.MageObject)1 PermanentsOnBattlefieldCount (mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount)1 CreaturesYouControlHint (mage.abilities.hint.common.CreaturesYouControlHint)1 CardsImpl (mage.cards.CardsImpl)1 FilterControlledCreaturePermanent (mage.filter.common.FilterControlledCreaturePermanent)1 DamageEvent (mage.game.events.DamageEvent)1 TargetCardInYourGraveyard (mage.target.common.TargetCardInYourGraveyard)1