Removed account gender (#5006)

Adds an upgrade script to change all existing entries to the respective gender in their account.
Cleanup of a few strange design decisions in the character server code.
Removed SEX_ACCOUNT.

Thanks to @Daegaladh for his help.
This commit is contained in:
Lemongrass3110
2020-06-04 17:23:50 +02:00
committed by GitHub
parent afaee2f01d
commit 3ab1ada8d9
7 changed files with 134 additions and 101 deletions

View File

@@ -855,8 +855,6 @@ int chclif_parse_charselect(int fd, struct char_session_data* sd,uint32 ipl){
//Have to switch over to the DB instance otherwise data won't propagate [Kevin]
cd = (struct mmo_charstatus *)idb_get(char_db_, char_id);
if (cd->sex == SEX_ACCOUNT)
cd->sex = sd->sex;
if (charserv_config.log_char) {
char esc_name[NAME_LENGTH*2+1];
@@ -951,16 +949,72 @@ int chclif_parse_createnewchar(int fd, struct char_session_data* sd,int cmd){
if( (charserv_config.char_new)==0 ) //turn character creation on/off [Kevin]
char_id = -2;
else {
char name[NAME_LENGTH];
int str, agi, vit, int_, dex, luk;
int slot;
int hair_color;
int hair_style;
short start_job;
int sex;
#if PACKETVER >= 20151001
char_id = char_make_new_char_sql(sd, RFIFOCP(fd,2),RFIFOB(fd,26),RFIFOW(fd,27),RFIFOW(fd,29),RFIFOW(fd,31),RFIFOW(fd,32),RFIFOB(fd,35));
RFIFOSKIP(fd,36);
// Sent values
safestrncpy( name, RFIFOCP( fd, 2 ), NAME_LENGTH );
slot = RFIFOB( fd, 26 );
hair_color = RFIFOW( fd, 27 );
hair_style = RFIFOW( fd, 29 );
start_job = RFIFOW( fd, 31 );
// Unknown RFIFOW( fd, 32 )
sex = RFIFOB( fd, 35 );
// Default values
str = 1;
agi = 1;
vit = 1;
int_ = 1;
dex = 1;
luk = 1;
RFIFOSKIP( fd, 36 );
#elif PACKETVER >= 20120307
char_id = char_make_new_char_sql(sd, RFIFOCP(fd,2),RFIFOB(fd,26),RFIFOW(fd,27),RFIFOW(fd,29));
RFIFOSKIP(fd,31);
// Sent values
safestrncpy( name, RFIFOCP( fd, 2 ), NAME_LENGTH );
slot = RFIFOB( fd, 26 );
hair_color = RFIFOW( fd, 27 );
hair_style = RFIFOW( fd, 29 );
// Default values
str = 1;
agi = 1;
vit = 1;
int_ = 1;
dex = 1;
luk = 1;
start_job = JOB_NOVICE;
sex = sd->sex;
RFIFOSKIP( fd, 31 );
#else
char_id = char_make_new_char_sql(sd, RFIFOCP(fd,2),RFIFOB(fd,26),RFIFOB(fd,27),RFIFOB(fd,28),RFIFOB(fd,29),RFIFOB(fd,30),RFIFOB(fd,31),RFIFOB(fd,32),RFIFOW(fd,33),RFIFOW(fd,35));
RFIFOSKIP(fd,37);
// Sent values
safestrncpy( name, RFIFOCP( fd, 2 ), NAME_LENGTH );
str = RFIFOB( fd, 26 );
agi = RFIFOB( fd, 27 );
vit = RFIFOB( fd, 28 );
int_ = RFIFOB( fd, 29 );
dex = RFIFOB( fd, 30 );
luk = RFIFOB( fd, 31 );
slot = RFIFOB( fd, 32 );
hair_color = RFIFOW( fd, 33 );
hair_style = RFIFOW( fd, 35 );
// Default values
start_job = JOB_NOVICE;
sex = sd->sex;
RFIFOSKIP( fd, 37 );
#endif
char_id = char_make_new_char( sd, name, str, agi, vit, int_, dex, luk, slot, hair_color, hair_style, start_job, sex );
}
if (char_id < 0) {