1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-04-07 13:20:25 +00:00

skillGain as a table

This commit is contained in:
Mads Buvik Sandvei 2024-01-15 20:40:38 +01:00
parent 80e9631abd
commit e1a22242d9
2 changed files with 10 additions and 27 deletions

View File

@ -604,14 +604,13 @@ namespace MWLua
skillT["attribute"] = sol::readonly_property([](const ESM::Skill& rec) -> std::string { skillT["attribute"] = sol::readonly_property([](const ESM::Skill& rec) -> std::string {
return ESM::Attribute::indexToRefId(rec.mData.mAttribute).serializeText(); return ESM::Attribute::indexToRefId(rec.mData.mAttribute).serializeText();
}); });
skillT["skillGain1"] skillT["skillGain"] = sol::readonly_property([lua](const ESM::Skill& rec) -> sol::table {
= sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[0]; }); sol::table res(lua, sol::create);
skillT["skillGain2"] int index = 1;
= sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[1]; }); for (auto skillGain : rec.mData.mUseValue)
skillT["skillGain3"] res[index++] = skillGain;
= sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[2]; }); return res;
skillT["skillGain4"] });
= sol::readonly_property([](const ESM::Skill& rec) -> float { return rec.mData.mUseValue[3]; });
auto schoolT = context.mLua->sol().new_usertype<ESM::MagicSchool>("MagicSchool"); auto schoolT = context.mLua->sol().new_usertype<ESM::MagicSchool>("MagicSchool");
schoolT[sol::meta_function::to_string] schoolT[sol::meta_function::to_string]

View File

@ -77,24 +77,6 @@ local function tableHasValue(table, value)
return false return false
end 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 function getSkillProgressRequirementUnorm(npc, skillid)
local npcRecord = NPC.record(npc) local npcRecord = NPC.record(npc)
local class = NPC.classes.record(npcRecord.class) local class = NPC.classes.record(npcRecord.class)
@ -128,7 +110,9 @@ local function skillUsed(skillid, useType, scale)
-- Compute skill gain -- Compute skill gain
local skillStat = NPC.stats.skills[skillid](self) 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 skillProgressRequirementUnorm = getSkillProgressRequirementUnorm(self, skillid)
local skillGain = skillGainUnorm / skillProgressRequirementUnorm local skillGain = skillGainUnorm / skillProgressRequirementUnorm