예제 #1
0
  @Override
  public boolean apply(Game game, Ability source) {
    Set<UUID> opponents = game.getOpponents(source.getControllerId());
    for (UUID opponentId : opponents) {
      Player player = game.getPlayer(opponentId);
      Target target = new TargetControlledPermanent(filter);

      if (target.canChoose(player.getId(), game)) {
        while (!target.isChosen() && target.canChoose(player.getId(), game)) {
          player.choose(Outcome.Sacrifice, target, source.getSourceId(), game);
        }

        Permanent permanent = game.getPermanent(target.getFirstTarget());

        if (permanent != null) {
          permanent.sacrifice(source.getSourceId(), game);
        }
      }
    }
    return true;
  }
예제 #2
0
  @Override
  public boolean apply(Game game, Ability source) {
    List<Card> chosen = new ArrayList<>();

    for (UUID playerId : game.getPlayerList()) {
      Player player = game.getPlayer(playerId);

      Target target1 =
          new TargetControlledPermanent(1, 1, new FilterControlledArtifactPermanent(), true);
      Target target2 =
          new TargetControlledPermanent(1, 1, new FilterControlledCreaturePermanent(), true);
      Target target3 =
          new TargetControlledPermanent(1, 1, new FilterControlledEnchantmentPermanent(), true);
      Target target4 =
          new TargetControlledPermanent(1, 1, new FilterControlledLandPermanent(), true);

      if (target1.canChoose(player.getId(), game)) {
        while (player.canRespond()
            && !target1.isChosen()
            && target1.canChoose(player.getId(), game)) {
          player.chooseTarget(Outcome.Benefit, target1, source, game);
        }
        Permanent artifact = game.getPermanent(target1.getFirstTarget());
        if (artifact != null) {
          chosen.add(artifact);
        }
        target1.clearChosen();
      }

      if (target2.canChoose(player.getId(), game)) {
        while (player.canRespond()
            && !target2.isChosen()
            && target2.canChoose(player.getId(), game)) {
          player.chooseTarget(Outcome.Benefit, target2, source, game);
        }
        Permanent creature = game.getPermanent(target2.getFirstTarget());
        if (creature != null) {
          chosen.add(creature);
        }
        target2.clearChosen();
      }

      if (target3.canChoose(player.getId(), game)) {
        while (player.canRespond()
            && !target3.isChosen()
            && target3.canChoose(player.getId(), game)) {
          player.chooseTarget(Outcome.Benefit, target3, source, game);
        }
        Permanent enchantment = game.getPermanent(target3.getFirstTarget());
        if (enchantment != null) {
          chosen.add(enchantment);
        }
        target3.clearChosen();
      }

      if (target4.canChoose(player.getId(), game)) {
        while (player.canRespond()
            && !target4.isChosen()
            && target4.canChoose(player.getId(), game)) {
          player.chooseTarget(Outcome.Benefit, target4, source, game);
        }
        Permanent land = game.getPermanent(target4.getFirstTarget());
        if (land != null) {
          chosen.add(land);
        }
        target4.clearChosen();
      }
    }

    for (Permanent permanent : game.getBattlefield().getAllActivePermanents()) {
      if (!chosen.contains(permanent)) {
        permanent.sacrifice(source.getSourceId(), game);
      }
    }
    return true;
  }