1 #pragma once 2 3 #include "tag-version.h" 4 5 enum tile_flags ENUM_INT64 6 { 7 //// Foreground flags 8 9 // 3 mutually exclusive flags for attitude. 10 TILE_FLAG_ATT_MASK = 0x00030000ULL, 11 TILE_FLAG_PET = 0x00010000ULL, 12 TILE_FLAG_GD_NEUTRAL = 0x00020000ULL, 13 TILE_FLAG_NEUTRAL = 0x00030000ULL, 14 15 TILE_FLAG_S_UNDER = 0x00040000ULL, 16 TILE_FLAG_FLYING = 0x00080000ULL, 17 18 // 3 mutually exclusive flags for behaviour. 19 TILE_FLAG_BEH_MASK = 0x00300000ULL, 20 TILE_FLAG_STAB = 0x00100000ULL, 21 TILE_FLAG_MAY_STAB = 0x00200000ULL, 22 TILE_FLAG_FLEEING = 0x00300000ULL, 23 TILE_FLAG_NET = 0x00400000ULL, 24 // 0x00800000ULL is used by TILE_FLAG_POISON lower in the file. 25 TILE_FLAG_WEB = 0x01000000ULL, 26 TILE_FLAG_GLOWING = 0x02000000ULL, 27 TILE_FLAG_STICKY_FLAME = 0x04000000ULL, 28 TILE_FLAG_BERSERK = 0x08000000ULL, 29 TILE_FLAG_INNER_FLAME = 0x10000000ULL, 30 TILE_FLAG_CONSTRICTED = 0x20000000ULL, 31 TILE_FLAG_SLOWED = 0x8000000000ULL, 32 TILE_FLAG_PAIN_MIRROR = 0x10000000000ULL, 33 TILE_FLAG_HASTED = 0x20000000000ULL, 34 TILE_FLAG_MIGHT = 0x40000000000ULL, 35 TILE_FLAG_PETRIFYING = 0x80000000000ULL, 36 TILE_FLAG_PETRIFIED = 0x100000000000ULL, 37 TILE_FLAG_BLIND = 0x200000000000ULL, 38 TILE_FLAG_ANIM_OBJ = 0x400000000000ULL, 39 TILE_FLAG_SUMMONED = 0x800000000000ULL, 40 TILE_FLAG_PERM_SUMMON = 0x1000000000000ULL, 41 // 0x2000000000000ULL was DEATHS_DOOR 42 TILE_FLAG_RECALL = 0x4000000000000ULL, 43 TILE_FLAG_DRAIN = 0x8000000000000ULL, 44 TILE_FLAG_IDEALISED = 0x10000000000000ULL, 45 TILE_FLAG_BOUND_SOUL = 0x20000000000000ULL, 46 TILE_FLAG_INFESTED = 0x40000000000000ULL, 47 TILE_FLAG_CORRODED = 0x80000000000000ULL, 48 TILE_FLAG_SWIFT = 0x100000000000000ULL, 49 TILE_FLAG_SLOWLY_DYING = 0x200000000000000ULL, 50 TILE_FLAG_VILE_CLUTCH = 0x400000000000000ULL, 51 TILE_FLAG_POSSESSABLE = 0x800000000000000ULL, 52 // Different levels of poison are mutually exclusive, so we can encode them in 2 bits. 53 TILE_FLAG_POISON_MASK = 0x1000000000800000ULL, 54 TILE_FLAG_POISON = 0x0000000000800000ULL, 55 TILE_FLAG_MORE_POISON = 0x1000000000000000ULL, 56 TILE_FLAG_MAX_POISON = 0x1000000000800000ULL, 57 58 // 4 mutually exclusive flags for threat level. 59 TILE_FLAG_THREAT_MASK = 0xE000000000000000ULL, 60 TILE_FLAG_TRIVIAL = 0x2000000000000000ULL, 61 TILE_FLAG_EASY = 0x4000000000000000ULL, 62 TILE_FLAG_TOUGH = 0x6000000000000000ULL, 63 TILE_FLAG_NASTY = 0x8000000000000000ULL, 64 65 // MDAM has 5 possibilities, so uses 3 bits. 66 TILE_FLAG_MDAM_MASK = 0x1C0000000ULL, 67 TILE_FLAG_MDAM_LIGHT = 0x040000000ULL, 68 TILE_FLAG_MDAM_MOD = 0x080000000ULL, 69 TILE_FLAG_MDAM_HEAVY = 0x0C0000000ULL, 70 TILE_FLAG_MDAM_SEV = 0x100000000ULL, 71 TILE_FLAG_MDAM_ADEAD = 0x1C0000000ULL, 72 73 // Demon difficulty has 5 possibilities, so uses 3 bits. 74 TILE_FLAG_DEMON = 0xE00000000ULL, 75 TILE_FLAG_DEMON_5 = 0x200000000ULL, 76 TILE_FLAG_DEMON_4 = 0x400000000ULL, 77 TILE_FLAG_DEMON_3 = 0x600000000ULL, 78 TILE_FLAG_DEMON_2 = 0x800000000ULL, 79 TILE_FLAG_DEMON_1 = 0xE00000000ULL, 80 81 //// Background flags 82 83 TILE_FLAG_RAY = 0x00010000ULL, 84 TILE_FLAG_MM_UNSEEN = 0x00020000ULL, 85 TILE_FLAG_UNSEEN = 0x00040000ULL, 86 87 // 3 mutually exclusive flags for cursors. 88 TILE_FLAG_CURSOR1 = 0x00180000ULL, 89 TILE_FLAG_CURSOR2 = 0x00080000ULL, 90 TILE_FLAG_CURSOR3 = 0x00100000ULL, 91 TILE_FLAG_CURSOR = 0x00180000ULL, 92 93 TILE_FLAG_TUT_CURSOR = 0x00200000ULL, 94 TILE_FLAG_TRAV_EXCL = 0x00400000ULL, 95 TILE_FLAG_EXCL_CTR = 0x00800000ULL, 96 TILE_FLAG_RAY_OOR = 0x01000000ULL, 97 TILE_FLAG_OOR = 0x02000000ULL, 98 TILE_FLAG_WATER = 0x04000000ULL, 99 TILE_FLAG_NEW_STAIR = 0x08000000ULL, 100 TILE_FLAG_NEW_TRANSPORTER = 0x10000000ULL, 101 102 // Tentacle overlay flags: direction and type. 103 TILE_FLAG_TENTACLE_NW = 0x020000000ULL, 104 TILE_FLAG_TENTACLE_NE = 0x040000000ULL, 105 TILE_FLAG_TENTACLE_SE = 0x080000000ULL, 106 TILE_FLAG_TENTACLE_SW = 0x100000000ULL, 107 TILE_FLAG_TENTACLE_KRAKEN = 0x0200000000ULL, 108 TILE_FLAG_TENTACLE_ELDRITCH = 0x0400000000ULL, 109 TILE_FLAG_TENTACLE_STARSPAWN = 0x0800000000ULL, 110 TILE_FLAG_TENTACLE_VINE = 0x1000000000ULL, 111 112 #if TAG_MAJOR_VERSION == 34 113 // Starspawn tentacle overlays. Obviated by the above. 114 TILE_FLAG_STARSPAWN_NW = 0x02000000000ULL, 115 TILE_FLAG_STARSPAWN_NE = 0x04000000000ULL, 116 TILE_FLAG_STARSPAWN_SE = 0x08000000000ULL, 117 TILE_FLAG_STARSPAWN_SW = 0x10000000000ULL, 118 #endif 119 120 //// General 121 122 // Should go up with RAY/RAY_OOR, but they need to be exclusive for those 123 // flags and there's no room. 124 TILE_FLAG_LANDING = 0x20000000000ULL, 125 TILE_FLAG_RAY_MULTI = 0x40000000000ULL, 126 127 // More tentacle types 128 TILE_FLAG_TENTACLE_ZOMBIE_KRAKEN = 0x80000000000ULL, 129 TILE_FLAG_TENTACLE_SIMULACRUM_KRAKEN = 0x100000000000ULL, 130 TILE_FLAG_TENTACLE_SPECTRAL_KRAKEN = 0x200000000000ULL, 131 132 // Mask for the tile index itself. 133 TILE_FLAG_MASK = 0x0000FFFFULL, 134 }; 135