public OrTriggeredAbility(Zone zone, Effect effect, boolean optional, String ruleTrigger, TriggeredAbility... abilities) { super(zone, effect, optional); this.triggeredAbilities = abilities; this.ruleTrigger = ruleTrigger; this.triggeringAbilities = new ArrayList<>(); for (TriggeredAbility ability : triggeredAbilities) { //Remove useless data ability.getEffects().clear(); } }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.sourceId)) { this.getEffects().clear(); this.addEffect(new LoseLifeSourceControllerEffect(event.getAmount())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getPlayerId().equals(this.controllerId)) { this.getEffects().clear(); this.addEffect(new LoseLifeTargetEffect(event.getAmount())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getPlayerId().equals(this.controllerId)) { this.getEffects().clear(); this.addEffect(new LoseLifeTargetEffect(event.getAmount())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(this.controllerId).contains(event.getPlayerId())) { this.getEffects().clear(); this.addEffect(new GainLifeEffect(event.getAmount())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (((DamagedEvent) event).isCombatDamage()) { if (event.getSourceId().equals(getSourceId())) { this.getEffects().clear(); this.addEffect(new DrawCardSourceControllerEffect(1)); return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getSourceId().equals(this.sourceId) && ((DamagedEvent) event).isCombatDamage()) { this.getEffects().clear(); this.addEffect(new DrawCardSourceControllerEffect(event.getAmount())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { DamagedEvent damageEvent = (DamagedEvent) event; if (damageEvent.isCombatDamage()) { if (event.getSourceId().equals(this.sourceId)) { this.getEffects().clear(); this.getEffects().add(new GainLifeEffect(damageEvent.getAmount())); return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.getControllerId())) { this.getEffects().clear(); this.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance(event.getAmount()))); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { DamagedEvent damageEvent = (DamagedEvent) event; if (damageEvent.isCombatDamage()) { if (event.getSourceId().equals(this.sourceId)) { this.getEffects().clear(); this.getEffects().add(new GainLifeEffect(damageEvent.getAmount())); return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getPlayerId().equals(controllerId) && event.getAmount() > 0) { this.getEffects().clear(); this.addEffect(new AddCountersSourceEffect(CounterType.BLOOD.createInstance(event.getAmount()))); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { DamagedEvent damageEvent = (DamagedEvent) event; if (damageEvent.isCombatDamage()) { if (event.getSourceId().equals(this.sourceId)) { this.getEffects().clear(); this.getEffects().add(new GainLifeEffect(damageEvent.getAmount())); return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.getControllerId()) && event.getAmount() > 0) { this.getEffects().clear(); this.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(event.getAmount()))); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getSourceId().equals(this.sourceId) && ((DamagedPlayerEvent) event).isCombatDamage()) { this.getEffects().clear(); this.addEffect(new CreateTokenEffect(new EldraziSpawnToken(), event.getAmount())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { this.getEffects().clear(); Effect effect = new LoseLifeTargetEffect(2 * event.getAmount()); effect.setTargetPointer(new FixedTarget(event.getPlayerId())); this.addEffect(effect); return true; }
@Override public boolean checkTrigger(GameEvent event, Game game) { this.getEffects().clear(); if(event.getSourceId() != null && event.getSourceId().equals(this.getSourceId()) && event instanceof ManaEvent) { ManaEvent manaEvent = (ManaEvent) event; int total = manaEvent.getMana().getBlack() + manaEvent.getMana().getRed(); if (total > 0) { this.getEffects().add(new BoostSourceEffect(total, 0, Duration.EndOfTurn)); } return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (isControlledBy(event.getTargetId())) { getEffects().clear(); getEffects().add(new AddCountersSourceEffect(CounterType.P1P1.createInstance(event.getAmount()))); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && spell.isControlledBy(controllerId) && spell.isInstantOrSorcery()) { this.getEffects().clear(); this.addEffect(new BoostSourceEffect( spell.getConvertedManaCost(), 0, Duration.EndOfTurn )); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { Permanent permanent = game.getPermanent(event.getTargetId()); if (permanent.isControlledBy(getControllerId()) && permanent.isCreature() && (permanent.getId().equals(getSourceId()) || (permanent.getAbilities().contains(FlyingAbility.getInstance())))) { this.getEffects().clear(); this.addEffect(new GainLifeEffect(permanent.getPower().getValue())); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event; Permanent permanent = game.getPermanent(event.getSourceId()); if (damageEvent.isCombatDamage() && permanent != null && permanent.hasSubtype(SubType.VAMPIRE, game) && permanent.isControlledBy(controllerId)) { this.getEffects().clear(); AddCountersTargetEffect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); effect.setTargetPointer(new FixedTarget(permanent.getId())); this.addEffect(effect); return true; } return false; }