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