예제 #1
0
 /**
  * Этот метод рассчитывает количество дропнутых вещей в зависимости от рейтов. <br>
  * <br>
  * Следует учесть, что контроль за верхним пределом вещей в квестах, в которых нужно набить
  * определенное количество предметов не осуществляется. <br>
  * <br>
  * Ни один из передаваемых параметров не должен быть равен 0
  *
  * @param min минимальное количество при рейтах 1х
  * @param max максимальное количество при рейтах 1х
  * @param calcChance шанс при рейтах 1х, в процентах
  * @return количество вещей для дропа, может быть 0
  */
 public int rollDrop(int min, int max, double calcChance) {
   if ((calcChance <= 0) || (min <= 0) || (max <= 0)) {
     return 0;
   }
   int dropmult = 1;
   calcChance *= getRateQuestsDrop();
   if (getQuest().getParty() > Quest.PARTY_NONE) {
     Player player = getPlayer();
     if (player.getParty() != null) {
       calcChance *=
           Config.ALT_PARTY_BONUS[
               player.getParty().getMemberCountInRange(player, Config.ALT_PARTY_DISTRIBUTION_RANGE)
                   - 1];
     }
   }
   if (calcChance > 100) {
     if ((int) Math.ceil(calcChance / 100) <= (calcChance / 100)) {
       calcChance = Math.nextUp(calcChance);
     }
     dropmult = (int) Math.ceil(calcChance / 100);
     calcChance = calcChance / dropmult;
   }
   return Rnd.chance(calcChance) ? Rnd.get(min * dropmult, max * dropmult) : 0;
 }