@Override public boolean apply(Game game, Ability source) { for (UUID playerId : game.getPlayers().keySet()) { Player player = game.getPlayer(playerId); if (player != null) { player.damage((Integer) this.getValue("damage"), source.getSourceId(), game, false, true); } } return true; }
protected UUID pickChoosingPlayer() { UUID[] players = getPlayers().keySet().toArray(new UUID[0]); UUID playerId; while (!hasEnded()) { playerId = players[RandomUtil.nextInt(players.length)]; Player player = getPlayer(playerId); if (player != null && player.isInGame()) { fireInformEvent(state.getPlayer(playerId).getLogName() + " won the toss"); return player.getId(); } } logger.debug("Game was not possible to pick a choosing player. GameId:" + getId()); return null; }
@Override public boolean apply(Game game, Ability source) { Plane cPlane = game.getState().getCurrentPlane(); if (cPlane == null) { return false; } if (!cPlane.getName().equalsIgnoreCase("Plane - Trail of the Mage-Rings")) { return false; } for (UUID playerId : game.getPlayers().keySet()) { Player player = game.getPlayer(playerId); if (player != null) { for (Card card : player.getHand().getCards(filter, game)) { addReboundAbility(card, source, game); } for (Iterator<StackObject> iterator = game.getStack().iterator(); iterator.hasNext();) { StackObject stackObject = iterator.next(); if (stackObject instanceof Spell && stackObject.isControlledBy(source.getControllerId())) { Spell spell = (Spell) stackObject; Card card = spell.getCard(); if (card != null) { addReboundAbility(card, source, game); } } } } } return true; }
private void controlForMoneyVote(Player controller, Game game, Ability source) { List<Permanent> chosenCards = new ArrayList<>(); for (UUID playerId : moneyVoters.keySet()) { FilterPermanent filter = new FilterPermanent("permanent owned by " + game.getPlayer(playerId).getName()); filter.add(new OwnerIdPredicate(playerId)); Target target = new TargetPermanent(filter); target.setNotTarget(true); if (controller.choose(Outcome.GainControl, target, source.getSourceId(), game)) { Permanent targetPermanent = game.getPermanent(target.getFirstTarget()); if (targetPermanent != null) chosenCards.add(targetPermanent); } } for (Permanent permanent : chosenCards) { ContinuousEffect effect = new ExpropriateControlEffect(controller.getId()); effect.setTargetPointer(new FixedTarget(permanent.getId())); game.addEffect(effect, source); game.informPlayers(controller.getName() + " gained control of " + permanent.getName() + " owned by " + game.getPlayer(permanent.getOwnerId()).getName()); } }