Из констуктора натаскал по каждому эффекту у каждого ингредиента значения магнитуды, длительности и
стоимости (см. таблицу, лист 2). Пока получается следующее. У одинаковых по названию эффектов в
наборе ингредиентов, используемых для варки зелья, выбираются самые большие значения магнитуды и
длительности для каждого эффекта, который появится в зелье. Нужно знать, какой параметр: магнитуда
или длительность у эффекта подлежит обсчету при изменении пременных задаваемых величин - навыка
алхимии, перков и зачарования со шмота. Далее чтобы получить значение этого параметра эффекта,
получаемое при заданном размере навыка алхимии в зельях. Получил простую формулу.
Эффект зелья = (самая большая магнитуда или длительность) *(4 + 2*(навык алхимии)/100).
При отобрражении результата в игре дробная часть отбрасывается, но она работает при расчетах (Пример
- заклинания, у которых стоимость зависит от навыка. При касте часто создается впечатление, что они
кушают на 1 магии больше, поскольку игра обрезает дроби после запятой и у стоимости каста заклинания
и у оставшейся в наличии магии после каста).
Таким образом, если при навыке алхимии 50 смешать корень жарницы (магнитуда урона здоровью 200) и
красный горноцвет (2) , то выберем самую сильную магнитуду 200, подставим в формулу и получим
значение урона здоровью у зелья 1000. При навыке 100 - 1200. Зелья, основанные на корне жарницы,
будут всегда иметь величину урона здоровья, основанную на магнитуде 200, поскольку у корня жарницы
эта магнитуда самая большая.И никакие бойцовые рыбки с выдуманными коэффициентами (это я про сырость
информации на uesp.net) ничего тут уже изменить не смогут. Если параметр эффекта (магнитуда или
длительность) обсчету не подлежит, то берется просто самый большая цифра из предлагаемых вариантов.
Например, у повышения здоровья обсчитываемый параметр - магнитуда. У всех ингредиентов с этим
эффектом магнитуда и длительность одинаковы - 4 и 60, а вот у пальца великана 4 и 300.
Соответственно все зелья с эффектом повышения здоровья, включающие в себя палец великана, будут
иметь длительность повышения здоровья 300с вместо обычных 60с, поскольку при обсчете зелья будет
выбираться самый большой параметр для данного эффекта.
Теперь рассмотрим влияние перков на расчет.
Базовые перки 5/5. Тут все просто. Просто умножаем то, что получилось в предудущей формуле для
параметра эффекта, подлежащего расчету, на множитель с 6 градациями от 1 до 2 с шагом 0,2. Получится
множитель (1+N*0.2) , где N - количество вложеныых в перк очков.
Со следующим перком чуть посложнее. Он работает только для эффектов, у которых есть соответствующий
маркер - keyword. Но тут никаких сюрпризов. Обсчитываются эффекты восстановления здоровья, магии и
запаса сил без ограничений, даже если эти эффекты входят в состав яда

