diff --git a/dfhack/include/modules/Materials.h b/dfhack/include/modules/Materials.h index 803443313..73641e10c 100644 --- a/dfhack/include/modules/Materials.h +++ b/dfhack/include/modules/Materials.h @@ -50,6 +50,8 @@ namespace DFHack { char part[128]; std::vector colorlist; + uint32_t startdate; /* in days */ + uint32_t enddate; /* in days */ }; struct t_creaturecaste diff --git a/dfhack/modules/Materials.cpp b/dfhack/modules/Materials.cpp index 9cdab2ffc..417b5a53c 100644 --- a/dfhack/modules/Materials.cpp +++ b/dfhack/modules/Materials.cpp @@ -304,6 +304,8 @@ bool Materials::ReadCreatureTypesEx (void) uint32_t bodypart_singular_offset = mem->getOffset ("bodypart_singular_vector"); uint32_t bodypart_plural_offset = mem->getOffset ("bodypart_plural_vector"); uint32_t color_modifier_part_offset = mem->getOffset ("color_modifier_part"); + uint32_t color_modifier_startdate_offset = mem->getOffset ("color_modifier_startdate"); + uint32_t color_modifier_enddate_offset = mem->getOffset ("color_modifier_enddate"); uint32_t size = p_races.size(); uint32_t sizecas = 0; uint32_t sizecolormod; @@ -341,6 +343,8 @@ bool Materials::ReadCreatureTypesEx (void) for(uint32_t l = 0; l < sizecolorlist; l++) caste.ColorModifier[k].colorlist[l] = p_colorlist[l]; p->readSTLString( p_colormod[k] + color_modifier_part_offset, caste.ColorModifier[k].part, sizeof(caste.ColorModifier[k].part)); + caste.ColorModifier[k].startdate = p->readDWord( p_colormod[k] + color_modifier_startdate_offset ); + caste.ColorModifier[k].enddate = p->readDWord( p_colormod[k] + color_modifier_enddate_offset ); } /* body parts */ diff --git a/examples/materialtest.cpp b/examples/materialtest.cpp index ccd62c0ec..16fdeaf01 100644 --- a/examples/materialtest.cpp +++ b/examples/materialtest.cpp @@ -117,7 +117,10 @@ int main (int numargs, const char ** args) cout << endl; for(uint32_t k = 0; k < castes[j].ColorModifier.size(); k++) { - cout << " colormod[" << castes[j].ColorModifier[k].part << "] "; + cout << " colormod[" << castes[j].ColorModifier[k].part; + if(castes[j].ColorModifier[k].startdate>0) + cout << " start:" << castes[j].ColorModifier[k].startdate << " days, end:" << castes[j].ColorModifier[k].enddate << " days"; + cout << "] "; for(uint32_t l = 0; l < castes[j].ColorModifier[k].colorlist.size(); l++) { if( castes[j].ColorModifier[k].colorlist[l] < Materials->color.size() ) diff --git a/output/Memory.xml b/output/Memory.xml index fb9b9e63d..a4bc527b6 100755 --- a/output/Memory.xml +++ b/output/Memory.xml @@ -1445,6 +1445,8 @@ map_data_1b60_offset 0x1B9c Castes ====== 0x70 + 0x64 + 0x68 0x51C 0xACC 0x654