/* * mud.h * Defines required by the rest of the program. * ____ _ * | _ \ ___ __ _| |_ __ ___ ___ * | |_) / _ \/ _` | | '_ ` _ \/ __| * | _ < __/ (_| | | | | | | \__ \ * |_| \_\___|\__,_|_|_| |_| |_|___/ * * Permission to use, modify and distribute is granted via the * Creative Commons - Attribution - Non Commercial - Share Alike 3.0 License * http://creativecommons.org/licenses/by-nc-sa/3.0/ * * Copyright (C) 2007-2009 Jason Mitchell, Randi Mitchell * Contributions by Tim Callahan, Jonathan Hseu * Based on Mordor (C) Brooke Paul, Brett J. Vickers, John P. Freeman * */ #ifndef MUD_H #define MUD_H // Other includes are at the end of the file to make sure all defines and such in this // file are visible #include "paths.h" #include "bstring.h" #ifndef READCFG #define READCFG #endif // READCFG #ifndef FALSE #define FALSE (0) #endif #ifndef TRUE #define TRUE (!FALSE) #endif #define REBOOTFILE CONFPATH "/" "reboot.xml" // Size of exp array, also highest you can train #define MAXALVL 40 #define MAX_ARMOR 2000 // I/O buffer sizes #define IBUFSIZE 1024 #define OBUFSIZE 8192 // File permissions //#define S_IWRITE 00660 //#define S_IREAD 00006 #ifndef O_BINARY #define O_BINARY 0 #endif #define ACC 00666 // merror() error types #define FATAL 1 #define NONFATAL 0 enum LoadType { LS_NORMAL, LS_BACKUP, LS_CONVERT, LS_FULL, LS_REF }; #define CUSTOM_COLOR_DEFAULT '#' #define CUSTOM_COLOR_SIZE 20 // positions in the color array enum CustomColor { CUSTOM_COLOR_BROADCAST, CUSTOM_COLOR_GOSSIP, CUSTOM_COLOR_PTEST, CUSTOM_COLOR_NEWBIE, CUSTOM_COLOR_DM, CUSTOM_COLOR_ADMIN, CUSTOM_COLOR_SEND, CUSTOM_COLOR_MESSAGE, CUSTOM_COLOR_WATCHER, CUSTOM_COLOR_CLASS, CUSTOM_COLOR_RACE, CUSTOM_COLOR_CLAN, CUSTOM_COLOR_TELL, CUSTOM_COLOR_GROUP, CUSTOM_COLOR_DAMAGE, CUSTOM_COLOR_SELF, CUSTOM_COLOR_GUILD }; enum WeatherString { WEATHER_SUNRISE, WEATHER_SUNSET, WEATHER_EARTH_TREMBLES, WEATHER_HEAVY_FOG, WEATHER_BEAUTIFUL_DAY, WEATHER_BRIGHT_SUN, WEATHER_GLARING_SUN, WEATHER_HEAT, WEATHER_STILL, WEATHER_LIGHT_BREEZE, WEATHER_STRONG_WIND, WEATHER_WIND_GUSTS, WEATHER_GALE_FORCE, WEATHER_CLEAR_SKIES, WEATHER_LIGHT_CLOUDS, WEATHER_THUNDERHEADS, WEATHER_LIGHT_RAIN, WEATHER_HEAVY_RAIN, WEATHER_SHEETS_RAIN, WEATHER_TORRENT_RAIN, WEATHER_NO_MOON, WEATHER_SLIVER_MOON, WEATHER_HALF_MOON, WEATHER_WAXING_MOON, WEATHER_FULL_MOON }; // base monster number for various types of summoned monsters #define BASE_ELEMENTAL 801 #define BASE_UNDEAD 550 #define SLOWTICK #define COMMANDMAX 6 // Monster and object files sizes (in terms of monsters or objects) #define MFILESIZE 100 #define OFILESIZE 100 // memory limits #define RMAX 20000 // Max number of these allowed to be created #define MMAX 20000 #define OMAX 20000 #define PMAX 1024 #define RQMAX 600 // Max number of these allowed in memory #define MQMAX 200 // at any one time #define OQMAX 200 // make sure these stay updated with calendar.xml! enum Season { NO_SEASON = 0, SPRING = 1, SUMMER = 2, AUTUMN = 3, WINTER = 4 }; // for bit flags, take (season-1)^2 // spring flag (1) = overflowing river // summer flag (2) = ? // autumn flag (4) = ? // winter flag (8) = cold damage, no herbs #define BROADLOG 1 #define MAX_MULTICLASS 8 // how often (in seconds) players get saved #define SAVEINTERVAL 1200 #define MAXTIMEOUT 14400 #define MAXPAWN 25000 #define MAX_QUEST 128 #define MAX_FACTION 32 #define MAX_DUELS 10 #define MAX_BUILDER_RANGE 10 // Save flags #define PERMONLY 1 #define ALLITEMS 0 // Command status returns #define DISCONNECT 1 #define PROMPT 2 #define DOPROMPT 3 #define WIELDOBJ 1 #define SECONDOBJ 2 #define HOLDOBJ 3 #define SHIELDOBJ 4 // NPC Trades #define NOTRADE 0 #define SMITHY 1 #define BANKER 2 #define ARMOROR 3 #define WEAPONSMITH 4 #define MERCHANT 5 #define TRAINING_PERM 6 #define MOBTRADE_COUNT 7 // Monetary transaction types #define BUY 0 #define SELL 1 // Creature stats #define STR 1 #define DEX 2 #define CON 3 #define INT 4 #define PTY 5 #define CHA 6 #define MAX_STAT PTY #define MAX_STAT_NUM MAXALVL*10 // Saving throw types #define LCK 0 // Luck #define POI 1 // Poison #define DEA 2 // Death #define BRE 3 // Breath Weapons #define MEN 4 // Mental #define SPL 5 // Spells #define MAX_SAVE 6 #define MAX_SAVE_COLOR 11 // Religions #define ATHEIST 0 #define ARAMON 1 #define CERIS 2 #define ENOCH 3 #define GRADIUS 4 #define ARES 5 #define KAMIRA 6 #define LINOTHAN 7 #define ARACHNUS 8 #define MARA 9 #define JAKAR 10 #define DEITY_COUNT MARA+1 // Alignments #define BLOODRED -3 #define REDDISH -2 #define PINKISH -1 #define NEUTRAL 0 #define LIGHTBLUE 1 #define BLUISH 2 #define ROYALBLUE 3 // Attack types #define PHYSICAL 1 #define MAGICAL 2 #define MENTAL 3 #define NEGATIVE_ENERGY 4 #define ABILITY 5 #define MAGICAL_NEGATIVE 6 // Modifier List #define MSTR 0 #define MDEX 1 #define MCON 2 #define MINT 3 #define MPIE 4 #define MCHA 5 #define MHP 6 #define MMP 7 #define MLCK 8 #define MPOI 9 #define MDEA 10 #define MBRE 11 #define MMEN 12 #define MSPL 13 #define MARMOR 14 #define MTHAC 15 #define MDMG 16 #define MSPLDMG 17 #define MABSORB 18 #define MALIGN 19 #define MAX_MOD 20 // change when add more - up to 30 // Language Defines #define LUNKNOWN 0 #define LDWARVEN 1 #define LELVEN 2 #define LHALFLING 3 #define LCOMMON 4 #define LORCISH 5 #define LGIANTKIN 6 #define LGNOMISH 7 #define LTROLL 8 #define LOGRISH 9 #define LDARKELVEN 10 #define LGOBLINOID 11 #define LMINOTAUR 12 #define LCELESTIAL 13 #define LKOBOLD 14 #define LINFERNAL 15 #define LBARBARIAN 16 #define LKATARAN 17 #define LDRUIDIC 18 #define LWOLFEN 19 #define LTHIEFCANT 20 #define LARCANIC 21 #define LABYSSAL 22 #define LTIEFLING 23 #define LANGUAGE_COUNT 24 //// Object Material Types //#define CLOTH 0 //#define GLASS 1 //#define LEATHER 2 //#define IRON 3 //#define PAPER 4 //#define STONE 5 //#define WOOD 6 //#define LIQUID 7 //#define VOLATILE 8 //#define BONE 9 //#define GEMS 10 //#define DIAMOND 11 //#define JEWELS 12 //#define STEEL 13 //#define MALLEABLE 14 //#define MITHRIL 15 //#define ADAMANTIUM 16 //#define SCALE 17 //#define DRAGONSCALE 18 // Character classes #define ASSASSIN 1 #define BERSERKER 2 #define CLERIC 3 #define FIGHTER 4 #define MAGE 5 #define PALADIN 6 #define RANGER 7 #define THIEF 8 #define VAMPIRE 9 #define MONK 10 #define DEATHKNIGHT 11 #define DRUID 12 #define LICH 13 #define WEREWOLF 14 #define BARD 15 #define ROGUE 16 #define BUILDER 17 //#define CREATOR 18 #define CARETAKER 19 #define DUNGEONMASTER 20 // start of the staff #define STAFF (BUILDER) #define MULTI_BASE (BUILDER) #define CLASS_COUNT (DUNGEONMASTER + 1) #define CLASS_COUNT_MULT (MULTI_BASE + 7) // races #define UNKNOWN 0 // playable races #define DWARF 1 #define ELF 2 #define HALFELF 3 #define HALFLING 4 #define HUMAN 5 #define ORC 6 #define HALFGIANT 7 #define GNOME 8 #define TROLL 9 #define HALFORC 10 #define OGRE 11 #define DARKELF 12 #define GOBLIN 13 #define MINOTAUR 14 #define SERAPH 15 #define KOBOLD 16 #define CAMBION 17 #define BARBARIAN 18 #define KATARAN 19 #define TIEFLING 20 #define MAX_PLAYABLE_RACE TIEFLING + 1 // non-playable #define LIZARDMAN 21 #define CENTAUR 22 // subraces, currently non-playable #define HALFFROSTGIANT 23 #define HALFFIREGIANT 24 #define GREYELF 25 #define WILDELF 26 #define AQUATICELF 27 #define DUERGAR 28 #define HILLDWARF 29 // non-playable #define GNOLL 30 #define BUGBEAR 31 #define HOBGOBLIN 32 #define WEMIC 33 #define HYBSIL 34 #define RAKSHASA 35 #define BROWNIE 36 #define FIRBOLG 37 #define SATYR 38 #define RACE_COUNT SATYR + 1 // Actual value doesn't matter, just needs to be different than PLAYER & MONSTER #define OBJECT 2 // Proficiencies //#define SHARP 0 //#define THRUST 1 //#define BLUNT 2 //#define POLE 3 //#define MISSILE 4 //#define CLEAVE 5 // Item is a herb! Subtype if needed in subtype #define HERB 4 #define WEAPON 5 // object types #define ARMOR 6 #define POTION 7 #define SCROLL 8 #define WAND 9 #define CONTAINER 10 #define MONEY 11 #define KEY 12 #define LIGHTSOURCE 13 #define MISC 14 #define SONGSCROLL 15 #define POISON 16 #define BANDAGE 17 #define AMMO 18 #define QUIVER 19 #define LOTTERYTICKET 20 #define MAX_OBJ_TYPE 21 #define DEFAULT_WEAPON_DELAY 30 // 3 seconds // Spell Realms #define CONJUREMAGE 7 #define CONJUREBARD 8 #define CONJUREANIM 9 // Daily use variables #define DL_BROAD 0 // Daily broadcasts #define DL_ENCHA 1 // Daily enchants #define DL_FHEAL 2 // Daily heals #define DL_TRACK 3 // Daily track spells #define DL_DEFEC 4 // Daily defecations #define DL_RCHRG 5 // Daily wand recharges #define DL_TELEP 6 // Daily tports #define DL_BROAE 7 // Daily broademotes #define DL_ETRVL 8 // Daily ethereal travels #define DL_HANDS 9 // Daily Lay on Hands #define DL_RESURRECT 10 // Daily resurrections #define DL_SCARES 11 // Daily scare casts #define DL_SILENCE 12 #define DL_HARM 13 // Daily harm casts #define DAILYLAST 13 // Object Last-time stuff #define LT_ENCHA 0 #define LT_ENVEN 1 #define DONT_USE 2 // Last-time specifications #define OLD_LT_INVISIBILITY 0 #define OLD_LT_PROTECTION 1 #define OLD_LT_BLESS 2 #define OLD_LT_INFRAVISION 13 #define OLD_LT_DETECT_INVIS 17 #define OLD_LT_DETECT_MAGIC 18 #define OLD_LT_LEVITATE 21 #define OLD_LT_HEAT_PROTECTION 23 #define OLD_LT_FLY 24 #define OLD_LT_RESIST_MAGIC 25 #define OLD_LT_KNOW_AURA 27 #define OLD_LT_RESIST_COLD 29 #define OLD_LT_BREATHE_WATER 30 #define OLD_LT_EARTH_SHIELD 31 #define OLD_LT_RESIST_WATER 52 #define OLD_LT_RESIST_FIRE 53 #define OLD_LT_RESIST_AIR 54 #define OLD_LT_RESIST_EARTH 55 #define OLD_LT_REFLECT_MAGIC 56 #define OLD_LT_TRUE_SIGHT 60 #define OLD_LT_CAMOUFLAGE 61 #define OLD_LT_DRAIN_SHIELD 63 #define OLD_LT_UNDEAD_WARD 65 #define OLD_LT_RESIST_ELEC 66 #define OLD_LT_WARMTH 67 #define OLD_LT_HASTE 71 #define OLD_LT_SLOW 72 #define OLD_LT_STRENGTH 78 #define OLD_LT_ENFEEBLEMENT 79 #define OLD_LT_DARKNESS 88 #define OLD_LT_TONGUES 90 #define OLD_LT_INSIGHT 93 #define OLD_LT_FEEBLEMIND 94 #define OLD_LT_PRAYER 95 #define OLD_LT_DAMNATION 96 #define OLD_LT_FORTITUDE 97 #define OLD_LT_WEAKNESS 98 #define OLD_LT_PASS_WITHOUT_TRACE 99 #define OLD_LT_COMPREHEND_LANGUAGES 74 #define OLD_LT_FARSIGHT 102 #define OLD_LT_HOLD_PERSON 75 #define OLD_LT_CONFUSED 80 #define OLD_LT_TEMP_BLIND 45 // Was LT_CHARM which wasn't being used. #define OLD_LT_SILENCE 34 #define OLD_LT_ARMOR 39 #define OLD_LT_ATTACK 3 // free 0 // free 1 // free 2 #define LT_AGGRO_ACTION 3 #define LT_TRACK 4 #define LT_MON_SCAVANGE 4 #define LT_STEAL 5 #define LT_PICKLOCK 6 #define LT_MON_WANDER 6 #define LT_SEARCH 7 #define LT_TICK 8 // Hp/Poison ticking timer #define LT_SPELL 9 #define LT_PEEK 10 #define LT_SNEAK 11 #define LT_READ_SCROLL 12 // free 13 #define LT_HIDE 14 #define LT_TURN 15 #define LT_FRENZY 16 // free 17 // free 18 #define LT_PRAY 19 #define LT_PREPARE 20 // free 21 #define LT_PLAYER_SAVE 22 // free 23 // free 24 // free 25 #define LT_MOVED 26 // free 27 #define LT_AGE 28 // free 29 // free 30 // free 31 // free 33 #define LT_SING 35 #define LT_CHARMED 36 #define LT_MEDITATE 37 #define LT_TOUCH_OF_DEATH 38 // free 38 #define LT_BLOOD_SACRIFICE 40 #define LT_MOB_THIEF 41 #define LT_INVOKE 42 #define LT_SCOUT 43 #define LT_BERSERK 44 #define LT_REGENERATE 46 #define LT_DRAIN_LIFE 47 #define LT_HYPNOTIZE 48 #define LT_PLAYER_BITE 49 #define LT_FREE_ACTION 50 #define LT_PLAYER_SEND 51 // free 52 // free 53 // free 54 // free 55 // free 56 #define LT_IDENTIFY 57 #define LT_FOCUS 58 #define LT_PLAYER_STUNNED 59 // free 60 // free 61 #define LT_RP_AWARDED 62 // free 63 #define LT_UNCONSCIOUS 64 // free 65 // free 66 // free 67 // free 68 #define LT_MOB_JAILED 69 #define LT_LAY_HANDS 70 // free 71 // free 72 #define LT_NO_PKILL 73 #define LT_MOB_RENOUNCE 74 #define LT_SAVES 76 #define LT_NO_BROADCAST 77 // free 78 // free 79 // free 80 #define LT_NOMPTICK 81 #define LT_NOHPTICK 82 // free 83 #define LT_KILL_DOCTOR 84 // free 85 #define LT_LEVEL_DRAIN 86 #define LT_HOWLS 87 // free 88 #define LT_SKILL_INCREASE 89 // free 90 #define LT_ENLARGE_REDUCE 91 #define LT_ANCHOR 92 // free 93 // free 94 // free 95 // free 96 // free 97 // free 98 // free 99 #define LT_TICK_SECONDARY 100 // Mp/Focus ticking #define LT_TICK_HARMFUL 101 // Poison/Pharm etc #define MAX_LT 103 // Incriment when you add any new LTs. #define LT_JAILED 127 // Higher than max LT so it "ticks" when player is offline. #define LT_MOBDEATH 126 // Ticks down offline // Max possible LT is 126 currently. LT 127 is used for *jail - TC #define TOTAL_LTS 127 #define LT_MOB_PASV_GUARD LT_UNCONSCIOUS // Mobs use LT_UNCONSCIOUS cuz they don't need it anywhere else #define LT_RENOUNCE LT_TOUCH_OF_DEATH #define LT_HOLYWORD LT_FOCUS #define LT_SMOTHER LT_FOCUS // BUG: Animate & tail slap both use LT_FOCUS -> high level animate tail slaps #define LT_ANIMATE LT_FOCUS #define LT_MOB_BASH LT_IDENTIFY #define LT_RIPOSTE LT_MON_SCAVANGE #define LT_DISARM LT_FOCUS #define LT_TAIL_SLAP LT_FOCUS // Mobs use LT_FOCUS on tail slap since they don't ever use focus. #define LT_DEATH_SCREAM LT_BERSERK // Mobs use LT_BERSERK for death scream since they don't ever berserk. #define LT_OUTLAW LT_MOB_THIEF #define LT_KICK LT_IDENTIFY // No one that kicks also identifies. #define LT_MAUL LT_IDENTIFY // No one that mauls also identifies #define LT_MIST LT_MOB_THIEF #define LT_BARKSKIN LT_FOCUS #define LT_PETRIFYING_GAZE LT_MOB_JAILED #define LT_MISTBANE LT_FOCUS #define LT_MOB_BREATH LT_HYPNOTIZE #define LT_MOB_TRAMPLE LT_ARMOR #define LT_ENDURANCE LT_FREE_ACTION #define LT_M_AURA_ATTACK LT_NO_PKILL #define OLD_LT_STONESKIN LT_MON_WANDER // Maximum number of items that can be worn/readied #define MAXWEAR 20 // Wear locations #define BODY 1 #define ARMS 2 #define LEGS 3 #define NECK 4 #define BELT 5 #define HANDS 6 #define HEAD 7 #define FEET 8 #define FINGER 9 #define FINGER1 9 #define FINGER2 10 #define FINGER3 11 #define FINGER4 12 #define FINGER5 13 #define FINGER6 14 #define FINGER7 15 #define FINGER8 16 #define HELD 17 #define SHIELD 18 #define FACE 19 #define WIELD 20 // Song flags #define SONG_HEAL 0 // Healing #define SONG_MP 1 // Magic-Restoration #define SONG_RESTORE 2 // Restoration #define SONG_DESTRUCTION 3 // Destruction #define SONG_MASS_DESTRUCTION 4 // Mass Destruction #define SONG_BLESS 5 // Room-Bless #define SONG_PROTECTION 6 // Room-Protection #define SONG_FLIGHT 7 // Song of Flight #define SONG_RECALL 8 // Song of Recall #define SONG_SAFETY 9 // Song of Safety //#define MAXSONG 10 #define MAX_AURAS 6 // Max mob aura attacks //Trap types #define TRAP_PIT 1 // Pit trap #define TRAP_DART 2 // Poison dart trap #define TRAP_BLOCK 3 // Falling block #define TRAP_MPDAM 4 // Mp damaging trap #define TRAP_RMSPL 5 // Spell loss trap #define TRAP_NAKED 6 // player loses all items #define TRAP_ALARM 7 // monster alarm trap #define TRAP_TPORT 8 // Teleport trap #define TRAP_ARROW 9 // Arrow trap #define TRAP_SPIKED_PIT 10 // Spiked pit trap #define TRAP_WORD 11 // Word of recall trap #define TRAP_FIRE 12 // Fire trap #define TRAP_FROST 13 // Frost trap #define TRAP_ELEC 14 // Electricity Trap #define TRAP_ACID 15 // Acid Trap #define TRAP_ROCKS 16 // Rockslide trap #define TRAP_ICE 17 // Falling icicle trap #define TRAP_SPEAR 18 // Spear trap #define TRAP_CROSSBOW 19 // Crossbow trap #define TRAP_GASP 20 // Poison gas trap #define TRAP_GASB 21 // Blinding gas trap #define TRAP_GASS 22 // Stun gas trap #define TRAP_DISP 23 // Displacement trap #define TRAP_FALL 24 // Deadly fall trap #define TRAP_CHUTE 25 // Chute trap #define TRAP_MUD 26 // Stuck in mud trap #define TRAP_BONEAV 27 // Boneslide trap #define TRAP_PIERCER 28 // Piercer trap #define TRAP_ETHEREAL_TRAVEL 29 // Ethereal travel trap #define TRAP_WEB 30 // sticky spider web trap // Spell casting types #define CAST 0 #define SKILL 1 // Druid summon-elemental enum DeathType { DT_NONE, // Death types FALL, POISON_MONSTER, POISON_GENERAL, DISEASE, SMOTHER, FROZE, BURNED, DROWNED, DRAINED, ZAPPED, SHOCKED, WOUNDED, CREEPING_DOOM, SUNLIGHT, // Trap death types PIT, BLOCK, DART, ARROW, SPIKED_PIT, FIRE_TRAP, FROST, ELECTRICITY, ACID, ROCKS, ICICLE_TRAP, SPEAR, CROSSBOW_TRAP, VINES, COLDWATER, EXPLODED, BOLTS, SPLAT, POISON_PLAYER, BONES, EXPLOSION, PETRIFIED, LIGHTNING, WINDBATTERED, PIERCER, ELVEN_ARCHERS, DEADLY_MOSS, THORNS }; #include "flags.h" // Weather #define WSUNNY 1 // Sunny outside #define WWINDY 2 // Rainy outside #define WSTORM 3 // Storm #define WMOONF 4 // Full Moon // specials #define SP_MAPSC 1 // Map or scroll #define SP_COMBO 2 // Combination lock #define MAX_SP 3 #define RETURN(a,b,c) Ply[a].io->fn = b; Ply[a].io->fnparam = c; return #define BOOL(a) ((a) ? 1 : 0) // Minimum and maximum values a `signed int' can hold. #ifndef __INT_MAX__ #define __INT_MAX__ 2147483647 #endif #undef INT_MIN #define INT_MIN (-INT_MAX-1) #undef INT_MAX #define INT_MAX __INT_MAX__ // Maximum value an `unsigned int' can hold. (Minimum is 0). #undef UINT_MAX #define UINT_MAX (INT_MAX * 2U + 1) #ifndef MAXINT #define MAXINT INT_MAX #endif //MAXINT // if ltime is 0, assume uninitialized and return MAXINT. This is so monsters // can have spell flags set and have them be permanent. #define LT(a,b) ((a)->lasttime[(b)].ltime ? (a)->lasttime[(b)].ltime + (a)->lasttime[(b)].interval : MAXINT) //#define WISDOM(a) ((bonus((int)(a)->intelligence.getCur())+bonus[(int)(a)->piety.getCur()])/2) //#define AWARENESS(a) ((bonus((int)(a)->intelligence.getCur())+bonus[(int)(a)->dexterity.getCur()])/2) #define mrand(a,b) ((a)+(rand()%((b)*10-(a)*10+10))/10) #define MIN(a,b) (((a)<(b)) ? (a):(b)) #define MAX(a,b) (((a)>(b)) ? (a):(b)) #define PLYCRT(p) ((p)->isPlayer() ? "Player" : "Monster") #define AC(p) ((int)((p)->getArmor()) / 10) #define BIT0 (1<<0) #define BIT1 (1<<1) #define BIT2 (1<<2) #define BIT3 (1<<3) #define BIT4 (1<<4) #define BIT5 (1<<5) #define BIT6 (1<<6) #define BIT7 (1<<7) #define BIT8 (1<<8) #define BIT9 (1<<9) #define BIT10 (1<<10) #define BIT11 (1<<11) #define BIT12 (1<<12) enum Color { NOCOLOR = 0, BLACK = BIT0, RED = BIT1, GREEN = BIT2, YELLOW = BIT3, BLUE = BIT4, MAGENTA = BIT5, CYAN = BIT6, WHITE = BIT7, BOLD = BIT8, NORMAL = BIT9, BLINK = BIT10, UNDERLINE = BIT11, MAX_COLOR }; enum AttackResultFlags { NO_FLAG = 0, NO_DODGE = BIT0, NO_PARRY = BIT1, NO_BLOCK = BIT2, NO_CRITICAL = BIT3, NO_FUMBLE = BIT4, NO_GLANCING = BIT5, DOUBLE_MISS = BIT6, USE_LEVEL = BIT7, MAX_ATTACK_FLAG }; // findTarget search places #define FIND_OBJ_EQUIPMENT BIT0 #define FIND_OBJ_INVENTORY BIT1 #define FIND_OBJ_ROOM BIT2 #define FIND_MON_ROOM BIT3 #define FIND_PLY_ROOM BIT4 // obj_str and crt_str flags #define CAP BIT0 #define INV BIT1 #define MAG BIT2 #define ISDM BIT3 #define MIST BIT4 #define ISBD BIT5 #define ISCT BIT6 #define NONUM BIT7 #define USEANSI BIT8 #define USEMIRC BIT9 #define COLOR_BLACK 0 #define COLOR_RED 1 #define COLOR_GREEN 2 #define COLOR_YELLOW 3 #define COLOR_BLUE 4 #define COLOR_MAGENTA 5 #define COLOR_CYAN 6 #define COLOR_WHITE 7 #define COLOR_BOLD 8 #define COLOR_NORMAL 9 #define COLOR_BLINK 10 //#define BOLD 8 //#define NORMAL 9 //#define BLINK 10 //#define UNDERLINE 11 //********************************************************************* // Below this line are customizable options for the mud //********************************************************************* #define MINSHOPLEVEL 16 #define SURNAME_LEVEL 13 #define ALIGNMENT_LEVEL 6 #define SUNRISE 6 #define SUNSET 20 #define ROOM_BOUND_FAILURE 2 // room to go to if getBound fails // Builders can always edit rooms within these ranges. // *t for builders takes you to ROOM_BUILDER_PERM_LOW. /* Web Editor * _ _ ____ _______ ______ * | \ | |/ __ \__ __| ____| * | \| | | | | | | | |__ * | . ` | | | | | | | __| * | |\ | |__| | | | | |____ * |_| \_|\____/ |_| |______| * * If you change anything here, make sure the changes are reflected in the web * editor! Either edit the PHP yourself or tell Dominus to make the changes. */ #define ROOM_BUILDER_PERM_LOW 60 #define ROOM_BUILDER_PERM_HIGH 65 #define MAX_DIMEN_ANCHORS 3 // toll to charge in case none is set on exit #define DEFAULT_TOLL 100 #define MAX_MOBS_IN_ROOM 200 // For various effects that create objects #define SHIT_OBJ 349 #define CORPSE_OBJ 800 #define BODYPART_OBJ 21 #define STATUE_OBJ 39 #define MONEY_OBJ 0 #define TICKET_OBJ 200 // When a player forces a pet to cast, this is the delay. #define PET_CAST_DELAY 4 // //// If a player dies X times in X hours, they don't lose exp for that death. //// LUCKY_DEATHS should be defined as x - 1: if they get a free restore after //// 3 deaths in 24 hours, enter 2. Set LUCKY_DEATH_HOURS to 0 to disable //// lucky dying. //#define LUCKY_DEATHS 2 //#define LUCKY_DEATH_HOURS 24 // Enums for effects // Where is this effect being applied from? enum ApplyFrom { FROM_NOWHERE, FROM_CREATURE, FROM_MONSTER, FROM_PLAYER, FROM_OBJECT, FROM_POTION, FROM_WAND, FROM_ROOM, MAX_FROM }; // Actions to be taken by the effect function enum EffectAction { NO_ACTION, EFFECT_COMPUTE, // Compute strength, duration, etc -- DO THIS BEFORE ADDING!!!! EFFECT_APPLY, // Apply any bonuses EFFECT_UNAPPLY, // Unapply any bonuses EFFECT_PULSE, MAX_ACTION }; enum Realm { NO_REALM = 0, MIN_REALM = 1, EARTH = 1, WIND = 2, FIRE = 3, WATER = 4, ELEC = 5, COLD = 6, MAX_REALM }; enum PropType { PROP_NONE = 0, PROP_STORAGE = 1, PROP_SHOP = 2, PROP_GUILDHALL = 3, PROP_HOUSE = 4, PROP_END = 5 }; enum UnequipAction { UNEQUIP_ADD_TO_INVENTORY, UNEQUIP_DELETE, UNEQUIP_NOTHING }; enum CastResult { CAST_RESULT_FAILURE, // failure, unlikely it will succeed CAST_RESULT_CURRENT_FAILURE, // failure, it may succeed in the future CAST_RESULT_SPELL_FAILURE, // failure, the spell didn't work CAST_RESULT_SUCCESS }; // C includes #ifndef PYTHON_CODE_GEN #include <fcntl.h> #endif #include <libxml/xmlmemory.h> #include <libxml/parser.h> // C++ Includes #include <list> #include <boost/foreach.hpp> #define foreach BOOST_FOREACH // Mud Includes #include "os.h" #include "mudobject.h" #include "structs.h" #include "xml.h" #include "size.h" #include "socket.h" #include "stats.h" #include "rooms.h" #include "objects.h" #include "skills.h" #include "creatures.h" //#include "bans.h" //#include "guilds.h" //#include "factions.h" #include "data.h" #include "server.h" #include "config.h" #include "mextern.h" //#include <stdlib.h> //#include <string.h> //#include <limits.h> //#include <time.h> //#include <sys/time.h> //#include <sys/io.h> #endif