Formula
CommonFun.calcNpcAttrValue
function CommonFun.calcNpcAttrValue(extra, attr, profession)
local NpcResult = {}
NpcResult[CommonFun.RoleData.EATTRTYPE_VIT] = (extra[CommonFun.RoleData.EATTRTYPE_VIT] + attr[CommonFun.RoleData.EATTRTYPE_VIT]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_VITPER])
NpcResult[CommonFun.RoleData.EATTRTYPE_INT] = (extra[CommonFun.RoleData.EATTRTYPE_INT] + attr[CommonFun.RoleData.EATTRTYPE_INT]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_INTPER])
NpcResult[CommonFun.RoleData.EATTRTYPE_DEX] = extra[CommonFun.RoleData.EATTRTYPE_DEX] + attr[CommonFun.RoleData.EATTRTYPE_DEX]
NpcResult[CommonFun.RoleData.EATTRTYPE_AGI] = extra[CommonFun.RoleData.EATTRTYPE_AGI] + attr[CommonFun.RoleData.EATTRTYPE_AGI]
NpcResult[CommonFun.RoleData.EATTRTYPE_STR] = extra[CommonFun.RoleData.EATTRTYPE_STR] + attr[CommonFun.RoleData.EATTRTYPE_STR]
NpcResult[CommonFun.RoleData.EATTRTYPE_LUK] = extra[CommonFun.RoleData.EATTRTYPE_LUK] + attr[CommonFun.RoleData.EATTRTYPE_LUK]
NpcResult[CommonFun.RoleData.EATTRTYPE_CRI] = 1 + math.floor(NpcResult[CommonFun.RoleData.EATTRTYPE_LUK] / 3)
NpcResult[CommonFun.RoleData.EATTRTYPE_CRIRES] = 1 + math.floor(NpcResult[CommonFun.RoleData.EATTRTYPE_LUK] / 5) + attr[CommonFun.RoleData.EATTRTYPE_MONCRIRES] + extra[CommonFun.RoleData.EATTRTYPE_MONCRIRES]
NpcResult[CommonFun.RoleData.EATTRTYPE_MAXHP] = (extra[CommonFun.RoleData.EATTRTYPE_MAXHP] + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MONMAXHPPER])
for key, value in pairs(NpcResult) do
if value < 0 then
NpcResult[key] = 0
end
end
NpcResult[CommonFun.RoleData.EATTRTYPE_DEFPER] = attr[CommonFun.RoleData.EATTRTYPE_DEFPER]
if NpcResult[CommonFun.RoleData.EATTRTYPE_DEFPER] <= -1 then
NpcResult[CommonFun.RoleData.EATTRTYPE_DEFPER] = -1
end
NpcResult[CommonFun.RoleData.EATTRTYPE_MDEFPER] = attr[CommonFun.RoleData.EATTRTYPE_MDEFPER]
if -1 >= NpcResult[CommonFun.RoleData.EATTRTYPE_MDEFPER] then
NpcResult[CommonFun.RoleData.EATTRTYPE_MDEFPER] = -1
end
return NpcResult
end