00001 #ifndef MON_CLASS_FLAGS_H 00002 #define MON_CLASS_FLAGS_H 00003 00004 // properties of the monster class (other than resists/vulnerabilities). 00005 // NOT using enum, since C++ doesn't guarantee support for 64-bit enum 00006 // constants. 00007 const uint64_t M_NO_FLAGS = 0; 00008 00009 // any non-physical-attack powers, 00010 const uint64_t M_SPELLCASTER = 1<< 0; 00011 00012 // monster is a wizard (hated by Trog; affected by silence) 00013 const uint64_t M_ACTUAL_SPELLS = 1<< 1; 00014 00015 // monster is a priest 00016 const uint64_t M_PRIEST = 1<< 2; 00017 00018 // monster is skilled fighter 00019 const uint64_t M_FIGHTER = 1<< 3; 00020 00021 // do not give (unique) a wand 00022 const uint64_t M_NO_WAND = 1<< 4; 00023 00024 // do not give a high tier wand 00025 const uint64_t M_NO_HT_WAND = 1<< 5; 00026 00027 // is created invis 00028 const uint64_t M_INVIS = 1<< 6; 00029 00030 // can see invis 00031 const uint64_t M_SEE_INVIS = 1<< 7; 00032 00033 // can sense invisible things 00034 const uint64_t M_SENSE_INVIS = 1<< 8; 00035 00036 // uses talking code 00037 const uint64_t M_SPEAKS = 1<< 9; 00038 00039 // monster is perma-confused; 00040 const uint64_t M_CONFUSED = 1<<10; 00041 00042 // monster is batty 00043 const uint64_t M_BATTY = 1<<11; 00044 00045 // monster can split 00046 const uint64_t M_SPLITS = 1<<12; 00047 00048 // monster glows with light 00049 const uint64_t M_GLOWS_LIGHT = 1<<13; 00050 00051 // monster is stationary 00052 const uint64_t M_STATIONARY = 1<<14; 00053 00054 // monster can smell blood 00055 const uint64_t M_BLOOD_SCENT = 1<<15; 00056 00057 // susceptible to cold; drainable by vampires 00058 const uint64_t M_COLD_BLOOD = 1<<16; 00059 00060 // drainable by vampires, no other effect currently 00061 const uint64_t M_WARM_BLOOD = 1<<17; 00062 00063 // monster glows with radiation 00064 const uint64_t M_GLOWS_RADIATION = 1<<18; 00065 00066 // monster digs through rock 00067 const uint64_t M_BURROWS = 1<<19; 00068 00069 // monster can submerge 00070 const uint64_t M_SUBMERGES = 1<<20; 00071 00072 // monster is a unique 00073 const uint64_t M_UNIQUE = 1<<21; 00074 00075 // Passive acid splash when hit. 00076 const uint64_t M_ACID_SPLASH = 1<<22; 00077 00078 // gets various archery boosts 00079 const uint64_t M_ARCHER = 1<<23; 00080 00081 // is insubstantial 00082 const uint64_t M_INSUBSTANTIAL = 1<<24; 00083 00084 // wields two weapons at once 00085 const uint64_t M_TWO_WEAPONS = 1<<25; 00086 00087 // XXX: eventually make these spells? 00088 const uint64_t M_SPECIAL_ABILITY = 1<<26; 00089 00090 // cannot regenerate 00091 const uint64_t M_NO_REGEN = 1<<27; 00092 00093 // cannot cast spells when silenced; even though it's not a priest or 00094 // wizard 00095 const uint64_t M_SPELL_NO_SILENT = 1<<28; 00096 00097 // can cast spells when silenced; but casting makes noise when not 00098 // silenced 00099 const uint64_t M_NOISY_SPELLS = 1<<29; 00100 00101 // boneless corpses 00102 const uint64_t M_NO_SKELETON = 1<<30; 00103 00104 // worth 0 xp 00105 const uint64_t M_NO_EXP_GAIN = (uint64_t)1<<31; 00106 00107 // has a deflection effect 00108 const uint64_t M_DEFLECT_MISSILES = (uint64_t)1<<32; 00109 00110 // phase shift (EV bonus not included) 00111 const uint64_t M_PHASE_SHIFT = (uint64_t)1<<33; 00112 00113 // not a valid polymorph target (but can be polymorphed) 00114 const uint64_t M_NO_POLY_TO = (uint64_t)1<<34; 00115 00116 // has special abilities coded as spells which are entirely non-magical 00117 const uint64_t M_FAKE_SPELLS = (uint64_t)1<<35; 00118 00119 // always leaves a corpse 00120 const uint64_t M_ALWAYS_CORPSE = (uint64_t)1<<36; 00121 00122 // is constantly "fleeing" 00123 const uint64_t M_FLEEING = (uint64_t)1<<37; 00124 00125 // is an artificial being 00126 const uint64_t M_ARTIFICIAL = (uint64_t)1<<38; 00127 00128 // doesn't need to breathe; immune to asphyxiation and Mephitic Cloud 00129 const uint64_t M_UNBREATHING = (uint64_t)1<<39; 00130 00131 // not fully coded; causes a warning 00132 const uint64_t M_UNFINISHED = (uint64_t)1<<40; 00133 #endif