/* * global.h * Global defines required by the rest of the program that don't depend on anything else * ____ _ * | _ \ ___ __ _| |_ __ ___ ___ * | |_) / _ \/ _` | | '_ ` _ \/ __| * | _ < __/ (_| | | | | | | \__ \ * |_| \_\___|\__,_|_|_| |_| |_|___/ * * 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-2012 Jason Mitchell, Randi Mitchell * Contributions by Tim Callahan, Jonathan Hseu * Based on Mordor (C) Brooke Paul, Brett J. Vickers, John P. Freeman * */ #ifndef GLOBAL_H_ #define GLOBAL_H_ // Size of exp array, also highest you can train const int MAXALVL = 40; const unsigned int MAX_ARMOR = 2000; // I/O buffer sizes const int IBUFSIZE = 1024; const int OBUFSIZ = 8192; // merror() error types const int FATAL = 1; const int NONFATAL = 0; const int DEFAULT_WEAPON_DELAY = 30; // 3 seconds const char CUSTOM_COLOR_DEFAULT = '#'; const int CUSTOM_COLOR_SIZE = 20; const int BROADLOG = 1; const int MAX_MULTICLASS = 8; // how often (in seconds) players get saved const int SAVEINTERVAL = 1200; const int MAXTIMEOUT = 14400; const int MAXPAWN = 25000; const int MAX_QUEST = 128; const int MAX_FACTION = 32; const int MAX_DUELS = 10; const int MAX_BUILDER_RANGE = 10; // Save flags const int PERMONLY = 1; const int ALLITEMS = 0; // Command status returns const int DISCONNECT = 1; const int PROMPT = 2; const int DOPROMPT = 3; // base monster number for various types of summoned monsters const int BASE_ELEMENTAL = 801; const int BASE_UNDEAD = 550; const int COMMANDMAX = 6; // Monster and object files sizes (in terms of monsters or objects) const int MFILESIZE = 100; const int OFILESIZE = 100; // memory limits const int RMAX = 20000; // Max number of these allowed to be created const int MMAX = 20000; const int OMAX = 20000; const int PMAX = 1024; const unsigned int RQMAX = 600; // Max number of these allowed in memory const unsigned int MQMAX = 200; // at any one time const unsigned int OQMAX = 200; const int WIELDOBJ = 1; const int SECONDOBJ = 2; const int HOLDOBJ = 3; const int SHIELDOBJ = 4; //const int MAXSONG = 10; const int MAX_AURAS = 6; // Max mob aura attacks // Spell casting types const int CAST = 0; const int SKILL = 1; // Druid summon-elemental // NPC Trades enum NpcTrades { NOTRADE = 0, SMITHY = 1, BANKER = 2, ARMOROR = 3, WEAPONSMITH = 4, MERCHANT = 5, TRAINING_PERM = 6, MOBTRADE_COUNT }; // Monetary transaction types enum MonetaryTransactions { BUY = 0, SELL = 1 }; // Creature stats enum CrtStats { STR = 1, DEX = 2, CON = 3, INT = 4, PTY = 5, CHA = 6 }; const int MAX_STAT = PTY; const int MIN_STAT_NUM = 10; const int MAX_STAT_NUM = MAXALVL*10; // Saving throw types enum SavingThrows { LCK = 0, // Luck POI = 1, // Poison DEA = 2, // Death BRE = 3, // Breath Weapons MEN = 4, // Mental SPL = 5, // Spells MAX_SAVE = 6 }; const int MAX_SAVE_COLOR = 11; // Alignments enum Alignments { BLOODRED = -3, REDDISH = -2, PINKISH = -1, NEUTRAL = 0, LIGHTBLUE = 1, BLUISH = 2, ROYALBLUE = 3 }; // Attack types enum AttackTypes { PHYSICAL = 1, MAGICAL = 2, MENTAL = 3, NEGATIVE_ENERGY = 4, ABILITY = 5, MAGICAL_NEGATIVE = 6 }; // Modifier List enum ModifierList { MSTR = 0, MDEX = 1, MCON = 2, MINT = 3, MPIE = 4, MCHA = 5, MHP = 6, MMP = 7, MLCK = 8, MPOI = 9, MDEA = 10, MBRE = 11, MMEN = 12, MSPL = 13, MARMOR = 14, MTHAC = 15, MDMG = 16, MSPLDMG = 17, MABSORB = 18, MALIGN = 19, MAX_MOD = 20 // change when add more - up to 30 }; // Language Defines enum Languages { LUNKNOWN = 0, LDWARVEN = 1, LELVEN = 2, LHALFLING = 3, LCOMMON = 4, LORCISH = 5, LGIANTKIN = 6, LGNOMISH = 7, LTROLL = 8, LOGRISH = 9, LDARKELVEN = 10, LGOBLINOID = 11, LMINOTAUR = 12, LCELESTIAL = 13, LKOBOLD = 14, LINFERNAL = 15, LBARBARIAN = 16, LKATARAN = 17, LDRUIDIC = 18, LWOLFEN = 19, LTHIEFCANT = 20, LARCANIC = 21, LABYSSAL = 22, LTIEFLING = 23, LANGUAGE_COUNT = 24 }; // Enums enum LoadType { LS_NORMAL, LS_BACKUP, LS_CONVERT, LS_FULL, LS_PROTOTYPE, LS_REF }; // positions in the color array enum CustomColor { CUSTOM_COLOR_BROADCAST = 0, CUSTOM_COLOR_GOSSIP = 1, CUSTOM_COLOR_PTEST = 2, CUSTOM_COLOR_NEWBIE = 3, CUSTOM_COLOR_DM = 4, CUSTOM_COLOR_ADMIN = 5, CUSTOM_COLOR_SEND = 6, CUSTOM_COLOR_MESSAGE = 7, CUSTOM_COLOR_WATCHER = 8, CUSTOM_COLOR_CLASS = 9, CUSTOM_COLOR_RACE = 10, CUSTOM_COLOR_CLAN = 11, CUSTOM_COLOR_TELL = 12, CUSTOM_COLOR_GROUP = 13, CUSTOM_COLOR_DAMAGE = 14, CUSTOM_COLOR_SELF = 15, CUSTOM_COLOR_GUILD = 16, MAX_CUSTOM_COLOR }; 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 }; // 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 // Religions enum religions { ATHEIST = 0, ARAMON = 1, CERIS = 2, ENOCH = 3, GRADIUS = 4, ARES = 5, KAMIRA = 6, LINOTHAN = 7, ARACHNUS = 8, MARA = 9, JAKAR = 10, MAX_DEITY }; const int DEITY_COUNT = MARA+1; enum crtClasses { ASSASSIN = 1, BERSERKER = 2, CLERIC = 3, FIGHTER = 4, MAGE = 5, PALADIN = 6, RANGER = 7, THIEF = 8, PUREBLOOD = 9, MONK = 10, DEATHKNIGHT = 11, DRUID = 12, LICH = 13, WEREWOLF = 14, BARD = 15, ROGUE = 16, BUILDER = 17, CARETAKER = 19, DUNGEONMASTER = 20, CLASS_COUNT }; // start of the staff const int STAFF = (BUILDER); const int MULTI_BASE = (BUILDER); const int CLASS_COUNT_MULT = (MULTI_BASE + 7); // races enum Races { UNKNOWN = 0, // playable races DWARF = 1, ELF = 2, HALFELF = 3, HALFLING = 4, HUMAN = 5, ORC = 6, HALFGIANT = 7, GNOME = 8, TROLL = 9, HALFORC = 10, OGRE = 11, DARKELF = 12, GOBLIN = 13, MINOTAUR = 14, SERAPH = 15, KOBOLD = 16, CAMBION = 17, BARBARIAN = 18, KATARAN = 19, TIEFLING = 20, MAX_PLAYABLE_RACE = 21, // non-playable LIZARDMAN = 21, CENTAUR = 22, // subraces, currently non-playable HALFFROSTGIANT = 23, HALFFIREGIANT = 24, GREYELF = 25, WILDELF = 26, AQUATICELF = 27, DUERGAR = 28, HILLDWARF = 29, // non-playable GNOLL = 30, BUGBEAR = 31, HOBGOBLIN = 32, WEMIC = 33, HYBSIL = 34, RAKSHASA = 35, BROWNIE = 36, FIRBOLG = 37, SATYR = 38, RACE_COUNT }; // Actual value doesn't matter, just needs to be different than PLAYER & MONSTER const int OBJECT = 2; const int EXIT = 3; // Proficiencies //const int SHARP = 0; //const int THRUST = 1; //const int BLUNT = 2; //const int POLE = 3; //const int MISSILE = 4; //const int CLEAVE = 5; enum ObjectTypes { // 0,1,2 open INSTRUMENT = 3, // Bard Instrument HERB = 4, // Item is a herb! Subtype if needed in subtype WEAPON = 5, ARMOR = 6, POTION = 7, SCROLL = 8, WAND = 9, CONTAINER = 10, MONEY = 11, KEY = 12, LIGHTSOURCE = 13, MISC = 14, SONGSCROLL = 15, POISON = 16, BANDAGE = 17, AMMO = 18, QUIVER = 19, LOTTERYTICKET = 20, MAX_OBJ_TYPE }; // Spell Realms const int CONJUREMAGE = 7; const int CONJUREBARD = 8; const int CONJUREANIM = 9; // Maximum number of items that can be worn/readied const int MAXWEAR = 20; // Wear locations enum WearLocations { BODY = 1, ARMS = 2, LEGS = 3, NECK = 4, BELT = 5, HANDS = 6, HEAD = 7, FEET = 8, FINGER = 9, FINGER1 = 9, FINGER2 = 10, FINGER3 = 11, FINGER4 = 12, FINGER5 = 13, FINGER6 = 14, FINGER7 = 15, FINGER8 = 16, HELD = 17, SHIELD = 18, FACE = 19, WIELD = 20 }; 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 }; // Weather const int WSUNNY = 1; // Sunny outside const int WWINDY = 2; // Rainy outside const int WSTORM = 3; // Storm const int WMOONF = 4; // Full Moon // specials const int SP_MAPSC = 1; // Map or scroll const int SP_COMBO = 2; // Combination lock const int MAX_SP = 3; enum Bits { BIT0 = (1<<0), BIT1 = (1<<1), BIT2 = (1<<2), BIT3 = (1<<3), BIT4 = (1<<4), BIT5 = (1<<5), BIT6 = (1<<6), BIT7 = (1<<7), BIT8 = (1<<8), BIT9 = (1<<9), BIT10 = (1<<10), BIT11 = (1<<11), BIT12 = (1<<12) }; // findTarget search places enum FindTargets { FIND_OBJ_EQUIPMENT = BIT0, FIND_OBJ_INVENTORY = BIT1, FIND_OBJ_ROOM = BIT2, FIND_MON_ROOM = BIT3, FIND_PLY_ROOM = BIT4, FIND_EXIT = BIT5 }; // obj_str and crt_str flags enum StrFlags { CAP = BIT0, INV = BIT1, MAG = BIT2, ISDM = BIT3, MIST = BIT4, ISBD = BIT5, ISCT = BIT6, NONUM = BIT7 }; 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 }; const int COLOR_BLACK = 0; const int COLOR_RED = 1; const int COLOR_GREEN = 2; const int COLOR_YELLOW = 3; const int COLOR_BLUE = 4; const int COLOR_MAGENTA = 5; const int COLOR_CYAN = 6; const int COLOR_WHITE = 7; const int COLOR_BOLD = 8; const int COLOR_NORMAL = 9; const int COLOR_BLINK = 10; //#define BOLD 8 //#define NORMAL 9 //#define BLINK 10 //#define UNDERLINE 11 // 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 }; #endif /* GLOBAL_H_ */