summaryrefslogblamecommitdiff
path: root/src/defines.h
blob: 32fb6cf5b86851c5368fa36362ba40ae6e5a1ba8 (plain) (tree)
1
2
3
4
5
6
7
8
9





                                                  


                                                                               
  



                                                                               
  


                                                                               
  
        
   
 
 



                           


















                                                                               
 







                                           
 
   
                                            

      
                     








                                          

                                                                                  
                                          
 
              



                                          
                                          
                                          
                                          
 
             

                                          








                                          
 
            

                                          
                                          

           



                                          



                                          

                                                                                                                                                                     

  











                           
                                 










                                   

                        


                           

                        
  
 





                                    






                          












                                  





                  
 
                             
/*
 *  The Mana World Server
 *  Copyright 2004 The Mana World Development Team
 *
 *  This file is part of The Mana World.
 *
 *  The Mana World  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  World 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  World; if not, write to the  Free Software Foundation, Inc.,
 *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 *
 *  $Id$
 */


#ifndef _TMWSERV_DEFINES_H_
#define _TMWSERV_DEFINES_H_


/**
 * Enumeration type for account levels.
 *
 * Note the the actual tasks that can be done by admin or gm, or the
 * restrictions on a restricted user, are not specified yet. Also, banned
 * status will probably be derived from a date field (the time until an account
 * is banned).
 *
 * It may be better to wait and see what permissions we'd want to grant to or
 * take from users, and then come up with a convenient way to handle that.
 */
typedef enum {
    AL_NORMAL,      // User has regular rights
    AL_ADMIN,       // User can perform administrator tasks
    AL_GM,          // User can perform a subset of administrator tasks
    AL_BANNED,      // This user is currently banned
    AL_RESTRICTED   // User rights have been restricted
} AccountLevels;


/**
 * Enumeration type for the player genders.
 */
typedef enum {
    GENDER_MALE,
    GENDER_FEMALE,
    GENDER_UNKNOWN
} Genders;

/**
 * Enumerated type for communicated messages
 */
enum {
    // Login/Register
    CMSG_REGISTER                = 0x0000,
    CMSG_ENCRYPTED_REGISTER      = 0x0001,
    SMSG_REGISTER_RESPONSE       = 0x0002,
    CMSG_LOGIN                   = 0x0010,
    CMSG_ENCRYPTED_LOGIN         = 0x0011,
    SMSG_LOGIN_ERROR             = 0x0012,
    SMSG_LOGIN_CONFIRM           = 0x0013,
    CMSG_CHAR_CREATE             = 0x0020,
    SMSG_CHAR_CREATE_RESPONSE    = 0x0021,
    CMSG_CHAR_LIST               = 0x0022, // this is required after char creation
    CMSG_CHAR_SELECT             = 0x0023,
    SMSG_CHAR_SELECT_RESPONSE    = 0x0034,

    // Objects
    SMSG_NEW_OBJECT              = 0x0100,
    SMSG_REMOVE_OBJECT           = 0x0101,
    SMSG_CHANGE_OBJECT           = 0x0102,
    CMSG_PICKUP                  = 0x0110,
    SMSG_PICKUP_RESPONSE         = 0x0111,
    CMSG_USE_OBJECT              = 0x0120,
    SMSG_USE_RESPONSE            = 0x0121,

    // Beings
    SMSG_NEW_BEING               = 0x0200,
    SMSG_REMOVE_BEING            = 0x0201,
    SMSG_INVENTORY_UPD           = 0x0210,
    SMSG_EQUIPMENT_UPD           = 0x0220,
    SMSG_ATTACK                  = 0x0230,
    SMSG_PATH                    = 0x0240,
    CMSG_TARGET                  = 0x0250,
    CMSG_WALK                    = 0x0260,
    CMSG_START_TRADE             = 0x0270,
    CMSG_START_TALK              = 0x0280,
    CMSG_REQ_TRADE               = 0x0290,

    // Items
    CMSG_USE_ITEM                = 0x0300,
    CMSG_EQUIP                   = 0x0301,
    SMSG_EQUIP_RESPONSE          = 0x0302,

    // Chat
    SMSG_CHAT                    = 0x0400,
    SMSG_SYSTEM                  = 0x0401,
    SMSG_ANNOUNCEMENT            = 0x0402,
    CMSG_SAY                     = 0x0410,
    CMSG_ANNOUNCE                = 0x0411,

    // Other
    SMSG_LOAD_MAP              = 0x0500,

    // NOTE: We will need more messages for in-game control (eg. moving a client to a new map/position etc.). Currently the protocol only caters for the bare basics.
};

// Login return values
enum {
    LOGIN_OK = 0,
    LOGIN_INVALID_USERNAME,
    LOGIN_INVALID_PASSWORD,
    LOGIN_INVALID_VERSION,
    LOGIN_SERVER_FULL,
    LOGIN_ACCOUNT_BANNED,
    LOGIN_ACCOUNT_REVIEW,
    LOGIN_UNKNOWN
};

// Account register return values
enum {
    REGISTER_OK = 0,
    REGISTER_INVALID_USERNAME,
    REGISTER_INVALID_PASSWORD,
    REGISTER_INVALID_EMAIL,
    REGISTER_EXISTS_USERNAME,
    REGISTER_EXISTS_EMAIL
};

// Character creation return values
enum {
    CREATE_OK = 0,
    CREATE_INVALID_NAME,
    CREATE_INVALID_HAIR,
    CREATE_INVALID_SEX,
    CREATE_EXISTS_USERNAME,
    CREATE_EXISTS_EMAIL,
    CREATE_NOLOGIN
};

// Character selection return values
enum {
    SELECT_OK = 0,
    SELECT_INVALID
};

// Object type enumeration
enum {
    OBJECT_ITEM = 0,
    OBJECT_PLAYER,
    OBJECT_MONSTER
};

// Pickup response enumeration
enum {
    PICKUP_OK = 0,
    PICKUP_OVERWEIGHT,
    PICKUP_FAIL
};

// Object use response enumeration
enum {
    USE_OK = 0,
    USE_FAIL
};

// Equip responses
enum {
    EQUIP_OK = 0,
    EQUIP_FAIL
};


#endif // _TMWSERV_DEFINES_H_