defines.h

Go to the documentation of this file.
00001 /*
00002  *  The Mana World Server
00003  *  Copyright 2004 The Mana World Development Team
00004  *
00005  *  This file is part of The Mana World.
00006  *
00007  *  The Mana World  is free software; you can redistribute  it and/or modify it
00008  *  under the terms of the GNU General  Public License as published by the Free
00009  *  Software Foundation; either version 2 of the License, or any later version.
00010  *
00011  *  The Mana  World is  distributed in  the hope  that it  will be  useful, but
00012  *  WITHOUT ANY WARRANTY; without even  the implied warranty of MERCHANTABILITY
00013  *  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
00014  *  more details.
00015  *
00016  *  You should  have received a  copy of the  GNU General Public  License along
00017  *  with The Mana  World; if not, write to the  Free Software Foundation, Inc.,
00018  *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00019  *
00020  *  $Id: defines.h 3226 2007-03-22 23:04:06Z crush_tmw $
00021  */
00022 
00023 
00024 #ifndef _TMWSERV_DEFINES_H_
00025 #define _TMWSERV_DEFINES_H_
00026 
00027 
00039 typedef enum {
00040     AL_NORMAL,      // User has regular rights
00041     AL_ADMIN,       // User can perform administrator tasks
00042     AL_GM,          // User can perform a subset of administrator tasks
00043     AL_BANNED,      // This user is currently banned
00044     AL_RESTRICTED   // User rights have been restricted
00045 } AccountLevel;
00046 
00047 enum
00048 {
00049     // Network related
00050     MAX_CLIENTS  = 1024,
00051 
00052     // Chat related
00057     MAX_PUBLIC_CHANNELS_RANGE  = 1000,
00058     MAX_PRIVATE_CHANNELS_RANGE = 10000,
00059     MAX_CHANNEL_NAME           = 15,
00060     MAX_CHANNEL_ANNOUNCEMENT   = 150,
00061     MAX_CHANNEL_PASSWORD       = 12,
00062 
00063     // Registering related
00064     MIN_LOGIN_LENGTH = 4,
00065     MAX_LOGIN_LENGTH = 16,
00066     MIN_PASSWORD_LENGTH = 4,
00067     MAX_PASSWORD_LENGTH = 25,
00068     MIN_EMAIL_LENGTH = 7,
00069     MAX_EMAIL_LENGTH = 50,
00070 
00071     // Character related
00072     MIN_CHARACTER_LENGTH = 4,
00073     MAX_CHARACTER_LENGTH = 25,
00074     MAX_OF_CHARACTERS = 3,
00075     MAX_HAIRSTYLE_VALUE = 7,
00076     MAX_HAIRCOLOR_VALUE = 9,
00077     MAX_GENDER_VALUE = 2,
00078 
00082     POINTS_TO_DISTRIBUTES_AT_LVL1 = 70,
00083 
00084     // Screen Related
00088     AROUND_AREA = 320
00089 };
00090 
00102 enum {
00103     // Login/Register
00104     PAMSG_REGISTER                 = 0x0000, // L version, S username, S password, S email
00105     APMSG_REGISTER_RESPONSE        = 0x0002, // B error
00106     PAMSG_UNREGISTER               = 0x0003, // S username, S password
00107     APMSG_UNREGISTER_RESPONSE      = 0x0004, // B error
00108     PAMSG_LOGIN                    = 0x0010, // L version, S username, S password
00109     APMSG_LOGIN_RESPONSE           = 0x0012, // B error
00110     PAMSG_LOGOUT                   = 0x0013, // -
00111     APMSG_LOGOUT_RESPONSE          = 0x0014, // B error
00112     PAMSG_CHAR_CREATE              = 0x0020, // S name, B hair style, B hair color, B gender, W*6 stats
00113     APMSG_CHAR_CREATE_RESPONSE     = 0x0021, // B error
00114     PAMSG_CHAR_DELETE              = 0x0022, // B index
00115     APMSG_CHAR_DELETE_RESPONSE     = 0x0023, // B error
00116     APMSG_CHAR_INFO                = 0x0024, // B index, S name, B gender, B hair style, B hair color, B level, W money, W*6 stats
00117     PAMSG_CHAR_SELECT              = 0x0026, // B index
00118     APMSG_CHAR_SELECT_RESPONSE     = 0x0027, // B error, B*32 token, S game address, W game port, S chat address, W chat port
00119     PAMSG_EMAIL_CHANGE             = 0x0030, // S email
00120     APMSG_EMAIL_CHANGE_RESPONSE    = 0x0031, // B error
00121     PAMSG_EMAIL_GET                = 0x0032, // -
00122     APMSG_EMAIL_GET_RESPONSE       = 0x0033, // B error, S email
00123     PAMSG_PASSWORD_CHANGE          = 0x0034, // S old password, S new password
00124     APMSG_PASSWORD_CHANGE_RESPONSE = 0x0035, // B error
00125 
00126     PGMSG_CONNECT                  = 0x0050, // B*32 token
00127     GPMSG_CONNECT_RESPONSE         = 0x0051, // B error
00128     PCMSG_CONNECT                  = 0x0053, // B*32 token
00129     CPMSG_CONNECT_RESPONSE         = 0x0054, // B error
00130 
00131     PGMSG_DISCONNECT               = 0x0060, // B reconnect account
00132     GPMSG_DISCONNECT_RESPONSE      = 0x0061, // B error, B*32 token
00133     PCMSG_DISCONNECT               = 0x0063, // -
00134     CPMSG_DISCONNECT_RESPONSE      = 0x0064, // B error
00135 
00136     PAMSG_RECONNECT                = 0x0065, // B*32 token
00137     APMSG_RECONNECT_RESPONSE       = 0x0066, // B error
00138 
00139     APMSG_CONNECTION_TIMEDOUT      = 0x0070, // -
00140     GPMSG_CONNECTION_TIMEDOUT      = 0x0071, // -
00141 
00142     // Game
00143     GPMSG_PLAYER_MAP_CHANGE        = 0x0100, // S filename, W x, W y
00144     GPMSG_PLAYER_SERVER_CHANGE     = 0x0101, // B*32 token, S game address, W game port
00145     PGMSG_PICKUP                   = 0x0110, // W*2 position
00146     PGMSG_DROP                     = 0x0111, // B slot, B amount
00147     PGMSG_EQUIP                    = 0x0112, // B slot
00148     GPMSG_INVENTORY                = 0x0120, // { B slot, W item id [, B amount] }*
00149     GPMSG_INVENTORY_FULL           = 0x0121, // { B slot, W item id [, B amount] }*
00150     GPMSG_PLAYER_ATTRIBUTE_UPDATE  = 0x0130, // { W attribute, W value }*
00151     GPMSG_BEING_ENTER              = 0x0200, // B type, W being id, B action, W*2 position
00152                                              // character: S name, B hair style, B hair color, B gender
00153                                              // monster: W type id
00154     GPMSG_BEING_LEAVE              = 0x0201, // W being id
00155     GPMSG_ITEM_APPEAR              = 0x0202, // W item id, W*2 position
00156     PGMSG_WALK                     = 0x0260, // W*2 destination
00157     PGMSG_ACTION_CHANGE            = 0x0270, // B Action
00158     GPMSG_BEING_ACTION_CHANGE      = 0x0271, // W being id, B action
00159     GPMSG_BEINGS_MOVE              = 0x0280, // { W being id, B flags [, C position] [, W*2 destination] }*
00160     GPMSG_ITEMS                    = 0x0281, // { W item id, W*2 position }*
00161     PGMSG_ATTACK                   = 0x0290, // B direction
00162     GPMSG_BEING_ATTACK             = 0x0291, // W being id
00163     PGMSG_SAY                      = 0x02A0, // S text
00164     GPMSG_SAY                      = 0x02A1, // W being id, S text
00165     PGMSG_USE_ITEM                 = 0x0300, // L item id
00166     GPMSG_USE_RESPONSE             = 0x0301, // B error
00167     GPMSG_BEINGS_DAMAGE            = 0x0310, // { W being id, W amount }*
00168 
00169     // Chat
00170     CPMSG_ERROR                    = 0x0401, // B error
00171     CPMSG_ANNOUNCEMENT             = 0x0402, // S text
00172     CPMSG_PRIVMSG                  = 0x0403, // S user, S text
00173     CPMSG_PUBMSG                   = 0x0404, // W channel, S user, S text
00174     PCMSG_CHAT                     = 0x0410, // S text, W channel
00175     PCMSG_ANNOUNCE                 = 0x0411, // S text
00176     PCMSG_PRIVMSG                  = 0x0412, // S user, S text
00177     // -- Channeling
00178     PCMSG_REGISTER_CHANNEL            = 0x0413, // B pub/priv, S name, S announcement, S password
00179     CPMSG_REGISTER_CHANNEL_RESPONSE   = 0x0414, // B error, W id
00180     PCMSG_UNREGISTER_CHANNEL          = 0x0415, // W channel
00181     CPMSG_UNREGISTER_CHANNEL_RESPONSE = 0x0416, // B error
00182     CPMSG_CHANNEL_EVENT               = 0x0418, // W channel, B event, S user
00183     PCMSG_ENTER_CHANNEL               = 0x0419, // S channel, S password
00184     CPMSG_ENTER_CHANNEL_RESPONSE      = 0x0420, // B error, W channel
00185     PCMSG_QUIT_CHANNEL                = 0x0421, // W channel
00186     CPMSG_QUIT_CHANNEL_RESPONSE       = 0x0422, // B error
00187     PCMSG_LIST_CHANNELS               = 0x0423, // -
00188     CPMSG_LIST_CHANNELS_RESPONSE      = 0x0424, // W number of channels, S channels
00189 
00190     // Inter-server
00191     GAMSG_REGISTER     = 0x500, // S address, W port, { W map id }*
00192     AGMSG_ACTIVE_MAP   = 0x501, // W map id
00193     AGMSG_PLAYER_ENTER = 0x510, // B*32 token, serialised character data
00194     GAMSG_PLAYER_DATA  = 0x520, // serialised character data
00195     GAMSG_REDIRECT          = 0x530, // L id
00196     AGMSG_REDIRECT_RESPONSE = 0x531, // L id, B*32 token, S game address, W game port
00197     GAMSG_PLAYER_RECONNECT  = 0x532, // L id, B*32 token
00198 
00199     XXMSG_INVALID = 0x7FFF
00200 };
00201 
00202 // Generic return values
00203 
00204 enum {
00205     ERRMSG_OK = 0,                      // everything is fine
00206     ERRMSG_FAILURE,                     // the action failed
00207     ERRMSG_NO_LOGIN,                    // the user is not yet logged
00208     ERRMSG_NO_CHARACTER_SELECTED,       // the user needs a character
00209     ERRMSG_INSUFFICIENT_RIGHTS,         // the user is not privileged
00210     ERRMSG_INVALID_ARGUMENT             // part of the received message was invalid
00211 };
00212 
00213 // Login specific return values
00214 enum {
00215     LOGIN_INVALID_VERSION = 0x40,       // the user is using an incompatible protocol
00216     LOGIN_SERVER_FULL                   // the server is overloaded
00217 };
00218 
00219 // Account register specific return values
00220 enum {
00221     REGISTER_INVALID_VERSION = 0x40,    // the user is using an incompatible protocol
00222     REGISTER_EXISTS_USERNAME,           // there already is an account with this username
00223     REGISTER_EXISTS_EMAIL               // there already is an account with this email address
00224 };
00225 
00226 // Character creation specific return values
00227 enum {
00228     CREATE_INVALID_HAIRSTYLE = 0x40,
00229     CREATE_INVALID_HAIRCOLOR,
00230     CREATE_INVALID_GENDER,
00231     CREATE_ATTRIBUTES_TOO_HIGH,
00232     CREATE_ATTRIBUTES_TOO_LOW,
00233     CREATE_ATTRIBUTES_EQUAL_TO_ZERO,
00234     CREATE_EXISTS_NAME,
00235     CREATE_TOO_MUCH_CHARACTERS
00236 };
00237 
00238 // Email change specific return values
00239 enum {
00240     EMAILCHG_EXISTS_EMAIL = 0x40
00241 };
00242 
00243 // Chat errors return values
00244 enum {
00245     CHAT_USING_BAD_WORDS = 0x40,
00246     CHAT_UNHANDLED_COMMAND
00247 };
00248 
00249 // Chat channels event values
00250 enum {
00251     CHAT_EVENT_NEW_PLAYER = 0,
00252     CHAT_EVENT_LEAVING_PLAYER
00253 };
00254 
00255 // Moving object flags
00256 enum {
00257     // Payload contains the current position.
00258     MOVING_POSITION = 1,
00259     // Payload contains the destination.
00260     MOVING_DESTINATION = 2
00261 };
00262 
00272 enum BeingState
00273 {
00274     STATE_POISONED = 1,
00275     STATE_STONED   = 2,
00276     STATE_STUNNED  = 4,
00277     STATE_SLOWED   = 8,
00278     STATE_TIRED    = 16,
00279     STATE_MAD      = 32,
00280     STATE_BERSERK  = 64,
00281     STATE_HASTED   = 128,
00282     STATE_FLOATING = 256
00283 };
00284 
00288 enum BeingStats
00289 {
00290     BASE_ATTR_STRENGTH = 0,    // Basic attributes
00291     BASE_ATTR_AGILITY,
00292     BASE_ATTR_DEXTERITY,
00293     BASE_ATTR_VITALITY,
00294     BASE_ATTR_INTELLIGENCE,
00295     BASE_ATTR_WILLPOWER,
00296     BASE_ATTR_CHARISMA,
00297     NB_BASE_ATTRIBUTES,
00298 
00299     ATTR_EFF_STRENGTH = NB_BASE_ATTRIBUTES,    // modified basic attributes
00300     ATTR_EFF_AGILITY,
00301     ATTR_EFF_DEXTERITY,
00302     ATTR_EFF_VITALITY,
00303     ATTR_EFF_INTELLIGENCE,
00304     ATTR_EFF_WILLPOWER,
00305     ATTR_EFF_CHARISMA,
00306     NB_EFFECTIVE_ATTRIBUTES,
00307 
00308     DERIVED_ATTR_HP_MAXIMUM = NB_EFFECTIVE_ATTRIBUTES,    // Computed stats
00309     DERIVED_ATTR_PHYSICAL_ATTACK_MINIMUM,
00310     DERIVED_ATTR_PHYSICAL_ATTACK_FLUCTUATION,
00311     DERIVED_ATTR_PHYSICAL_DEFENCE,
00312     // add new computed statistics when they are needed
00313     NB_ATTRIBUTES_BEING
00314 };
00315 
00316 
00320 enum CharacterStats
00321 {
00322     CHAR_SKILL_WEAPON_UNARMED = NB_ATTRIBUTES_BEING,
00323     CHAR_SKILL_WEAPON_SWORD,
00324     CHAR_SKILL_WEAPON_AXE,
00325     CHAR_SKILL_WEAPON_POLEARM,
00326     CHAR_SKILL_WEAPON_JAVELIN,
00327     CHAR_SKILL_WEAPON_WHIP,
00328     CHAR_SKILL_WEAPON_DAGGER,
00329     CHAR_SKILL_WEAPON_STAFF,
00330     CHAR_SKILL_WEAPON_BOW,
00331     CHAR_SKILL_WEAPON_CROSSBOW,
00332     CHAR_SKILL_WEAPON_THROWN,
00333     NB_CHAR_WEAPONSKILLS,
00334 
00335     CHAR_SKILL_MAGIC_IAMJUSTAPLACEHOLDER = NB_CHAR_WEAPONSKILLS,
00336     NB_CHAR_MAGICSKILLS,
00337 
00338     CHAR_SKILL_CRAFT_IAMJUSTAPLACEHOLDER = NB_CHAR_MAGICSKILLS,
00339     NB_CHAR_CRAFTSKILLS,
00340 
00341     CHAR_SKILL_IAMJUSTAPLACEHOLDER = NB_CHAR_CRAFTSKILLS,
00342     NB_CHAR_OTHERSKILLS,
00343 
00344     NB_ATTRIBUTES_CHAR = NB_CHAR_OTHERSKILLS
00345 };
00346 
00347 
00351 enum MonsterStats
00352 {
00353     MONSTER_SKILL_WEAPON = NB_ATTRIBUTES_BEING,
00354     NB_ATTRIBUTES_CONTROLLED
00355 };
00356 
00357 
00358 #endif // _TMWSERV_DEFINES_H_

Generated on Fri Mar 30 15:39:16 2007 for TMW Server by  doxygen 1.3.9.1