Набрать 27 уровней с 0-27 проще (требует меньше опыта), чем с 8-35, не забывайте про это. Я как большой любитель математики сделал бы честно - запомнил, сколько опыта ГГ имеет и потом столько же бы вернул.
Сделать это можно так:
let iCurrentLevel := player.GetLevel ; текущий уровень
let iNextLevel := iCurrentLevel + 1 ; следующий уровень
let iXPForNextLevelTotal := 25 * (3 * iNextLevel + 2) * (iNextLevel - 1) ; сколько всего нужно опыта для получения следующего уровня с 0
let iXPForNextLevel := GetXPForNextLevel ; сколько опыта нужно для получения следующего уровня с текущего значения
let iPlayerXP := iXPForNextLevelTotal - iXPForNextLevel ; текущее количество опыта у ГГ
Естественно, некоторые этапы можно объединить, чтобы выкинуть лишние переменные. Хотя и необязательно. Возврат опыта, кстати, может работать неверно, если используется RewardXP. Там похоже не указанное число даётся, а число + модификаторы, если есть. Видимо от перков или ещё чего, не в курсе. Я как бы сам про это не знал, пока не увидел, что существует RewardXPExact. Может быть с этой функцией получится лучше.