@Override public void setSourceId(UUID sourceId) { for (Ability ability : this) { ability.setSourceId(sourceId); } }
@Override public void addAbility(Ability ability) { ability.setSourceId(playerId); this.abilities.add(ability); }
@Override public void addSubAbility(Ability ability) { if (subAbilities == null) { subAbilities = new ArrayList<>(); } ability.setSourceId(this.sourceId); ability.setControllerId(this.controllerId); subAbilities.add(ability); }
public void addAbility(Ability ability) { ability.setSourceId(id); abilites.add(ability); }
@Override public void setSourceId(UUID sourceId) { if (this.sourceId == null) { this.sourceId = sourceId; } else if (!(this instanceof MageSingleton)) { this.sourceId = sourceId; } if (subAbilities != null) { for (Ability subAbility : subAbilities) { subAbility.setSourceId(sourceId); } } for (Watcher watcher : watchers) { watcher.setSourceId(sourceId); } }
@Override public void addAbility(Ability ability) { ability.setSourceId(this.getId()); abilities.add(ability); }
/** * Public in order to support adding abilities to SplitCardHalf's * * @param ability */ public void addAbility(Ability ability) { ability.setSourceId(this.getId()); abilities.add(ability); for (Ability subAbility : ability.getSubAbilities()) { abilities.add(subAbility); } }
/** * 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); } } }
/** * @param emblem * @param sourceObject * @param toPlayerId controller and owner of the emblem */ @Override public void addEmblem(Emblem emblem, MageObject sourceObject, UUID toPlayerId) { Emblem newEmblem = emblem.copy(); newEmblem.setSourceObject(sourceObject); newEmblem.setControllerId(toPlayerId); newEmblem.assignNewId(); newEmblem.getAbilities().newId(); for (Ability ability : newEmblem.getAbilities()) { ability.setSourceId(newEmblem.getId()); } state.addCommandObject(newEmblem); }
if (this.isLand()) { Ability ability = new PlayLandAbility(name); ability.setSourceId(this.getId()); abilities.add(ability); } else {
newPlane.getAbilities().newId(); for (Ability ability : newPlane.getAbilities()) { ability.setSourceId(newPlane.getId());