- uint8_t id; /* individual thing's unique identifier */
- struct Thing * owns; /* chain of things owned / in inventory */
- struct yx_uint8 pos; /* coordinate on map */
- char * fov_map; /* thing's FOV map; 'v':visible, 'H':hidden */
- char * mem_map; /* map knowledge of thing by FOV and memory */
- uint8_t type; /* ID of appropriate thing definition */
- uint8_t lifepoints; /* 0: thing is inanimate; >0: hitpoints */
- uint8_t command; /* thing's current action; 0 if none */
- uint8_t arg; /* optional field for .command argument */
- uint8_t progress; /* turns already passed to realize .command */
+ uint8_t id; /* individual thing's unique identifier */
+ struct Thing * owns; /* chain of things owned / in inventory */
+ struct ThingInMemory * t_mem; /* chain of things remembered */
+ struct yx_uint8 pos; /* coordinate on map */
+ char * fov_map; /* thing's FOV map; 'v':visible, 'H':hidden */
+ char * mem_map; /* map knowledge of thing by FOV and memory */
+ char * mem_depth_map; /* map of map memory up-to-dateness */
+ int16_t satiation; /* negative: hungry; positive: over-fed */
+ uint8_t type; /* ID of appropriate thing definition */
+ uint8_t lifepoints; /* 0: thing is inanimate; >0: hitpoints */
+ uint8_t command; /* thing's current action; 0 if none */
+ uint8_t arg; /* optional field for .command argument */
+ uint8_t progress; /* turns already passed to realize .command */
+};
+
+struct ThingInMemory
+{
+ struct ThingInMemory * next;
+ struct yx_uint8 pos; /* position on memorized */
+ uint8_t type; /* thing type identifier */