ТРЕБУЕТ ПРОВЕРКИ
fEnchantmentChanceMult - определяет множитель шанса успеха при создании предметов с эффектами.
Значение по умолчанию: 3
Известная формула:
Enchant Chance = ((pcEnchantSkill + INT * 0.2 + LUC * 0.1) - (fEffectCostMult * fEnchantmentChanceMult)).
pcEnchantSkill - навык зачарования
INT - интеллект
LUC - удача
fEffectCostMult - итоговая стоимость
Так же есть фрагмет кода из OpenMW
y = 0
z = [ ]
enchantPoints = 0
for each effect in enchantment:
if enchantment is constant effect:
if effect.magnitudeMin > 1 or effect.magnitudeMax > 1 or effect.radius > 1:
effect.duration = int(fEnchantmentConstantDurationMult)
else:
effect.duration = 100
x = 0.5 * (max(1, effect.magnitudeMin) + max(1, effect.magnitudeMax))
x *= 0.1 * effect.magicEffect.baseMagickaCost
x *= effect.duration # note difference from spellmaking
x += 0.05 * max(1, spell.radius) * effect.magicEffect.baseMagickaCost
y += x * fEffectCostMult
y = max(1, y)
if effect.rangeType & CAST_TARGET: y *= 1.5
enchantPoints += int(y)
z[effect.order] = int(pcEnchantSkill - y * fEnchantmentChanceMult)
# note enchantPoints not used for cost
cost of enchanting service = barterOffer(npc, y * fEnchantmentValueMult, buying)