|  |  | @ -293,8 +293,11 @@ bool Materials::ReadCreatureTypesEx (void) | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t castes_vector_offset = mem->getOffset ("creature_type_caste_vector"); |  |  |  |     uint32_t castes_vector_offset = mem->getOffset ("creature_type_caste_vector"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t extract_vector_offset = mem->getOffset ("creature_type_extract_vector"); |  |  |  |     uint32_t extract_vector_offset = mem->getOffset ("creature_type_extract_vector"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t sizeof_string = mem->getHexValue ("sizeof_string"); |  |  |  |     uint32_t sizeof_string = mem->getHexValue ("sizeof_string"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t caste_colormod_offset = mem->getOffset ("caste_color_modifiers"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t size = p_races.size(); |  |  |  |     uint32_t size = p_races.size(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t sizecas = 0; |  |  |  |     uint32_t sizecas = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t sizecolormod; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     uint32_t sizecolorlist; | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t tile_offset = mem->getOffset ("creature_tile"); |  |  |  |     uint32_t tile_offset = mem->getOffset ("creature_tile"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     uint32_t tile_color_offset = mem->getOffset ("creature_tile_color"); |  |  |  |     uint32_t tile_color_offset = mem->getOffset ("creature_tile_color"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     raceEx.clear(); |  |  |  |     raceEx.clear(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -313,6 +316,18 @@ bool Materials::ReadCreatureTypesEx (void) | 
			
		
	
		
		
			
				
					
					|  |  |  |             p->readSTLString (caste_start + sizeof_string, caste.singular, sizeof(caste.singular)); |  |  |  |             p->readSTLString (caste_start + sizeof_string, caste.singular, sizeof(caste.singular)); | 
			
		
	
		
		
			
				
					
					|  |  |  |             p->readSTLString (caste_start + 2 * sizeof_string, caste.plural, sizeof(caste.plural)); |  |  |  |             p->readSTLString (caste_start + 2 * sizeof_string, caste.plural, sizeof(caste.plural)); | 
			
		
	
		
		
			
				
					
					|  |  |  |             p->readSTLString (caste_start + 3 * sizeof_string, caste.adjective, sizeof(caste.adjective)); |  |  |  |             p->readSTLString (caste_start + 3 * sizeof_string, caste.adjective, sizeof(caste.adjective)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             DfVector <uint32_t> p_colormod(p, caste_start + caste_colormod_offset); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             sizecolormod = p_colormod.size(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             caste.ColorModifier.resize(sizecolormod); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |              | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             for(uint32_t k = 0; k < sizecolormod;k++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 DfVector <uint32_t> p_colorlist(p, p_colormod[k]); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 sizecolorlist = p_colorlist.size(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 caste.ColorModifier[k].resize(sizecolorlist); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 for(uint32_t l = 0; l < sizecolorlist; l++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     caste.ColorModifier[k][l] = p_colorlist[l]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |             mat.castes.push_back(caste); |  |  |  |             mat.castes.push_back(caste); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 	mat.tile_character = p->readByte( p_races[i] + tile_offset ); |  |  |  | 	mat.tile_character = p->readByte( p_races[i] + tile_offset ); | 
			
		
	
	
		
		
			
				
					|  |  | @ -327,6 +342,8 @@ bool Materials::ReadCreatureTypesEx (void) | 
			
		
	
		
		
			
				
					
					|  |  |  | 		p->readSTLString( p_extract[j], extract.rawname, sizeof(extract.rawname)); |  |  |  | 		p->readSTLString( p_extract[j], extract.rawname, sizeof(extract.rawname)); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		mat.extract.push_back(extract); |  |  |  | 		mat.extract.push_back(extract); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         raceEx.push_back(mat); |  |  |  |         raceEx.push_back(mat); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     return true; |  |  |  |     return true; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |