|
|
|
@ -64,20 +64,7 @@ struct t_vein
|
|
|
|
|
uint32_t address_of; // this is NOT part of the DF vein, but an address of the vein as seen by DFhack.
|
|
|
|
|
};
|
|
|
|
|
*/
|
|
|
|
|
struct t_vein
|
|
|
|
|
{
|
|
|
|
|
uint32_t vtable;
|
|
|
|
|
int32_t type;
|
|
|
|
|
int16_t assignment[16];
|
|
|
|
|
uint32_t flags;
|
|
|
|
|
uint32_t address_of; // this is NOT part of the DF vein, but an address of the vein as seen by DFhack.
|
|
|
|
|
};
|
|
|
|
|
// stores what tiles should appear when the ice melts
|
|
|
|
|
struct t_frozenliquidvein
|
|
|
|
|
{
|
|
|
|
|
uint32_t vtable;
|
|
|
|
|
int16_t tiles[16][16];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct t_matglossPair
|
|
|
|
|
{
|
|
|
|
@ -121,10 +108,12 @@ struct t_construction_df40d
|
|
|
|
|
{
|
|
|
|
|
int16_t x;
|
|
|
|
|
int16_t y;
|
|
|
|
|
// 4
|
|
|
|
|
int16_t z;
|
|
|
|
|
int16_t unk1;
|
|
|
|
|
// 8
|
|
|
|
|
int16_t unk2;
|
|
|
|
|
t_matglossPair material; // 4B
|
|
|
|
|
t_matglossPair material; // C points to the index part
|
|
|
|
|
// int16_t mat_type;
|
|
|
|
|
// int16_t mat_idx;
|
|
|
|
|
};
|
|
|
|
@ -695,165 +684,6 @@ struct t_itemType
|
|
|
|
|
char name[128];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum e_traffic
|
|
|
|
|
{
|
|
|
|
|
traffic_normal,
|
|
|
|
|
traffic_low,
|
|
|
|
|
traffic_high,
|
|
|
|
|
traffic_restricted
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum e_designation
|
|
|
|
|
{
|
|
|
|
|
designation_no,
|
|
|
|
|
designation_default, // dig walls, remove stairs and ramps, gather plants, fell trees
|
|
|
|
|
designation_ud_stair, // dig up/down stairs
|
|
|
|
|
designation_channel, // dig a channel
|
|
|
|
|
designation_ramp, // dig ramp out of a wall
|
|
|
|
|
designation_d_stair, // dig a stair down
|
|
|
|
|
designation_u_stair, // dig a stair up
|
|
|
|
|
designation_7 // whatever
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum e_liquidtype
|
|
|
|
|
{
|
|
|
|
|
liquid_water,
|
|
|
|
|
liquid_magma
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct naked_designation
|
|
|
|
|
{
|
|
|
|
|
unsigned int flow_size : 3; // how much liquid is here?
|
|
|
|
|
unsigned int pile : 1; // stockpile?
|
|
|
|
|
/*
|
|
|
|
|
* All the different dig designations... needs more info, probably an enum
|
|
|
|
|
*/
|
|
|
|
|
e_designation dig : 3;
|
|
|
|
|
unsigned int smooth : 2;
|
|
|
|
|
unsigned int hidden : 1;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* This one is rather involved, but necessary to retrieve the base layer matgloss index
|
|
|
|
|
* see http://www.bay12games.com/forum/index.php?topic=608.msg253284#msg253284 for details
|
|
|
|
|
*/
|
|
|
|
|
unsigned int geolayer_index :4;
|
|
|
|
|
unsigned int light : 1;
|
|
|
|
|
unsigned int subterranean : 1; // never seen the light of day?
|
|
|
|
|
unsigned int skyview : 1; // sky is visible now, it rains in here when it rains
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Probably similar to the geolayer_index. Only with a different set of offsets and different data.
|
|
|
|
|
* we don't use this yet
|
|
|
|
|
*/
|
|
|
|
|
unsigned int biome : 4;
|
|
|
|
|
/*
|
|
|
|
|
* 0 = water
|
|
|
|
|
* 1 = magma
|
|
|
|
|
*/
|
|
|
|
|
e_liquidtype liquid_type : 1;
|
|
|
|
|
unsigned int water_table : 1; // srsly. wtf?
|
|
|
|
|
unsigned int rained : 1; // does this mean actual rain (as in the blue blocks) or a wet tile?
|
|
|
|
|
e_traffic traffic : 2; // needs enum
|
|
|
|
|
unsigned int flow_forbid : 1; // what?
|
|
|
|
|
unsigned int liquid_static : 1;
|
|
|
|
|
unsigned int moss : 1;// I LOVE MOSS
|
|
|
|
|
unsigned int feature_present : 1; // another wtf... is this required for magma pipes to work?
|
|
|
|
|
unsigned int liquid_character : 2; // those ripples on streams?
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
union t_designation
|
|
|
|
|
{
|
|
|
|
|
uint32_t whole;
|
|
|
|
|
naked_designation bits;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// occupancy flags (rat,dwarf,horse,built wall,not build wall,etc)
|
|
|
|
|
struct naked_occupancy
|
|
|
|
|
{
|
|
|
|
|
unsigned int building : 3;// building type... should be an enum?
|
|
|
|
|
// 7 = door
|
|
|
|
|
unsigned int unit : 1;
|
|
|
|
|
unsigned int unit_grounded : 1;
|
|
|
|
|
unsigned int item : 1;
|
|
|
|
|
// splatter. everyone loves splatter.
|
|
|
|
|
unsigned int mud : 1;
|
|
|
|
|
unsigned int vomit :1;
|
|
|
|
|
unsigned int broken_arrows_color :4;
|
|
|
|
|
unsigned int blood_g : 1;
|
|
|
|
|
unsigned int blood_g2 : 1;
|
|
|
|
|
unsigned int blood_b : 1;
|
|
|
|
|
unsigned int blood_b2 : 1;
|
|
|
|
|
unsigned int blood_y : 1;
|
|
|
|
|
unsigned int blood_y2 : 1;
|
|
|
|
|
unsigned int blood_m : 1;
|
|
|
|
|
unsigned int blood_m2 : 1;
|
|
|
|
|
unsigned int blood_c : 1;
|
|
|
|
|
unsigned int blood_c2 : 1;
|
|
|
|
|
unsigned int blood_w : 1;
|
|
|
|
|
unsigned int blood_w2 : 1;
|
|
|
|
|
unsigned int blood_o : 1;
|
|
|
|
|
unsigned int blood_o2 : 1;
|
|
|
|
|
unsigned int slime : 1;
|
|
|
|
|
unsigned int slime2 : 1;
|
|
|
|
|
unsigned int blood : 1;
|
|
|
|
|
unsigned int blood2 : 1;
|
|
|
|
|
unsigned int broken_arrows_variant : 1;
|
|
|
|
|
unsigned int snow : 1;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct naked_occupancy_grouped
|
|
|
|
|
{
|
|
|
|
|
unsigned int building : 3;// building type... should be an enum?
|
|
|
|
|
// 7 = door
|
|
|
|
|
unsigned int unit : 1;
|
|
|
|
|
unsigned int unit_grounded : 1;
|
|
|
|
|
unsigned int item : 1;
|
|
|
|
|
// splatter. everyone loves splatter.
|
|
|
|
|
unsigned int splatter : 26;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
union t_occupancy
|
|
|
|
|
{
|
|
|
|
|
uint32_t whole;
|
|
|
|
|
naked_occupancy bits;
|
|
|
|
|
naked_occupancy_grouped unibits;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// map block flags
|
|
|
|
|
struct naked_blockflags
|
|
|
|
|
{
|
|
|
|
|
unsigned int designated : 1;// designated for jobs (digging and stuff like that)
|
|
|
|
|
unsigned int unk_1 : 1; // possibly related to the designated flag
|
|
|
|
|
// two flags required for liquid flow. no idea why
|
|
|
|
|
unsigned int liquid_1 : 1;
|
|
|
|
|
unsigned int liquid_2 : 1;
|
|
|
|
|
unsigned int unk_2: 28; // rest of the flags is completely unknown
|
|
|
|
|
// there's a possibility that this flags field is shorter than 32 bits
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
union t_blockflags
|
|
|
|
|
{
|
|
|
|
|
uint32_t whole;
|
|
|
|
|
naked_blockflags bits;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
typedef int16_t tiletypes40d [16][16];
|
|
|
|
|
typedef DFHack::t_designation designations40d [16][16];
|
|
|
|
|
typedef DFHack::t_occupancy occupancies40d [16][16];
|
|
|
|
|
typedef uint8_t biome_indices40d [16];
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
tiletypes40d tiletypes;
|
|
|
|
|
designations40d designation;
|
|
|
|
|
occupancies40d occupancy;
|
|
|
|
|
// really a '7', but I use 8 to make it neater :)
|
|
|
|
|
biome_indices40d biome_indices;
|
|
|
|
|
uint32_t origin; // the address where it came from
|
|
|
|
|
t_blockflags blockflags;
|
|
|
|
|
} mapblock40d;
|
|
|
|
|
|
|
|
|
|
struct t_viewscreen
|
|
|
|
|
{
|
|
|
|
|
int32_t type;
|
|
|
|
|