diff --git a/src/client/nclient.c b/src/client/nclient.c index 6c11020..6cc5fda 100644 --- a/src/client/nclient.c +++ b/src/client/nclient.c @@ -945,15 +945,15 @@ int Net_start(int sex, int race, int class) { Packet_printf(&wbuf, "%c%c", Client_setup.u_attr[i], Client_setup.u_char[i]); /* Send the "feature" redefinitions */ - for (i = 0; i < MAX_F_IDX; i++) + for (i = 0; i < MAX_F_IDX_COMPAT; i++) Packet_printf(&wbuf, "%c%c", Client_setup.f_attr[i], Client_setup.f_char[i]); /* Send the "object" redefinitions */ - for (i = 0; i < MAX_K_IDX; i++) + for (i = 0; i < MAX_K_IDX_COMPAT; i++) Packet_printf(&wbuf, "%c%c", Client_setup.k_attr[i], Client_setup.k_char[i]); /* Send the "monster" redefinitions */ - for (i = 0; i < MAX_R_IDX; i++) + for (i = 0; i < MAX_R_IDX_COMPAT; i++) Packet_printf(&wbuf, "%c%c", Client_setup.r_attr[i], Client_setup.r_char[i]); #endif diff --git a/src/common/defines.h b/src/common/defines.h index 95680f7..66244dd 100644 --- a/src/common/defines.h +++ b/src/common/defines.h @@ -565,21 +565,36 @@ /* * TODO: make them redefinable w/o client update */ - + #define MAX_F_IDX 256 /* Max size for "f_info[]" */ -#define MAX_K_IDX 1024 /* Max size for "k_info[]" */ +#define MAX_K_IDX 1280 /* Max size for "k_info[]" */ #define MAX_A_IDX 512 /* Max size for "a_info[]" */ -#define MAX_E_IDX 256 /* Max size for "e_info[]" */ -#define MAX_R_IDX 1152 /* Max size for "r_info[]" */ +#define MAX_E_IDX 384 /* Max size for "e_info[]" */ +#define MAX_R_IDX 1280 /* Max size for "r_info[]" */ #define MAX_V_IDX 256 /* Max size for "v_info[]" */ #define MAX_RE_IDX 128 /* Max size for "re_info[]" */ #define MAX_T_IDX 256 /* Max size for "t_info[]" */ -#define MAX_OW_IDX 96 /* Max size for "ow_info[]" */ -#define MAX_ST_IDX 96 /* Max size for "st_info[]" */ +#define MAX_OW_IDX 128 /* Max size for "ow_info[]" */ +#define MAX_ST_IDX 128 /* Max size for "st_info[]" */ #define MAX_BA_IDX 96 /* Max size for "ba_info[]" */ #define MAX_D_IDX 64 /* Max size for "d_info[]" */ #define MAX_Q_IDX 100 /* Max size for "q_info[]" */ +/* for compatibility with 4.5.8.1- clients: */ +#define MAX_F_IDX_COMPAT 256 +#define MAX_K_IDX_COMPAT 1024 +#define MAX_A_IDX_COMPAT 512 +#define MAX_E_IDX_COMPAT 256 +#define MAX_R_IDX_COMPAT 1152 +#define MAX_V_IDX_COMPAT 256 +#define MAX_RE_IDX_COMPAT 128 +#define MAX_T_IDX_COMPAT 256 +#define MAX_OW_IDX_COMPAT 96 +#define MAX_ST_IDX_COMPAT 96 +#define MAX_BA_IDX_COMPAT 96 +#define MAX_D_IDX_COMPAT 64 +#define MAX_Q_IDX_COMPAT 100 + /* Max ego base type restrictions */ #define MAX_EGO_BASETYPES 10 diff --git a/src/server/nserver.c b/src/server/nserver.c index de898b7..e971537 100644 --- a/src/server/nserver.c +++ b/src/server/nserver.c @@ -3872,8 +3872,8 @@ static int Receive_login(int ind) { return(0); } -#define RECEIVE_PLAY_SIZE (2*6+OPT_MAX+2*(TV_MAX+MAX_F_IDX+MAX_K_IDX+MAX_R_IDX)) -#define RECEIVE_PLAY_SIZE_OPTMAXOLD (2*6+OPT_MAX_OLD+2*(TV_MAX+MAX_F_IDX+MAX_K_IDX+MAX_R_IDX)) +#define RECEIVE_PLAY_SIZE (2*6+OPT_MAX+2*(TV_MAX+MAX_F_IDX_COMPAT+MAX_K_IDX_COMPAT+MAX_R_IDX_COMPAT)) +#define RECEIVE_PLAY_SIZE_OPTMAXOLD (2*6+OPT_MAX_OLD+2*(TV_MAX+MAX_F_IDX_COMPAT+MAX_K_IDX_COMPAT+MAX_R_IDX_COMPAT)) //#define STRICT_RECEIVE_PLAY static int Receive_play(int ind) { connection_t *connp = Conn[ind]; @@ -4089,7 +4089,7 @@ static int Receive_play(int ind) { } /* Read the "feature" char/attrs */ - for (i = 0; i < MAX_F_IDX; i++) + for (i = 0; i < MAX_F_IDX_COMPAT; i++) { n = Packet_scanf(&connp->r, "%c%c", &connp->Client_setup.f_attr[i], &connp->Client_setup.f_char[i]); @@ -4105,7 +4105,7 @@ static int Receive_play(int ind) { } /* Read the "object" char/attrs */ - for (i = 0; i < MAX_K_IDX; i++) + for (i = 0; i < MAX_K_IDX_COMPAT; i++) { n = Packet_scanf(&connp->r, "%c%c", &connp->Client_setup.k_attr[i], &connp->Client_setup.k_char[i]); @@ -4121,7 +4121,7 @@ static int Receive_play(int ind) { } /* Read the "monster" char/attrs */ - for (i = 0; i < MAX_R_IDX; i++) + for (i = 0; i < MAX_R_IDX_COMPAT; i++) { n = Packet_scanf(&connp->r, "%c%c", &connp->Client_setup.r_attr[i], &connp->Client_setup.r_char[i]);