/* * The Mana Server * Copyright (C) 2004-2010 The Mana World Development Team * * This file is part of The Mana Server. * * The Mana Server is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * * The Mana Server is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with The Mana Server. If not, see . */ #ifndef DEFINES_H #define DEFINES_H // Precomputed square-root of 2. #define SQRT2 1.4142135623730950488 /** * Exit value codes are thrown back at servers exit to reflect their exit state. */ enum exitValue { EXIT_NORMAL = 0, EXIT_CONFIG_NOT_FOUND, // The main configuration file wasn't found. EXIT_BAD_CONFIG_PARAMETER, // The configuration file has a wrong parameter. EXIT_XML_NOT_FOUND, // A required base xml configuration file wasn't found. EXIT_XML_BAD_PARAMETER, // The configuration of an xml file is faulty. EXIT_MAP_FILE_NOT_FOUND, // No map files found. EXIT_DB_EXCEPTION, // The database is invalid or unreachable. EXIT_NET_EXCEPTION, // The server was unable to start network connections. EXIT_OTHER_EXCEPTION }; /** * Enumeration type for account levels. * A normal player would have permissions of 1 * A tester would have permissions of 3 (AL_PLAYER | AL_TESTER) * A dev would have permissions of 7 (AL_PLAYER | AL_TESTER | AL_DEV) * A gm would have permissions of 11 (AL_PLAYER | AL_TESTER | AL_GM) * A admin would have permissions of 255 (*) */ enum accessLevel { AL_BANNED = 0, /**< This user is currently banned. */ AL_PLAYER = 1, /**< User has regular rights. */ AL_TESTER = 2, /**< User can perform testing tasks. */ AL_DEV = 4, /**< User is a developer and can perform dev tasks */ AL_GM = 8, /**< User is a moderator and can perform mod tasks */ AL_ADMIN = 128 /**< User can perform administrator tasks. */ }; /** * Guild member permissions * Members with NONE cannot invite users or set permissions * Members with TOPIC_CHANGE can change the guild channel topic * Members with INVITE can invite other users * Memeber with KICK can remove other users * Members with OWNER can invite users and set permissions */ enum guildAccessLevel { GAL_NONE = 0, GAL_TOPIC_CHANGE = 1, GAL_INVITE = 2, GAL_KICK = 4, GAL_OWNER = 255 }; /** * Determine the default area in which a character is aware of other beings */ const int DEFAULT_INTERACTION_TILES_AREA = 20; /** * Default tile length in pixel */ const int DEFAULT_TILE_LENGTH = 32; /** * Possible states of beings. * States can be multiple for the same being. * To be used as bitmask values. */ enum BeingState { STATE_POISONED = 1, STATE_STONED = 2, STATE_STUNNED = 4, STATE_SLOWED = 8, STATE_TIRED = 16, STATE_MAD = 32, STATE_BERSERK = 64, STATE_HASTED = 128, STATE_FLOATING = 256 }; /** * Element attribute for beings, actors, and items. * Subject to change until Pauan and Dabe are finished with the element system. * Please keep element modifier of BeingAttribute in sync. */ enum Element { ELEMENT_NEUTRAL = 0, ELEMENT_FIRE, ELEMENT_WATER, ELEMENT_EARTH, ELEMENT_AIR, ELEMENT_LIGHTNING, ELEMENT_METAL, ELEMENT_WOOD, ELEMENT_ICE, ELEMENT_ILLEGAL }; /** * A series of hardcoded attributes that must be defined. * FIXME: Much of these serve only to indicate derivatives, and so would not be * needed once this is no longer a hardcoded system. */ // Base Statistics #define ATTR_STR 1 #define ATTR_AGI 2 #define ATTR_VIT 3 #define ATTR_INT 4 #define ATTR_DEX 5 #define ATTR_WIL 6 // Derived attributes #define ATTR_ACCURACY 7 #define ATTR_DEFENSE 8 #define ATTR_DODGE 9 #define ATTR_MAGIC_DODGE 10 #define ATTR_MAGIC_DEFENSE 11 #define ATTR_BONUS_ASPD 12 #define ATTR_HP 13 #define ATTR_MAX_HP 14 #define ATTR_HP_REGEN 15 // Separate primary movespeed (tiles * second ^-1) and derived movespeed (raw) #define ATTR_MOVE_SPEED_TPS 16 #define ATTR_MOVE_SPEED_RAW 17 // Money and inventory size attributes. #define ATTR_GP 18 #define ATTR_INV_CAPACITY 19 /** * Temporary attributes. * @todo Use AutoAttacks instead. */ #define MOB_ATTR_PHY_ATK_MIN 20 #define MOB_ATTR_PHY_ATK_DELTA 21 #define MOB_ATTR_MAG_ATK 22 /** * Attribute types. Can be one of stackable, non stackable, * or non stackable bonus. * @todo non-stackable malus layers */ enum AT_TY { TY_ST, TY_NST, TY_NSTB, TY_NONE // Should only be used on types // that have not yet been properly defined. }; /** * Attribute augmentation methods. * Can be additive or multiplicative. */ enum AME_TY { AME_MULT, AME_ADD }; struct AttributeInfoType { AT_TY sType; AME_TY eType; AttributeInfoType(AT_TY s, AME_TY e) : sType(s), eType(e) {} }; #endif // DEFINES_H