public void setActiveMode(UUID modeId) { if (selectedModes.contains(modeId)) { this.currentMode = get(modeId); } }
private boolean hasTargets(SpellAbility spellAbility, Game game) { if (spellAbility.getModes().getSelectedModes().size() > 1) { for (UUID modeId : spellAbility.getModes().getSelectedModes()) { Mode mode = spellAbility.getModes().get(modeId); if (!mode.getTargets().isEmpty()) { return true; } } return false; } else { return !spellAbility.getTargets().isEmpty(); } }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { Mode mode = abilityToModify.getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetUUID : target.getTargets()) { if (targetUUID.equals(source.getSourceId())) { return true; } } } } } return false; }
/** * Adds a mode as selected. If the mode is already selected, it copies the * mode and adds it to the duplicate modes * * @param modeId */ private void addSelectedMode(UUID modeId) { if (selectedModes.contains(modeId) && eachModeMoreThanOnce) { Mode duplicateMode = get(modeId).copy(); duplicateMode.setRandomId(); modeId = duplicateMode.getId(); duplicateModes.put(modeId, duplicateMode); } this.selectedModes.add(modeId); }
public void addAbility(Ability ability, MageObject attachedTo) { if (ability instanceof StaticAbility) { for (UUID modeId : ability.getModes().getSelectedModes()) { Mode mode = ability.getModes().get(modeId); for (Effect effect : mode.getEffects()) { if (effect instanceof ContinuousEffect) { addEffect((ContinuousEffect) effect, ability); } } } } else if (ability instanceof TriggeredAbility) { this.triggers.add((TriggeredAbility) ability, attachedTo); } }
public Mode getMode(Card card) { return getSpellAbility(card).getModes().get(mode); }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { Mode mode = abilityToModify.getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetId : target.getTargets()) { if (targetId.equals(source.getSourceObject(game).getId())) { return true; } } } } } return false; }
public Mode getMode(Spell spell) { return getSpellAbility(spell).getModes().get(mode); }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { if (abilityToModify.isControlledBy(source.getControllerId())) { for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { Mode mode = abilityToModify.getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetUUID : target.getTargets()) { if (targetUUID.equals(source.getSourceId())) { return true; } } } } } } return false; }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) { for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { Mode mode = abilityToModify.getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetUUID : target.getTargets()) { if (targetUUID.equals(source.getSourceId())) { return true; } } } } } } return false; }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (!(abilityToModify instanceof SpellAbility) || !game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) { return false; } for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { Mode mode = abilityToModify.getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetUUID : target.getTargets()) { Permanent permanent = game.getPermanent(targetUUID); if (permanent != null && permanent.getId().equals(source.getSourceId())) { return true; } } } } return false; }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) { for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { Mode mode = abilityToModify.getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetUUID : target.getTargets()) { Player player = game.getPlayer(targetUUID); if (player != null && player.getId().equals(source.getControllerId())) { return true; } } } } } } return false; }
@Override public boolean apply(ObjectPlayer<StackObject> input, Game game) { UUID controllerId = input.getPlayerId(); if (controllerId == null) { return false; } for (UUID modeId : input.getObject().getStackAbility().getModes().getSelectedModes()) { Mode mode = input.getObject().getStackAbility().getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetId : target.getTargets()) { if (controllerId.equals(targetId)) { return true; } } } } return false; }
private boolean checkSpell(Spell spell, Game game) { if (spell != null) { SpellAbility sa = spell.getSpellAbility(); for (UUID modeId : sa.getModes().getSelectedModes()) { Mode mode = sa.getModes().get(modeId); for (Target target : mode.getTargets()) { if (!target.isNotTarget() && target.getTargets().contains(this.getSourceId())) { return true; } } for (Effect effect : mode.getEffects()) { for (UUID targetId : effect.getTargetPointer().getTargets(game, sa)) { if (targetId.equals(this.getSourceId())) { return true; } } } } } return false; }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) { for (UUID modeId : abilityToModify.getModes().getSelectedModes()) { Mode mode = abilityToModify.getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetUUID : target.getTargets()) { Permanent permanent = game.getPermanent(targetUUID); if (permanent != null && permanent.isControlledBy(source.getControllerId())) { return true; } } } } } } return false; }
@Override public boolean apply(ObjectSourcePlayer<MageObject> input, Game game) { StackObject object = game.getStack().getStackObject(input.getObject().getId()); if (object != null) { for (UUID modeId : object.getStackAbility().getModes().getSelectedModes()) { Mode mode = object.getStackAbility().getModes().get(modeId); for (Target target : mode.getTargets()) { if (target.getTargets().size() == 1) { // only one player targeted Player player = game.getPlayer(target.getFirstTarget()); return player != null; } } } } return false; }
@Override public boolean checkInterveningIfClause(Game game) { StackObject stackObject = null; for (Effect effect : this.getEffects()) { stackObject = game.getStack().getStackObject(effect.getTargetPointer().getFirst(game, this)); } if (stackObject != null) { int numberOfTargets = 0; for (UUID modeId : stackObject.getStackAbility().getModes().getSelectedModes()) { Mode mode = stackObject.getStackAbility().getModes().get(modeId); for (Target target : mode.getTargets()) { numberOfTargets += target.getTargets().size(); } } return numberOfTargets == 1; } return false; }
@Override public boolean checkInterveningIfClause(Game game) { StackObject stackObject = null; for (Effect effect : this.getEffects()) { stackObject = game.getStack().getStackObject(effect.getTargetPointer().getFirst(game, this)); } if (stackObject != null) { int numberOfTargets = 0; for (UUID modeId : stackObject.getStackAbility().getModes().getSelectedModes()) { Mode mode = stackObject.getStackAbility().getModes().get(modeId); for (Target target : mode.getTargets()) { numberOfTargets += target.getTargets().size(); } } return numberOfTargets == 1; } return false; }
@Override public boolean apply(ObjectSourcePlayer<MageObject> input, Game game) { StackObject object = game.getStack().getStackObject(input.getObject().getId()); if (object != null) { for (UUID modeId : object.getStackAbility().getModes().getSelectedModes()) { Mode mode = object.getStackAbility().getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetId : target.getTargets()) { Player player = game.getPlayer(targetId); return player != null; } } } } return false; }
@Override public boolean apply(ObjectSourcePlayer<MageObject> input, Game game) { StackObject object = game.getStack().getStackObject(input.getObject().getId()); if (object != null) { for (UUID modeId : object.getStackAbility().getModes().getSelectedModes()) { Mode mode = object.getStackAbility().getModes().get(modeId); for (Target target : mode.getTargets()) { for (UUID targetId : target.getTargets()) { Permanent permanent = game.getPermanentOrLKIBattlefield(targetId); if (permanent != null && targetFilter.match(permanent, input.getSourceId(), input.getPlayerId(), game)) { return true; } } } } } return false; }