mage.abilities.Ability.getModes()方法的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(9.8k)|赞(0)|评价(0)|浏览(80)

本文整理了Java中mage.abilities.Ability.getModes()方法的一些代码示例,展示了Ability.getModes()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Ability.getModes()方法的具体详情如下:
包路径:mage.abilities.Ability
类名称:Ability
方法名:getModes

Ability.getModes介绍

暂无

代码示例

代码示例来源:origin: magefree/mage

@Override
public Modes getModes() {
  return ability.getModes();
}

代码示例来源:origin: magefree/mage

@Override
public boolean applies(Ability abilityToModify, Ability source, Game game) {
  if (abilityToModify.getSourceId().equals(source.getSourceId()) && (abilityToModify instanceof SpellAbility)) {
    return abilityToModify.getModes().getSelectedModes().size() > 1;
  }
  return false;
}

代码示例来源:origin: magefree/mage

@Override
public boolean apply(Game game, Ability source, Ability abilityToModify) {
  int numCosts = abilityToModify.getModes().getSelectedModes().size() - 1;
  for (int i = 0; i < numCosts; i++) {
    abilityToModify.addCost(cost.copy());
  }
  return true;
}

代码示例来源:origin: magefree/mage

private static boolean canChooseTargetAbility(Ability ability, Game game, UUID controllerId) {
  int found = 0;
  for (Mode mode : ability.getModes().values()) {
    if (mode.getTargets().canChoose(ability.getSourceId(), ability.getControllerId(), game)) {
      found++;
      if (ability.getModes().isEachModeMoreThanOnce()) {
        return true;
      }
      if (found >= ability.getModes().getMinModes()) {
        return true;
      }
    }
  }
  return false;
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

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);
  }
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

private void addModeOptions(List<Ability> options, Ability option, Game game) {
  // TODO: Support modal spells with more than one selectable mode
  for (Mode mode : option.getModes().values()) {
    Ability newOption = option.copy();
    newOption.getModes().getSelectedModes().clear();
    newOption.getModes().getSelectedModes().add(mode.getId());
    newOption.getModes().setActiveMode(mode);
    if (!newOption.getTargets().getUnchosen().isEmpty()) {
      if (!newOption.getManaCosts().getVariableCosts().isEmpty()) {
        addVariableXOptions(options, newOption, 0, game);
      } else {
        addTargetOptions(options, newOption, 0, game);
      }
    } else if (!newOption.getCosts().getTargets().getUnchosen().isEmpty()) {
      addCostTargetOptions(options, newOption, 0, game);
    } else {
      options.add(newOption);
    }
  }
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@Override
public void changeModes(Ability ability, Game game) {
  if (ability instanceof SpellAbility) {
    Player player = game.getPlayer(controllerId);
    if (player != null) {
      this.resetCosts();
      if (additionalCost != null) {
        if (additionalCost.canPay(ability, ability.getSourceId(), ability.getControllerId(), game)
            && player.chooseUse(Outcome.Benefit, "Pay " + additionalCost.getText(false) + " ?", ability, game)) {
          additionalCost.activate();
          ability.getModes().setAdditionalCost(this);
          ability.getModes().setMinModes(2);
          ability.getModes().setMaxModes(2);
        }
      }
    }
  }
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@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;
}

代码示例来源:origin: magefree/mage

@Override
public void adjustCosts(Ability ability, Game game) {
  if (ability instanceof SimpleActivatedAbility && ability.getModes().size() == 3) {
    Permanent sourcePermanent = game.getPermanent(ability.getSourceId());
    if (sourcePermanent != null) {
      int amount = sourcePermanent.getCounters(game).getCount(CounterType.P1P1);
      if (amount > 0) {
        for (VariableCost cost : ability.getManaCostsToPay().getVariableCosts()) {
          if (cost instanceof VariableManaCost) {
            ((VariableManaCost) cost).setMaxX(amount);
            break;
          }
        }
      }
    }
  }
}

代码示例来源:origin: magefree/mage

private static int isRemoval(Card card) {
  if (card.isEnchantment() || card.isInstant() || card.isSorcery()) {
    for (Ability ability : card.getAbilities()) {
      for (Effect effect : ability.getEffects()) {
        if (isEffectRemoval(card, ability, effect) == 1) {
          return 1;
        }
      }
      for (Mode mode : ability.getModes().values()) {
        for (Effect effect : mode.getEffects()) {
          if (isEffectRemoval(card, ability, effect) == 1) {
            return 1;
          }
        }
      }
    }
  }
  return 0;
}

代码示例来源:origin: magefree/mage

public CaptiveAudience(UUID ownerId, CardSetInfo setInfo) {
  super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{5}{B}{R}");
  // Captive Audience enters the battlefield under the control of an opponent of your choice.
  this.addAbility(new EntersBattlefieldAbility(new CaptiveAudienceETBEffect()));
  // At the beginning of your upkeep, choose one that hasn't been chosen —
  // • Your life total becomes 4.
  Ability ability = new BeginningOfUpkeepTriggeredAbility(
      new SetPlayerLifeSourceEffect(4), TargetController.YOU, false
  );
  ability.getModes().setEachModeOnlyOnce(true);
  // • Discard your hand.
  ability.addMode(new Mode(new DiscardHandControllerEffect()));
  // • Each opponent creates five 2/2 black Zombie creature tokens.
  ability.addMode(new Mode(new CaptiveAudienceCreateTokensEffect()));
  this.addAbility(ability);
}

相关文章