@@ -62,6 +62,7 @@ using namespace std;
6262
6363#include " df/physical_attribute_type.h"
6464#include " df/mental_attribute_type.h"
65+ #include < df/color_modifier_raw.h>
6566
6667using namespace DFHack ;
6768using namespace df ::enums;
@@ -746,32 +747,32 @@ bool Materials::ReadCreatureTypesEx (void)
746747 caste.singular = ca->caste_name [0 ];
747748 caste.plural = ca->caste_name [1 ];
748749 caste.adjective = ca->caste_name [2 ];
749- /*
750+
750751 // color mod reading
751752 // Caste + offset > color mod vector
752- vector <char *> & p_colormod = *(vector<char*> *) (world->raws.creatures.all[i]->caste + caste_colormod_offset) ;
753- uint32_t sizecolormod = p_colormod .size();
753+ auto & colorings = ca-> color_modifiers ;
754+ uint32_t sizecolormod = colorings .size ();
754755 caste.ColorModifier .resize (sizecolormod);
755756 for (uint32_t k = 0 ; k < sizecolormod;k++)
756757 {
757758 // color mod [0] -> color list
758- vector <uint32_t> & p_colorlist = *(vector<uint32_t> *) (p_colormod [k]) ;
759- uint32_t sizecolorlist = p_colorlist .size();
759+ auto & indexes = colorings [k]-> color_indexes ;
760+ uint32_t sizecolorlist = indexes .size ();
760761 caste.ColorModifier [k].colorlist .resize (sizecolorlist);
761762 for (uint32_t l = 0 ; l < sizecolorlist; l++)
762- caste.ColorModifier[k].colorlist[l] = p_colorlist [l];
763+ caste.ColorModifier [k].colorlist [l] = indexes [l];
763764 // color mod [color_modifier_part_offset] = string part
764- caste.ColorModifier[k].part = p->readSTLString( p_colormod [k] + color_modifier_part_offset) ;
765- caste.ColorModifier[k].startdate = p->readDWord( p_colormod [k] + color_modifier_startdate_offset ) ;
766- caste.ColorModifier[k].enddate = p->readDWord( p_colormod [k] + color_modifier_enddate_offset ) ;
765+ caste.ColorModifier [k].part = colorings [k]-> part ;
766+ caste.ColorModifier [k].startdate = colorings [k]-> start_date ;
767+ caste.ColorModifier [k].enddate = colorings [k]-> end_date ;
767768 }
768- */
769+
769770 // body parts
770771 caste.bodypart .empty ();
771- uint32_t sizebp = ca->body_parts .size ();
772+ uint32_t sizebp = ca->unknown1 . body_parts .size ();
772773 for (uint32_t k = 0 ; k < sizebp; k++)
773774 {
774- df::body_part_raw *bp = ca->body_parts [k];
775+ df::body_part_raw *bp = ca->unknown1 . body_parts [k];
775776 t_bodypart part;
776777 part.id = bp->part_code ;
777778 part.category = bp->part_name ;
0 commit comments