1 /* NetHack 3.6 botl.h $NHDT-Date: 1554591222 2019/04/06 22:53:42 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.24 $ */ 2 /* Copyright (c) Michael Allison, 2003 */ 3 /* NetHack may be freely redistributed. See license for details. */ 4 5 #ifndef BOTL_H 6 #define BOTL_H 7 8 /* MAXCO must hold longest uncompressed status line, and must be larger 9 * than COLNO 10 * 11 * longest practical second status line at the moment is 12 Astral Plane \GXXXXNNNN:123456 HP:1234(1234) Pw:1234(1234) AC:-127 13 Xp:30/123456789 T:123456 Stone Slime Strngl FoodPois TermIll 14 Satiated Overloaded Blind Deaf Stun Conf Hallu Lev Ride 15 * -- or about 185 characters. '$' gets encoded even when it 16 * could be used as-is. The first five status conditions are fatal 17 * so it's rare to have more than one at a time. 18 * 19 * When the full line is wider than the map, the basic status line 20 * formatting will move less important fields to the end, so if/when 21 * truncation is necessary, it will chop off the least significant 22 * information. 23 */ 24 #if COLNO <= 160 25 #define MAXCO 200 26 #else 27 #define MAXCO (COLNO + 40) 28 #endif 29 30 struct condmap { 31 const char *id; 32 unsigned long bitmask; 33 }; 34 35 enum statusfields { 36 BL_CHARACTERISTICS = -3, /* alias for BL_STR..BL_CH */ 37 BL_RESET = -2, /* Force everything to redisplay */ 38 BL_FLUSH = -1, /* Finished cycling through bot fields */ 39 BL_TITLE = 0, 40 BL_STR, BL_DX, BL_CO, BL_IN, BL_WI, BL_CH, /* 1..6 */ 41 BL_ALIGN, BL_SCORE, BL_CAP, BL_GOLD, BL_ENE, BL_ENEMAX, /* 7..12 */ 42 BL_XP, BL_AC, BL_HD, BL_TIME, BL_HUNGER, BL_HP, /* 13..18 */ 43 BL_HPMAX, BL_LEVELDESC, BL_EXP, BL_CONDITION, /* 19..22 */ 44 MAXBLSTATS /* [23] */ 45 }; 46 47 enum relationships { NO_LTEQGT = -1, 48 EQ_VALUE, LT_VALUE, LE_VALUE, 49 GE_VALUE, GT_VALUE, TXT_VALUE }; 50 51 #define BEFORE 0 52 #define NOW 1 53 54 /* Boolean condition bits for the condition mask */ 55 56 /* clang-format off */ 57 #define BL_MASK_STONE 0x00000001L 58 #define BL_MASK_SLIME 0x00000002L 59 #define BL_MASK_STRNGL 0x00000004L 60 #define BL_MASK_FOODPOIS 0x00000008L 61 #define BL_MASK_TERMILL 0x00000010L 62 #define BL_MASK_BLIND 0x00000020L 63 #define BL_MASK_DEAF 0x00000040L 64 #define BL_MASK_STUN 0x00000080L 65 #define BL_MASK_CONF 0x00000100L 66 #define BL_MASK_HALLU 0x00000200L 67 #define BL_MASK_LEV 0x00000400L 68 #define BL_MASK_FLY 0x00000800L 69 #define BL_MASK_RIDE 0x00001000L 70 #define BL_MASK_BITS 13 /* number of mask bits that can be set */ 71 /* clang-format on */ 72 73 #define VIA_WINDOWPORT() \ 74 ((windowprocs.wincap2 & (WC2_HILITE_STATUS | WC2_FLUSH_STATUS)) != 0) 75 76 #define REASSESS_ONLY TRUE 77 78 /* #ifdef STATUS_HILITES */ 79 /* hilite status field behavior - coloridx values */ 80 #define BL_HILITE_NONE -1 /* no hilite of this field */ 81 #define BL_HILITE_INVERSE -2 /* inverse hilite */ 82 #define BL_HILITE_BOLD -3 /* bold hilite */ 83 /* or any CLR_ index (0 - 15) */ 84 #define BL_TH_NONE 0 85 #define BL_TH_VAL_PERCENTAGE 100 /* threshold is percentage */ 86 #define BL_TH_VAL_ABSOLUTE 101 /* threshold is particular value */ 87 #define BL_TH_UPDOWN 102 /* threshold is up or down change */ 88 #define BL_TH_CONDITION 103 /* threshold is bitmask of conditions */ 89 #define BL_TH_TEXTMATCH 104 /* threshold text value to match against */ 90 #define BL_TH_ALWAYS_HILITE 105 /* highlight regardless of value */ 91 92 93 #define HL_ATTCLR_DIM CLR_MAX + 0 94 #define HL_ATTCLR_BLINK CLR_MAX + 1 95 #define HL_ATTCLR_ULINE CLR_MAX + 2 96 #define HL_ATTCLR_INVERSE CLR_MAX + 3 97 #define HL_ATTCLR_BOLD CLR_MAX + 4 98 #define BL_ATTCLR_MAX CLR_MAX + 5 99 100 enum hlattribs { HL_UNDEF = 0x00, 101 HL_NONE = 0x01, 102 HL_BOLD = 0x02, 103 HL_INVERSE = 0x04, 104 HL_ULINE = 0x08, 105 HL_BLINK = 0x10, 106 HL_DIM = 0x20 }; 107 /* #endif STATUS_HILITES */ 108 109 extern const char *status_fieldnames[]; /* in botl.c */ 110 111 #endif /* BOTL_H */ 112