1 /* $Id$ */ 2 /* File: defines-features.h */ 3 4 /* Purpose: global definitions of enabled features. 5 I created created this file and split off all feature #defines 6 to move them in here, so it can be included by the new .pre lua files, 7 to allow for finer #ifdef checks there. 8 So this file must ONLY contain #define <feature> basically! - C. Blue 9 */ 10 11 12 13 /* --------------------------------------------------------------------------*/ 14 /* Features that are allowed in all build types, ie server-type independant: */ 15 16 /* Distinguished light colour for flaming lites, magic lights, vampire light */ 17 #define CAVE_LITE_COLOURS 18 19 /* Add extra character slot(s) dedicated to Ironman Deep Dive Challenge (MAX_DED_IDDC_CHARS) */ 20 #define ALLOW_DED_IDDC_MODE 21 /* Add extra character slot(s) dedicated to PvP mode (MAX_DED_PVP_CHARS) */ 22 #define ALLOW_DED_PVP_MODE 23 24 /* Use daily pre-generated IDDC lineups of dungeon types, with transitions, bosses, etc? */ 25 #define IRONDEEPDIVE_MIXED_TYPES 26 /* Add fixed (and safe) towns to "Ironman Deep Dive Challenge"? (at depths 2k and 4k) */ 27 #define IRONDEEPDIVE_FIXED_TOWNS 28 /* Allow to withdraw prematurely in fixed Ironman Deep Dive Challenge towns. 29 (No entry to the leaderboard this way of course.) */ 30 #define IRONDEEPDIVE_FIXED_TOWN_WITHDRAWAL 31 /* Fixed towns in "Ironman Deep Dive Challenge" are also static regarding objects and monsters? */ 32 //#define IRONDEEPDIVE_STATIC_TOWNS 33 /* Add extra fixed towns to "Ironman Deep Dive Challenge"? (at depths 1k and 3k), 34 these are 'wild' like random towns and not as privileged (no withdrawal, no item staticness) */ 35 #define IRONDEEPDIVE_EXTRA_FIXED_TOWNS 36 /* Do artifacts time out especially quickly in the IDDC? */ 37 #define IDDC_ARTIFACT_FAST_TIMEOUT 38 /* Do artifacts time out especially quickly for total_winners 39 (and for once_winners if fallenkings_etiquette is set)? */ 40 #define WINNER_ARTIFACT_FAST_TIMEOUT 41 42 /* Can the first [two] speed rings be found especially easily in the IDDC? Or too much pampering? (0/[1]/2) */ 43 #define IDDC_EASY_SPEED_RINGS 1 44 45 #define DUNGEON_VISIT_BONUS /* Experimental: Dungeons rarely visited give exp bonus - C. Blue */ 46 //#define DUNGEON_VISIT_BONUS_DEPTHRANGE /* not yet implemented: enhance DUNGEON_VISIT_BONUS algorithm further (but seems inefficient atm) */ 47 48 /* Filter swearwords (depends on client-side option too) and put offenders to jail? 49 (Filer initialised from swearing.txt (vs nonswearing.txt) and init_swear_set().) 50 NOTE: Censoring can still be disabled (and reenabled) on the fly via 51 'censor_swearing' lua variable.*/ 52 #define CENSOR_SWEARING 53 54 #define ENABLE_NEW_MELEE /* shields may block, weapons may parry */ 55 #define DUAL_WIELD /* rogues (and others too now) may dual-wield 1-hand weapons */ 56 #define ENABLE_STANCES /* combat stances for warriors */ 57 #define ALLOW_SHIELDLESS_DEFENSIVE_STANCE /* Always allow defensive stance (less effective than with shield though) */ 58 59 #define ENABLE_CLOAKING /* cloaking mode for rogues */ 60 #define NEW_DODGING /* reworked dodging formulas to allow more armour weight while aligning it to rogues, keeping your ideas though, Adam ;) - C. Blue */ 61 #define ENABLE_TECHNIQUES 62 #define NEW_HISCORE /* extended high score options for tomenet.cfg */ 63 64 #define ENABLE_MCRAFT /* 'Mindcrafter' class - C. Blue */ 65 #define NEW_TOMES /* customizable spellbooks */ 66 67 #define CLIENT_SIDE_WEATHER /* server uses Send_weather() instead of displaying own weather animation */ 68 #define MAX_CLOUDS 1000 69 70 #define EXTRA_LEVEL_FEELINGS /* enable extra level feelings, remotely angband-style, warning about dangers */ 71 #define M_EGO_NEW_FLICKER /* ego monsters flicker between base r_ptr and ego colour */ 72 #define NEW_ANTIMAGIC_RATIO /* new darksword-vs-skill ratio for antimagic: weapon up to 30%, skill up to 50% */ 73 74 #define ANTI_SEVEN_EXPLOIT /* prevent ball-spell/explosion casters from exploiting monster movement by using a 7-shaped corridor */ 75 #define DOUBLE_LOS_SAFETY /* prevent exploit of diagonal LoS that may result in stationary monsters unable to retaliate */ 76 #define STEAL_CHEEZEREDUCTION /* reduce cheeziness of stealing by giving more expensive items a chance to turn level 0 */ 77 78 #define PLAYER_STORES /* Enable player-run shops - C. Blue */ 79 #define HOUSE_PAINTING /* Allow players to paint their entrance area or house (for PLAYER_STORES) - C. Blue */ 80 81 #ifndef WIN32 82 #define ENABLE_GO_GAME /* Allows players to play vs CPU games of Go/Weiqi/Baduk. - C. Blue */ 83 #endif 84 #define ENABLE_MAIA /* enable RACE_MAIA (formerly 'DIVINE' race) */ 85 #define ENABLE_KOBOLD /* enable RACE_KOBOLD */ 86 87 /* Allow monsters with AI_ASTAR r_info flag to use A* pathfinding algorithm? - C. Blue */ 88 #define MONSTER_ASTAR 89 90 /* C. Blue - Note about flow_by_sound/flow_by_smell: 91 Smell is currently not distinct from sound, but code is kind of incomplete or mixed up in some parts. 92 I added various limits for each sound and flow, although these aren't implemented yet they should be here, 93 because they won't bring additional costs! So on fixing sound/smell they should definitely be added. 94 Also, distinctions between sound/smell/ESP(new ;)) should be added, depending on monster races. */ 95 96 /* Allow monsters to use flowing pathfinding algorithm? */ 97 //#define MONSTER_FLOW_BY_SOUND 98 99 /* Allow monsters to use smelling pathfinding algorithm? */ 100 //#define MONSTER_FLOW_BY_SMELL 101 102 /* Allow monsters to use flow algorithm without range/radius (well as far as we have cpu powah..)/time restrictions? 103 Let's just use same as for MONSTER_FLOW_BY_SOUND, so we don't need more fields for cave_type.. - C. Blue */ 104 //#define MONSTER_FLOW_BY_ESP 105 106 /* Allow use of '!E' inscription to prevent earthquakes from TR5_IMPACT items? */ 107 //#define ALLOW_NO_QUAKE_INSCRIPTION 108 109 /* Allow only a limited amount of guild adders, in turn maintain an always 110 accessible list of them, which also allows for removal while they aren't on? */ 111 #define GUILD_ADDERS_LIST 112 113 /* Shorten party/guild name to (P) and (G) in party-/guild-chat for less clutter? */ 114 #define GROUP_CHAT_NOCLUTTER 115 116 /* Load 'D:' tags from a_info.txt file and display them on examining - C. Blue */ 117 #define ART_DIZ 118 119 #define ENABLE_INSTANT_RES /* Enable the instant resurrection feature */ 120 121 #define WILDERNESS_NEW_FEATURES /* Use new 4.4.9 wilderness features? WARNING: Changes wilderness and houses */ 122 123 #define BIG_MAP /* Allow a larger main window with a map bigger than 66x22 - C. Blue */ 124 125 /* Use an info screen for normal ID too, not just for *ID*, and display all 126 guaranteed abilities (k_info and 100%-e_info flags/esp) in it. - C. Blue */ 127 #define NEW_ID_SCREEN 128 129 /* Load 'D:' tags from k_info.txt file and display them on examining - C. Blue */ 130 #define KIND_DIZ 131 132 /* Allow kings/queens/emperors/empresses to team up for Nether Realm. 133 Must be at the worldmap sector of NR entrance, or inside NR. */ 134 #define ALLOW_NR_CROSS_PARTIES 135 /* Best to enable when ALLOW_NR_CROSS_PARTIES is enabled: 136 Allow kings/queens/emperors/empresses to trade items that were found in the 137 Nether Realm as long as the items weren't transported out of it once. */ 138 #define ALLOW_NR_CROSS_ITEMS 139 140 /* expand TV_POTION svals to make TV_POTION2 obsolete? */ 141 #define EXPAND_TV_POTION 142 143 /* Use newly reworked spell system: Discrete stages for each component of 144 compound spells, and fixed mana cost to go with it. */ 145 #define DISCRETE_SPELL_SYSTEM 146 //#define DSS_EXPANDED_SCROLLS /* spell scrolls to carry all versions of a spell instead of just one specific? (Implementation not yet done) */ 147 148 /* Draconians get to pick a 'lineage trait' on birth, 149 giving specific resistances and a breath weapon. - C. Blue */ 150 #define ENABLE_DRACONIAN_TRAITS 151 152 /* Allow an OT_GUILD house for each guild. - C. Blue */ 153 #define ENABLE_GUILD_HALL 154 155 /* like BONE_AND_TREASURE_CHAMBERS, just for IDDC */ 156 #define IDDC_BONE_AND_TREASURE_CHAMBERS 157 158 159 /* New in 4.5.1.2: Support 100% client-side animated spellcasting - C. Blue 160 Note: This must be on for clients >= 4.5.1.2.0.0 and off for those before. 161 Same for servers. */ 162 #define EXTENDED_TERM_COLOURS 163 164 /* Special extended colours that make use of background colouring - C. Blue 165 Note: This is highly EXPERIMENTAL and not even implemented atm., 166 the only thing that works is proof of concept code that displays 167 rain in alternating colours, TERM_ORANGE and TERM2_BLUE. */ 168 //#define EXTENDED_BG_COLOURS 169 170 171 /* better chance for non-low +hit,+dam on randart melee weapons and boomerangs */ 172 #define RANDART_WEAPON_BUFF 173 174 /* Allow usage of /hilite command (todo: turn into client option) */ 175 #define ENABLE_SELF_FLASHING 176 177 /* Allow !X pseudo-auto-identify inscription on spell books too - C. Blue 178 Note that this badly abuses the 'item-on-floor' (negative current_item value) feature, 179 which fortunately is unused in general. 180 Currently there's a harmless message inconsistency: !X from spells will output an 181 additional 'In your pack: xxxx (x)' message before the 'You have..' carry() message. */ 182 #define ENABLE_XID_SPELL 183 #define XID_SPELL_AFTER_PICKUP /* this must be set to reflect 'inven_carry()' call position in 'carry()' routine! */ 184 185 /* Allow Martial Arts users to wield boomerangs? */ 186 #define ENABLE_MA_BOOMERANG 187 188 /* Warning beep on taking damage while off-panel via locate command */ 189 #define ALERT_OFFPANEL_DAM 190 191 /* Telekinesis uses server-side get_item() request instead of the 192 client-side LUA script prompting for the item? (Recommended) 193 Advantage: We only ask for the item after the spell has been cast 194 successfully. 195 Disadvantage: Macros need \wXX to wait for the server-side request. 196 (Not a real 'feature', but needs to be in here to be recognized by player.pre.) */ 197 #define TELEKINESIS_GETITEM_SERVERSIDE 198 199 /* Wilderness mapping scrolls are special: They're actually pieces of the world map. */ 200 #define NEW_WILDERNESS_MAP_SCROLLS 201 202 /* Disable manual declaration of hostility/peace */ 203 #define NO_PK 204 205 /* --------------------- Server-type dependant features -------------------- */ 206 207 #ifdef RPG_SERVER 208 /* limit to_ac to +30 instead of +35 -- Reason: Give base AC more weight! 209 Counter-balanced by different AC_CAP/AC_DIV values, so no nerf for players! */ 210 #define TO_AC_CAP_30 211 212 /* Do we want to use Kurzel's PvE/P when mode 1 PK is configured? */ 213 // #define KURZEL_PK --disabled because it breaks chat highlighting 214 215 #define BONE_AND_TREASURE_CHAMBERS /* New experimental room types: Generate pits of bones or treasure - C. Blue */ 216 217 #define MUCHO_RUMOURS /* print a rumour on day changes and unique kills (the_sandman) */ 218 // #define PRECIOUS_STONES 219 220 #define AUCTION_BETA /* less restrictions while beta testing */ 221 #define AUCTION_SYSTEM 222 #define AUCTION_DEBUG 223 224 #define OPTIMIZED_ANIMATIONS /* testing */ 225 #endif 226 227 #ifdef TEST_SERVER 228 #define NEW_REMOVE_CURSE /* rc has fail chance; allow projecting rc spell on others */ 229 230 /* limit to_ac to +30 instead of +35 -- Reason: Give base AC more weight! 231 Counter-balanced by different AC_CAP/AC_DIV values, so no nerf for players! */ 232 #define TO_AC_CAP_30 /* limit to_ac to +30 instead of +35 */ 233 234 #define ENABLE_ASSASSINATE /* experimental fighting technique for rogues - devalues Backstabbing too much probably */ 235 236 #ifdef MAX_CLOUDS 237 #undef MAX_CLOUDS 238 #define MAX_CLOUDS 10 /* note that this number gets divided depending on season */ 239 #endif 240 241 #define AUCTION_BETA /* less restrictions while beta testing */ 242 #define AUCTION_SYSTEM 243 #define AUCTION_DEBUG 244 245 #define OPTIMIZED_ANIMATIONS /* testing */ 246 247 #define TELEPORT_SURPRISES /* monsters are surprised for a short moment if a player long-range teleported next to them */ 248 #endif 249 250 #ifdef ARCADE_SERVER 251 #endif 252 253 254 255 /* ------------------------ Client-side only features -----------------------*/ 256 257 #ifdef CLIENT_SIDE 258 //Originally for hybrid clients to do both old and new runemastery, now unused. 259 260 /* Use a somewhat lighter 'dark blue' for TERM_BLUE to improve readability 261 on some screens / under certain circumstances? */ 262 //#define READABILITY_BLUE --has been turned into a config file option! 263 264 /* Use a somewhat darker 'light dark' for TERM_L_DARK to improve distinction 265 from slate tone? */ 266 #define DISTINCT_DARK 267 268 /* Remove some hard-coding in the client options */ 269 #define CO_BIGMAP 7 270 271 #ifdef TEST_CLIENT 272 #define BIGMAP_MINDLINK_HACK 273 #endif 274 #endif 275 276 /* ----------------- Misc flags induced by above definitions ----------------*/ 277 278 /* Use new shields with block/deflect values instead of traditional ac/+ac ? */ 279 #ifdef ENABLE_NEW_MELEE 280 #ifndef USE_NEW_SHIELDS 281 #define USE_NEW_SHIELDS 282 /* Shields do not have an +AC modifier anymore (aka it's zeroed)? - Note that shields still count as is_armour() though */ 283 #define NEW_SHIELDS_NO_AC 284 #endif 285 /* Use blocking/parrying? if USE_NEW_SHIELDS is disabled, AC will be used to determine block chance */ 286 #ifndef USE_BLOCKING 287 #define USE_BLOCKING 288 #endif 289 #ifndef USE_PARRYING 290 #define USE_PARRYING 291 #endif 292 #endif 293 294 /* Flow by sound/smell/esp requires MONSTER_FLOW */ 295 #ifdef MONSTER_FLOW_BY_SOUND 296 #define MONSTER_FLOW 297 #endif 298 #ifdef MONSTER_FLOW_BY_SMELL 299 #ifndef MONSTER_FLOW 300 #define MONSTER_FLOW 301 #endif 302 #endif 303 #ifdef MONSTER_FLOW_BY_ESP 304 #ifndef MONSTER_FLOW 305 #define MONSTER_FLOW 306 #endif 307 #endif 308 309 /* DUNGEON_VISIT_BONUS: 310 Amount of time until a dungeon cannot be more frequented anymore (in minutes) [800]. 311 The time until a dungeon goes back down to 0 ('most unexplored') is that time * 10, 312 so 800 would result in 8000 minutes aka ~6 days. */ 313 #define VISIT_TIME_CAP 800 314