.Добавим множитель
(1+R*0,25) ,где R равно 1, если взят перк и обсчитывается эффект восстановления здоровья, магии или
запаса сил; иначе равен 0.
Следующие перки более сложные. Они срабатывает для эффекта при двух условиях. Первое условие - игра
проверяет, что получится на выходе - яд или зелье. Оно является взаимоисключающим - срабатывает либо
перк на яды, либо перк на зелье, но не оба сразу. Второе условие - наличие у эффекта
соответствующего маркера - keyword-а . С маркерами тут интуитивно понятно, но есть исключения.
Страх, бешенство и сопротивление ядам таких маркеров не имеют и по идее этими перками обсчитываться
не должны. Добавляется множитель (1 + M*0.25), где 1) для ядов M = 1, если взят соответствующий перк
и эффект имеет ядовитый маркер, иначе 0 ; 2) для зелий M = 1 , если взят другой соответствующий перк
и эффект имеет неядовитый маркер, иначе 0.
Ну и в конце все что получилось умножается на сумму эффектов зачарованных предметов Z (в %) .
Получаем:
Эффект зелья = (самая большая магнитуда или длительность)*(4 + 2*(навык алхимии)/100)*(1+N*0.2)*(1+R*0,25)*(1+M*0.25)*(1+Z/100).
Как видим, для расчета силы эффекта при взятых перках важным является определение, что у нас
получится в итоге, яд или зелье. Я уже писал, что можно предположить два варианта 1) по базовой
стоимости самого сильного эффекта в зелье. 2) по сумме базовых стоимостей всех положительных и всех
отрицательных эффектов в зелье. Везде вроде пишут только про первый вариант, на странице
алхимических эффектов uesp.net в том числе.
_______________________________
Теперь пытаюсь разобрать, что еще написано на uesp.net. Там похоже разница только в том, что вместо
2*(навык алхимии)/100) используется floor(Alchemy_Skill/5)*0.1. Почти то же самое. Оригинально, ни
за что бы не додумался. Зачем разработчикам отрубать дробную чаcть еще при расчете, они же делают
это обычно только при отображении результата? Но не из пальца же авторы высосали такую добавку к
формуле, значит была причина.
А вот в формуле на стоимость разобрался, вроде работает для невидимости с базовой стоимостью 100.
Хотя попробовал посчитать увеличение грузоподъемности на навыке алхимии 100, получилось значение раз
в 7 меньше, чем надо. 31 вместо 208 при учете, что базовая стоимость повышения веса в конструкторе
0,15.Что я сделал не так?
Gold_cost = floor( Base_Cost * pow(Magnitude, 1.1) * pow(Duration/10, 1.1) )
Где floor - округление в нижнюю сторону = отброс дробной части, а pow это power - возведение в
степень 1,1 . Base_Cost - из таблицы с эффектами в констукторе - не надо лезть в каждый эффект
отдельно, все видно и так.
Значит надо будет её использовать два раза. Первый раз без учета перков (интересно профильных на
яд/зелья или всех, что-то мне подсказывает, что всех, но надо бы проверить, вдруг на самом деле перк
"целитель" перетянет часть ядов в зелья), чтобы выявить самый сильный эффект и разобраться, что
получится:зелье или яд. Второй раз с учетом всего, чтобы сложив со стоимостью остальных эффектов
получить стоимость всего зелья. Формула муторная. Придется сначала вычислять первый множитель, потом
второй, затем если ни один не равен 0 вычислять их произведение, иначе брать то что осталось. И
результату отрубать хвост - отбрасывать дробную часть.
Для списка эффектов потребуется кроме названия еще следующее. 1) Флаг , какой параметр: магнитуда
или длительность будут обсчитываться в зависимости от навыка, может даже в каком-нибудь эффекте
нужно обсчитывать оба параметра, но навскидку не помню такого. 2) Флаг
Harmful(ядовитый),Beneficial(неядовитый)или 0 (нет ни того ни другого для эффектов Страх, бешенство
и сопротивление ядам) 3) базовая стоимость из конструктора.
По таблице алхимических эффектов на uesp.net предупреждаю, что в констукторе у меня дела обстоят не
совсем так (см лист 2 моей таблицы). Например, длительность эффекта урон здоровью (не затяжного)
может быть как 0, так и 1. А длительность повышения здоровья у пальца великана не 60 а 300, что
отражено только на странице про этот палец, а не в самой таблице.Также смущают эти множители на
эффекты у разных ингредиентов. Там явно что-то не учтено. При забивании данных по магнитуде и
длительности я бы рекомендовал не пользоваться базовым значением и множителями, как в таблице на
uesp,тем более, что там похоже есть ошибки-недоработки. Магнитуду и длительность в конструкторе
можно ставить какую угодно, в результате для коэффициента может получиться нечто неудоброваримое,
вроде дроби 7/6 в десятичном представлении, надежнее забивать магнитуду и длительность отдельно для
каждого эффекта у каждого ингредиента. Иначе придется в формулу добавлять округление получаемого
значения, чтобы добиться правильного числа, но тут уже на вкус программиста

.
Чуть не забыл. При отображении стоимости зелья нужно сначала сложить стоимости эффектов, а потом уже
отбрасывать дробную часть, иначе результат может получиться немного меньше, чем надо.
А мне еще остается подумать почему формула расчета стоимости не сработала для повышения веса, и
какую основу на самом деле имеют эти множители для стоимости на uesp.