summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/echar/char.c16
-rw-r--r--src/echar/char.h2
-rw-r--r--src/echar/init.c3
3 files changed, 21 insertions, 0 deletions
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);