/** * Used for adding abilities that exist permanent on cards/permanents and * are not only gained for a certain time (e.g. until end of turn). * * @param ability * @param attachedTo */ public void addAbility(Ability ability, Card attachedTo) { addAbility(ability, null, attachedTo); }
public void addDesignation(Designation designation, Game game, UUID controllerId) { getDesignations().add(designation); for (Ability ability : designation.getAbilities()) { ability.setControllerId(controllerId); addAbility(ability, designation.getId(), null); } }
public void addCard(Card card) { setZone(card.getId(), Zone.OUTSIDE); for (Ability ability : card.getAbilities()) { addAbility(ability, card); } }
public void addCommandObject(CommandObject commandObject) { getCommand().add(commandObject); setZone(commandObject.getId(), Zone.COMMAND); for (Ability ability : commandObject.getAbilities()) { addAbility(ability, commandObject); } }
/** * Adds the ability to continuous or triggered abilities * * @param attachedTo * @param ability * @param copyAbility copies non MageSingleton abilities before adding to * state */ public void addOtherAbility(Card attachedTo, Ability ability, boolean copyAbility) { Ability newAbility; if (ability instanceof MageSingleton || !copyAbility) { newAbility = ability; } else { newAbility = ability.copy(); } newAbility.setSourceId(attachedTo.getId()); newAbility.setControllerId(attachedTo.getOwnerId()); if (!cardState.containsKey(attachedTo.getId())) { cardState.put(attachedTo.getId(), new CardState()); } cardState.get(attachedTo.getId()).addAbility(newAbility); addAbility(newAbility, attachedTo.getId(), attachedTo); }
/** * @param ability * @param game */ @Override public void addAbility(Ability ability, Game game) { if (!abilities.containsKey(ability.getId())) { Ability copyAbility = ability.copy(); copyAbility.setControllerId(controllerId); copyAbility.setSourceId(objectId); if (game != null) { game.getState().addAbility(copyAbility, this); } abilities.add(copyAbility); } }
@Override public void addAbility(Ability ability, UUID sourceId, Game game, boolean createNewId) { if (!abilities.containsKey(ability.getId())) { Ability copyAbility = ability.copy(); if (createNewId) { copyAbility.newId(); // needed so that source can get an ability multiple times (e.g. Raging Ravine) } copyAbility.setControllerId(controllerId); copyAbility.setSourceId(objectId); game.getState().addAbility(copyAbility, sourceId, this); abilities.add(copyAbility); } else if (!createNewId) { // triggered abilities must be added to the state().triggerdAbilities // still as long as the prev. permanent is known to the LKI (e.g. Showstopper) so gained dies triggered ability will trigger if (!game.getBattlefield().containsPermanent(this.getId())) { Ability copyAbility = ability.copy(); copyAbility.setControllerId(controllerId); copyAbility.setSourceId(objectId); game.getState().addAbility(copyAbility, sourceId, this); } } }
@Override protected void init(UUID choosingPlayerId) { Ability ability = new SimpleStaticAbility(Zone.COMMAND, new InfoEffect("Vanguard effects")); for (UUID playerId : state.getPlayerList(startingPlayerId)) { Player player = getPlayer(playerId); if (player != null) { CardInfo cardInfo = CardRepository.instance.findCard("Momir Vig, Simic Visionary"); addEmblem(new MomirEmblem(), cardInfo.getCard(), playerId); } } getState().addAbility(ability, null); super.init(choosingPlayerId); state.getTurnMods().add(new TurnMod(startingPlayerId, PhaseStep.DRAW)); }
@Override protected void init(UUID choosingPlayerId) { Ability ability = new SimpleStaticAbility(Zone.COMMAND, new InfoEffect("Vanguard effects")); for (UUID playerId : state.getPlayerList(startingPlayerId)) { Player player = getPlayer(playerId); if (player != null) { CardInfo cardInfo = CardRepository.instance.findCard("Momir Vig, Simic Visionary"); addEmblem(new MomirEmblem(), cardInfo.getCard(), playerId); } } getState().addAbility(ability, null); super.init(choosingPlayerId); state.getTurnMods().add(new TurnMod(startingPlayerId, PhaseStep.DRAW)); }
addAbility(sub, sourceId, attachedTo);
/** * Adds suspend to a card that does not have it regularly e.g. Epochrasite * or added by Jhoira of the Ghitu * * @param card * @param source * @param game */ public static void addSuspendTemporaryToCard(Card card, Ability source, Game game) { SuspendAbility ability = new SuspendAbility(0, null, card, false); ability.setSourceId(card.getId()); ability.setControllerId(card.getOwnerId()); game.getState().addOtherAbility(card, ability); SuspendBeginningOfUpkeepInterveningIfTriggeredAbility ability1 = new SuspendBeginningOfUpkeepInterveningIfTriggeredAbility(); ability1.setSourceId(card.getId()); ability1.setControllerId(card.getOwnerId()); game.getState().addOtherAbility(card, ability1); game.getState().addAbility(ability1, source.getSourceId(), card); SuspendPlayCardAbility ability2 = new SuspendPlayCardAbility(); ability2.setSourceId(card.getId()); ability2.setControllerId(card.getOwnerId()); game.getState().addOtherAbility(card, ability2); game.getState().addAbility(ability2, source.getSourceId(), card); }
this.getState().addAbility(ability, null); super.init(choosingPlayerId); if (startingPlayerSkipsDraw) {
this.getState().addAbility(ability, null); super.init(choosingPlayerId); if (startingPlayerSkipsDraw) {