diff --git a/apps/openmw/mwlua/stats.cpp b/apps/openmw/mwlua/stats.cpp index 4257a90e84..c6492c1ec2 100644 --- a/apps/openmw/mwlua/stats.cpp +++ b/apps/openmw/mwlua/stats.cpp @@ -604,14 +604,13 @@ namespace MWLua skillT["attribute"] = sol::readonly_property([](const ESM::Skill& rec) -> std::string { return ESM::Attribute::indexToRefId(rec.mData.mAttribute).serializeText(); }); - skillT["skillGain1"] - = sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[0]; }); - skillT["skillGain2"] - = sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[1]; }); - skillT["skillGain3"] - = sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[2]; }); - skillT["skillGain4"] - = sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[3]; }); + skillT["skillGain"] = sol::readonly_property([lua](const ESM::Skill& rec) -> sol::table { + sol::table res(lua, sol::create); + int index = 1; + for (auto skillGain : rec.mData.mUseValue) + res[index++] = skillGain; + return res; + }); auto schoolT = context.mLua->sol().new_usertype("MagicSchool"); schoolT[sol::meta_function::to_string] diff --git a/files/data/scripts/omw/skillhandlers.lua b/files/data/scripts/omw/skillhandlers.lua index a4fb42ebde..e27925c750 100644 --- a/files/data/scripts/omw/skillhandlers.lua +++ b/files/data/scripts/omw/skillhandlers.lua @@ -77,24 +77,6 @@ local function tableHasValue(table, value) return false end -local function getSkillGainValue(skillid, useType, scale) - local skillRecord = Skill.record(skillid) - - local skillGain = 0 - if useType == 0 then - skillGain = skillRecord.skillGain1 - elseif useType == 1 then - skillGain = skillRecord.skillGain2 - elseif useType == 2 then - skillGain = skillRecord.skillGain3 - elseif useType == 3 then - skillGain = skillRecord.skillGain4 - end - - if scale ~= nil then skillGain = skillGain * scale end - return skillGain -end - local function getSkillProgressRequirementUnorm(npc, skillid) local npcRecord = NPC.record(npc) local class = NPC.classes.record(npcRecord.class) @@ -128,7 +110,9 @@ local function skillUsed(skillid, useType, scale) -- Compute skill gain local skillStat = NPC.stats.skills[skillid](self) - local skillGainUnorm = getSkillGainValue(skillid, useType, scale) + local skillRecord = Skill.record(skillid) + local skillGainUnorm = skillRecord.skillGain[useType + 1] + if scale then skillGainUnorm = skillGainUnorm * scale end local skillProgressRequirementUnorm = getSkillProgressRequirementUnorm(self, skillid) local skillGain = skillGainUnorm / skillProgressRequirementUnorm