/** * Этот метод рассчитывает количество дропнутых вещей в зависимости от рейтов. <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; }
public int calculateLevelDiffForDrop(int mobLevel, int player) { if (!Config.DEEPBLUE_DROP_RULES) { return 0; } return Math.max(player - mobLevel - Config.DEEPBLUE_DROP_MAXDIFF, 0); }