@Override public void timerTimeout(Game game) { quit = true; timerTimeout = true; this.concede(game); game.informPlayers(getLogName() + " has run out of time, losing the match."); }
@Override public boolean apply(Game game, Ability source) { if (!game.isSimulation()) { game.informPlayers("The current turn ends"); } return game.endTurn(source); }
@Override public void quit(Game game) { quit = true; this.concede(game); logger.debug(getName() + " quits the match."); game.informPlayers(getLogName() + " quits the match."); }
@Override public boolean applies(GameEvent event, Ability source, Game game) { MageObject object = game.getObject(event.getSourceId()); if (object == null) { game.informPlayers("Couldn't find source of damage"); return false; } return event.getSourceId().equals(source.getSourceId()); }
private void turnsForTimeVote(int timeCount, Player controller, Game game, Ability source) { if (timeCount == 1) { game.informPlayers(controller.getName() + " will take an extra turn"); } else { game.informPlayers(controller.getName() + " will take " + timeCount + " extra turns"); } do { game.getState().getTurnMods().add(new TurnMod(source.getControllerId(), false)); timeCount--; } while (timeCount > 0); }
@Override public boolean applies(GameEvent event, Ability source, Game game) { MageObject object = game.getObject(event.getSourceId()); if (object == null) { game.informPlayers("Couldn't find source of damage"); return false; } return event.getSourceId().equals(this.getTargetPointer().getFirst(game, source)); }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (controller.flipCoin(source, game, true)) { game.informPlayers(controller.getLogName() + " got " + controller.gainLife(6, game, source)+ " live"); } } return false; }
@Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null) { int damage = (Integer)getValue("damage"); targetPlayer.discard(damage, false, source, game); game.informPlayers(targetPlayer.getLogName() + "discards " + damage + " card(s)"); return true; } return false; }
@Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source)); if (targetPlayer != null) { int damage = (Integer) getValue("damage"); targetPlayer.discard(damage, false, source, game); game.informPlayers(targetPlayer.getLogName() + "discards " + damage + " card(s)"); return true; } return false; }
@Override public void discardToMax(Game game) { if (hand.size() > this.maxHandSize) { if (!game.isSimulation()) { game.informPlayers(getLogName() + " discards down to " + this.maxHandSize + (this.maxHandSize == 1 ? " hand card" : " hand cards")); } discard(hand.size() - this.maxHandSize, null, game); } }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { Player player = game.getPlayer(event.getPlayerId()); MageObject sourceObject = game.getObject(source.getSourceId()); if (player != null && sourceObject != null) { game.informPlayers(sourceObject.getLogName() + ": Extra turn of " + player.getLogName() + " skipped"); } return true; }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { Player controller = game.getPlayer(event.getPlayerId()); if (controller != null && controller.chooseUse(outcome, "Skip draw card? (If you do, until your next turn, you can't be attacked except by creatures with flying and/or islandwalk)", source, game)) { game.informPlayers(controller.getLogName() + " skips their draw card action. Until their next turn, he or she can't be attacked except by creatures with flying and/or islandwalk"); game.addEffect(new CantAttackYouAllEffect(Duration.UntilYourNextTurn, notFlyingorIslandwalkCreatures), source); return true; } return false; }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { Player player = game.getPlayer(event.getPlayerId()); MageObject sourceObject = game.getObject(source.getSourceId()); if (player != null && sourceObject != null) { game.informPlayers(sourceObject.getLogName() + ": Extra turn of " + player.getLogName() + " skipped"); } return true; }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { Permanent knightOfTheHolyNimbus = game.getPermanent(event.getTargetId()); if (knightOfTheHolyNimbus != null && event.getAmount() == 0) { // 1=noRegen if (knightOfTheHolyNimbus.regenerate(source.getSourceId(), game)) { game.informPlayers(source.getSourceObject(game).getName() + " has been regenerated."); return true; } } return false; }
@Override public boolean apply(Game game, Ability source) { for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { if (permanent.isTransformable()) { permanent.transform(game); game.informPlayers(permanent.getName() + " transforms into " + permanent.getSecondCardFace().getName()); } } return true; }
@Override public void shuffleLibrary(Ability source, Game game) { if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.SHUFFLE_LIBRARY, playerId, playerId))) { this.library.shuffle(); if (!game.isSimulation()) { game.informPlayers(getLogName() + "'s library is shuffled"); } game.fireEvent(GameEvent.getEvent(GameEvent.EventType.LIBRARY_SHUFFLED, playerId, (source == null ? null : source.getSourceId()), playerId)); } }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { DamageEvent damageEvent = (DamageEvent) event; int damage = damageEvent.getAmount(); Permanent permanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); Player controller = game.getPlayer(source.getControllerId()); if (permanent != null && controller != null) { permanent.removeCounters(CounterType.ECHO.createInstance(damage), game); game.informPlayers(controller.getLogName() + ": " + damage + " damage replaced with " + permanent.getLogName()); } return true; }
@Override public ConditionalManaBuilder setMana(Mana mana, Ability source, Game game) { creatureType = ChooseCreatureTypeEffect.getChosenCreatureType(source.getSourceId(), game); Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = game.getObject(source.getSourceId()); if (controller != null && sourceObject != null) { game.informPlayers(controller.getLogName() + " produces " + mana.toString() + " with " + sourceObject.getLogName() + " (can only be spent to cast creatures of type " + creatureType + ")"); } return super.setMana(mana, source, game); }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE, source.getFirstTarget(), source.getSourceId(), source.getControllerId(), event.getAmount(), false); if (!game.replaceEvent(preventEvent)) { int damage = event.getAmount(); event.setAmount(0); game.informPlayers("Damage has been prevented: " + damage); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE, source.getFirstTarget(), source.getSourceId(), source.getControllerId(), damage)); } return false; }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE, source.getFirstTarget(), source.getSourceId(), source.getControllerId(), event.getAmount(), false); if (!game.replaceEvent(preventEvent)) { int damage = event.getAmount(); event.setAmount(0); game.informPlayers("Damage has been prevented: " + damage); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE, source.getFirstTarget(), source.getSourceId(), source.getControllerId(), damage)); } return false; }