/// <summary>
        /// Generates a list of StringIndexes contained in the map
        /// </summary>
        /// <returns>List of StringID_info</returns>
        List <StringID_info> Get_SID_list(string map_loc)
        {
            List <StringID_info> ret = new List <StringID_info>();

            StreamReader map_stream = new StreamReader(map_loc);

            int string_table_count        = DATA_READ.ReadINT_LE(0x170, map_stream);
            int string_index_table_offset = DATA_READ.ReadINT_LE(0x178, map_stream);
            int string_table_offset       = DATA_READ.ReadINT_LE(0x17C, map_stream);

            for (int index = 0; index < string_table_count; index++)
            {
                int    table_off = DATA_READ.ReadINT_LE(string_index_table_offset + index * 0x4, map_stream) & 0xFFFF;
                string STRING    = DATA_READ.ReadSTRING(string_table_offset + table_off, map_stream);

                if (STRING.Length > 0)
                {
                    int SID = DATA_READ.Generate_SID(index, 0x0, STRING);//set is 0x0 cuz i couldnt figure out any other value

                    StringID_info SIDI = new StringID_info();
                    SIDI.string_index_table_index = string_index_table_offset + index * 0x4;
                    SIDI.string_table_offset      = table_off;
                    SIDI.StringID = SID;
                    SIDI.STRING   = STRING;

                    ret.Add(SIDI);
                }
            }

            map_stream.Close();

            return(ret);
        }