@Override public boolean apply(Permanent input, Game game) { Player owner = game.getPlayer(input.getOwnerId()); return owner != null && owner.getCommandersIds().contains(input.getId()); }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { for (UUID commanderId : controller.getCommandersIds()) { Permanent commander = game.getPermanent(commanderId); if (commander != null && commander.isControlledBy(source.getControllerId())) { return true; } } } return false; }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { List<Card> commandersInCommandZone = new ArrayList<>(1); for (UUID commanderId : controller.getCommandersIds()) { Card commander = game.getCard(commanderId); if (commander != null && game.getState().getZone(commander.getId()) == Zone.COMMAND) { commandersInCommandZone.add(commander); } } if (commandersInCommandZone.size() == 1) { controller.moveCards(commandersInCommandZone.get(0), Zone.HAND, source, game); } else if (commandersInCommandZone.size() == 2) { Card firstCommander = commandersInCommandZone.get(0); Card secondCommander = commandersInCommandZone.get(1); if (controller.chooseUse(Outcome.ReturnToHand, "Return which commander to hand?", null, firstCommander.getName(), secondCommander.getName(), source, game)) { controller.moveCards(firstCommander, Zone.HAND, source, game); } else { controller.moveCards(secondCommander, Zone.HAND, source, game); } } return true; } return false; } }
Player controller = game.getPlayer(getControllerId()); if (controller != null) { for (UUID commanderId : controller.getCommandersIds()) { Card commander = game.getCard(commanderId); if (commander != null) {
@Override public boolean apply(Game game, Ability source) { MageObjectReference spellRef = (MageObjectReference) this.getValue("StormSpellRef"); if (spellRef == null) { return false; } int stormCount = 0; Player player = game.getPlayer(source.getControllerId()); if (player == null) { return false; } stormCount = player.getCommandersIds().stream().map( (commanderId) -> (Integer) game.getState().getValue(commanderId + "_castCount") ).map((castCount) -> castCount).reduce(stormCount, Integer::sum); if (stormCount == 0) { return true; } Spell spell = (Spell) this.getValue("StormSpell"); if (spell == null) { return false; } game.informPlayers(spell.getLogName() + " will be copied " + stormCount + " time" + (stormCount > 1 ? "s" : "")); for (int i = 0; i < stormCount; i++) { spell.createCopyOnStack(game, source, source.getControllerId(), true); } return true; }
@Override protected boolean checkStateBasedActions() { for (Player player : getPlayers().values()) { for (UUID commanderId : player.getCommandersIds()) { CommanderInfoWatcher damageWatcher = getState().getWatcher(CommanderInfoWatcher.class, commanderId); if (damageWatcher == null) { continue; } for (Map.Entry<UUID, Integer> entrySet : damageWatcher.getDamageToPlayer().entrySet()) { if (entrySet.getValue() > 20) { Player opponent = getPlayer(entrySet.getKey()); if (opponent != null && !opponent.hasLost() && player.isInGame()) { opponent.lost(this); } } } } } return super.checkStateBasedActions(); }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { Player player = game.getPlayer(source.getControllerId()); if (player == null) { return false; } if (abilityToModify instanceof SpellAbility) { if (abilityToModify.isControlledBy(source.getControllerId())) { Spell spell = (Spell) game.getStack().getStackObject(abilityToModify.getId()); if (spell != null) { return player.getCommandersIds().contains(spell.getSourceId()); } } } return false; }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.MANA_PAID) { if (event.getData() != null && event.getData().equals(originalId)) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null) { Card card = spell.getCard(); if (card != null) { for (UUID playerId : game.getPlayerList()) { Player player = game.getPlayer(playerId); if (player != null) { if (player.getCommandersIds().contains(card.getId())) { commanderId.add(card.getId()); break; } } } } } } } }
if (spell != null && spell.isCreature()) { Player controller = game.getPlayer(getControllerId()); if (controller != null && controller.getCommandersIds() != null && !controller.getCommandersIds().isEmpty()) { if (spell.getAbilities().contains(ChangelingAbility.getInstance())) { for (UUID cmdr : controller.getCommandersIds()) { MageObject commander = game.getObject(cmdr); if (commander != null) { SubType sType = spellSubs.next(); if (sType.getSubTypeSet() == SubTypeSet.CreatureType) { for (UUID cmdr : controller.getCommandersIds()) { MageObject commander = game.getObject(cmdr); if (commander != null && (commander.hasSubtype(sType, game) || commander.getAbilities().contains(ChangelingAbility.getInstance()))) {
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Player player = game.getPlayer(controllerId); Card card = player.getHand().get(ability.getSourceId(), game); if (card == null && commander && player.getCommandersIds().contains(ability.getSourceId())) { for (CommandObject coj : game.getState().getCommand()) { if (coj != null && coj.getId().equals(ability.getSourceId())) { card = game.getCard(ability.getSourceId()); break; } } } if (card != null) { Cards cards = new CardsImpl(card); player.revealCards("Ninjutsu", cards, game); paid = true; return paid; } return false; }
Choice choice = new ChoiceImpl(); choice.setMessage("Pick a mana color"); for (UUID commanderId : controller.getCommandersIds()) { Card commander = game.getCard(commanderId); if (commander != null) {
this.hand = player.getHand().copy(); this.graveyard = player.getGraveyard().copy(); this.commandersIds = player.getCommandersIds(); this.abilities = player.getAbilities().copy(); this.counters = player.getCounters().copy();
if (player != null) { if (player.getSideboard().isEmpty()) { // needed for restart game of e.g. Karn Liberated for (UUID commanderId : player.getCommandersIds()) { Card commander = this.getCard(commanderId); if (commander != null) {
&& !player.getSideboard().contains(card.getId()) if (player.getCommandersIds().contains(card.getId())) { game.addCommander(new Commander(card)); game.setZone(card.getId(), Zone.COMMAND);
for (UUID commanderId : controller.getCommandersIds()) { if (game.getState().getZone(commanderId) == Zone.COMMAND) { Card card = game.getCard(commanderId);
Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { for (UUID commanderId : controller.getCommandersIds()) { if (game.getState().getZone(commanderId) == Zone.COMMAND) { Card commander = game.getCard(commanderId);
for (UUID commanderId : controller.getCommandersIds()) { if (game.getState().getZone(commanderId) == Zone.COMMAND) { Card card = game.getCard(commanderId);
for (UUID commanderId : controller.getCommandersIds()) { if (game.getState().getZone(commanderId) == Zone.COMMAND) { Card card = game.getCard(commanderId);