From 9e88b3b422781630a18c13e40cda1c5ea7c111e8 Mon Sep 17 00:00:00 2001 From: gumi Date: Sat, 17 Aug 2019 18:13:59 -0400 Subject: ignore login-defined gender (unused on evol) and treat it as non-binary --- src/echar/char.c | 16 ++++++++++++++++ src/echar/char.h | 2 ++ src/echar/init.c | 3 +++ 3 files changed, 21 insertions(+) (limited to 'src') diff --git a/src/echar/char.c b/src/echar/char.c index c0d80ba..cac3daf 100644 --- a/src/echar/char.c +++ b/src/echar/char.c @@ -346,3 +346,19 @@ void echat_send_login_serverexit(const int code) WFIFOW(chr->login_fd, 2) = code; WFIFOSET(chr->login_fd, 4); } + +// send non-binary gender to map server +int echar_mmo_gender(const struct char_session_data **sd __attribute__ ((unused)), + const struct mmo_charstatus **p __attribute__ ((unused)), char *sex) +{ + hookStop(); + + switch (*sex) { + case 'M': + return SEX_MALE; + case 'F': + return SEX_FEMALE; + default: + return 3; // FIXME: this enum has no SEX_OTHER + } +} diff --git a/src/echar/char.h b/src/echar/char.h index 23a9a4d..9a59a44 100644 --- a/src/echar/char.h +++ b/src/echar/char.h @@ -29,4 +29,6 @@ void echar_parse_map_serverexit(int mapFd); void echat_send_login_serverexit(const int code); +int echar_mmo_gender(const struct char_session_data **, const struct mmo_charstatus **, char *sex); + #endif // EVOL_CHAR_CHAR diff --git a/src/echar/init.c b/src/echar/init.c index e273b58..1c0ba48 100644 --- a/src/echar/init.c +++ b/src/echar/init.c @@ -66,6 +66,9 @@ HPExport void plugin_init (void) addHookPre(chr, parse_char_connect, echar_parse_char_connect_pre); addHookPre(chr, send_HC_ACK_CHARINFO_PER_PAGE_tail, echar_send_HC_ACK_CHARINFO_PER_PAGE_tail_pre); + // non-binary gender stuff: + addHookPre(chr, mmo_gender, echar_mmo_gender); + addHookPost(chr, send_HC_ACK_CHARINFO_PER_PAGE, echar_send_HC_ACK_CHARINFO_PER_PAGE_post); addHookPost(chr, mmo_char_send_characters, echar_mmo_char_send_characters_post); addHookPost(chr, parse_char_connect, echar_parse_char_connect_post); -- cgit v1.2.3-60-g2f50