diff --git a/src/char/char.cpp b/src/char/char.cpp index 2fc2f854bb..73dff687ac 100644 --- a/src/char/char.cpp +++ b/src/char/char.cpp @@ -866,12 +866,23 @@ int char_mmo_gender( const struct char_session_data *sd, const struct mmo_charst case 'F': return SEX_FEMALE; #else - case 'M': - case 'F': - // No matter what the database says, always return the account gender - return sd->sex; + // No matter what the database says, always return the account gender + // Per character gender is not supported before 2014-10-16 #endif default: + // There are calls to this function that do not contain the session + if( sd == nullptr ){ + int i; + + // Find player session + ARR_FIND( 0, fd_max, i, session[i] && ( sd = (struct char_session_data*)session[i]->session_data ) && sd->account_id == p->account_id ); + + if( i >= fd_max ){ + ShowWarning( "Session was not found for character '%s' (CID: %d, AID: %d), defaulting gender to male...\n", p->name, p->char_id, p->account_id ); + return SEX_MALE; + } + } + ShowWarning( "Found unknown gender '%c' for character '%s' (CID: %d, AID: %d), returning account gender...\n", sex, p->name, p->char_id, p->account_id ); return sd->sex; }