public CreateDelayedTriggeredAbilityEffect(DelayedTriggeredAbility ability, boolean copyTargets, boolean initAbility) { super(ability.getEffects().isEmpty() ? Outcome.Detriment : ability.getEffects().get(0).getOutcome()); this.ability = ability; this.copyTargets = copyTargets; this.initAbility = initAbility; }
@Override public String getText(Mode mode) { if (staticText != null && !staticText.isEmpty()) { return staticText; } return "As {this} is turned face up, " + baseEffects.getText(mode); }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.sourceId) && ((DamagedCreatureEvent)event).isCombatDamage() ) { this.getEffects().get(0).setValue("damageAmount", 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.getSourceId())) { Permanent blocker = game.getPermanent(event.getSourceId()); if (filter.match(blocker, game)) { this.getEffects().setTargetPointer(new FixedTarget(blocker, game)); 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)) { this.getEffects().remove(0); int x = spell.getConvertedManaCost(); this.addEffect(new BoostSourceEffect(x,x, Duration.EndOfTurn)); this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); return true; } return false; }
public EmergeAbility(Card card, ManaCosts<ManaCost> emergeCost) { super(emergeCost, card.getName() + " with emerge", Zone.HAND, SpellAbilityType.BASE_ALTERNATE); this.getCosts().addAll(card.getSpellAbility().getCosts().copy()); this.getEffects().addAll(card.getSpellAbility().getEffects().copy()); this.getTargets().addAll(card.getSpellAbility().getTargets().copy()); this.timing = card.getSpellAbility().getTiming(); this.setRuleAtTheTop(true); this.emergeCost = emergeCost.copy(); }
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(); } }
public AsTurnedFaceUpEffect(final AsTurnedFaceUpEffect effect) { super(effect); this.baseEffects = effect.baseEffects.copy(); this.optional = effect.optional; }
public void addEffect(Effect effect) { if (effect != null) { executingEffects.add(effect); } }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getSourceId().equals(this.getSourceId())) { UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(sourceId, game); if (defendingPlayerId != null) { // the id has to be set here because the source can be leave battlefield getEffects().forEach((effect) -> { effect.setValue("defendingPlayerId", defendingPlayerId); }); return true; } } return false; }
public Effects copy() { return new Effects(this); }
@Override public String getRule() { StringBuilder sb = new StringBuilder(); sb.append("Enchant ").append(targetName); if (!this.getEffects().isEmpty()) { sb.append(". ").append(super.getRule()); } return sb.toString(); } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { StackObject stackObject = game.getStack().getStackObject(source.getId()); Spell spell = (Spell) stackObject; if (spell == null) { return false; } spell = spell.copySpell(source.getControllerId()); // Remove Epic effect from the spell Effect epicEffect = null; for (Effect effect : spell.getSpellAbility().getEffects()) { if (effect instanceof EpicEffect) { epicEffect = effect; break; } } spell.getSpellAbility().getEffects().remove(epicEffect); DelayedTriggeredAbility ability = new AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility(new EpicPushEffect(spell, rule), Duration.EndOfGame, false); game.addDelayedTriggeredAbility(ability, source); game.addEffect(new EpicReplacementEffect(), source); return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.controllerId)) { Permanent permanent = game.getPermanent(event.getSourceId()); if (permanent != null) { this.getEffects().get(0).setTargetPointer(new FixedTarget(permanent, game)); return true; } } return false; }
@Override public String getText(Mode mode) { if (!staticText.isEmpty()) { return staticText; } StringBuilder sb = new StringBuilder("Flip a coin. If you win the flip, ").append(executingEffectsWon.getText(mode)); if (!executingEffectsLost.isEmpty()) { sb.append(". If you lose the flip, ").append(executingEffectsLost.getText(mode)); } return sb.toString(); }
@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; }