Formula

CommonFun.calcUserShowAttrValuePro

function CommonFun.calcUserShowAttrValuePro(attr, lv, oldpro, newpro, WeaponType)
  local result = {}
  local oldvalue = 50 + lv * BaseLvRate[oldpro] + CommonFun.CalcSum(lv) * HpRate[oldpro] * (1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100) + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 20
  local newvalue = 50 + lv * BaseLvRate[newpro] + CommonFun.CalcSum(lv) * HpRate[newpro] * (1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100) + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 20
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = newvalue - oldvalue
  end
  if CommonFun.checkRemoteAtk(oldpro, WeaponType) then
    oldvalue = attr[CommonFun.RoleData.EATTRTYPE_DEX] * 3 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * attr[CommonFun.RoleData.EATTRTYPE_DEX] / 100 + attr[CommonFun.RoleData.EATTRTYPE_STR] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + lv * 2
  else
    oldvalue = attr[CommonFun.RoleData.EATTRTYPE_STR] * 3 + attr[CommonFun.RoleData.EATTRTYPE_STR] * attr[CommonFun.RoleData.EATTRTYPE_STR] / 100 + attr[CommonFun.RoleData.EATTRTYPE_DEX] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + lv * 2
  end
  if CommonFun.checkRemoteAtk(newpro, WeaponType) then
    newvalue = attr[CommonFun.RoleData.EATTRTYPE_DEX] * 3 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * attr[CommonFun.RoleData.EATTRTYPE_DEX] / 100 + attr[CommonFun.RoleData.EATTRTYPE_STR] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + lv * 2
  else
    newvalue = attr[CommonFun.RoleData.EATTRTYPE_STR] * 3 + attr[CommonFun.RoleData.EATTRTYPE_STR] * attr[CommonFun.RoleData.EATTRTYPE_STR] / 100 + attr[CommonFun.RoleData.EATTRTYPE_DEX] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + lv * 2
  end
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = newvalue - oldvalue
  end
  oldvalue = 20 + lv * GameConfig.NewRole.recover[oldpro].sp * (1 + attr[CommonFun.RoleData.EATTRTYPE_INT] / 100) + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2
  newvalue = 20 + lv * GameConfig.NewRole.recover[newpro].sp * (1 + attr[CommonFun.RoleData.EATTRTYPE_INT] / 100) + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_MAXSP] = newvalue - oldvalue
  end
  return result
end