1 #pragma once 2 3 #include "enum.h" // DEF_BITFIELD 4 #include "tag-version.h" 5 6 struct coord_def; 7 8 enum feature_property_type 9 { 10 FPROP_NONE = 0, 11 FPROP_SANCTUARY_1 = (1 << 0), 12 FPROP_SANCTUARY_2 = (1 << 2), 13 FPROP_BLOODY = (1 << 3), 14 FPROP_UNUSED_2 = (1 << 4), // Used to be 'vault'. 15 FPROP_HIGHLIGHT = (1 << 5), // Highlight on the X map for debugging. 16 // NOTE: Bloody floor and sanctuary are exclusive. 17 FPROP_UNUSED = (1 << 6), // used to be force_exclude 18 FPROP_NO_CLOUD_GEN = (1 << 7), 19 FPROP_NO_TELE_INTO = (1 << 8), 20 FPROP_UNUSED_3 = (1 << 9), // used to be no_ctele_into 21 22 // Squares that the tide should not affect. 23 FPROP_NO_TIDE = (1 << 10), 24 #if TAG_MAJOR_VERSION == 34 25 FPROP_NO_SUBMERGE = (1 << 11), 26 FPROP_MOLD = (1 << 12), 27 FPROP_GLOW_MOLD = (1 << 13), 28 #endif 29 // Immune to spawning jellies and off-level eating. 30 FPROP_NO_JIYVA = (1 << 14), 31 // Permanent, unlike map memory. 32 FPROP_SEEN_OR_NOEXP = (1 << 15), 33 FPROP_BLOOD_WEST = (1 << 16), 34 FPROP_BLOOD_NORTH = (1 << 17), 35 FPROP_BLOOD_EAST = FPROP_BLOOD_WEST | FPROP_BLOOD_NORTH, 36 FPROP_OLD_BLOOD = (1 << 18), 37 FPROP_ICY = (1 << 19), 38 }; 39 DEF_BITFIELD(terrain_property_t, feature_property_type); 40 41 bool is_sanctuary(const coord_def& p); 42 bool is_bloodcovered(const coord_def& p); 43 bool is_tide_immune(const coord_def &p); 44 feature_property_type str_to_fprop(const string &str); 45 char blood_rotation(const coord_def & p); 46 bool is_icecovered(const coord_def& p); 47