diff --git a/dfhack/include/modules/Creatures.h b/dfhack/include/modules/Creatures.h index 5a2c0c618..77f341e56 100644 --- a/dfhack/include/modules/Creatures.h +++ b/dfhack/include/modules/Creatures.h @@ -265,6 +265,7 @@ namespace DFHack int16_t typeA; int16_t typeB; int16_t typeC; + uint32_t flags; }; struct t_job { diff --git a/dfhack/modules/Creatures.cpp b/dfhack/modules/Creatures.cpp index ae2ad2557..0b92113b6 100644 --- a/dfhack/modules/Creatures.cpp +++ b/dfhack/modules/Creatures.cpp @@ -375,6 +375,7 @@ bool Creatures::ReadJob(const t_creature * furball, vector & mat) mat[i].typeA = p->readWord(cmats[i] + minfo->getOffset("job_material_maintype")); mat[i].typeB = p->readWord(cmats[i] + minfo->getOffset("job_material_sectype1")); mat[i].typeC = p->readWord(cmats[i] + minfo->getOffset("job_material_sectype2")); + mat[i].flags = p->readWord(cmats[i] + minfo->getOffset("job_material_flags")); } return true; } diff --git a/examples/creaturedump.cpp b/examples/creaturedump.cpp index 2b64d035d..fa8fb6fcb 100644 --- a/examples/creaturedump.cpp +++ b/examples/creaturedump.cpp @@ -276,11 +276,14 @@ void printCreature(DFHack::API & DF, const DFHack::t_creature & creature) case 57: maintype = (char*)"cloth"; break; + case -1: + maintype = (char*)"bones/shell"; + break; default: maintype = (char*)"????"; break; } - printf("\t%s\t%d %d\n", maintype, mat[i].typeB, mat[i].typeC); + printf("\t%s\t%d %d - %.8x\n", maintype, mat[i].typeB, mat[i].typeC, mat[i].flags); } } } diff --git a/output/Memory.xml b/output/Memory.xml index 4f177bbab..e2079a315 100755 --- a/output/Memory.xml +++ b/output/Memory.xml @@ -1429,6 +1429,7 @@ map_data_1b60_offset 0x1B9c 0x0 like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ... 0x2 always -1 0x4 subtype ? + 0x18 set only for shell / bone mood requirements ? Materials =========