Add nonbinary gender support with pronoun system and server compatibility

Extends gender system beyond WoW's binary male/female to support nonbinary characters with proper they/them pronouns. Implements client-side gender mapping (nonbinary→male) for 3.3.5a server compatibility while preserving player identity through local config persistence. Adds pronoun placeholders ($p/$o/$s/$S) and three-option gender text parsing ($g<male>:<female>:<nonbinary>;) for inclusive quest and dialog text.
This commit is contained in:
Kelsi 2026-02-09 17:39:21 -08:00
parent 28aa88608f
commit 0071c24713
10 changed files with 421 additions and 32 deletions

View file

@ -45,9 +45,41 @@ enum class Class : uint8_t {
*/
enum class Gender : uint8_t {
MALE = 0,
FEMALE = 1
FEMALE = 1,
NONBINARY = 2
};
/**
* Pronoun set for text substitution
*/
struct Pronouns {
std::string subject; // he/she/they
std::string object; // him/her/them
std::string possessive; // his/her/their
std::string possessiveP; // his/hers/theirs
static Pronouns forGender(Gender gender) {
switch (gender) {
case Gender::MALE:
return {"he", "him", "his", "his"};
case Gender::FEMALE:
return {"she", "her", "her", "hers"};
case Gender::NONBINARY:
return {"they", "them", "their", "theirs"};
default:
return {"they", "them", "their", "theirs"};
}
}
};
/**
* Convert gender to server-compatible value (WoW 3.3.5a only supports binary genders)
* Nonbinary is mapped to MALE for server communication while preserving client-side identity
*/
inline Gender toServerGender(Gender gender) {
return (gender == Gender::FEMALE) ? Gender::FEMALE : Gender::MALE;
}
/**
* Equipment item data
*/