dfhack/Memory.xml

3086 lines
170 KiB
XML

<?xml version="1.0"?>
<DFHack>
<Base name="DF40d.xx">
<Offsets>
<Group name="vector" description="An STL vector.">
<HexValue name="sizeof" description="The total size in bytes." />
<Offset name="start" description="The offset where the actual start/end/alloc_end triplet is." />
</Group>
<Group name="string" description="An STL string.">
<HexValue name="sizeof" description="The total size in bytes." />
<Group name="MSVC">
<!--
MSVC++ 9 string
void * allocator
union
{
char[16] start;
char * start_ptr
}
Uint32 length
Uint32 capacity
-->
<Offset name="buffer" description="Where the buffer/pointer starts." />
<Offset name="size" description="Where the number of leters is stored (string length without 0-terminator)." />
<Offset name="capacity" description="Capacity of the buffer in letters (default=15)." />
</Group>
</Group>
<Group name="name" description="A structure used for names all over the place.">
<Offset name="first" description="Lowercase stl string with the first name. For ex. 'urist'" />
<Offset name="nick" description="Stl string with the nickname. Set by the player." />
<Offset name="second_words" description="Array of 7 indexes into the language vectors."/>
<Offset name="parts_of_speech" description="Array of 7 16-bit indexes into the language vectors."/>
<Offset name="language" description="Language of the name."/>
<Offset name="has_name" description="Boolean flag."/>
</Group>
</Offsets>
</Base>
<Version name="40d" base="DF40d.xx" os="windows">
<MD5 value="2c686c26307dcccd7c36cc79737ebe4f" />
<PETimeStamp value="0x48C330DF" />
<Offsets>
<Group name="vector">
<HexValue name="sizeof" value="0x10" />
<Offset name="start" value="0x4" />
<!--
Maybe (fits offsets):
Vector layout in MSVC 8:
DWORD Allocator?
DWORD Start
DWORD End
DWORD AllocationEnd
-->
</Group>
<Group name="string">
<HexValue name="sizeof" value="0x1C" />
<Group name="MSVC">
<Offset name="buffer" value="0x4" />
<Offset name="size" value="0x14" />
<Offset name="capacity" value="0x18" />
</Group>
</Group>
<Group name="name">
<Offset name="first" value="0x0" />
<Offset name="nick" value="0x1C" />
<Offset name="second_words" value="0x38" />
</Group>
</Offsets>
</Version>
<Base name="DF2010">
<Traits>
<Trait name="Nervousness" id="0" level_5="Is a nervous wreck" level_4="Is always tense and jittery" level_3="Is often nervous" level_2="Has a calm demeanor" level_1="Has a very calm demeanor" level_0="Has an incredibly calm demeanor" />
<Trait name="Rage" id="1" level_5="In a constant state of internal rage" level_4="Very quick to anger" level_3="Quick to anger" level_2="Slow to anger" level_1="Very slow to anger" level_0="Never becomes angry" />
<Trait name="Depression" id="2" level_5="Frequently depressed" level_4="Often sad and dejected" level_3="Often feels discouraged" level_2="Rarely feels discouraged" level_1="Almost never feels discouraged" level_0="Never feels discouraged" />
<Trait name="Neurosis" id="3" level_5="Socially crippled by thoughts that everyone is watching and judging" level_4="Concerned about rejection and ridicule" level_3="Self-conscious" level_2="Comfortable in social situations" level_1="Very comfortable in social situations" level_0="Absolutely unfazed by the opinions of others" />
<Trait name="Urge" id="4" level_5="Is ruled by irresistible cravings and urges" level_4="Feels strong urges and seeks short-term rewards" level_3="Occassionally overindulges" level_2="Doesn't often experience strong cravings or urges" level_1="Only rarely feels strong cravings or urges" level_0="Never feels tempted to overindulge in anything" />
<Trait name="Stress" id="5" level_5="Becomes completely helpless in stressful situations" level_4="Cracks easily under pressure" level_3="Doesn't handle stress well" level_2="Can handle stress" level_1="Confident under pressure" level_0="Impervious to the effects of stress" />
<Trait name="Friendly" id="6" level_5="Genuinely likes others, openly expresses positive feelings" level_4="Makes friends quickly" level_3="Very friendly" level_2="Somewhat reserved" level_1="Very distant and reserved" level_0="Does not actively seek friendships, incredibly distant and reserved" />
<Trait name="Company" id="7" level_5="Truly treasures the company of others" level_4="Enjoys being in crowds" level_3="Enjoys the company of others" level_2="Tends to avoid crowds" level_1="Prefers to be alone" level_0="Considers time alone much more important than associating with others" />
<Trait name="Leadership" id="8" level_5="Loves to take charge and direct activities" level_4="Very assertive" level_3="Assertive" level_2="Unassertive" level_1="Prefers that others handle the leadership roles" level_0="Never speaks out or attempts to direct activities" />
<Trait name="Activeness" id="9" level_5="Constantly active and energetic" level_4="Very energetic and active" level_3="Very active" level_2="Relaxed" level_1="Lives life at a leisurely pace" level_0="Can't be bothered with frantic, fast-paced living" />
<Trait name="Thrillseeking" id="10" level_5="Lives for risk and excitement" level_4="A risk-taker and a thrill-seeker" level_3="Loves a good thrill" level_2="Is not a risk-taker" level_1="Doesn't need thrills or risks in life" level_0="Entirely adverse to risk and excitement" />
<Trait name="Optimism" id="11" level_5="Often feels filled with joy" level_4="Can be very happy and optimistic" level_3="Often cheerful" level_2="Rarely happy or enthusiastic" level_1="A pessimist" level_0="Never optimistic or enthusiastic about anything" />
<Trait name="Imagination" id="12" level_5="Bored by reality and has a wonderful imagination" level_4="Incredibly creative" level_3="Has a fertile imagination" level_2="Isn't given to flights of fancy" level_1="Grounded in reality" level_0="Interested only in facts and the real world" />
<Trait name="Artistic" id="13" level_5="Can easily become absorbed in art and the beauty of the natural world" level_4="Greatly appreciates art and natural beauty" level_3="Appreciates art and natural beauty" level_2="Does not have a great aesthetic sensitivity" level_1="Not interested in art" level_0="Completely uninterested in art" />
<Trait name="Emotion" id="14" level_5="Has a profound understanding of own emotions" level_4="Has a great awareness of own emotions" level_3="Has a good awareness of own emotions" level_2="Tends not to openly express emotions" level_1="Mostly unaware of own emotions and rarely expresses them" level_0="Does not display own emotions and has no awareness of them" />
<Trait name="Adventure" id="15" level_5="Highly adventurous and loves fresh experiences" level_4="Eager for new experiences" level_3="Likes to try new things" level_2="Prefers familiar routines" level_1="Uncomfortable with change" level_0="Resistant to change" />
<Trait name="Thinking" id="16" level_5="Entranced by riddles and puzzles; loves to debate issues and ideas" level_4="Loves new and fresh ideas" level_3="Open-minded to new ideas" level_2="Dislikes intellectual discussions" level_1="Regards intellectual exercises as a waste of energy" level_0="Completely uninterested in ideas and debates over intellectual issues" />
<Trait name="Rebelliousness" id="17" level_5="Revels in chaos and disorder" level_4="Loves to defy convention" level_3="Put off by authority and tradition" level_2="Admires tradition" level_1="Prefers stability and security to ambiguity and disorder" level_0="An ardent believer in convention and traditional society" />
<Trait name="Trusting" id="18" level_5="Naturally trustful of everybody" level_4="Very trusting" level_3="Trusting" level_2="Slow to trust others" level_1="Does not trust others" level_0="Sees others as selfish and conniving" />
<Trait name="Honesty" id="19" level_5="Incredibly frank and candid in dealings with others" level_4="Very straightforward with others" level_3="Candid and sincere in dealings with others" level_2="Guarded in relationships with others" level_1="Not straightforward when dealing with others" level_0="Believes that some deception is necessary in relationships with others" />
<Trait name="Helpfulness" id="20" level_5="Truly fulfilled by assisting those in need" level_4="Finds helping others very rewarding" level_3="Finds helping others rewarding" level_2="Does not go out of own way to help others" level_1="Dislikes helping others" level_0="Views helping others as an imposition on own needs" />
<Trait name="Compromising" id="21" level_5="Sacrifices own needs to get along with others" level_4="Dislikes confrontations" level_3="Willing to compromise with others" level_2="Doesn't like to compromise with others" level_1="Would rather intimidate others than compromise with them" level_0="Would never deny own needs just to compromise with somebody else" />
<Trait name="Modesty" id="22" level_5="Would never claim to be better than somebody else" level_4="Finds immodesty distasteful" level_3="Modest" level_2="Immodest" level_1="Very willing to compare self favorably with others" level_0="Would never shy away from an opportunity to say they are better than somebody else" />
<Trait name="Compassion" id="23" level_5="Incredibly compassionate and feels the pain of others" level_4="Easily moved to pity" level_3="Compassionate" level_2="Not easily moved to pity" level_1="Not affected by the suffering of others" level_0="Would never let an objective judgement be tempered by mercy or pity" />
<Trait name="Confidence" id="24" level_5="Incredibly confident" level_4="Very confident" level_3="Confident" level_2="Lacks confidence" level_1="Does not feel effective in life" level_0="Always feels as if they are not in control of own life" />
<Trait name="Organization" id="25" level_5="Loves to make lists and keep schedules" level_4="Tries to live a well-organized life" level_3="Organized" level_2="Disorganized" level_1="Very disorganized" level_0="Completely disorganized" />
<Trait name="Lawfulness" id="26" level_5="Has a profound sense of duty and obligation" level_4="Has a strong sense of duty" level_3="Has a sense of duty" level_2="Finds rules confining" level_1="Dislikes contracts and regulations" level_0="Hates rules, contracts and other confining elements in own life" />
<Trait name="Excellence" id="27" level_5="Constantly strives for perfection" level_4="Thinks it is incredibly important to strive for excellence" level_3="Strives for excellence" level_2="Doesn't go out of own way to do more work than necessary" level_1="Very rarely does more work than necessary" level_0="Does the bare minimum necessary to accomplish the task at hand" />
<Trait name="Perseverance" id="28" level_5="Will persist in the face of any difficulty until the task is complete" level_4="Possesses great willpower" level_3="Is self-disciplined" level_2="Is occasionally given to procrastination" level_1="Has very little self-discipline" level_0="Rarely completes tasks and is often overcome by distractions" />
<Trait name="Cautiousness" id="29" level_5="Thinks through every alternative and their consequences before acting" level_4="Extremely cautious" level_3="Takes time when making decisions" level_2="Often does the first thing that comes to mind" level_1="Acts impulsively" level_0="Always acts without considering alternatives or thinking through possibilities" />
</Traits>
<Moods>
<Mood id="0" name="Fey"/>
<Mood id="1" name="Secretive"/>
<Mood id="2" name="Possesed"/>
<Mood id="3" name="Macabre"/>
<Mood id="4" name="Fell"/>
<Mood id="5" name="Melancholy"/>
</Moods>
<Professions>
<Profession name="MINER" id="0" military="false" can_assign_labors="true" />
<Profession name="WOODWORKER" id="1" military="false" can_assign_labors="true" />
<Profession name="CARPENTER" id="2" military="false" can_assign_labors="true" />
<Profession name="BOWYER" id="3" military="false" can_assign_labors="true" />
<Profession name="WOODCUTTER" id="4" military="false" can_assign_labors="true" />
<Profession name="STONEWORKER" id="5" military="false" can_assign_labors="true" />
<Profession name="ENGRAVER" id="6" military="false" can_assign_labors="true" />
<Profession name="MASON" id="7" military="false" can_assign_labors="true" />
<Profession name="RANGER" id="8" military="false" can_assign_labors="true" />
<Profession name="ANIMAL_CARETAKER" id="9" military="false" can_assign_labors="true" />
<Profession name="ANIMAL_TRAINER" id="10" military="false" can_assign_labors="true" />
<Profession name="HUNTER" id="11" military="false" can_assign_labors="true" />
<Profession name="TRAPPER" id="12" military="false" can_assign_labors="true" />
<Profession name="ANIMAL_DISSECTOR" id="13" military="false" can_assign_labors="true" />
<Profession name="METALSMITH" id="14" military="false" can_assign_labors="true" />
<Profession name="FURNACE_OPERATOR" id="15" military="false" can_assign_labors="true" />
<Profession name="WEAPONSMITH" id="16" military="false" can_assign_labors="true" />
<Profession name="ARMORER" id="17" military="false" can_assign_labors="true" />
<Profession name="BLACKSMITH" id="18" military="false" can_assign_labors="true" />
<Profession name="METALCRAFTER" id="19" military="false" can_assign_labors="true" />
<Profession name="JEWELER" id="20" military="false" can_assign_labors="true" />
<Profession name="GEM_CUTTER" id="21" military="false" can_assign_labors="true" />
<Profession name="GEM_SETTER" id="22" military="false" can_assign_labors="true" />
<Profession name="CRAFTSMAN" id="23" military="false" can_assign_labors="true" />
<Profession name="WOODCRAFTER" id="24" military="false" can_assign_labors="true" />
<Profession name="STONECRAFTER" id="25" military="false" can_assign_labors="true" />
<Profession name="LEATHERWORKER" id="26" military="false" can_assign_labors="true" />
<Profession name="BONE_CARVER" id="27" military="false" can_assign_labors="true" />
<Profession name="WEAVER" id="28" military="false" can_assign_labors="true" />
<Profession name="CLOTHIER" id="29" military="false" can_assign_labors="true" />
<Profession name="GLASSMAKER" id="30" military="false" can_assign_labors="true" />
<Profession name="STRAND_EXTRACTOR" id="31" military="false" can_assign_labors="true" />
<Profession name="FISHERY_WORKER" id="32" military="false" can_assign_labors="true" />
<Profession name="FISHERMAN" id="33" military="false" can_assign_labors="true" />
<Profession name="FISH_DISSECTOR" id="34" military="false" can_assign_labors="true" />
<Profession name="FISH_CLEANER" id="35" military="false" can_assign_labors="true" />
<Profession name="FARMER" id="36" military="false" can_assign_labors="true" />
<Profession name="CHEESE_MAKER" id="37" military="false" can_assign_labors="true" />
<Profession name="MILKER" id="38" military="false" can_assign_labors="true" />
<Profession name="COOK" id="39" military="false" can_assign_labors="true" />
<Profession name="THRESHER" id="40" military="false" can_assign_labors="true" />
<Profession name="MILLER" id="41" military="false" can_assign_labors="true" />
<Profession name="BUTCHER" id="42" military="false" can_assign_labors="true" />
<Profession name="TANNER" id="43" military="false" can_assign_labors="true" />
<Profession name="DYER" id="44" military="false" can_assign_labors="true" />
<Profession name="PLANTER" id="45" military="false" can_assign_labors="true" />
<Profession name="HERBALIST" id="46" military="false" can_assign_labors="true" />
<Profession name="BREWER" id="47" military="false" can_assign_labors="true" />
<Profession name="SOAP_MAKER" id="48" military="false" can_assign_labors="true" />
<Profession name="POTASH_MAKER" id="49" military="false" can_assign_labors="true" />
<Profession name="LYE_MAKER" id="50" military="false" can_assign_labors="true" />
<Profession name="WOOD_BURNER" id="51" military="false" can_assign_labors="true" />
<Profession name="ENGINEER" id="52" military="false" can_assign_labors="true" />
<Profession name="MECHANIC" id="53" military="false" can_assign_labors="true" />
<Profession name="SIEGE_ENGINEER" id="54" military="false" can_assign_labors="true" />
<Profession name="SIEGE_OPERATOR" id="55" military="false" can_assign_labors="true" />
<Profession name="PUMP_OPERATOR" id="56" military="false" can_assign_labors="true" />
<Profession name="CLERK" id="57" military="false" can_assign_labors="true" />
<Profession name="ADMINISTRATOR" id="58" military="false" can_assign_labors="true" />
<Profession name="TRADER" id="59" military="false" can_assign_labors="true" />
<Profession name="ARCHITECT" id="60" military="false" can_assign_labors="true" />
<Profession name="ALCHEMIST" id="61" military="false" can_assign_labors="true" />
<Profession name="DOCTOR" id="62" military="false" can_assign_labors="true" />
<Profession name="DIAGNOSER" id="63" military="false" can_assign_labors="true" />
<Profession name="BONE_SETTER" id="64" military="false" can_assign_labors="true" />
<Profession name="SUTURER" id="65" military="false" can_assign_labors="true" />
<Profession name="SURGEON" id="66" military="false" can_assign_labors="true" />
<Profession name="MERCHANT" id="67" military="false" can_assign_labors="true" />
<Profession name="HAMMERMAN" id="68" military="true" can_assign_labors="true" />
<Profession name="MASTER_HAMMERMAN" id="69" military="true" can_assign_labors="true" />
<Profession name="SPEARMAN" id="70" military="true" can_assign_labors="true" />
<Profession name="MASTER_SPEARMAN" id="71" military="true" can_assign_labors="true" />
<Profession name="CROSSBOWMAN" id="72" military="true" can_assign_labors="true" />
<Profession name="MASTER_CROSSBOWMAN" id="73" military="true" can_assign_labors="true" />
<Profession name="WRESTLER" id="74" military="true" can_assign_labors="true" />
<Profession name="MASTER_WRESTLER" id="75" military="true" can_assign_labors="true" />
<Profession name="AXEMAN" id="76" military="true" can_assign_labors="true" />
<Profession name="MASTER_AXEMAN" id="77" military="true" can_assign_labors="true" />
<Profession name="SWORDSMAN" id="78" military="true" can_assign_labors="true" />
<Profession name="MASTER_SWORDSMAN" id="79" military="true" can_assign_labors="true" />
<Profession name="MACEMAN" id="80" military="true" can_assign_labors="true" />
<Profession name="MASTER_MACEMAN" id="81" military="true" can_assign_labors="true" />
<Profession name="PIKEMAN" id="82" military="true" can_assign_labors="true" />
<Profession name="MASTER_PIKEMAN" id="83" military="true" can_assign_labors="true" />
<Profession name="BOWMAN" id="84" military="true" can_assign_labors="true" />
<Profession name="MASTER_BOWMAN" id="85" military="true" can_assign_labors="true" />
<Profession name="BLOWGUNMAN" id="86" military="true" can_assign_labors="true" />
<Profession name="MASTER_BLOWGUNMAN" id="87" military="true" can_assign_labors="true" />
<Profession name="LASHER" id="88" military="true" can_assign_labors="true" />
<Profession name="MASTER_LASHER" id="89" military="true" can_assign_labors="true" />
<Profession name="RECRUIT" id="90" military="true" can_assign_labors="true" />
<Profession name="TRAINED_HUNTER" id="91" military="false" can_assign_labors="true" />
<Profession name="TRAINED_WAR" id="92" military="false" can_assign_labors="true" />
<Profession name="MASTER_THIEF" id="93" military="false" can_assign_labors="true" />
<Profession name="THIEF" id="94" military="false" can_assign_labors="true" />
<Profession name="STANDARD" id="95" military="false" can_assign_labors="true" />
<Profession name="CHILD" id="96" military="false" can_assign_labors="false" />
<Profession name="BABY" id="97" military="false" can_assign_labors="false" />
<Profession name="DRUNK" id="98" military="false" can_assign_labors="false" />
<Profession name="Shearer" id="99" military="false" can_assign_labors="true" />
<Profession name="Spinner" id="100" military="false" can_assign_labors="true" />
<Profession name="Potter" id="101" military="false" can_assign_labors="true" />
<Profession name="Glazer" id="102" military="false" can_assign_labors="true" />
<Profession name="Presser" id="103" military="false" can_assign_labors="true" />
<Profession name="BEE_KEEPER" id="104" military="false" can_assign_labors="true" />
<Profession name="WAX_WORKER" id="105" military="false" can_assign_labors="true" />
</Professions>
<Jobs>
<Job id="0" name = "Carve Fortification" />
<Job id="1" name = "Detail Wall" />
<Job id="2" name = "Detail Floor" />
<Job id="3" name = "Dig" />
<Job id="4" name = "Carve Upward Staircase" />
<Job id="5" name = "Carve Downward Staircase" />
<Job id="6" name = "Carve Up/Down Staircase" />
<Job id="7" name = "Carve Ramp" />
<Job id="8" name = "Dig Channel" />
<Job id="9" name = "Fell Tree" />
<Job id="10" name = "Gather Plants" />
<Job id="11" name = "Remove Construction" />
<Job id="12" name = "Collect Webs" />
<Job id="13" name = "Bring Item to Depot" />
<Job id="14" name = "Bring Item to Shop" />
<Job id="15" name = "Eat" />
<Job id="16" name = "Get Provisions" />
<Job id="17" name = "Drink" />
<Job id="18" name = "Drink" />
<Job id="19" name = "Fill Waterskin" />
<Job id="20" name = "Fill Waterskin" />
<Job id="21" name = "Sleep" />
<Job id="22" name = "Collect Sand" />
<Job id="23" name = "Fish" />
<Job id="24" name = "Hunt" />
<Job id="25" name = "Hunt for Small Creature" />
<Job id="26" name = "Kidnap" />
<Job id="27" name = "Beat Criminal" />
<Job id="28" name = "Starting Fist Fight" />
<Job id="29" name = "Collect Taxes" />
<Job id="30" name = "Guard Tax Collector" />
<Job id="31" name = "Catch Live Land Animal" />
<Job id="32" name = "Catch Live Fish" />
<Job id="33" name = "Return Kill" />
<Job id="34" name = "Check Chesk" />
<Job id="35" name = "Store Owned Item" />
<Job id="36" name = "Place Item in Tomb" />
<Job id="37" name = "Store Item in Stockpile" />
<Job id="38" name = "Store Item in Bag" />
<Job id="39" name = "Store Item in Hospital" />
<Job id="40" name = "Store Item in Chest" />
<Job id="41" name = "Store Item in Cabinet" />
<Job id="42" name = "Store Weapon" />
<Job id="43" name = "Store Armor" />
<Job id="44" name = "Store Item in Barrel" />
<Job id="45" name = "Store Item in Bin" />
<Job id="46" name = "Seek Artifact" />
<Job id="47" name = "Seek Infant" />
<Job id="48" name = "Attend Party" />
<Job id="49" name = "Go Shopping" />
<Job id="50" name = "Go Shopping" />
<Job id="51" name = "Clean" />
<Job id="52" name = "Rest" />
<Job id="53" name = "Pickup Equipment" />
<Job id="54" name = "Dump Item" />
<Job id="55" name = "Strange Mood Crafter" />
<Job id="56" name = "Strange Mood Jeweller" />
<Job id="57" name = "Strange Mood Forge" />
<Job id="58" name = "Strange Mood Magma Forge" />
<Job id="59" name = "Strange Mood Brooding" />
<Job id="60" name = "Strange Mood Fell" />
<Job id="61" name = "Strange Mood Carpenter" />
<Job id="62" name = "Strange Mood Mason" />
<Job id="63" name = "Strange Mood Bowyer" />
<Job id="64" name = "Strange Mood Tanner" />
<Job id="65" name = "Strange Mood Weaver" />
<Job id="66" name = "Strange Mood Glassmaker" />
<Job id="67" name = "Strange Mood Mechanics" />
<Job id="68" name = "Construct Building" />
<Job id="69" name = "Construct Door" />
<Job id="70" name = "Construct Floodgate" />
<Job id="71" name = "Construct ?? Bed" />
<Job id="72" name = "Construct ?? Throne" />
<Job id="73" name = "Construct ?? Casket/Sarcophagus/Coffin" />
<Job id="74" name = "Construct ?? Table" />
<Job id="75" name = "Construct ?? Container" />
<Job id="76" name = "Construct ?? Bin" />
<Job id="77" name = "Construct ?? Armor Stand" />
<Job id="78" name = "Construct ?? Weapon Rack" />
<Job id="79" name = "Construct ?? Cabinet" />
<Job id="80" name = "Construct ?? Statue" />
<Job id="81" name = "Construct ?? Blocks" />
<Job id="82" name = "Make Raw ??" />
<Job id="83" name = "Make ?? Crafts" />
<Job id="84" name = "Mint ?? Coins" />
<Job id="85" name = "Cut ?A?" />
<Job id="86" name = "Cut crystal(?) glass(?)" />
<Job id="87" name = "Encrust ?something? with ?somethings?" />
<Job id="88" name = "Encrust ?something? with ?somethings?" />
<Job id="89" name = "Destroy Building" />
<Job id="90" name = "Smelt ?? Ore" />
<Job id="91" name = "Melt a Metal Object" />
<Job id="92" name = "Extract Metal Strands" />
<Job id="93" name = "Plant Seeds" />
<Job id="94" name = "Harvest Plants" />
<Job id="95" name = "Train Hunting Animal" />
<Job id="96" name = "Train War Animal" />
<Job id="97" name = "Forge ?? Short Sword" />
<Job id="98" name = "(Job-Id 98)" />
<Job id="99" name = "Construct Catapult Parts" />
<Job id="100" name = "Forge Anvil" />
<Job id="101" name = "Construct Catapult Parts" />
<Job id="102" name = "Forge Helm" />
<Job id="103" name = "Forge Leggings" />
<Job id="104" name = "Stud with ?something?" />
<Job id="105" name = "Butcher an Animal" />
<Job id="106" name = "Prepare a Raw Fish" />
<Job id="107" name = "Mill Plants" />
<Job id="108" name = "Bait Trap with Meat/Gem/Fish" />
<Job id="109" name = "Milk Creature" />
<Job id="110" name = "Make Cheese" />
<Job id="111" name = "Process Plants" />
<Job id="112" name = "Process Plants (Bag)" />
<Job id="113" name = "Process Plants (Vial)" />
<Job id="114" name = "Process Plants (Barrel)" />
<Job id="115" name = "Prepare Meal" />
<Job id="116" name = "Weave ?? into ??" />
<Job id="117" name = "Forge Gauntlet" />
<Job id="118" name = "Forge High Boot" />
<Job id="119" name = "Forge Shield" />
<Job id="120" name = "Forge Cage" />
<Job id="121" name = "Forge/Make F" />
<Job id="122" name = "Forge/Make Waterskin/Vial/Flask" />
<Job id="123" name = "Forge Rope" />
<Job id="124" name = "Forge Flask" />
<Job id="125" name = "Forge Goblet" />
<Job id="126" name = "Forge Instrument" />
<Job id="127" name = "Make Barrel" /> <!-- Was: Forge Toy -->
<Job id="128" name = "Forge Animal Trap" />
<Job id="129" name = "Forge Barrel" />
<Job id="130" name = "Make Totel" />
<Job id="131" name = "Forge Bolts" />
<Job id="132" name = "Decorate With ?something?" />
<Job id="133" name = "Forge/Make G" />
<Job id="134" name = "Make leather quiver" />
<Job id="135" name = "Make Backpack" />
<Job id="136" name = "Make Quiver" />
<Job id="137" name = "Load Catapult" />
<Job id="138" name = "Load Ballista" />
<Job id="139" name = "Fire Catapult" />
<Job id="140" name = "Fire Ballista" />
<Job id="141" name = "Construct Mechanisms" />
<Job id="142" name = "Forge Trap Weapon" /> <!-- spiked ball, serrated disk etc.-->
<Job id="143" name = "Load Cage Trap" />
<Job id="144" name = "Load Stone Trap" />
<Job id="145" name = "Load Weapon Trap" />
<Job id="146" name = "Clean Trap" />
<Job id="147" name = "Cast Spell" />
<Job id="148" name = "Link a Building to Trigger" />
<Job id="149" name = "Pull the Lever" />
<Job id="150" name = "Brew Drink" />
<Job id="151" name = "Extract from Plants" />
<Job id="152" name = "Extract from Raw Fish" />
<Job id="153" name = "Extract from Land Animal" />
<Job id="154" name = "Tame Small Animal" />
<Job id="155" name = "Tame ?something?" />
<Job id="156" name = "Chain Animal" />
<Job id="157" name = "Unchain Animal" />
<Job id="158" name = "Unchain Pet" />
<Job id="159" name = "Release Large Creature" />
<Job id="160" name = "Release Pet" />
<Job id="161" name = "Release Small Creature" />
<Job id="162" name = "Handle Small Creature" />
<Job id="163" name = "Handle Large Creature" />
<Job id="164" name = "Cage Large Creature" />
<Job id="165" name = "Cage Small Creature" />
<Job id="166" name = "Recover Wounded" />
<Job id="167" name = "Diagnose Patient" />
<Job id="168" name = "Immobilize Break" />
<Job id="169" name = "Dress Wound" />
<Job id="170" name = "Clean Patient" />
<Job id="171" name = "Surgery" />
<Job id="172" name = "Suture" />
<Job id="173" name = "Set Bone" />
<Job id="174" name = "Place In Traction" />
<Job id="175" name = "Drain Aquarium" />
<Job id="176" name = "Fill Aquarium" />
<Job id="177" name = "Fill Pond" />
<Job id="178" name = "Give Water" />
<Job id="179" name = "Give Food" />
<Job id="180" name = "Give Water" />
<Job id="181" name = "Give Food" />
<Job id="182" name = "Recover Pet" />
<Job id="183" name = "Pit/Pond Large Animal" />
<Job id="184" name = "Pit/Pond Small Animal" />
<Job id="185" name = "Slaughter Animal" />
<Job id="186" name = "Make Charcoal" />
<Job id="187" name = "Make Ash" />
<Job id="188" name = "Make Lye" />
<Job id="189" name = "Make Potash From Lye" />
<Job id="190" name = "Fertilize Field" />
<Job id="191" name = "Make Potash From Ash" />
<Job id="192" name = "Dye Thread" />
<Job id="193" name = "Dye Cloth" />
<Job id="194" name = "Sew ?? Image" />
<Job id="195" name = "Manage Work Orders" />
<Job id="196" name = "Operate Pump" />
<Job id="197" name = "Manage Work Orders" />
<Job id="198" name = "Update Stockpile Records" />
<Job id="199" name = "Trade at Depot" />
<Job id="200" name = "Construct ?? Hatch Cover" />
<Job id="201" name = "Construct ?? Grate" />
<Job id="202" name = "Remove Stairs/Ramps" />
<Job id="203" name = "Construct ?? Quern" />
<Job id="205" name = "Upgrade Squad Equipment" />
<Job id="206" name = "Prepare Equipment Manifests" />
<Job id="207" name = "Construct ?? Splint" />
<Job id="208" name = "Construct ?? Crutch" />
<Job id="209" name = "Construct Traction Bench" />
<Job id="210" name = "Clean Self" />
<Job id="211" name = "Bring Crutch" />
<Job id="212" name = "Apply Cast" />
<Job id="213" name = "Render Fat/Tan a Hide/Make Soap" /> <!-- Confirmed: This ID shares multiple jobs -->
<Job id="214" name = "Unknown Job" />
<Job id="215" name = "Unknown Job" />
<Job id="216" name = "Shear Creature" />
<Job id="217" name = "Spin Thread" />
<Job id="218" name = "Pen/Pasture Large Animal" />
<Job id="219" name = "Pen/Pasture Small Animal" />
<Job id="220" name = "Unknown Job" />
<Job id="221" name = "Forge Tool" />
<Job id="222" name = "Collect Clay" />
<Job id="223" name = "Install Colony In Hive" />
<Job id="224" name = "Collect Hive Products" />
</Jobs>
<Skills>
<Skill name="Mining" id="0" />
<Skill name="Wood Cutting" id="1" />
<Skill name="Carpentry" id="2" />
<Skill name="Engraving" id="3" />
<Skill name="Masonry" id="4" />
<Skill name="Animal Training" id="5" />
<Skill name="Animal Caretaking" id="6" />
<Skill name="Fish Dissection" id="7" />
<Skill name="Animal Dissection" id="8" />
<Skill name="Fish Cleaning" id="9" />
<Skill name="Butchery" id="10" />
<Skill name="Trapping" id="11" />
<Skill name="Tanning" id="12" />
<Skill name="Weaving" id="13" />
<Skill name="Brewing" id="14" />
<Skill name="Alchemy" id="15" />
<Skill name="Clothes Making" id="16" />
<Skill name="Milling" id="17" />
<Skill name="Threshing" id="18" />
<Skill name="Cheese Making" id="19" />
<Skill name="Milking" id="20" />
<Skill name="Cooking" id="21" />
<Skill name="Growing" id="22" />
<Skill name="Herbalism" id="23" />
<Skill name="Fishing" id="24" />
<Skill name="Furnace Operation" id="25" />
<Skill name="Strand Extraction" id="26" />
<Skill name="Weaponsmithing" id="27" />
<Skill name="Armorsmithing" id="28" />
<Skill name="Metalsmithing" id="29" />
<Skill name="Gem Cutting" id="30" />
<Skill name="Gem Setting" id="31" />
<Skill name="Wood Crafting" id="32" />
<Skill name="Stone Crafting" id="33" />
<Skill name="Metal Crafting" id="34" />
<Skill name="Glassmaking" id="35" />
<Skill name="Leatherworkering" id="36" />
<Skill name="Bone Carving" id="37" />
<Skill name="Axe" id="38" />
<Skill name="Sword" id="39" />
<Skill name="Knife" id="40" />
<Skill name="Mace" id="41" />
<Skill name="Hammer" id="42" />
<Skill name="Spear" id="43" />
<Skill name="Crossbow" id="44" />
<Skill name="Shield" id="45" />
<Skill name="Armor" id="46" />
<Skill name="Siege Engineering" id="47" />
<Skill name="Siege Operation" id="48" />
<Skill name="Bowmaking" id="49" />
<Skill name="Pike" id="50" />
<Skill name="Lash" id="51" />
<Skill name="Bow" id="52" />
<Skill name="Blowgun" id="53" />
<Skill name="Throwing" id="54" />
<Skill name="Machinery" id="55" />
<Skill name="Nature" id="56" />
<Skill name="Ambush" id="57" />
<Skill name="Building Design" id="58" />
<Skill name="Wound Dressing" id="59" />
<Skill name="Diagnostics" id="60" />
<Skill name="Surgery" id="61" />
<Skill name="Bone Setting" id="62" />
<Skill name="Suturing" id="63" />
<Skill name="Crutch-walking" id="64" />
<Skill name="Wood Burning" id="65" />
<Skill name="Lye Making" id="66" />
<Skill name="Soap Making" id="67" />
<Skill name="Potash Making" id="68" />
<Skill name="Dyeing" id="69" />
<Skill name="Pump Operation" id="70" />
<Skill name="Swimming" id="71" />
<Skill name="Persuasion" id="72" />
<Skill name="Negotiation" id="73" />
<Skill name="Judging Intent" id="74" />
<Skill name="Appraisal" id="75" />
<Skill name="Organization" id="76" />
<Skill name="Record Keeping" id="77" />
<Skill name="Lying" id="78" />
<Skill name="Intimidation" id="79" />
<Skill name="Conversation" id="80" />
<Skill name="Comedy" id="81" />
<Skill name="Flattery" id="82" />
<Skill name="Consoling" id="83" />
<Skill name="Pacification" id="84" />
<Skill name="Tracking" id="85" />
<Skill name="Studying" id="86" />
<Skill name="Concentration" id="87" />
<Skill name="Discipline" id="88" />
<Skill name="Observation" id="89" />
<Skill name="Writing" id="90" />
<Skill name="Prose" id="91" />
<Skill name="Poetry" id="92" />
<Skill name="Reading" id="93" />
<Skill name="Speaking" id="94" />
<Skill name="Coordination" id="95" />
<Skill name="Balance" id="96" />
<Skill name="Leadership" id="97" />
<Skill name="Teaching" id="98" />
<Skill name="Fighting" id="99" />
<Skill name="Archery" id="100" />
<Skill name="Wrestling" id="101" />
<Skill name="Biting" id="102" />
<Skill name="Striking" id="103" />
<Skill name="Kicking" id="104" />
<Skill name="Dodging" id="105" />
<Skill name="Misc. Object" id="106" />
<Skill name="Knapping" id="107" />
<Skill name="Something Weird" id="108" />
<Skill name="Shearing" id="109" />
<Skill name="Wool Spinning" id="110" />
<Skill name="Pottery" id="111" />
<Skill name="Glazing" id="112" />
<Skill name="Press Operation" id="113" />
<Skill name="Bee Keeping" id="114" />
<Skill name="Wax Working" id="115" />
</Skills>
<Levels>
<Level id="0" name="Dabbling" xpNxtLvl="500"/>
<Level id="1" name="Novice" xpNxtLvl="600"/>
<Level id="2" name="Adequate" xpNxtLvl="700"/>
<Level id="3" name="Competent" xpNxtLvl="800"/>
<Level id="4" name="Skilled" xpNxtLvl="900"/>
<Level id="5" name="Proficient" xpNxtLvl="1000"/>
<Level id="6" name="Talented" xpNxtLvl="1100"/>
<Level id="7" name="Adept" xpNxtLvl="1200"/>
<Level id="8" name="Expert" xpNxtLvl="1300"/>
<Level id="9" name="Professional" xpNxtLvl="1400"/>
<Level id="10" name="Accomplished" xpNxtLvl="1500"/>
<Level id="11" name="Great" xpNxtLvl="1600"/>
<Level id="12" name="Master" xpNxtLvl="1700"/>
<Level id="13" name="High Master" xpNxtLvl="1800"/>
<Level id="14" name="Grand Master" xpNxtLvl="1900"/>
<Level id="15" name="Legendary" xpNxtLvl="2000"/>
<Level id="16" name="Legendary+1" xpNxtLvl="2100"/>
<Level id="17" name="Legendary+2" xpNxtLvl="2200"/>
<Level id="18" name="Legendary+3" xpNxtLvl="2300"/>
<Level id="19" name="Legendary+4" xpNxtLvl="2400"/>
<Level id="20" name="Legendary+5" xpNxtLvl="-1"/><!-- -1 for no cap -->
</Levels>
<Labors>
<Labor name="Mining" id="0" />
<Labor name="Stone Hauling" id="1" />
<Labor name="Wood Hauling" id="2" />
<Labor name="Burial" id="3" />
<Labor name="Food Hauling" id="4" />
<Labor name="Refuse Hauling" id="5" />
<Labor name="Item Hauling" id="6" />
<Labor name="Furniture Hauling" id="7" />
<Labor name="Animal Hauling" id="8" />
<Labor name="Cleaning" id="9" />
<Labor name="Wood Cutting" id="10" />
<Labor name="Carpentry" id="11" />
<Labor name="Stone Detailing" id="12" />
<Labor name="Masonry" id="13" />
<Labor name="Architecture" id="14" />
<Labor name="Animal Training" id="15" />
<Labor name="Animal Care" id="16" />
<Labor name="Diagnosis" id="17" />
<Labor name="Surgery" id="18" />
<Labor name="Setting Bones" id="19" />
<Labor name="Suturing" id="20" />
<Labor name="Dressing Wounds" id="21" />
<Labor name="Feed Patients/Prisoners" id="22" />
<Labor name="Recovering Wounded" id="23" />
<Labor name="Butchery" id="24" />
<Labor name="Trapping" id="25" />
<Labor name="Small Animal Dissection" id="26" />
<Labor name="Leatherworking" id="27" />
<Labor name="Tanning" id="28" />
<Labor name="Brewing" id="29" />
<Labor name="Alchemy" id="30" />
<Labor name="Soap Maker" id="31" />
<Labor name="Weaving" id="32" />
<Labor name="Clothesmaking" id="33" />
<Labor name="Milling" id="34" />
<Labor name="Plant Processing" id="35" />
<Labor name="Cheese Making" id="36" />
<Labor name="Milking" id="37" />
<Labor name="Cooking" id="38" />
<Labor name="Farming (Fields)" id="39" />
<Labor name="Plant Gathering" id="40" />
<Labor name="Fishing" id="41" />
<Labor name="Fish Cleaning" id="42" />
<Labor name="Fish Dissection" id="43" />
<Labor name="Hunting" id="44" />
<Labor name="Furnace Operating" id="45" />
<Labor name="Weaponsmithing" id="46" />
<Labor name="Armoring" id="47" />
<Labor name="Blacksmithing" id="48" />
<Labor name="Metalcrafting" id="49" />
<Labor name="Gem Cutting" id="50" />
<Labor name="Gem Setting" id="51" />
<Labor name="Woodcrafting" id="52" />
<Labor name="Stonecrafting" id="53" />
<Labor name="Bone Carving" id="54" />
<Labor name="Glassmaking" id="55" />
<Labor name="Strand Extraction" id="56" />
<Labor name="Siege Engineering" id="57" />
<Labor name="Siege Operating" id="58" />
<Labor name="Crossbow-making" id="59" />
<Labor name="Mechanics" id="60" />
<Labor name="Potash Making" id="61" />
<Labor name="Lye Making" id="62" />
<Labor name="Dyeing" id="63" />
<Labor name="Wood Burning" id="64" />
<Labor name="Pump Operating" id="65" />
<Labor name="Shearing" id="66" />
<Labor name="Spinning" id="67" />
<Labor name="Pottery" id="68" />
<Labor name="Glazing" id="69" />
<Labor name="Pressing" id="70" />
<Labor name="Bee Keeping" id="71" />
<Labor name="Wax Working" id="72" />
</Labors>
<!-- I want to remove this section ~px -->
<VTable>
<multiclass name="building_trapst">
<class name="building_leverst" type="0x0"/>
<class name="building_pressure_platest" type="0x1"/>
<class name="building_cage_trapst" type="0x2"/>
<class name="building_stonefall_trapst" type="0x3"/>
<class name="building_weapon_trapst" type="0x4"/>
</multiclass>
<class name="building_constructionst"/>
<class name="building_road_pavedst"/>
<class name="building_road_dirtst"/>
<class name="building_roadst"/>
<class name="building_wagonst"/>
<class name="building_tradedepotst"/>
<multiclass name="building_workshopst">
<class name="building_carpenters_workshopst" type="0x0"/>
<class name="building_farmers_workshopst" type="0x1"/>
<class name="building_masons_workshopst" type="0x2"/>
<class name="building_craftdwarfs_workshopst" type="0x3"/>
<class name="building_jewelers_workshopst" type="0x4"/>
<class name="building_metalsmiths_workshopst" type="0x5"/>
<class name="building_magma_forgest" type="0x6"/>
<class name="building_bowyers_workshopst" type="0x7"/>
<class name="building_mechanics_workshopst" type="0x8"/>
<class name="building_siege_workshopst" type="0x9"/>
<class name="building_butchers_shopst" type="0xA"/>
<class name="building_leather_worksst" type="0xB"/>
<class name="building_tanners_shopst" type="0xC"/>
<class name="building_clothiers_shopst" type="0xD"/>
<class name="building_fisheryst" type="0xE"/>
<class name="building_stillst" type="0xF"/>
<class name="building_loomst" type="0x10"/>
<class name="building_quernst" type="0x11"/>
<class name="building_kennelsst" type="0x12"/>
<class name="building_kitchenst" type="0x13"/>
<class name="building_asheryst" type="0x14"/>
<class name="building_dyers_shopst" type="0x15"/>
<class name="building_millstonest" type="0x16"/>
<class name="building_custom_workshop" type="0x17" />
</multiclass>
<multiclass name="building_furnacest">
<class name="building_wood_furnacest" type="0x0"/>
<class name="building_smelterst" type="0x1"/>
<class name="building_glass_furnacest" type="0x2"/>
<class name="building_kilnst" type="0x3"/>
<class name="building_magma_smelterst" type="0x4"/>
<class name="building_magma_glass_furnacest" type="0x5"/>
<class name="building_magma_kilnst" type="0x6"/>
</multiclass>
<class name="building_animaltrapst"/>
<class name="building_farmplotst"/>
<class name="building_window_glassst"/>
<class name="building_window_gemst"/>
<class name="building_windowst"/>
<class name="building_statuest"/>
<class name="building_coffinst"/>
<class name="building_shopst"/>
<class name="building_chairst"/>
<class name="building_tablest"/>
<class name="building_bedst"/>
<class name="building_traction_benchst"/>
<multiclass name="building_siegeenginest">
<class name="building_catapultst" type="0x0"/>
<class name="building_ballistast" type="0x1"/>
</multiclass>
<class name="building_cagest"/>
<class name="building_chainst"/>
<class name="building_windmillst"/>
<class name="building_water_wheelst"/>
<class name="building_screw_pumpst"/>
<class name="building_archerytargetst"/>
<class name="building_weaponst"/><!-- retractable spikes -->
<class name="building_supportst"/>
<class name="building_axle_verticalst"/>
<class name="building_axle_horizontalst"/>
<class name="building_gear_assemblyst"/>
<class name="building_trapst"/>
<class name="building_bars_floorst"/>
<class name="building_bars_verticalst"/>
<class name="building_grate_floorst"/>
<class name="building_grate_wallst"/>
<class name="building_floodgatest"/>
<class name="building_bridgest"/>
<class name="building_hatchst"/>
<class name="building_doorst"/>
<class name="building_armorstandst"/>
<class name="building_weaponrackst"/>
<class name="building_cabinetst"/>
<class name="building_boxst"/>
<class name="building_stockpilest"/>
<class name="building_wellst"/>
<class name="building_civzonest"/><!-- zone -->
<class name="building_actualst"/>
<class name="buildingst"/>
<class name="building_slabst" />
<class name="building_nestst" />
<class name="building_nest_boxst" />
<class name="building_hivest" />
</VTable>
<Offsets>
<Address name="WORLD" description="A huge object that many things in DF are part of. Contains the whole game and can be used as a base
for many of the addresses." />
<Group name="vector" description="An STL vector.">
<HexValue name="sizeof" description="The total size in bytes." />
<Offset name="start" description="The offset where the actual start/end/alloc_end triplet is." />
</Group>
<Group name="string" description="An STL string.">
<HexValue name="sizeof" description="The total size in bytes." />
<Group name="MSVC">
<!--
MSVC++ 9 string
void * allocator
union
{
char[16] start;
char * start_ptr
}
Uint32 length
Uint32 capacity
-->
<Offset name="buffer" description="Where the buffer/pointer starts." />
<Offset name="size" description="Where the number of leters is stored (string length without 0-terminator)." />
<Offset name="capacity" description="Capacity of the buffer in letters (default=15)." />
</Group>
</Group>
<Group name="name" description="A structure used for names all over the place.">
<Offset name="first" description="Lowercase stl string with the first name. For ex. 'urist'" />
<Offset name="nick" description="Stl string with the nickname. Set by the player." />
<Offset name="second_words" description="Array of 7 indexes into the language vectors."/>
<Offset name="parts_of_speech" description="Array of 7 16-bit indexes into the language vectors."/>
<Offset name="language" description="Language of the name."/>
<Offset name="has_name" description="Boolean flag."/>
</Group>
<Group name="Position" description="Offsets used by the Position module.">
<Address name="window_x" description="X coordinate of the current view (DWORD)" />
<Address name="window_y" description="Y coordinate of the current view (DWORD)" />
<Address name="window_z" description="Z coordinate of the current view (DWORD)" />
<Address name="cursor_xyz" description="Coordinates of the cursor (3xDWORD)." />
<Address name="mouse_pos" description="Position of the mouse (3xDWORD?)" />
<Address name="window_dims" description="Size of the view in tiles (2xWORD)" />
<Address name="screen_tiles_pointer" description="Pointer to the screen tile array." />
</Group>
<Group name="GUI" description="Offsets used by the GUI module.">
<Address name="pause_state" description="a flag that determines if the game is paused."/>
<Address name="current_cursor_creature" description="A vector? of creatures currently under the cursor."/>
<Address name="current_menu_state" description="A numeric value that describes the state of the current GUI element (switching between menus will change this)."/>
<Address name="view_screen" description="Pointer to the current view screen object (GUI screen)."/>
</Group>
<Group name="Maps" description="Offsets used by the Maps module.">
<Address name="map_data" description="Pointer to the start of the map structure."/>
<Address name="x_count_block" description="X Size of the local map (in 16x16x1 blocks)."/>
<Address name="y_count_block" description="Y Size of the local map (in 16x16x1 blocks)."/>
<Address name="z_count_block" description="Z Size of the local map (in 16x16x1 blocks)."/>
<Address name="x_count" description="X Size of the local map (in tiles)."/>
<Address name="y_count" description="Y Size of the local map (in tiles)."/>
<Address name="z_count" description="Z Size of the local map (in tiles)."/>
<Address name="region_x"/>
<Address name="region_y"/>
<Address name="region_z"/>
<Address name="world_size_x"/>
<Address name="world_size_y"/>
<Offset name="world_size_x_from_wdata" />
<Offset name="world_size_y_from_wdata" />
<Address name="world_data" description="Pointer to a structure containing world region data(AFAIK) in DF 31.20 and newer."/>
<Group name="block" description="The map block structure.">
<Offset name="vein_vector" description="Mineral veins, objects holding tile types under ice, etc..."/>
<Offset name="vegetation_vector" description="All the plants in this block, including farm plats."/>
<Offset name="effect_vector" description="Effect objects present in the block."/>
<Offset name="item_idx_vector" description="Indexes of item objects present in the block."/>
<Offset name="type" description="16x16 x 2B tile type values"/>
<Offset name="designation" description="16x16 * 4B designation fields"/>
<Offset name="occupancy" description="16x16 * 4B occupancy fields" />
<Offset name="temperature1" />
<Offset name="temperature2" />
<Offset name="biome_stuffs" />
<Offset name="pathfinding" />
<Offset name="feature_local" description="Index into a local feature vector (adamantine, etc. Complicated, see source)" />
<Offset name="feature_global" description="Index into the global feature vector (hell, etc.)." />
<Offset name="mystery_offset" description="It's a mystery! I mean Kittens!" />
</Group>
<Group name="features">
<Group name="global">
<Address name="vector" />
<Offset name="vector_from_wdata" />
<Offset name="funcptr" />
<Offset name="material" />
<Offset name="submaterial" />
</Group>
<Group name="local">
<Address name="start_ptr" />
<Offset name="start_ptr_from_wdata" />
<Offset name="material" />
<Offset name="submaterial" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" />
<Address name="ptr2_region_array" />
<Offset name="geoblock_vector_from_wdata" />
<Offset name="ptr2_region_array_from_wdata" />
<!-- values for the region structure -->
<HexValue name="region_size" />
<Offset name="region_geo_index_off" />
<!-- geoblock offset(s?) -->
<Offset name="geolayer_geoblock_offset" /> vector
<Offset name="type_inside_geolayer" /> vector
</Group>
</Group>
<Group name="Creatures" description="Offsets used by the Creatures module.">
<Address name="vector"/>
<Address name="current_race" description="Index of the current player race." />
<Address name="current_civ" description="Index of the current player civilization." />
<Group name="creature">
<Offset name="name" description="Creature name, see the name group." />
<Offset name="custom_profession" description="String object with custom profession." />
<Offset name="profession" description="Profession index." />
<Offset name="race" description="Race of the creature." />
<Offset name="position" description="X,Y,Z." />
<Offset name="flags1" description="First set of flags" />
<Offset name="flags2" description="Second set of flags" />
<Offset name="flags3" description="Third set of flags" />
<Offset name="caste" description="Caste of the creature. Same as sex most of the time." />
<Offset name="sex" description="Sex of the creature." />
<Offset name="id" description="Unique ID of the creature, seems to be used for binary search in the creature vector." />
<Offset name="civ" description="What civ the creature belongs to." />
<Group name="advanced">
<Offset name="pickup_equipment_bit" description="Setting this makes creatures re-check the status of their equip." />
<Offset name="mood" />
<Offset name="pregnancy" description="Pregnancy timer.." />
<Offset name="pregnancy_ptr" description="Pregnancy object." />
<Offset name="birth_year" description="The year the creature has been born." />
<Offset name="birth_time" description="Time of year the creature has been born." />
<Offset name="current_job" />
<Offset name="current_job_skill" description="the skill that will be increased at the end of the mood (or not)" />
<Offset name="physical" value="0x464" description="An array of physical attributes." />
<Offset name="appearance_vector" description="seems to be indexes in the list of possible colors defined in the raws for each group" />
<Offset name="inventory_vector" />
<Offset name="owned_items_vector" />
<Offset name="artifact_name" description="Name of the artifact created by this creature." />
<Offset name="soul_vector" description="A vector of souls attached to the creature." />
<Offset name="current_soul" description="Currently active soul?" />
<Offset name="labors" description="Array of labors. Used by DT to enable/disable them." />
<Offset name="happiness" description="Number that says how happy the creature is." />
<Offset name="hist_figure_id" description="For a creature matching a historical figure, it's ID"/>
</Group>
</Group>
<Group name="soul">
<Offset name="name" description="Name of the soul." />
<Offset name="mental" description="An array of mental attributes." />
<Offset name="skills_vector" description="Vector of non-zero skills the creature has." />
<Offset name="traits" />
</Group>
<Group name="job">
<Offset name="id" description="Incrementaly assigned." />
<Offset name="type" description="seems to be just like the old occupations" />
<Offset name="materials_vector" />
<Group name="material">
<Offset name="maintype" description="like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ..." />
<Offset name="sectype1" description="subsubtype ?" />
<Offset name="sectype2" description="subtype ?" />
<Offset name="sectype3" description="index of material (for example, 2 is for silver)" />
<Offset name="flags" description="set only for shell / bone mood requirements ?" />
</Group>
</Group>
</Group>
<Group name="Materials" description="Offsets used by the Materials module.">
<Address name="inorganics" description="Soil, stone, gems and metal."/>
<Address name="organics_all" description="Wood and plant matter, mixed" />
<Address name="organics_plants" description="plant matter" />
<Address name="organics_trees" description="just wood" />
<Address name="creature_type_vector" description="A vector of creature races" />
<Address name="other" description="Base material types? Code suggests it's a null-terminated string of string pointers? Is this used at all?" />
<Group name="creature" description="Creature race objects">
<Offset name="caste_vector" description="A race is divided into castes. Normally male and female."/>
<Offset name="extract_vector"/>
<Offset name="tile" description="ASCII tile used for the creature"/>
<Offset name="tile_color" description="color of the ASCII tile"/>
<Group name="caste">
<Offset name="bodypart_vector"/>
<Offset name="attributes"/>
<Offset name="color_modifiers"/>
</Group>
<Group name="caste_color_mods">
<Offset name="part"/>
<Offset name="startdate"/>
<Offset name="enddate"/>
</Group>
<Group name="caste_bodyparts">
<Offset name="id"/>
<Offset name="category"/>
<Offset name="layers_vector"/>
<Offset name="singular_vector"/>
<Offset name="plural_vector"/>
</Group>
</Group>
<Group name="descriptors">
<Address name="vectors_start" />
<Offset name="rawname" />
<Offset name="name" />
<Address name="colors_vector" />
<Offset name="color_r" /><!--floats !-->
<Offset name="color_v" />
<Offset name="color_b" />
<Address name="all_colors_vector" description="A list of all colors, including eyes and stuff" />
</Group>
</Group>
<Group name="Constructions">
<Address name="vector"/>
<Offset name="sizeof"/>
</Group>
<Group name="Engravings">
<Address name="vector"/>
</Group>
<Group name="Translations">
<Address name="language_vector"/>
<Address name="translation_vector"/>
<Offset name="word_table"/>
</Group>
<Group name="Vegetation">
<Address name="vector"/>
<Offset name="tree_desc_offset"/>
</Group>
<Group name="Buildings">
<Address name="buildings_vector"/>
<Offset name="building_custom_workshop_type"/>
<Address name="custom_workshop_vector"/>
<Offset name="custom_workshop_name"/>
<Offset name="custom_workshop_type"/>
</Group>
<Group name="Hotkeys">
<Address name="start"/>
<Offset name="mode"/>
<Offset name="coords"/>
<HexValue name="sizeof"/>
</Group>
<Group name="Items">
<!-- most of those seem completely unused! -->
<Address name="items_vector" />
<Offset name="id" description="Item ID offset"/>
List of offsets in the VTable :
<Offset name="item_type_accessor" />
<Offset name="item_subtype_accessor" />
<Offset name="item_subindex_accessor" />
<Offset name="item_index_accessor" />
<Offset name="item_quality_accessor" />
<Offset name="item_quantity_accessor" />
<!--
<Offset name="item_improvement_vector" />
<Offset name="item_improvement_subindex" />
<Offset name="item_improvement_index" />
<Offset name="item_improvement_quality" />
-->
<Offset name="item_wear_accessor" />
<Offset name="item_ref_vector" description="Contains the owner among other things"/>
<Offset name="owner_ref_id_field" description="Creature ID offset in general_ref_unit_itemownerst"/>
</Group>
<Group name="World">
<Address name="current_tick" description="Current time of the year" />
<Address name="current_year" description="Current year" />
<Address name="current_weather" description="5x5 array of bytes for surrounding biomes. For each: 0=clear, 1=raining, 2=snowing." />
<Address name="game_mode" description="Current game mode" />
<Address name="control_mode" description="Current control mode" />
<!--<Address name="control_mode_copy" description="Copy of the control mode in DF memory" />-->
</Group>
<Group name="Legends">
<Group name="figures">
<Address name="vector"/>
<Offset name="profession" description="Figure's profession"/>
<Offset name="race" description="Figure's race"/>
<Offset name="caste" description="Figure's caste; mostly equal to sex"/>
<Offset name="sex" description="Figure's sex (or maybe the other way round)"/>
<Offset name="appeared_year"/>
<Offset name="born_year"/>
<Offset name="born_seconds"/>
<Offset name="died_year"/>
<Offset name="died_seconds"/>
<Offset name="name" description="A standard name record"/>
<Offset name="unit_id" description="ID of the creature matching the figure, or -1"/>
<Offset name="figure_id" description="ID of the figure, ordered"/>
<Offset name="entity_link_vector"/>
<Offset name="histfig_link_vector"/>
</Group>
<Group name="events">
<Address name="vector"/>
<Offset name="year"/>
<Offset name="seconds"/>
<Offset name="event_id"/>
<Group name="hist_figure_died">
<Offset name="figure_id"/>
<Offset name="slayer_id"/>
<Offset name="slayer_race"/>
<Offset name="slayer_caste"/>
<Offset name="slayer_item_id"/>
<Offset name="region_id"/>
</Group>
</Group>
</Group>
</Offsets>
</Base>
.,:rsr,
:2;,;r2A@@5
@2::s5A#@@@ @r. .
sd;:riXA#@@ :@@@Gir;;AS9
Bs::sS3A#@2 @@#AhXirsS#;
iHrLr5d#@@@ .@#95sr;;rie
i*' `*@3 @@A2sr;:;r#5
:..:rll: @@A5sr::r3@
@Hr;iZ#@@@@ `:rr;;;;:
S@r.;i2#@@@ @s. ..
@2::ri2A@@# B@G2ir:...5i
:@r,r3X##@@ @G5sr:..,:A
.@Ar;;rSB@@# H#2sr;,..,is
.' `* ,@ASs;:..,:B
;rr;:,..,:.
`'''
W I N D O W S
and
W I N E
<Version name="v0.31.01 legacy" os="windows" base="DF2010">
<MD5 value="851c1190b6a7b42f2463967623d18575" />
<PETimeStamp value="0x4BB45F99" />
<VTable>
<multiclass name="building_trapst" typeoffset="0x138" />
<multiclass name="building_workshopst" typeoffset="0x138" />
<multiclass name="building_furnacest" typeoffset="0x152" />
<multiclass name="building_siegeenginest" typeoffset="0x138" />
</VTable>
<Offsets>
<Address name="WORLD" value="0x0165B188" />
<Group name="vector">
<HexValue name="sizeof" value="0x18" />
<Offset name="start" value="0xC" />
<!--
Vector layout in MSVC 9:
DWORD Allocator?
DWORD ?
DWORD ?
DWORD Start
DWORD End
DWORD AllocationEnd
-->
</Group>
<Group name="string">
<HexValue name="sizeof" value="0x1C" />
<Group name="MSVC">
<Offset name="buffer" value="0x4" />
<Offset name="size" value="0x14" />
<Offset name="capacity" value="0x18" />
</Group>
</Group>
<Group name="name">
<Offset name="first" value="0x0" />
<Offset name="nick" value="0x1C" />
<Offset name="second_words" value="0x38" />
<Offset name="parts_of_speech" value="0x54" />
<Offset name="language" value="0x64" />
<Offset name="has_name" value="0x68" />
</Group>
<Group name="Position">
<Address name="window_x" value="0xe32798" />
<Address name="window_y" value="0xe60838" />
<Address name="window_z" value="0xe60814" />
<Address name="cursor_xyz" value="0xae82cc" />
<Address name="window_dims" value="0x17f5ab8" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x146e45f" />
<Address name="current_cursor_creature" value="0xae82cc" valid="false" />
<Address name="current_menu_state" value="0x017f6f38" />
<Address name="view_screen" value="0xae82cc" valid="false" />
</Group>
<Group name="Maps">
<Address name="map_data" value="0x016AD718" />
<Address name="x_count_block" value="0x016ad738" />
<Address name="y_count_block" value="0x016ad73C" />
<Address name="z_count_block" value="0x016ad740" />
<Address name="x_count" value="0x016ad744" />
<Address name="y_count" value="0x016ad748" />
<Address name="z_count" value="0x016ad74C" />
<Address name="region_x" value="0x016ad750" /><!--WORLD + 0x525C8-->
<Address name="region_y" value="0x016ad754" /><!--WORLD + 0x525CC-->
<Address name="region_z" value="0x016ad758" /><!--WORLD + 0x525D0-->
<Address name="world_size_x" value="0x016AEDD4" />
<Address name="world_size_y" value="0x016AEDD6" />
<Group name="block">
<Offset name="vein_vector" value="0x08" />
<Offset name="vegetation_vector" value="0x0078" />
<Offset name="type" value="0x009A" />
<Offset name="designation" value="0x029C" />
<Offset name="occupancy" value="0x069c" />
<Offset name="temperature1" value="0x159c" />
<Offset name="temperature2" value="0x179c" />
<Offset name="biome_stuffs" value="0x1D9C" />
<Offset name="pathfinding" value="0x0D9c" />
<Offset name="feature_local" value="0x2C" />
<Offset name="feature_global" value="0x30" />
<!--
map_data_map_x_offset 0x0058
map_data_map_y_offset 0x005A
map_data_type_offset 0x009a
map_data_designation_offset 0x029c
map_data_occupancy_offset 0x069c
map_data_0a60_offset 0x0A9c
map_data_pathfinding_offset 0x0D9c
map_data_1160_offset 0x119c
map_data_1360_offset 0x139c
map_data_temperature1_offset 0x159c
map_data_temperature2_offset 0x179c
map_data_1960_offset 0x199c
map_data_1b60_offset 0x1B9c
-->
</Group>
<Group name="features">
<Group name="global">
<Address name="vector" value="0x16AF4FC" /> <!-- WORLD + 0x54374 -->
<Offset name="funcptr" value="0x100" />
<Offset name="material" value="0x34" />
<Offset name="submaterial" value="0x38" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x16AF5C8" /> <!-- WORLD + 0x54440 -->
<Offset name="material" value="0x30" />
<Offset name="submaterial" value="0x34" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x16AF52C" />
<Address name="ptr2_region_array" value="0x16AF574" />
<!-- values for the region structure -->
<HexValue name="region_size" value="0x64" />
<Offset name="region_geo_index_off" value="0x60" />
<!-- geoblock offset(s?) -->
<Offset name="geolayer_geoblock_offset" value="0x4" /> vector
<Offset name="type_inside_geolayer" value="0x4" /> vector
</Group>
</Group>
<Group name="Creatures">
<Address name="vector" value="0x0166ecc4" />
<Address name="current_race" value="0x01470fbc" />
<Address name="current_civ" value="0x01470fb0" />
<Group name="creature">
<Offset name="name" value="0x0" />
<Offset name="custom_profession" value="0x6c" />
<Offset name="profession" value="0x88" />
<Offset name="race" value="0x8C" />
<Offset name="position" value="0x90" />
<Offset name="flags1" value="0xF8" />
<Offset name="flags2" value="0xFC" />
<Offset name="caste" value="0x110" />
<Offset name="sex" value="0x112" />
<Offset name="id" value="0x114" />
<Offset name="civ" value="0X120" />
<Group name="advanced">
<Offset name="pickup_equipment_bit" value="0X21C" />
<Offset name="mood" value="0x288" />
<Offset name="pregnancy" value="0x28C" />
<Offset name="pregnancy_ptr" value="0x290" />
<Offset name="birth_year" value="0x298" />
<Offset name="birth_time" value="0x29C" />
<Offset name="current_job" value="0x390" /> <!-- from chmod -->
<Offset name="current_job_skill" value="0x394" /> the skill that will be increased at the end of the mood (or not)
<Offset name="physical" value="0x464" />
<Offset name="appearance_vector" value="0x604" /> seems to be indexes in the list of possible colors defined in the raws for each group
<Offset name="artifact_name" value="0x6D0" />
<Offset name="soul_vector" value="0x073C" />
<Offset name="current_soul" value="0x0754" />
<Offset name="labors" value="0x770" />
<Offset name="happiness" value="0x830" />
</Group>
</Group>
<Group name="soul">
<Offset name="name" value="0x0" />
<Offset name="mental" value="0x88" />
<Offset name="skills_vector" value="0x1F4" />
<Offset name="traits" value="0x224" />
</Group>
<Group name="job">
<Offset name="id" value="0x0" /> Incrementaly assigned
<Offset name="type" value="0x8" /> seems to be just like the old occupations
<Offset name="materials_vector" value="0xa4" />
<Group name="material">
<Offset name="maintype" value="0x0" /> like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
<Offset name="sectype1" value="0x2" /> subsubtype ?
<Offset name="sectype2" value="0x4" /> subtype ?
<Offset name="sectype3" value="0x8" /> index of material (for example, 2 is for silver)
<Offset name="flags" value="0x18" /> set only for shell / bone mood requirements ?
</Group>
</Group>
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x16afd04" /><!-- WORLD + 0x54B7C -->
<Address name="organics_all" value="0x16afd1C" /><!-- wood and plant matter, WORLD + 0x54B94 -->
<Address name="organics_plants" value="0x16afd34" /><!-- plant matter, WORLD + 0x54BAC -->
<Address name="organics_trees" value="0x16afd64" /><!-- just wood, WORLD + 0x54BDC -->
<Address name="creature_type_vector" value="0x016AFE58" /><!-- creature types, WORLD + 0x54CD0 -->
<Group name="creature">
<Offset name="caste_vector" value="0x138" />
<Offset name="extract_vector" value="0x1A14" />
<Offset name="tile" value="0xE0" />
<Offset name="tile_color" value="0xF6" />
<Group name="caste">
<Offset name="bodypart_vector" value="0x51C" />
<Offset name="attributes" value="0x654" />
<Offset name="color_modifiers" value="0xACC" />
</Group>
<Group name="caste_color_mods">
<Offset name="part" value="0x70" />
<Offset name="startdate" value="0x64" />
<Offset name="enddate" value="0x68" />
</Group>
<Group name="caste_bodyparts">
<Offset name="id" value="0x0" />
<Offset name="category" value="0x1C" />
<Offset name="layers_vector" value="0x44" />
<Offset name="singular_vector" value="0x78" />
<Offset name="plural_vector" value="0x90" />
</Group>
</Group>
</Group>
<Group name="Constructions">
<Address name="vector" value="0x165b290" /> <!-- WORLD + 0x108 -->
<Offset name="sizeof" value="0x14" />
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x016AFFD8" /> <!-- WORLD + 0x54E50 -->
<Address name="translation_vector" value="0x016B0008" /> <!-- WORLD + 0x54E80 -->
<Offset name="word_table" value="0x4C" />
</Group>
<Group name="Vegetation">
<Address name="vector" value="0x0167030C" /> <!-- WORLD + 0x15184 -->
<Offset name="tree_desc_offset" value="0x6C" />
</Group>
<Group name="Buildings">
<Address name="buildings_vector" value="0x0166f9a0" /><!--WORLD + 0x14818-->
<Offset name="building_custom_workshop_type" value="0x164" />
<Address name="custom_workshop_vector" value="0x016B8798" /><!--WORLD + 0x5D610-->
<Offset name="custom_workshop_name" value="0x4" />
<Offset name="custom_workshop_type" value="0x20" />
</Group>
<Group name="Hotkeys">
<Address name="start" value="0x01476ecc" />
<Offset name="mode" value="0x1C" />
<Offset name="coords" value="0x20" />
<HexValue name="sizeof" value="0x2C" />
</Group>
<!-- addresses from belal: vectors might need 8 subtracted from them
buildings 0x0166f9a8
constructions 0xffffffff
creatures 0x0166eccc
current_cursor_creature 0x00ae82cc
current_menu_state 0x017f6f38
cursor_xyz 0x0166ecd4
effects_vector 0x017f6da0
hotkey_start 0x01476ecc
items 0x0166eda8
language_vector 0x016affe0
map_data 0x016ad718
matgloss 0xffffffff
notes 0x01474de8
pause_state 0x0146e45f
region_x 0x016ad750
region_y 0x016ad754
region_z 0x016ad758
settlement_current 0xffffffff
settlements 0x016af4a4
translation_vector 0x016b0010
view_screen 0xffffffff
window_dims 0x017f5abc
window_x 0x00e32798
window_y 0x00e60838
window_z 0x00e60814
world 0x016aed50
x_count 0x016ad738
y_count 0x016ad73c
z_count 0x016ad740
-->
</Offsets>
</Version>
<Version name="v0.31.02 legacy" os="windows" base="v0.31.01 legacy">
<MD5 value="23dfe141c7ea4e63ebb3c618a12b48ec" />
<PETimeStamp value="0x4BBDF378" />
</Version>
<Version name="v0.31.03 legacy" os="windows" base="v0.31.01 legacy" rebase="0x1000">
<MD5 value="94641d97a0ecff6f2194e3d0b310d946" />
<PETimeStamp value="0x4BC3C470" />
<Offsets>
WORLD: 0x0165c1d0 ?
<Group name="Position">
<Address name="window_dims" value="0x17f6b00" /> Was 0x17f5ab8
</Group>
<Group name="Maps">
<Address name="map_data" value="0x016AE760" />
<Address name="x_count_block" value="0x016AE780" />
<Address name="y_count_block" value="0x016AE784" />
<Address name="z_count_block" value="0x016AE788" />
<Address name="x_count" value="0x016AE78C" />
<Address name="y_count" value="0x016AE790" />
<Address name="z_count" value="0x016AE794" />
<Address name="region_x" value="0x016AE798" />
<Address name="region_y" value="0x016AE79C" />
<Address name="region_z" value="0x016AE7A0" />
<Address name="world_size_x" value="0x016AFE1C" />
<Address name="world_size_y" value="0x016AFE1E" />
<Group name="features">
<Group name="global">
<Address name="vector" value="0x16B0544" /> <!-- WORLD + 0x54374 -->
</Group>
<Group name="local">
<Address name="start_ptr" value="0x16B0610" /> <!-- WORLD + 0x54440 -->
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x16B0574" />
<Address name="ptr2_region_array" value="0x16B05BC" />
</Group>
</Group>
<Group name="Creatures">
<Address name="vector" value="0x166FD0C" />
<Group name="creature">
<Group name="advanced">
<Offset name="artifact_name" value="0x6D4" />
<Offset name="soul_vector" value="0x0740" />
<Offset name="current_soul" value="0x0758" />
<Offset name="labors" value="0x774" />
<Offset name="happiness" value="0x834" />
</Group>
</Group>
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x16B0D4C" /><!--inorganics vector = WORLD + 0x54B7C = 0x16B0D4C-->
<Address name="organics_all" value="0x16B0D64" /><!--WORLD + 0x54B94-->
<Address name="organics_plants" value="0x16B0D7C" /><!--plant matter, WORLD + 0x54BAC-->
<Address name="organics_trees" value="0x16B0DAC" /><!--just wood, WORLD + 0x54BDC-->
<Address name="creature_type_vector" value="0x16B0EA0" /><!--WORLD + 0x54CD0-->
<Address name="other" value="0x16BA114" />
<Group name="descriptors">
<Address name="vectors_start" value="0x16B9780" />
<Offset name="rawname" value="0x0" />
<Offset name="name" value="0x4C" />
<Address name="colors_vector" value="0x16B9768" />
<Offset name="color_r" value="0x6C" /><!--floats !-->
<Offset name="color_v" value="0x70" />
<Offset name="color_b" value="0x74" />
<Address name="all_colors_vector" value="0x16B9798" /><!--A list of all colors, including eyes and stuff-->
</Group>
</Group>
<Group name="Constructions">
<Address name="vector" value="0x165C2D8" /><!--WORLD + 0x108-->
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x016B1020" /><!--WORLD + 0x54E50-->
<Address name="translation_vector" value="0x16B1050" /><!--WORLD + 0x54E80-->
</Group>
<Group name="Vegetation">
<Address name="vector" value="0x1671354" /><!--WORLD + 0x15184-->
</Group>
<Group name="Buildings">
<Address name="buildings_vector" value="0x16709E8" /><!--WORLD + 0x14818-->
<Address name="custom_workshop_vector" value="0x16B97E0" /><!--WORLD + 0x5D610-->
</Group>
<Group name="Items">
<Address name="items_vector" value="0x166FE00" />
List of offsets in the VTable :
<Offset name="item_type_accessor" value="0x0" />
<Offset name="item_subtype_accessor" value="0x4" />
<Offset name="item_subindex_accessor" value="0x8" />
<Offset name="item_index_accessor" value="0xC" />
<Offset name="item_type_accessor" value="0x14" /> ... seriously, WHAT?
<Offset name="item_quality_accessor" value="0x238" />
<!--
<Offset name="item_improvement_vector" value="0xA0" />
<Offset name="item_improvement_subindex" value="0x4" />
<Offset name="item_improvement_index" value="0x8" />
<Offset name="item_improvement_quality" value="0x14" />
-->
</Group>
<Group name="World">
<Address name="current_tick" value="0x0e47e08" />
<Address name="current_year" value="0x0e79f00" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.04 SDL" os="windows" base="v0.31.03 legacy">
<MD5 value="655a895c5b90d15eb9bb71e28c6c62e5" />
<PETimeStamp value="0x4bf014fa" />
<Offsets>
<Group name="Creatures">
<Address name="vector" value="0x167870C" />
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x16BD0B0" />
<!--<Address name="other" value="0x16C6478" />-->
<Address name="organics_all" value="0x16BD0C8" />
<Address name="organics_plants" value="0x16bd0e0" />
<Address name="organics_trees" value="0x16bd110" />
<Address name="creature_type_vector" value="0x16BD204" />
<Address name="other" value="0x16C6478"/>
<Group name="descriptors">
<Address name="colors_vector" value="0x16C5ACC" />
<Address name="vectors_start" value="0x16C5AE4" />
<Address name="all_colors_vector" value="0x16C5AFC" />
</Group>
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x16BD384" />
<Address name="translation_vector" value="0x16BD3B4" />
</Group>
<Group name="World">
<Address name="current_tick" value="0xE78780" />
<Address name="current_year" value="0xEAA878" />
</Group>
<Group name="Maps">
<Address name="map_data" value="0x016BAAC4" />
<Address name="x_count_block" value="0x016BAAE4" />
<Address name="y_count_block" value="0x016BAAE8" />
<Address name="z_count_block" value="0x016BAAEC" />
<Address name="x_count" value="0x016BAAF0" />
<Address name="y_count" value="0x016BAAF4" />
<Address name="z_count" value="0x016BAAF8" />
<Address name="region_x" value="0x016BAAFC" />
<Address name="region_y" value="0x016BAB00" />
<Address name="region_z" value="0x016BAB04" />
<Address name="world_size_x" value="0x16BC180" />
<Address name="world_size_y" value="0x16BC182" />
<Group name="features">
<Group name="global">
<Address name="vector" value="0x16BC8A8" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x16BC974" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x16BC8D8" />
<Address name="ptr2_region_array" value="0x16BC920" />
</Group>
</Group>
<Group name="Constructions">
<Address name="vector" value="0x1664CD8" />
</Group>
<Group name="Vegetation">
<Address name="vector" value="0x1679D54" />
</Group>
<Group name="Buildings">
<Address name="buildings_vector" value="0x16793e8" />
</Group>
<Group name="Items">
<Address name="items_vector" value="0x1678800" />
</Group>
<Group name="Position">
<Address name="window_dims" value="0x18030fc" />
<Address name="window_x" value="0xe640dc" />
<Address name="window_y" value="0xe921b0" />
<Address name="window_z" value="0xe9218c" />
<Address name="cursor_xyz" value="0xae92c8" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.05 SDL" os="windows" base="v0.31.04 SDL" rebase="0x8010">
<MD5 value="394ff63fc00fedd5df0b36e4beb589bc" />
<PETimeStamp value="0x4c091569" />
<Offsets>
<Group name="Creatures">
<Address name="current_race" value="0x014abee4" />
<Address name="current_civ" value="0x01471FB0" /> BOGUS!
</Group>
<Group name="Position">
<Address name="window_x" value="0xe6c0dc" />
<Address name="window_y" value="0xe9a1b0" />
<Address name="window_z" value="0xe9a18c" />
<Address name="cursor_xyz" value="0xaf12cc" />
</Group>
<Group name="World">
<Address name="current_tick" value="0xE80780" />
<Address name="current_year" value="0xEB2878" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.06 SDL" os="windows" base="v0.31.05 SDL" rebase="0x10">
<MD5 value="c4b7e37dafa2716e31d29110968ac64e" />
<PETimeStamp value="0x4c0f83d5" />
<Group name="Position">
<Address name="cursor_xyz" value="0xaf12d0" />
</Group>
</Version>
<Version name="v0.31.07 SDL" os="windows" base="v0.31.06 SDL" rebase="0x2000">
<MD5 value="1c0b5254af1b8ff9a34b51c3f6609da3" />
<PETimeStamp value="0x4c1cbe4b" />
<Offsets>
<Group name="Position">
<Address name="cursor_xyz" value="0xaf32d8" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.08 SDL" os="windows" base="v0.31.07 SDL" rebase="-0x1000">
<MD5 value="a83e6b21307cf41fb54c315fa40dec86" />
<PETimeStamp value="0x4c1d69fe" />
<Offsets>
<Group name="Creatures">
<Address name="current_civ" value="0x14acee8" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.09 SDL" os="windows" base="v0.31.08 SDL" rebase="0xD028" >
<MD5 value="1a85839ab03df082974dc5629d3fbc26" />
<PETimeStamp value="0x4C3897C0" />
<Offsets>
<Group name="Position">
<Address name="cursor_xyz" value="0xaff2d8" />
</Group>
<Group name="Creatures">
<Address name="vector" value="0x168E73C" />
<Group name="creature">
<Group name="advanced">
<Offset name="inventory_vector" value="0x2FC" />
<Offset name="physical" value="0x4AC" />
<Offset name="appearance_vector" value="0x64c" /> <!-- Maybe slightly wrong -->
<Offset name="artifact_name" value="0x71c" />
<Offset name="labors" value="0x7Bc" />
<Offset name="soul_vector" value="0x0788" />
<Offset name="current_soul" value="0x07A0" />
<Offset name="happiness" value="0x87c" />
</Group>
</Group>
</Group>
</Offsets>
</Version>
<Version name="v0.31.10 SDL" os="windows" base="v0.31.09 SDL">
<MD5 value="349d1ad6eda7b6c5e87f8e4726a0999a" />
<PETimeStamp value="0x4C398089" />
</Version>
<Version name="v0.31.11 SDL" os="windows" base="v0.31.10 SDL" rebase="0x7018">
<MD5 value="552cfa417fd131204ebfee66aefc4adb" />
<PETimeStamp value="0x4C496D93" />
<Offsets>
<Group name="Position">
<Address name="cursor_xyz" value="0xB062D8" />
<Address name="window_x" value="0xe81114" />
<Address name="window_y" value="0xeAF1E8" />
<Address name="window_z" value="0xeAF1C4" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.12 SDL" os="windows" base="v0.31.11 SDL">
<MD5 value="f0459165a426a9f2dd8d957e9fa7f01d" />
<PETimeStamp value="0x4C4C32E7" />
<Offsets>
<Group name="Position">
<Address name="screen_tiles_pointer" value="0x18313D0" />
</Group>
<Group name="World">
<Address name="current_tick" value="0xde8910" /> MAYBE
<Address name="current_year" value="0xec78b0" />
<!--<Address name="current_weather" value="0x14BCDEE" />-->
</Group>
</Offsets>
</Version>
<Version name="v0.31.13 SDL" os="windows" base="DF2010">
<MD5 value="59f194b0b2103ca5df7601a01ce21280" />
<PETimeStamp value="0x4C90ADA8" />
<VTable>
<multiclass name="building_trapst" typeoffset="0xF8" />
<multiclass name="building_workshopst" typeoffset="0xF8" />
<multiclass name="building_furnacest" typeoffset="0x10A" />
<multiclass name="building_siegeenginest" typeoffset="0xF8" />
</VTable>
<Offsets>
<Address name="WORLD" value="0x016425A0" />
<Group name="vector">
<HexValue name="sizeof" value="0x10" />
<Offset name="start" value="0x0" />
<!--
Vector layout in MSVC 10:
DWORD Start
DWORD End
DWORD AllocationEnd
DWORD ?
NOT FINAL, needs research
-->
</Group>
<Group name="string">
<HexValue name="sizeof" value="0x1C" />
<Group name="MSVC">
<Offset name="buffer" value="0x0" />
<Offset name="size" value="0x10" />
<Offset name="capacity" value="0x14" />
</Group>
</Group>
<Group name="name">
<Offset name="first" value="0x0" />
<Offset name="nick" value="0x1C" />
<Offset name="second_words" value="0x38" />
<Offset name="parts_of_speech" value="0x54" />
<Offset name="language" value="0x64" />
<Offset name="has_name" value="0x68" />
</Group>
<Group name="Position">
<Address name="cursor_xyz" value="0xac77f0" />
<Address name="window_x" value="0xe42c74" />
<Address name="window_y" value="0xe70d48" />
<Address name="window_z" value="0xe70d24" />
<Address name="screen_tiles_pointer" value="0x01480684" /><!-- BAD, not a pointer! -->
<Address name="window_dims" value="0xac807c" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x147E971" />
</Group>
<Group name="World">
<Address name="current_weather" value="0x147E948" />
</Group>
<Group name="Vegetation">
<Address name="vector" value="0x1656EFC" />
</Group>
<Group name="Maps">
<Address name="map_data" value="0x1697bdC" />
<Address name="x_count_block" value="0x1697bf4" />
<Address name="y_count_block" value="0x1697bf8" />
<Address name="z_count_block" value="0x1697bfc" />
<Address name="x_count" value="0x1697c00" />
<Address name="y_count" value="0x1697c04" />
<Address name="z_count" value="0x1697c08" />
<Address name="region_x" value="0x1697c0C" />
<!--WORLD + 0x525C8-->
<Address name="region_y" value="0x1697c10" />
<!--WORLD + 0x525CC-->
<Address name="region_z" value="0x1697c14" />
<!--WORLD + 0x525D0-->
<Address name="world_size_x" value="0x1699290" />
<Address name="world_size_y" value="0x1699292" />
<Group name="block">
<Offset name="vein_vector" value="0x08" />
<Offset name="feature_local" value="0x24" />
<Offset name="feature_global" value="0x28" />
<Offset name="vegetation_vector" value="0x60" />
<Offset name="type" value="0x7A" />
<Offset name="designation" value="0x27C" />
<Offset name="occupancy" value="0x67C" />
<Offset name="temperature1" value="0x157C" />
<Offset name="temperature2" value="0x177C" />
<Offset name="biome_stuffs" value="0x1D7C" />
<Offset name="pathfinding" value="0x0D7c" />
</Group>
<Group name="features">
<Group name="global">
<Address name="vector" value="0x16998e0" />
<Offset name="funcptr" value="0xD8" />
<Offset name="material" value="0x2C" />
<Offset name="submaterial" value="0x30" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x1699974" />
<Offset name="material" value="0x28" />
<Offset name="submaterial" value="0x2C" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x1699900" />
<Address name="ptr2_region_array" value="0x1699930" />
<HexValue name="region_size" value="0x5C" />
<Offset name="region_geo_index_off" value="0x58" />
<Offset name="geolayer_geoblock_offset" value="0x4" /> vector
<Offset name="type_inside_geolayer" value="0x4" /> vector
</Group>
</Group>
<Group name="Materials"> YES
<Address name="inorganics" value="0x1699f18" />
<Address name="organics_all" value="0x1699f28" />
<Address name="organics_trees" value="0x1699f58" />
<Address name="organics_plants" value="0x1699f38" />
<Address name="creature_type_vector" value="0x1699ffC" />
<Address name="other" value="0x16C647C" /> NO!
<Group name="creature">
<Offset name="caste_vector" value="0x128" /> YES
<Offset name="extract_vector" value="0x1A08" /> YES
<Offset name="tile" value="0xE0" /> YES
<Offset name="tile_color" value="0xF6" /> YES
<Group name="caste">
<Offset name="bodypart_vector" value="0x51C" /> YES
<Offset name="attributes" value="0x5FC" /> MAYBE
<Offset name="color_modifiers" value="0xA24" /> YES
</Group>
<Group name="caste_color_mods"> YES
<Offset name="part" value="0x50" />
<Offset name="startdate" value="0x44" />
<Offset name="enddate" value="0x48" />
</Group>
<Group name="caste_bodyparts"> YES
<Offset name="id" value="0x0" />
<Offset name="category" value="0x1C" />
<Offset name="layers_vector" value="0x44" />
<Offset name="singular_vector" value="0x70" />
<Offset name="plural_vector" value="0x80" />
</Group>
</Group>
<Group name="descriptors">
<!--<Address name="vectors_start" value="0x16B9780" />--> this is crap it seems
<Offset name="rawname" value="0x0" />
<Offset name="name" value="0x3C" />
<Address name="colors_vector" value="0x169fb2c" />
<Offset name="color_r" value="0x5C" />
<Offset name="color_v" value="0x60" />
<Offset name="color_b" value="0x64" />
<Address name="all_colors_vector" value="0x169fb4c" />
</Group>
</Group>
<Group name="Constructions">
<Address name="vector" value="0x1642650"/>
<Offset name="sizeof" value="0x14" />
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x169a0fC"/>
<Address name="translation_vector" value="0x169a11C"/>
<Offset name="word_table" value="0x3c"/>
</Group>
<Group name="Creatures">
<Address name="vector" value="0x01655fe4"/>
<Address name="current_race" value="0x1482874" />
<Address name="current_civ" value="0x1482868" />
<Group name="creature">
<Offset name="name" value="0x0" />
<Offset name="custom_profession" value="0x006C" />
<Offset name="profession" value="0x0088" />
<Offset name="race" value="0x008C" />
<Offset name="position" value="0x90" />
<Offset name="flags1" value="0x00E0" />
<Offset name="flags2" value="0x00E4" />
<Offset name="caste" value="0x00F8"/>
<Offset name="sex" value="0x00FA" /> <!-- ASSUMED -->
<Offset name="id" value="0x00FC" />
<Offset name="civ" value="0x108" />
<Group name="advanced">
<Offset name="pickup_equipment_bit" value="0x01BC" />
<Offset name="mood" value="0x210" />
<Offset name="pregnancy" value="0x214" />
<Offset name="pregnancy_ptr" value="0x218" />
<Offset name="birth_year" value="0x220" />
<Offset name="birth_time" value="0x224" />
<Offset name="inventory_vector" value="0x284" />
<Offset name="current_job" value="0x02F0" />
<Offset name="current_job_skill" value="0x02F4" />
<Offset name="physical" value="0x3C4" />
<Offset name="appearance_vector" value="0x524" />
<Offset name="artifact_name" value="0x5D4" />
<Offset name="soul_vector" value="0x640" />
<Offset name="current_soul" value="0x650" />
<Offset name="labors" value="0x0664" />
<Offset name="happiness" value="0x0704" />
</Group>
</Group>
<Group name="soul">
<Offset name="name" value="0x4" />
<Offset name="mental" value="0x88" />
<Offset name="skills_vector" value="0x1F4 0x01F0" />
<Offset name="traits" value="0x0214" /> is it a vector?
</Group>
<Group name="job">
<Offset name="id" value="0x08" />
<Offset name="type" value="0x40" />
</Group>
</Group>
<Group name="Vegetation">
<Offset name="tree_desc_offset" value="0x6C"/>
</Group>
<Group name="Buildings">
<Address name="buildings_vector" value="0x1656890"/>
<Offset name="building_custom_workshop_type" value="0x11C" />
<Offset name="custom_workshop_name" value="0x4" />
<Offset name="custom_workshop_type" value="0x20" />
<Address name="custom_workshop_vector" value="0x0169fB6C" /> Second possible: 0x0169fb7C
</Group>
</Offsets>
</Version>
<Version name="v0.31.14 SDL" os="windows" base="v0.31.13 SDL" rebase="0x1000">
<PETimeStamp value="0x4C9B6EFB" />
<MD5 value="2da156d1fbaf8192ede9ce91abc5f366" />
<Offsets>
<Group name="Maps">
<Group name="features">
<Group name="global">
<Address name="vector" value="0x169a8ec" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x169a980" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x169a90C" />
<Address name="ptr2_region_array" value="0x169a93C" />
</Group>
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x169b108"/>
<Address name="translation_vector" value="0x169b128"/>
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x169af24" />
<Address name="organics_all" value="0x169af34" />
<Address name="organics_trees" value="0x169af64" />
<Address name="organics_plants" value="0x169af44" />
<Address name="creature_type_vector" value="0x169b008" />
<!--<Address name="other" value="0x16C647C" /> NO!-->
<Group name="descriptors">
<Address name="colors_vector" value="0x16a0b38" />
<Address name="all_colors_vector" value="0x16a0b58" />
</Group>
</Group>
<Group name="Buildings">
<Address name="custom_workshop_vector" value="0x016A0B78" /> Second possible: 0x016a0b88
</Group>
</Offsets>
</Version>
<Version name="v0.31.15 SDL" os="windows" base="v0.31.14 SDL">
<PETimeStamp value="0x4CA869EA" />
<MD5 value="b4d188dfb592fc813dad31f45407991d" />
</Version>
<Version name="v0.31.16 SDL" os="windows" base="v0.31.15 SDL" rebase="0x1050">
<PETimeStamp value="0x4CA9D544" />
<MD5 value="702b3ebaae468f73eb1411af54863013" />
<Offsets>
<Group name="Materials">
<Address name="other" value="0x16A21FC"/> 0x16445F0 + 0x5DC0C see code at 0x9CFB01
</Group>
<Group name="Creatures">
<Address name="current_civ" value="0x1484868" />
<Address name="current_race" value="0x1484874" />
</Group>
<Group name="Position">
<Address name="cursor_xyz" value="0xac97f0" />
<!--<Address name="screen_tiles_pointer" value="0x14826d4" />--> AS BOGUS AS IT GETS
<Address name="window_dims" value="0xaca07c" />
<Address name="window_x" value="0xE44C74" />
<Address name="window_y" value="0xE72D48" />
<Address name="window_z" value="0xe72d24" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x1480971" />
</Group>
<Group name="World">
<Address name="current_tick" value="0xdac470" /> MAYBE
<Address name="current_year" value="0xe8b410" />
<Address name="current_weather" value="0x1480948" />
</Group>
<Group name="Items">
<Address name="items_vector" value="0x16580d8" />
<Offset name="item_type_accessor" value="0x0" />
<Offset name="item_subtype_accessor" value="0x4" />
<Offset name="item_subindex_accessor" value="0x8" />
<Offset name="item_index_accessor" value="0xC" />
<Offset name="item_quality_accessor" value="0x238" />
<!--
<Offset name="item_improvement_vector" value="0x90" />
-->
</Group>
</Offsets>
</Version>
<Version name="v0.31.18 SDL" os="windows" base="v0.31.16 SDL" rebase="0x492D0">
<PETimeStamp value="0x4CE2841D" />
<MD5 value="b7be6b9db369d6adb72319dcf780f9f5" />
<Offsets>
<Address name="WORLD" valid="false" />
<Group name="Buildings">
<Address name="buildings_vector" value="0x16a1be0" />
<Address name="custom_workshop_vector" value="0x16eaca0" />
</Group>
<Group name="Position" valid="false">
<Address name="cursor_xyz" value="0xb127f0" valid="true" />
<Address name="window_dims" value="0xb1307c" valid="true" />
<Address name="window_x" value="0xe8dee4" valid="true" />
<Address name="window_y" value="0xebbfb8" valid="true" />
<Address name="window_z" value="0xebbf94" valid="true" />
</Group>
<Group name="GUI" valid="false">
<Address name="pause_state" value="0x14c9be1" valid="true" />
</Group>
<Group name="Maps">
<Group name="features">
<Group name="global">
<Address name="vector" value="0x16e4c30" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x16e4cc4" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x16E4C50" />
<Address name="ptr2_region_array" value="0x16E4C80" />
</Group>
</Group>
<Group name="Creatures" valid="false" >
0x016a12c0 vector
</Group>
<Group name="Materials" valid="false" >
<Address name="creature_type_vector" value="0x16E533C" valid="true" /> MAYBE... THE DETAILS WILL BE DIFFERENT
<Address name="inorganics" value="0x16e527C" valid="true" />
<!--<Address name="inorganics_gems?" value="0x16e528C" valid="true" />--> WTF IS THIS, I DON'T EVEN...
<Address name="organics_all" value="0x16e529C" valid="true" />
<Address name="organics_plants" value="0x16e52AC" valid="true" />
<Address name="organics_trees" value="0x16e52CC" valid="true" />
</Group>
<Group name="Constructions">
<Address name="vector" value="0x168d930"/>
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x016e553c"/>
<Address name="translation_vector" value="0x016e551c"/>
</Group>
<Group name="Items" valid="false" />
<Group name="World" valid="false">
<Address name="current_tick" description="Current time of the year" />
<Address name="current_year" description="Current year" />
<Address name="current_weather" value="0x14c9bb8" valid="true" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.19 SDL" os="windows" base="v0.31.18 SDL">
<PETimeStamp value="0x4D5BC345" />
<MD5 value="b7d1ff74835e5e8220a7e81e31f5a28d" />
<Offsets valid="false">
<Group name="string" valid="true" />
<Group name="vector" valid="true" />
<Group name="name" valid="true" />
<Group name="Position" valid="false">
<Address name="cursor_xyz" value="0xb4a7f0" valid="true" />
<Address name="window_dims" value="0xb4b07c" valid="true" />
<Address name="window_x" value="0xec6984" valid="true" />
<Address name="window_y" value="0xef4ba0" valid="true" />
<Address name="window_z" value="0xef4b7c" valid="true" />
</Group>
<Group name="Creatures" valid="true">
<Address name="current_civ" value="0x01506c1C" /> maybe
<Address name="current_race" value="0x01506c28" />
<Address name="vector" value="0x016da47C" />
<Group name="creature">
<Group name="advanced">
<Offset name="birth_year" value="0x224" />
<Offset name="birth_time" value="0x228" />
<Offset name="inventory_vector" value="0x288" />
<Offset name="current_job" value="0x2f4" />
<Offset name="current_job_skill" value="0x2f8" /> THIS IS TOTAL BS
<Offset name="physical" value="0x3cc" /> DT: 0x3C4, I don't believe that's OK'
<Offset name="appearance_vector" value="0x52C" /> DT calls it 'states' it seems
<Offset name="artifact_name" value="0x5E0" /> maybe
<Offset name="soul_vector" value="0x64c" />
<Offset name="current_soul" value="0x65c" />
<Offset name="labors" value="0x670" />
<Offset name="happiness" value="0x710" />
</Group>
</Group>
<Group name="job" valid="false">
<Offset name="id" valid="true" />
<Offset name="type" valid="true" />
</Group>
</Group>
<Group name="Maps" valid="true">
<Address name="map_data" value="0x171C128" />
<Address name="x_count_block" value="0x171c140" />
<Address name="y_count_block" value="0x171c144" />
<Address name="z_count_block" value="0x171c148" />
<Address name="x_count" value="0x171c14C" />
<Address name="y_count" value="0x171c150" />
<Address name="z_count" value="0x171c154" />
<Address name="region_x" value="0x171c158" />
<Address name="region_y" value="0x171c15C" />
<Address name="region_z" value="0x171c160" /> TODO: it's signed!
<Address name="world_size_x" value="0x171d7e4" />
<Address name="world_size_y" value="0x171d7e6" />
<Group name="features">
<Group name="global">
<Address name="vector" value="0x171de84" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x171df18" />
</Group>
</Group>
<Group name="geology"> LOOKS FINE?
<Address name="geoblock_vector" value="0x171dea4" />
<Address name="ptr2_region_array" value="0x171ded4" />
<HexValue name="region_size" value="0x5c" />
</Group>
</Group>
<Group name="Materials" valid="false" >
<Address name="creature_type_vector" value="0x171e880" valid="true" />
<Address name="inorganics" value="0x171e790" valid="true" />
<Address name="organics_all" value="0x171e7B0" valid="true" />
<Address name="organics_plants" value="0x171e7C0" valid="true" />
<Address name="organics_trees" value="0x171e7E0" valid="true" />
<Address name="other" value="0x17248F8" valid="true" />
<Group name="creature" valid="true">
<Offset name="extract_vector" value="0x2054" /> maybe: 0x2064 before:0x1a08
<Group name="caste" valid="true">
<Offset name="attributes" value="0xd40 0x5fc" /> looks kinda funny, same as in .16
<Offset name="bodypart_vector" value="0x530 0x51c" />OK
<Offset name="color_modifiers" value="0x1168 0xa24" /> OK
</Group>
</Group>
<Group name="descriptors" valid="true">
<Address name="all_colors_vector" value="0x17241e4" />
<Address name="colors_vector" value="0x17241c4" />
</Group>
</Group>
<Group name="GUI" valid="false">
<Address name="pause_state" valid="true" />
</Group>
<Group name="Vegetation" valid="true">
<Address name="vector" value="0x16db478" />
</Group>
<Group name="Constructions" valid="true">
<Address name="vector" value="0x16c6ae8" />
</Group>
<Group name="Buildings" valid="true">
<Address name="buildings_vector" value="0x16dad78" valid="true" />
One of those really. Which one is the right one?
0x16dad78
0x16dad88
<Address name="custom_workshop_vector" value="0x1724204" valid="true" />
</Group>
<Group name="World" valid="true">
<Address name="current_tick" value="0xe2e180" /> maybe
<Address name="current_year" value="0xf0d268" />
<Address name="current_weather" value="0x15027A0" />
<Address name="control_mode" value="0xb4a814" />
<Address name="game_mode" value="0xb4a818" />
<!--<Address name="control_mode_copy" value="0xe2e2a2" />-->
fortress = 0, adventure = 1, arena = 0, menu and legends = 3 0xb4a814
Game mode: 0xb4a818 . fortress = 0, adventure = 1, arena = 4
0xe2e2a2 seems to be a copy of the first one
</Group>
<Group name="Translations" valid="true">
<Address name="language_vector" value="0x0171ea94"/>
<Address name="translation_vector" value="0x0171eab4"/>
</Group>
</Offsets>
</Version>
<Version name="v0.31.20 SDL" os="windows" base="v0.31.19 SDL" rebase="0x6000" >
<PETimeStamp value="0x4D734FB5" />
<MD5 value="5e2725ae9e87ff504ef0b1dcf52f059d" />
<Offsets>
<Group name="Materials">
<Address name="creature_type_vector" value="0x1724020" />
<Address name="inorganics" value="0x1723f30" />
<Address name="organics_all" value="0x1723f50" />
<Address name="organics_plants" value="0x1723f60" />
<Address name="organics_trees" value="0x1723f80" />
<Address name="other" value="0x172A098" />
<Group name="descriptors">
<Address name="all_colors_vector" value="0x1729984" />
<Address name="colors_vector" value="0x1729964" />
</Group>
<Group name="creature"> I'M NOT SURE ABOUT THESE
<!--
<Offset name="caste_vector" value="0x128" />
<Offset name="extract_vector" value="0x2054" />
<Offset name="tile" value="0xe0" />
<Offset name="tile_color" value="0xf6" />
-->
<Group name="caste">
<Offset name="attributes" value="0xdbc" /> LOOKS LIKE CRAP, but seems to work anyway
<Offset name="bodypart_vector" value="0x5ac" />
<Offset name="color_modifiers" value="0x11e4" />
</Group>
</Group>
0x530
71389344 + 0x5ac
</Group>
"region1" = 0x18639d8
some features vector = 0x18639f8 ?
<Group name="Maps">
<Address name="world_data" value="0x1723758" /> 0x16cca38 + 0x56d20
<Address name="world_size_x" valid="false" />
<Address name="world_size_y" valid="false" />
<Offset name="world_size_x_from_wdata" value="0x8C" />
<Offset name="world_size_y_from_wdata" value="0x8E" />
<Group name="features">
<Group name="global">
<Address name="vector" valid="false"/>
<Offset name="vector_from_wdata" value="0x180" />
</Group>
<Group name="local">
<Address name="start_ptr" valid="false" />
<Offset name="start_ptr_from_wdata" value="0x204" />
</Group>
</Group>
<Group name="geology">
<Offset name="geoblock_vector_from_wdata" value="0x190" />
<Offset name="ptr2_region_array_from_wdata" value="0x1C0" />
<Address name="geoblock_vector" valid="false" />
<Address name="ptr2_region_array" valid="false" />
</Group>
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x01724234" />
<Address name="translation_vector" value="0x01724254" />
</Group>
<Group name="Buildings">
<Address name="custom_workshop_vector" value="0x17299b4" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x15087c9" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.21 SDL" os="windows" base="v0.31.20 SDL" >
<PETimeStamp value="0x4D743DA7" />
<MD5 value="3aadcbd781f7d70d5ee552b92c03bc6b" />
</Version>
<Version name="v0.31.22 SDL" os="windows" base="v0.31.21 SDL" rebase="-0x1CFE0">
<PETimeStamp value="0x4D8B30FC" />
<MD5 value="e31538a48efcfa6598b15bb938906c6b" />
<Offsets>
mode
<Group name="Position">
<Address name="cursor_xyz" value="0xb337f0" />
<Address name="window_dims" value="0xb3407c" />
<Address name="window_x" value="0xeaf984" />
<Address name="window_y" value="0xeddba0" />
<Address name="window_z" value="0xeddb7c" />
</Group>
<Group name="Maps">
<Group name="block">
<Offset name="mystery_offset" value="0x2C" />
<Offset name="item_idx_vector" value="0x3C" />
<Offset name="effect_vector" value="0x4C" />
<Offset name="vegetation_vector" value="0x64" />
<Offset name="type" value="0x7e" />
<Offset name="designation" value="0x280" />
<Offset name="occupancy" value="0x680" />
<Offset name="pathfinding" value="0xd80" />
<Offset name="temperature1" value="0x1580" />
<Offset name="temperature2" value="0x1780" />
<Offset name="biome_stuffs" value="0x1d80" />
</Group>
</Group>
<Group name="Materials">
<Address name="other" value="0x170d0e8" />
</Group>
<Group name="World">
<Address name="control_mode" value="0xb33814" />
<Address name="game_mode" value="0xb33818"/>
<Address name="current_year" value="0xef6268" />
<Address name="current_tick" value="0xe17180" />
<Address name="current_weather" value="0x14eb7a0" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x14eb7c9" />
</Group>
<Group name="Engravings">
<Address name="vector" value="0x16AFA78"/> 0x16B0A78 in 31.25
</Group>
</Offsets>
</Version>
<Version name="v0.31.23 SDL" os="windows" base="v0.31.22 SDL" rebase="0x1000">
<PETimeStamp value="0x4D8DE854" />
<MD5 value="57ad0d359cc135f5bdf329e517028388" />
</Version>
<Version name="v0.31.24 SDL" os="windows" base="v0.31.23 SDL">
<PETimeStamp value="0x4D8F39F9" />
<MD5 value="eddc258fa59c89481516ad96eb51b35b" />
</Version>
<Version name="v0.31.25 SDL" os="windows" base="v0.31.24 SDL">
<PETimeStamp value="0x4D90764F" />
<MD5 value="6ada05fc94785b53efe6aa5728b3756b" />
<Offsets>
<Group name="Items" valid="true">
<Address name="items_vector" value="0x16c4540"/>
<Offset name="id" value="0x14"/>
<Offset name="item_ref_vector" value="0x28" />
<Offset name="owner_ref_id_field" value="0x4" />
<Offset name="item_wear_accessor" value="0xCC" />
<Offset name="item_quantity_accessor" value="0x214" /> 0x194 TEST
<Offset name="item_quality_accessor" value="0x25C" />
</Group>
</Offsets>
cmake
item vector:
-- those two seem to have identical length
0x16c4540 -- maybe
0x16c4550 -- maybe
0x16c4d20 -- too small/bogus?
0x16c4660 -- too small again
0x185c104 -- no.
</Version>
.-"""-.
' \
|,. ,-. | _________________________
|()L( ()| | \ \
|,' `".| | /_ Argh !!! \
|.___.',| ` \________________________\
.j `--"' ` `.
/ ' ' \
/ / ` `.
/ / ` .
/ / l |
. , L I N U X | |
,"`. .| |
_.' ``. | `..-'l
| `.`, | `.
| `. __.j )
|__ |--""___| ,-'
`"--...,+"""" `._,.-'
<!-- Windows logo by Microsoft -->
<!-- Tux logo by the Linux guys :) -->
<Version name="v0.31.05 linux" os="linux" base="DF2010">
<MD5 value="fea3801a26538b1741f3cc9294139fca" />
<Offsets>
<Address name="WORLD" value="0x92C60E0" valid="false" />
<Group name="vector">
<HexValue name="sizeof" value="0xC" />
<Offset name="start" value="0x0" />
<!--
Vector layout in lidstdc++:
DWORD Start
DWORD End
DWORD AllocationEnd
-->
</Group>
<Group name="string">
<HexValue name="sizeof" value="0x4" />
</Group>
<Group name="name">
<Offset name="first" value="0x0" />
<Offset name="nick" value="0x4" />
<Offset name="second_words" value="0x8" />
<Offset name="parts_of_speech" value="0x24" />
<Offset name="language" value="0x34" />
<Offset name="has_name" value="0x3a" />
</Group>
<Group name="Position">
<Address name="window_x" value="0x8cc9b38" />
<Address name="window_y" value="0x8cc9b3c" />
<Address name="window_z" value="0x8cc9b40" />
<Address name="cursor_xyz" value="0x8b0d36c" />
<Address name="window_dims" value="0x945ad8c" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x92bf73c" />
</Group>
<Group name="Maps">
<Address name="map_data" value="0x9318D40" />
<Address name="x_count_block" value="0x9318D54" />
<Address name="y_count_block" value="0x9318D58" />
<Address name="z_count_block" value="0x9318D5C" />
<Address name="x_count" value="0x9318D60" />
<Address name="y_count" value="0x9318D64" />
<Address name="z_count" value="0x9318D68" />
<Address name="region_x" value="0x9318D6C" />
<Address name="region_y" value="0x9318D70" />
<Address name="region_z" value="0x9318D74" />
<Address name="world_size_x" value="0x931A3C0" />
<Address name="world_size_y" value="0x931A3C2" />
<Group name="block">
<Offset name="vein_vector" value="0x08" />
<Offset name="feature_local" value="0x20" />
<Offset name="feature_global" value="0x24" />
<Offset name="vegetation_vector" value="0x54" />
<Offset name="type" value="0x006A" />
<Offset name="designation" value="0x026C" />
<Offset name="occupancy" value="0x066c" />
<Offset name="temperature1" value="0x156c" />
<Offset name="temperature2" value="0x176c" />
<Offset name="biome_stuffs" value="0x1D6C" />
<Offset name="pathfinding" value="0x0D6c" />
</Group>
<Group name="features">
<Group name="global">
<Address name="vector" value="0x931A95C" />
<Offset name="funcptr" value="0x94" />
<Offset name="material" value="0x28" />
<Offset name="submaterial" value="0x2C" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x931A9D4" />
<Offset name="material" value="0x24" />
<Offset name="submaterial" value="0x28" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x931A974" />
<Address name="ptr2_region_array" value="0x931A998" />
<!-- values for the region structure -->
<HexValue name="region_size" value="0x58" />
<Offset name="region_geo_index_off" value="0x54" />
<!-- geoblock offset(s?) -->
<Offset name="geolayer_geoblock_offset" value="0x4" /> vector
<Offset name="type_inside_geolayer" value="0x4" /> vector
</Group>
</Group>
<Group name="Creatures">
<Address name="vector" value="0x92D9AC0" />
<Address name="current_race" value="0x92C1628" />
<Address name="current_civ" value="0x92C161C" />
<Group name="creature">
<Offset name="name" value="0x0" />
<Offset name="custom_profession" value="0x3c" />
<Offset name="profession" value="0x40" />
<Offset name="race" value="0x44" />
<Offset name="position" value="0x48" />
<Offset name="flags1" value="0x8C" />
<Offset name="flags2" value="0x90" />
<Offset name="caste" value="0xA4" />
<Offset name="sex" value="0xA6" />
<Offset name="id" value="0xA8" />
<Offset name="civ" value="0xB4" />
<Group name="advanced">
<Offset name="pickup_equipment_bit" value="0x144" /> CHMOD
<Offset name="mood" value="0x18C"/> It's good
<Offset name="birth_year" value="0x19C" />
<Offset name="birth_time" value="0x1A0" />
<Offset name="current_job" value="0x258" /> chmod
<Offset name="current_job_skill" value="0x394" />
<Offset name="physical" value="0x464" />
<Offset name="appearance_vector" value="0x604" valid="false" />
<Offset name="artifact_name" value="0x6D4" valid="false" />
<Offset name="soul_vector" value="0x0500" />
<Offset name="current_soul" value="0x0758" valid="false" />
<Offset name="labors" value="0x51C" />
<Offset name="happiness" value="0x5AC" />
</Group>
</Group>
<!--
The vector is bad.
<Group name="soul" valid="verify">
<Offset name="name" value="0x0" />
<Offset name="mental" value="0x88" />
<Offset name="skills_vector" value="0x1C4" /> CHMOD
<Offset name="traits" value="0x1DC" />
</Group>
-->
<!--
<Group name="job">
<Offset name="id" value="0x0" /> Incrementaly assigned
<Offset name="type" value="0x8" /> seems to be just like the old occupations
<Offset name="materials_vector" value="0xa4" />
<Group name="material">
<Offset name="maintype" value="0x0" /> like mood materials, 0=bars, 4=stone, 5=wood, 57=cloth, 54=leather ...
<Offset name="sectype1" value="0x2" /> subsubtype ?
<Offset name="sectype2" value="0x4" /> subtype ?
<Offset name="sectype3" value="0x8" /> index of material (for example, 2 is for silver)
<Offset name="flags" value="0x18" /> set only for shell / bone mood requirements ?
</Group>
</Group>
-->
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x931ae88" /><!-- WORLD + 0x54B7C -->
<Address name="organics_all" value="0x931ae94" /><!-- wood and plant matter, WORLD + 0x54B94 -->
<Address name="organics_plants" value="0x931aea0" /><!-- plant matter, WORLD + 0x54BAC -->
<Address name="organics_trees" value="0x931aeb8" /><!-- just wood, WORLD + 0x54BDC -->
<Address name="creature_type_vector" value="0x931af34" /><!-- creature types, WORLD + 0x54CD0 -->
<Group name="creature"> VERIFY
<Offset name="caste_vector" value="0x60" />
<Offset name="extract_vector" value="0x18f4" />
<Offset name="tile" value="0x20" />
<Offset name="tile_color" value="0x36" />
<!--
!!!! BOGUS !!!!
<Group name="caste">
<Offset name="bodypart_vector" value="0x51C" />
<Offset name="attributes" value="0x654" />
<Offset name="color_modifiers" value="0xACC" />
</Group>
<Group name="caste_color_mods">
<Offset name="part" value="0x70" />
<Offset name="startdate" value="0x64" />
<Offset name="enddate" value="0x68" />
</Group>
<Group name="caste_bodyparts">
<Offset name="id" value="0x0" />
<Offset name="category" value="0x1C" />
<Offset name="layers_vector" value="0x44" />
<Offset name="singular_vector" value="0x78" />
<Offset name="plural_vector" value="0x90" />
</Group>
-->
</Group>
<Group name="descriptors">
<!--<Address name="vectors_start" value="" />--><!-- search: vector of object with first object having string "STAR" as first member -->
<Offset name="rawname" value="0x0" />
<Offset name="name" value="0x1C" />
<Address name="colors_vector" value="0x931f398" />
<Offset name="color_r" value="0x24" /><!--floats !-->
<Offset name="color_v" value="0x28" />
<Offset name="color_b" value="0x2C" />
<Address name="all_colors_vector" value="0x931f3b0" /><!--A list of all colors, including eyes and stuff-->
</Group>
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x931aff4" />
<Address name="translation_vector" value="0x931b00c" />
<Offset name="word_table" value="0x1C" />
</Group>
<Group name="World">
<Address name="current_year" value="0x92BF6A0" />
<Address name="current_tick" value="0x92BF6A8" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.06 linux" os="linux" base="v0.31.05 linux" rebase="-0x20E0">
<MD5 value="13a1c19e8f59b74e307e094e2a0f28c3" />
<Offsets>
<!--<Address name="WORLD" value="0x92C4000" />-->
<Group name="Position">
<Address name="cursor_xyz" value="0x8b0b328" /> VERIFIED
</Group>
Creatures
=========
WORLD + 0x139E0
0x92d79d4
0x92d79e0 = real one? seems like it
0x92d7a10
</Offsets>
</Version>
<Version name="v0.31.07 linux" os="linux" base="v0.31.06 linux" rebase="0x2000">
<MD5 value="b31979551782e89c049b11db8d2d86d7" />
</Version>
<Version name="v0.31.08 linux" os="linux" base="v0.31.07 linux">
<MD5 value="e37750890350d7b9d8203879aff8fa5c" />
</Version>
<Version name="v0.31.09 linux" os="linux" base="v0.31.08 linux" rebase="0x11000">
<!-- TODO: fix creature offsets -->
<!-- TODO: small offsets added all over the place, investigate -->
<MD5 value="4f1f988bc1b425d4193d3d8b7b0579a5" />
<Offsets>
<Group name="Creatures">
<Group name="creature"> VERIFY
<Group name="advanced">
<Offset name="soul_vector" value="0x0524" />
<Offset name="current_soul" value="0x0530" />
<Offset name="labors" value="0x540" />
<Offset name="happiness" value="0x5d0" />
</Group>
</Group>
<Group name="soul">
<Offset name="name" value="0x0" />
<Offset name="mental" value="0x88" />
<Offset name="skills_vector" value="0x1C4" /> CHMOD
<Offset name="traits" value="0x1DC" />
</Group>
</Group>
</Offsets>
</Version>
<Version name="v0.31.10 linux" os="linux" base="v0.31.09 linux">
<MD5 value="3e7bea269018a6fb88ef53715685aa64" />
<Offsets>
<Group name="Buildings">
<Address name="buildings_vector" value="0x92eb068" />
<Offset name="building_custom_workshop_type" value="0xE0" />
<Address name="custom_workshop_vector" value="0x93302e8" />
<Offset name="custom_workshop_name" value="0x4" />
<Offset name="custom_workshop_type" value="0x8" />
</Group>
</Offsets>
<VTable>
<multiclass name="building_trapst" typeoffset="0xC0" />
<multiclass name="building_workshopst" typeoffset="0xC0" />
<multiclass name="building_furnacest" typeoffset="0xCE" />
<multiclass name="building_siegeenginest" typeoffset="0xC0" />
</VTable>
</Version>
<Version name="v0.31.11 linux" os="linux" base="v0.31.10 linux" rebase="0x1D020">
<!-- BIG rebase, possible broken stuff -->
<MD5 value="7b04ad536b8b657588ac209a7f95e1d1" />
<Offsets>
<Group name="Position">
<Address name="window_x" value="0x8cf7a58" /> VERIFIED
<Address name="window_y" value="0x8cf7a5C" /> VERIFIED
<Address name="window_z" value="0x8cf7a60" /> VERIFIED
<Address name="cursor_xyz" value="0x8b3b328" /> VERIFIED
</Group>
</Offsets>
</Version>
<Version name="v0.31.12 linux" os="linux" base="v0.31.11 linux" rebase="-0x1000">
<MD5 value="e79cead03187ecb692961b316b7cdcd4" />
<Offsets>
<Group name="GUI">
<!-- FIXME: this could be wrong for many other versions. Investigate. -->
<Address name="pause_state" value="0x92ec65c"/>
</Group>
<Group name="Creatures">
<Address name="current_race" value="0x092ee548" />
</Group>
<Group name="Constructions">
<Address name="vector" value="0x92f30a4"/>
<Offset name="sizeof" value="0x14"/>
</Group>
<Group name="Position">
<Address name="screen_tiles_pointer" value="0x09487970" />
</Group>
<Group name="Vegetation">
<Address name="vector" value="0x9307568" />
<Offset name="tree_desc_offset" value="0x3C" />
</Group>
<Group name="World">
<Address name="current_weather" value="0x92ec5aa" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.13 linux" os="linux" base="v0.31.12 linux" rebase="-0xB7A8">
<MD5 value="d6307bd39b6271ba89bbdd953d27c84d" />
<Offsets>
<Group name="Buildings">
<Address name="buildings_vector" value="0x92fb8e8" />
</Group>
<Group name="Constructions">
<Address name="vector" value="0x92e7904" />
</Group>
<Group name="Creatures">
<Address name="current_civ" value="0x92e2d9c" />
<Address name="current_race" value="0x92e2da8" />
<Address name="vector" value="0x92fb260" />
</Group>
<Group name="Maps">
<Address name="map_data" value="0x933a4E0" />
<Address name="x_count_block" value="0x933a4F4" />
<Address name="y_count_block" value="0x933a4F8" />
<Address name="z_count_block" value="0x933a4FC" />
<Address name="x_count" value="0x933a500" />
<Address name="y_count" value="0x933a504" />
<Address name="z_count" value="0x933a508" />
<Address name="region_x" value="0x933a50C" />
<Address name="region_y" value="0x933a510" />
<Address name="region_z" value="0x933a514" />
<Address name="world_size_x" value="0x933BB60" />
<Address name="world_size_y" value="0x933BB62" />
<Group name="features">
<Group name="global">
<Address name="vector" value="0x933C0FC" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x933C174" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x933C114" />
<Address name="ptr2_region_array" value="0x933C138" />
</Group>
</Group>
<Group name="Position">
<Address name="window_x" value="0x8ceb238" />
<Address name="window_y" value="0x8ceb23C" />
<Address name="window_z" value="0x8ceb240" />
<Address name="cursor_xyz" value="0x8b2e740" />
<Address name="window_dims" value="0x8b2ec48" />
<Address name="screen_tiles_pointer" valid = "false" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x92e0e90"/>
</Group>
<Group name="Vegetation">
<Address name="vector" value="0x92fbdc8" />
</Group>
<Group name="World">
<Address name="current_year" value="0x92e0da0" />
<Address name="current_tick" value="0x92e0dc0" />
<Address name="current_weather" value="0x092E0D84" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.14 linux" os="linux" base="v0.31.13 linux" rebase="0x330C">
<MD5 value="128c562c7936aa8f84786f69426f0691" />
<Offsets>
<Group name="Maps">
<Address name="map_data" value="0x933d7e0" />
<Address name="x_count_block" value="0x933d7F4" />
<Address name="y_count_block" value="0x933d7F8" />
<Address name="z_count_block" value="0x933d7FC" />
<Address name="x_count" value="0x933d800" />
<Address name="y_count" value="0x933d804" />
<Address name="z_count" value="0x933d808" />
<Address name="region_x" value="0x933d80C" />
<Address name="region_y" value="0x933d810" />
<Address name="region_z" value="0x933d814" />
<Address name="world_size_x" value="0x933ee60" />
<Address name="world_size_y" value="0x933ee62" />
</Group>
<Group name="Buildings">
<Address name="buildings_vector" value="0x92febdc" />
</Group>
<Group name="Constructions">
<Address name="vector" value="0x92eac04" />
</Group>
<Group name="Position">
<Address name="window_x" value="0x8cee538 0x8ceb238" />
<Address name="window_y" value="0x8cee53C 0x8ceb23C" />
<Address name="window_z" value="0x8cee540 0x8ceb240" />
<Address name="cursor_xyz" value="0x8b31a30 0x8b2e740" />
<Address name="window_dims" value="0x8b31f48 0x8b2ec48" />
<Address name="screen_tiles_pointer" valid = "false" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x92e0e90"/>
</Group>
</Offsets>
</Version>
<Version name="v0.31.16 linux" os="linux" base="v0.31.14 linux" rebase="0x1b40">
<MD5 value="9cca2fa5da509e2f9a1042ddd1f9669c" />
<Offsets>
<Group name="Position">
<Address name="cursor_xyz" value="0x8b33550" />
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x92e5cb0"/>
</Group>
</Offsets>
</Version>
<Version name="v0.31.18 linux" os="linux" base="v0.31.16 linux" rebase="0x81110">
<MD5 value="884f794d8e89e7d764057c15617c20b1" />
<Offsets>
<Group name="Buildings">
<Address name="buildings_vector" value="0x9381814" />
<Address name="custom_workshop_vector" value="0x93c6938" />
</Group>
<Group name="Constructions">
<Address name="vector" value="0x936d824" />
</Group>
<Group name="Creatures">
<Address name="current_civ" value="0x9368bec" />
<Address name="current_race" value="0x9368bf8" />
<Address name="vector" value="0x938118c" /> possibly bullshit!
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x9366cb0"/>
</Group>
<Group name="Maps">
<Group name="features">
<Group name="global">
<Address name="vector" value="0x93c2074" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x93c20ec" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x93c208c" />
<Address name="ptr2_region_array" value="0x93c20b0" />
</Group>
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x93c25a8" />
<Address name="organics_all" value="0x93c25c0" />
<Address name="organics_plants" value="0x93c25cc" />
<Address name="organics_trees" value="0x93c25e4" />
<Address name="creature_type_vector" value="0x93c2660" />
<Group name="descriptors">
<Address name="colors_vector" value="0x93c6908" />
<Address name="all_colors_vector" value="0x93c6920" />
</Group>
</Group>
<Group name="Position">
<Address name="cursor_xyz" value="0x8bb4560" />
<Address name="window_x" value="0x8d7105c" />
<Address name="window_y" value="0x8d71058" />
<Address name="window_z" value="0x8d71060" />
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x93c27a4" />
<Address name="translation_vector" value="0x93c27bc" />
</Group>
<Group name="World">
<Address name="current_weather" value="0x9366bd0" />
<Address name="current_tick" value="0x9366c0c" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.19 linux" os="linux" base="v0.31.18 linux" rebase="0x77738">
<MD5 value="8fcb1f10af9cc2bda47d2acf42e1db54" />
<Offsets>
<Group name="Buildings">
<Address name="buildings_vector" value="0x93f8f18" />
<Address name="custom_workshop_vector" value="0x943e398" />
</Group>
<Group name="Constructions">
<Address name="vector" value="0x93e4f04" />
</Group>
<Group name="Creatures">
<Address name="current_civ" value="0x93e027c" />
<Address name="current_race" value="0x93e0288" />
<Address name="vector" value="0x93F8854" /> 0x93f886c = orig, possibly bullshit! VERIFY!!!
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x93dddf0" />
</Group>
<Group name="Maps">
<Address name="world_size_x" value="0x94391f0" />
<Address name="world_size_y" value="0x94391f2" />
<Group name="features">
<Group name="global">
<Address name="vector" value="0x94397cc" />
</Group>
<Group name="local">
<Address name="start_ptr" value="0x9439844" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" value="0x94397e4" />
<Address name="ptr2_region_array" value="0x9439808" />
</Group>
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x9439fc0" />
<Address name="organics_all" value="0x9439fd8" />
<Address name="organics_plants" value="0x9439fe4" />
<Address name="organics_trees" value="0x9439ffc" />
<Address name="creature_type_vector" value="0x943a074" />
<Group name="descriptors">
<Address name="colors_vector" value="0x943e368" />
<Address name="all_colors_vector" value="0x943e380" />
</Group>
</Group>
<Group name="Position">
<Address name="cursor_xyz" value="0x8c2b560" />
<Address name="window_x" value="0x8de819c" />
<Address name="window_y" value="0x8de8198" />
<Address name="window_z" value="0x8de81a0" />
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x943a204" />
<Address name="translation_vector" value="0x943a21c" />
</Group>
<Group name="World">
<Address name="current_weather" value="0x93ddd10" />
<Address name="current_tick" value="0x93ddd4c" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.20 linux" os="linux" base="v0.31.19 linux" rebase="0xd540">
<MD5 value="6d33ec7332e59df9ea4cf7fae1e9836a" />
<Offsets>
<!-- Handling has changed for some offsets in 0.31.20, and they no longer
appear to be static - they're probably heap objects now or something.
Code no longer does 'mov <offset>, <register>', but now does something
more like 'mov <constant>, register; mov <offset>(<register>), <register>'
(indirect load).
Offsets affected in 0.31.20:
Maps.features.global.vector
Maps.features.local.start_ptr
Maps.geology.geoblock_vector
Maps.geology.ptr2_region_array
Maps.world_size_x
Maps.world_size_y
This breaks dfliquids, dfvdig (of the ones I care about anyway - probably more too)
-->
<Group name="Buildings">
<Address name="custom_workshop_vector" value="0x944b1b8" />
</Group>
<Group name="Materials">
<Address name="inorganics" value="0x9446de0" />
<Address name="organics_all" value="0x9446df8" />
<Address name="organics_plants" value="0x9446e04" />
<Address name="organics_trees" value="0x9446e1c" />
<Address name="creature_type_vector" value="0x9446e94" />
<Group name="descriptors">
<Address name="colors_vector" value="0x944b188" />
<Address name="all_colors_vector" value="0x944b1a0" />
</Group>
</Group>
<Group name="Position">
<Address name="cursor_xyz" value="0x8c38a90" />
<Address name="window_x" value="0x8df56d8" />
<Address name="window_y" value="0x8df56dc" />
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x944703c" />
<Address name="translation_vector" value="0x9447024" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.21 linux" os="linux" base="v0.31.20 linux" rebase="0x40">
<MD5 value="c3d2af104a00a3219fbbe89e671940fb" />
<Offsets>
<Group name="Position">
<Address name="cursor_xyz" value="0x8c38ae0" />
</Group>
<Group name="Translations">
<Address name="language_vector" value="0x9447064" />
<Address name="translation_vector" value="0x944707c" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.22 linux" os="linux" base="v0.31.21 linux" rebase="0x5500">
<MD5 value="c7319be110759209bd736071fb367960" />
<Offsets>
<Group name="Creatures">
<Address name="current_civ" value="0x93f2cdc" />
<Address name="current_race" value="0x93f2ce8" />
<Group name="creature">
<Group name="advanced">
<Offset name="pregnancy" value="0x190" />
<Offset name="pregnancy_ptr" value="0x194" />
<Offset name="birth_year" value="0x1A0" />
<Offset name="birth_time" value="0x1A4" />
<Offset name="inventory_vector" value="0x204" />
<Offset name="current_job" value="0x25C" />
<Offset name="current_job_skill" value="0x260" />
<Offset name="physical" value="0x310" />
<Offset name="appearance_vector" value="0x450" />
<Offset name="artifact_name" value="0x4f4" />
<Offset name="soul_vector" value="0x530" />
<Offset name="current_soul" value="0x53C" />
<Offset name="labors" value="0x54C" />
<Offset name="happiness" value="0x05dc" />
</Group>
</Group>
<Group name="job">
<Offset name="id" value="0x8" />
<!--<Offset name="materials_vector" />-->
<Offset name="type" value="0x40" /> MAYBE, DT SAYS SO
<!--
<Group name="material">
<Offset name="flags" /> NOT SET!
<Offset name="maintype" /> NOT SET!
<Offset name="sectype1" /> NOT SET!
<Offset name="sectype2" /> NOT SET!
<Offset name="sectype3" /> NOT SET!
</Group>
-->
</Group>
<Group name="soul">
<Offset name="name" value="0x4" />
<!--
<Offset name="mental" value="0x88" />
<Offset name="skills_vector" value="0x1c4" />
<Offset name="traits" value="0x1dc" />
-->
</Group>
</Group>
<Group name="GUI">
<Address name="pause_state" value="0x93f0850" />
</Group>
<Group name="Position">
<Address name="cursor_xyz" value="0x8c3dfc0" />
<Address name="window_x" value="0x8dfabf8" />
<Address name="window_y" value="0x8dfabfc" />
<Address name="window_z" value="0x8dfac00" />
<Address name="window_dims" value="0x8c3e4c8" />
</Group>
<Group name="World">
<Address name="current_weather" value="0x93f0770" />
<Address name="current_tick" value="0x93f07ac" />
<Address name="control_mode" value="0x8c3dff0" />
<Address name="game_mode" value="0x8c3e000" />
<Address name="current_year" value="0x93f0760" />
</Group>
<Group name="Engravings">
<Address name="vector" value="0x93F7918 0x93f77b8"/>
there are some possibly related vectors right next to it.
</Group>
<Group name="Maps">
<Address name="world_data" value="0x944bc14"/>
<Address name="world_size_x" valid="false" />
<Address name="world_size_y" valid="false" />
<Offset name="world_size_x_from_wdata" value="0x5c" />
<Offset name="world_size_y_from_wdata" value="0x5e" />
<Group name="block">
<Offset name="mystery_offset" value="0x28" />
<Offset name="vegetation_vector" value="0x58" />
<Offset name="type" value="0x6e" />
<Offset name="designation" value="0x270" />
<Offset name="occupancy" value="0x670" />
<Offset name="pathfinding" value="0xd70" />
<Offset name="temperature1" value="0x1570" />
<Offset name="temperature2" value="0x1770" />
<Offset name="biome_stuffs" value="0x1d70" />
</Group>
<Group name="features">
<Group name="global">
<Address name="vector" valid="false" />
<Offset name="vector_from_wdata" value="0x12C" />
</Group>
<Group name="local">
<Address name="start_ptr" valid="false" />
<Offset name="start_ptr_from_wdata" value="0x198" />
</Group>
</Group>
<Group name="geology">
<Address name="geoblock_vector" valid="false" />
<Address name="ptr2_region_array" valid="false" />
<Offset name="geoblock_vector_from_wdata" value="0x138" />
<Offset name="ptr2_region_array_from_wdata" value="0x15C" />
</Group>
</Group>
<Group name="Materials">
<Address name="other" value="0x9450c54" />
<Group name="creature" valid="true">
<Offset name="tile_color" value="0x38" />
<Offset name="extract_vector" value="0x1f74" />
<Group name="caste">
<Offset name="attributes" value="0xa48" /> FIXME: this is 0xa40 really, the struct is wrong
<Offset name="bodypart_vector" value="0x264" />
<Offset name="color_modifiers" value="0xe48" />
</Group>
<Group name="caste_bodyparts">
<Offset name="category" value="0x4" />
<Offset name="id" value="0x0" />
<Offset name="layers_vector" value="0x14" />
<Offset name="plural_vector" value="0x48" />
<Offset name="singular_vector" value="0x3C" />
</Group>
<Group name="caste_color_mods">
<Offset name="enddate" value="0x38" />
<Offset name="part" value="0x40" />
<Offset name="startdate" value="0x34" />
</Group>
</Group>
</Group>
</Offsets>
</Version>
<Version name="v0.31.23 linux" os="linux" base="v0.31.22 linux" rebase="-0x760">
<MD5 value="c8e82e6e7cc606bf4e8d2c91993b9c0d" />
</Version>
<Version name="v0.31.24 linux" os="linux" base="v0.31.23 linux" rebase="0x300">
<MD5 value="a47468cec4f4f0ff1fc03ac7d95c17ed" />
<Offsets>
<Group name="Position">
<Address name="cursor_xyz" value="0x8c3db50" />
</Group>
<Group name="World">
<Address name="control_mode" value="0x8c3db80" />
<Address name="game_mode" value="0x8c3db90" />
</Group>
</Offsets>
</Version>
<Version name="v0.31.25 linux" os="linux" base="v0.31.24 linux" rebase="0x300">
<MD5 value="fc15065c4d1977ca019c6dad220413d1" />
<Offsets>
WORLD: 0x93f77a0
<Group name="Creatures">
Maybe, possibly.
<Address name="current_civ" value="0x093f2b50 0x93f2cdc" />
<Address name="current_race" value="0x093f2b5c 0x93f2ce8" />
Address name="vector" value="0x0940b174"
<Group name="creature">
<Offset name="flags3" value="0x94"/>
<Group name="advanced">
<Offset name="owned_items_vector" value="0x210"/>
<Offset name="hist_figure_id" value="0x640"/>
</Group>
</Group>
</Group>
<Group name="Position" valid="true">
<Address name="cursor_xyz" value="0x8c3de60"/>
</Group>
<Group name="World">
<Address name="control_mode" value="0x8c3de90" />
<Address name="game_mode" value="0x8c3deA0" />
<Address name="current_weather" value="0x93F05E4" />
</Group>
<Group name="Items">
<Address name="items_vector" value="0x940b1fc" />
<Offset name="id" value="0x14"/>
<Offset name="item_type_accessor" value="0x0" />
<Offset name="item_subtype_accessor" value="0x4" />
<Offset name="item_subindex_accessor" value="0x8" />
<Offset name="item_index_accessor" value="0xC" />
<Offset name="item_quantity_accessor" value="0x214" /> 0x194 TEST
<Offset name="item_quality_accessor" value="0x25C" />
<Offset name="item_wear_accessor" value="0xCC" />
<Offset name="item_ref_vector" value="0x24" />
<Offset name="owner_ref_id_field" value="0x4" />
</Group>
<Group name="Legends">
<Group name="figures">
<Address name="vector" value="0x9451a18"/>
<Offset name="profession" value="0x00"/>
<Offset name="race" value="0x02"/>
<Offset name="caste" value="0x04"/>
<Offset name="sex" value="0x06"/>
<Offset name="appeared_year" value="0x08"/>
<Offset name="born_year" value="0x0C"/>
<Offset name="born_seconds" value="0x10"/>
<Offset name="died_year" value="0x1C"/>
<Offset name="died_seconds" value="0x20"/>
<Offset name="name" value="0x24"/>
<Offset name="unit_id" value="0x70"/>
<Offset name="figure_id" value="0x74"/>
<Offset name="entity_link_vector" value="0x7c"/>
<Offset name="histfig_link_vector" value="0x94"/>
</Group>
<Group name="events">
<Address name="vector" value="0x9451a00"/>
<Offset name="year" value="0x04"/>
<Offset name="seconds" value="0x08"/>
<Offset name="event_id" value="0x14"/>
<Group name="hist_figure_died">
<Offset name="figure_id" value="0x18"/>
<Offset name="slayer_id" value="0x1C"/>
<Offset name="slayer_race" value="0x20"/>
<Offset name="slayer_caste" value="0x24"/>
<Offset name="slayer_item_id" value="0x28"/>
<Offset name="region_id" value="0x48"/>
</Group>
</Group>
</Group>
<Group name="Vegetation">
<Address name="vector" value="0x940bd70" />
</Group>
</Offsets>
</Version>
</DFHack>