Но важный нюанс: это не "±9". В коде штраф включается только когда игрок СТАРШЕ моба сверх порога. Если ты ниже моба — штрафа нет вообще.
Как это работает по коду:
diff = max(playerLvl - mobLvl - THRESHOLD, 0)
mod = 1 - 0.09 * diff // 9% за каждый “лишний” уровень
Объясняем:
🟠THRESHOLD = DEEPBLUE_DROP_MAXDIFF (для обычных мобов)
или DEEPBLUE_DROP_RAID_MAXDIFF (для рейдов).
🟠Если playerLvl ≤ mobLvl + THRESHOLD → diff = 0 → множитель = 1.0 (штрафа нет).
🟠Если playerLvl > mobLvl + THRESHOLD → за каждый уровень сверх — −9% к шансу (пока не упрётся в 0).
Примеры при THRESHOLD = 9:
🟢Моб 60, ты 60…69 → штрафа нет (×1.00).
🟢Ты 70 (на 10 выше) → diff=1 → ×0.91.
🟢Ты 74 (на 14 выше) → diff=5 → ×0.55.
🟢Ты 81 (на 21 выше) → diff=12 → ×0.00 (дропа не будет).
Важный факт. В rollRewards(...) - (распределение дропа) diff считается от topDamager - тот кто наносит монстру больше всего урона, того множители и штрафы применяются (включая руны, ПА и т.д), точно так же и штраф для SWEEP.