при включенном PreciseDropCalculation
int random = Rnd.get(L2DropData.MAX_CHANCE);
while (random < dropChance)
{
// Get the item quantity dropped
if (minCount < maxCount)
itemCount += Rnd.get(minCount, maxCount);
else if (minCount == maxCount)
itemCount += minCount;
else itemCount++;
// Prepare for next iteration if dropChance > L2DropData.MAX_CHANCE
dropChance -= L2DropData.MAX_CHANCE;
}
L2DropData.MAX_CHANCE = 1 000 000 (100%)
Возьмём для примера вешь с вероятностью дропа 70% (700 000) в количестве строго 1 , рейты x5.
1) На 1 входе while имеем random = от 1 до 1 000 000, dropChance = 700 000 * 5 = 3 500 000 - условие (random < dropChance) выполняется, игроку начисляется 1 итем, dropChance = dropChance -= L2DropData.MAX_CHANCE = 2 500 000
2) 1 000 000 < 2 500 000, игроку начисляется ещё 1 итем, dropChance = 1 500 000
3) 1 000 000 < 1 500 000, игроку начисляется ещё 1 итем, dropChance = 500 000
4) зависит от рандома. С вероятностью в 50% начислится ещё 1 итем.
Итого для итема с 70% дропом в количестве 1 шт. при рейте x1 составит 100% 3, а в половине случаев 4 при рейте x5