private void applyContinuousEffect(ContinuousEffect effect, Layer currentLayer, Game game) { Set<Ability> abilities = layeredEffects.getAbility(effect.getId()); for (Ability ability : abilities) { //effect.apply(currentLayer, SubLayer.NA, ability, game); if (isAbilityStillExists(game, ability, effect)) { effect.apply(currentLayer, SubLayer.NA, ability, game); } } }
@Override public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { if (!initDone) { // if simpleStaticAbility, init won't be called init(source, game); } boolean conditionState = condition.apply(game, source); if (conditionState) { return effect.apply(layer, sublayer, source, game); } else if (otherwiseEffect != null) { return otherwiseEffect.apply(layer, sublayer, source, game); } if (!conditionState && effect.getDuration() == Duration.OneUse) { used = true; } if (!conditionState && effect.getDuration() == Duration.Custom) { this.discard(); } return false; }
@Override public boolean apply(Game game, Ability source) { if (condition == null && baseCondition != null) { condition = baseCondition; } boolean conditionState = condition.apply(game, source); if (conditionState) { effect.setTargetPointer(this.targetPointer); return effect.apply(game, source); } else if (otherwiseEffect != null) { otherwiseEffect.setTargetPointer(this.targetPointer); return otherwiseEffect.apply(game, source); } if (!conditionState && effect.getDuration() == Duration.OneUse) { used = true; } if (!conditionState && effect.getDuration() == Duration.Custom) { this.discard(); } return false; }
Set<Ability> abilities = layeredEffects.getAbility(effect.getId()); for (Ability ability : abilities) { effect.apply(Layer.CopyEffects_1, SubLayer.NA, ability, game); Set<Ability> abilities = layeredEffects.getAbility(effect.getId()); for (Ability ability : abilities) { effect.apply(Layer.ControlChangingEffects_2, SubLayer.NA, ability, game); effect.apply(Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, ability, game); done = false; entry.getKey().apply(Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, ability, game); done = false; for (Ability ability : abilities) { if (abilityActive(ability, game)) { effect.apply(Layer.PTChangingEffects_7, SubLayer.CharacteristicDefining_7a, ability, game); Set<Ability> abilities = layeredEffects.getAbility(effect.getId()); for (Ability ability : abilities) { effect.apply(Layer.PTChangingEffects_7, SubLayer.SetPT_7b, ability, game); Set<Ability> abilities = layeredEffects.getAbility(effect.getId()); for (Ability ability : abilities) { effect.apply(Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, ability, game); Set<Ability> abilities = layeredEffects.getAbility(effect.getId()); for (Ability ability : abilities) { effect.apply(Layer.PTChangingEffects_7, SubLayer.SwitchPT_e, ability, game);
@Override public boolean apply(Game game, Ability source) { if (game.getPermanent(source.getFirstTarget()) != null) { TargetPointer target = new FixedTarget(source.getFirstTarget()); ContinuousEffect effect = new GainControlTargetEffect(Duration.EndOfTurn); effect.setTargetPointer(target); game.addEffect(effect, source); effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); effect.setTargetPointer(target); game.addEffect(effect, source); Effect effect2 = new UntapTargetEffect(); effect2.setTargetPointer(target); effect2.apply(game, source); effect2 = new GoadTargetEffect(); effect2.setTargetPointer(target); effect.apply(game, source); return true; } return false; } }