Пример #1
0
  public List<ContinuousEffect> getLayeredEffects(Game game) {
    List<ContinuousEffect> layerEffects = new ArrayList<>();
    for (ContinuousEffect effect : layeredEffects) {
      switch (effect.getDuration()) {
        case WhileOnBattlefield:
        case WhileOnStack:
        case WhileInGraveyard:
          HashSet<Ability> abilities = layeredEffects.getAbility(effect.getId());
          for (Ability ability : abilities) {
            // If e.g. triggerd abilities (non static) created the effect, the ability must not be
            // in usable zone (e.g. Unearth giving Haste effect)
            if (!(ability instanceof StaticAbility) || ability.isInUseableZone(game, null, null)) {
              layerEffects.add(effect);
              break;
            }
          }
          break;
        default:
          layerEffects.add(effect);
      }
    }

    updateTimestamps(layerEffects);

    Collections.sort(layerEffects, sorter);
    return layerEffects;
  }