[Cleanup] Gender constants cleanup (#3817)

* [Cleanup] Gender constants cleanup

# Notes
- Convert to a `Gender` namespace using `constexpr`.
- Cleanup spots where we were using magic numbers for gender values.

* Cleanup
This commit is contained in:
Alex King 2023-12-30 11:22:09 -05:00 committed by GitHub
parent 836c3d6596
commit 4712ca471b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 120 additions and 118 deletions

View File

@ -1598,7 +1598,7 @@ float GetRaceGenderDefaultHeight(int race, int gender)
return 6.0f; return 6.0f;
} }
if (gender == FEMALE) { if (gender == Gender::Female) {
return female_height[race]; return female_height[race];
} }
@ -1606,38 +1606,38 @@ float GetRaceGenderDefaultHeight(int race, int gender)
} }
// PlayerAppearance prep // PlayerAppearance prep
#define HUMAN_MALE ((HUMAN << 8) | MALE) #define HUMAN_MALE ((HUMAN << 8) | Gender::Male)
#define HUMAN_FEMALE ((HUMAN << 8) | FEMALE) #define HUMAN_FEMALE ((HUMAN << 8) | Gender::Female)
#define BARBARIAN_MALE ((BARBARIAN << 8) | MALE) #define BARBARIAN_MALE ((BARBARIAN << 8) | Gender::Male)
#define BARBARIAN_FEMALE ((BARBARIAN << 8) | FEMALE) #define BARBARIAN_FEMALE ((BARBARIAN << 8) | Gender::Female)
#define ERUDITE_MALE ((ERUDITE << 8) | MALE) #define ERUDITE_MALE ((ERUDITE << 8) | Gender::Male)
#define ERUDITE_FEMALE ((ERUDITE << 8) | FEMALE) #define ERUDITE_FEMALE ((ERUDITE << 8) | Gender::Female)
#define WOOD_ELF_MALE ((WOOD_ELF << 8) | MALE) #define WOOD_ELF_MALE ((WOOD_ELF << 8) | Gender::Male)
#define WOOD_ELF_FEMALE ((WOOD_ELF << 8) | FEMALE) #define WOOD_ELF_FEMALE ((WOOD_ELF << 8) | Gender::Female)
#define HIGH_ELF_MALE ((HIGH_ELF << 8) | MALE) #define HIGH_ELF_MALE ((HIGH_ELF << 8) | Gender::Male)
#define HIGH_ELF_FEMALE ((HIGH_ELF << 8) | FEMALE) #define HIGH_ELF_FEMALE ((HIGH_ELF << 8) | Gender::Female)
#define DARK_ELF_MALE ((DARK_ELF << 8) | MALE) #define DARK_ELF_MALE ((DARK_ELF << 8) | Gender::Male)
#define DARK_ELF_FEMALE ((DARK_ELF << 8) | FEMALE) #define DARK_ELF_FEMALE ((DARK_ELF << 8) | Gender::Female)
#define HALF_ELF_MALE ((HALF_ELF << 8) | MALE) #define HALF_ELF_MALE ((HALF_ELF << 8) | Gender::Male)
#define HALF_ELF_FEMALE ((HALF_ELF << 8) | FEMALE) #define HALF_ELF_FEMALE ((HALF_ELF << 8) | Gender::Female)
#define DWARF_MALE ((DWARF << 8) | MALE) #define DWARF_MALE ((DWARF << 8) | Gender::Male)
#define DWARF_FEMALE ((DWARF << 8) | FEMALE) #define DWARF_FEMALE ((DWARF << 8) | Gender::Female)
#define TROLL_MALE ((TROLL << 8) | MALE) #define TROLL_MALE ((TROLL << 8) | Gender::Male)
#define TROLL_FEMALE ((TROLL << 8) | FEMALE) #define TROLL_FEMALE ((TROLL << 8) | Gender::Female)
#define OGRE_MALE ((OGRE << 8) | MALE) #define OGRE_MALE ((OGRE << 8) | Gender::Male)
#define OGRE_FEMALE ((OGRE << 8) | FEMALE) #define OGRE_FEMALE ((OGRE << 8) | Gender::Female)
#define HALFLING_MALE ((HALFLING << 8) | MALE) #define HALFLING_MALE ((HALFLING << 8) | Gender::Male)
#define HALFLING_FEMALE ((HALFLING << 8) | FEMALE) #define HALFLING_FEMALE ((HALFLING << 8) | Gender::Female)
#define GNOME_MALE ((GNOME << 8) | MALE) #define GNOME_MALE ((GNOME << 8) | Gender::Male)
#define GNOME_FEMALE ((GNOME << 8) | FEMALE) #define GNOME_FEMALE ((GNOME << 8) | Gender::Female)
#define IKSAR_MALE ((IKSAR << 8) | MALE) #define IKSAR_MALE ((IKSAR << 8) | Gender::Male)
#define IKSAR_FEMALE ((IKSAR << 8) | FEMALE) #define IKSAR_FEMALE ((IKSAR << 8) | Gender::Female)
#define VAHSHIR_MALE ((VAHSHIR << 8) | MALE) #define VAHSHIR_MALE ((VAHSHIR << 8) | Gender::Male)
#define VAHSHIR_FEMALE ((VAHSHIR << 8) | FEMALE) #define VAHSHIR_FEMALE ((VAHSHIR << 8) | Gender::Female)
#define FROGLOK_MALE ((FROGLOK << 8) | MALE) #define FROGLOK_MALE ((FROGLOK << 8) | Gender::Male)
#define FROGLOK_FEMALE ((FROGLOK << 8) | FEMALE) #define FROGLOK_FEMALE ((FROGLOK << 8) | Gender::Female)
#define DRAKKIN_MALE ((DRAKKIN << 8) | MALE) #define DRAKKIN_MALE ((DRAKKIN << 8) | Gender::Male)
#define DRAKKIN_FEMALE ((DRAKKIN << 8) | FEMALE) #define DRAKKIN_FEMALE ((DRAKKIN << 8) | Gender::Female)
#define BINDRG(r, g) (((int)r << 8) | g) #define BINDRG(r, g) (((int)r << 8) | g)
@ -2238,11 +2238,11 @@ bool PlayerAppearance::IsValidWoad(uint16 race_id, uint8 gender_id, uint8 woad_v
const char* GetGenderName(uint32 gender_id) { const char* GetGenderName(uint32 gender_id) {
const char* gender_name = "Unknown"; const char* gender_name = "Unknown";
if (gender_id == MALE) { if (gender_id == Gender::Male) {
gender_name = "Male"; gender_name = "Male";
} else if (gender_id == FEMALE) { } else if (gender_id == Gender::Female) {
gender_name = "Female"; gender_name = "Female";
} else if (gender_id == NEUTER) { } else if (gender_id == Gender::Neuter) {
gender_name = "Neuter"; gender_name = "Neuter";
} }
return gender_name; return gender_name;

View File

@ -21,9 +21,11 @@
#include "../common/types.h" #include "../common/types.h"
#include <string> #include <string>
#define MALE 0 namespace Gender {
#define FEMALE 1 constexpr uint8 Male = 0;
#define NEUTER 2 constexpr uint8 Female = 1;
constexpr uint8 Neuter = 2;
}
//theres a big list straight from the client below. //theres a big list straight from the client below.

View File

@ -5015,7 +5015,7 @@ void Mob::TryCriticalHit(Mob *defender, DamageHitInfo &hit, ExtraAttackOptions *
hit.damage_done = (hit.damage_done * SlayDmgBonus) / 100; hit.damage_done = (hit.damage_done * SlayDmgBonus) / 100;
/* Female */ /* Female */
if (GetGender() == 1) { if (GetGender() == Gender::Female) {
entity_list.FilteredMessageCloseString( entity_list.FilteredMessageCloseString(
this, /* Sender */ this, /* Sender */
false, /* Skip Sender */ false, /* Skip Sender */

View File

@ -49,9 +49,9 @@ Beacon::Beacon(const glm::vec4 &in_pos, int lifetime) : Mob(
nullptr, // in_lastname nullptr, // in_lastname
0, // in_cur_hp 0, // in_cur_hp
0, // in_max_hp 0, // in_max_hp
MALE, // in_gender Gender::Male, // in_gender
INVISIBLE_MAN, // in_race Race::InvisibleMan, // in_race
0, // in_class Class::None, // in_class
BT_NoTarget, // in_bodytype BT_NoTarget, // in_bodytype
0, // in_deity 0, // in_deity
0, // in_level 0, // in_level

View File

@ -281,10 +281,10 @@ Bot::Bot(
case SE_IllusionCopy: case SE_IllusionCopy:
case SE_Illusion: { case SE_Illusion: {
if (spell.base_value[x1] == -1) { if (spell.base_value[x1] == -1) {
if (gender == FEMALE) { if (gender == Gender::Female) {
gender = MALE; gender = Gender::Male;
} else if (gender == MALE) { } else if (gender == Gender::Male) {
gender = FEMALE; gender = Gender::Female;
} }
SendIllusionPacket( SendIllusionPacket(

View File

@ -2870,7 +2870,7 @@ void bot_command_apply_poison(Client *c, const Seperator *sep)
} }
if (my_rogue_bot->GetLevel() < 18) { if (my_rogue_bot->GetLevel() < 18) {
c->Message(Chat::White, "Your rogue bot must be level 18 before %s can apply poison!", (my_rogue_bot->GetGender() == 1 ? "she" : "he")); c->Message(Chat::White, "Your rogue bot must be level 18 before %s can apply poison!", (my_rogue_bot->GetGender() == Gender::Female ? "she" : "he"));
return; return;
} }
@ -5633,7 +5633,7 @@ void bot_subcommand_bot_beard_color(Client *c, const Seperator *sep)
uint8 uvalue = Strings::ToInt(sep->arg[1]); uint8 uvalue = Strings::ToInt(sep->arg[1]);
auto fail_type = BCEnum::AFT_None; auto fail_type = BCEnum::AFT_None;
if (my_bot->GetGender() != MALE && my_bot->GetRace() != DWARF) if (my_bot->GetGender() != Gender::Male && my_bot->GetRace() != DWARF)
fail_type = BCEnum::AFT_GenderRace; fail_type = BCEnum::AFT_GenderRace;
else if (!PlayerAppearance::IsValidBeardColor(my_bot->GetRace(), my_bot->GetGender(), uvalue)) else if (!PlayerAppearance::IsValidBeardColor(my_bot->GetRace(), my_bot->GetGender(), uvalue))
fail_type = BCEnum::AFT_Value; fail_type = BCEnum::AFT_Value;
@ -5670,7 +5670,7 @@ void bot_subcommand_bot_beard_style(Client *c, const Seperator *sep)
uint8 uvalue = Strings::ToInt(sep->arg[1]); uint8 uvalue = Strings::ToInt(sep->arg[1]);
auto fail_type = BCEnum::AFT_None; auto fail_type = BCEnum::AFT_None;
if (my_bot->GetGender() != MALE && my_bot->GetRace() != DWARF) if (my_bot->GetGender() != Gender::Male && my_bot->GetRace() != DWARF)
fail_type = BCEnum::AFT_GenderRace; fail_type = BCEnum::AFT_GenderRace;
else if (!PlayerAppearance::IsValidBeard(my_bot->GetRace(), my_bot->GetGender(), uvalue)) else if (!PlayerAppearance::IsValidBeard(my_bot->GetRace(), my_bot->GetGender(), uvalue))
fail_type = BCEnum::AFT_Value; fail_type = BCEnum::AFT_Value;
@ -6171,18 +6171,18 @@ void bot_subcommand_bot_create(Client *c, const Seperator *sep)
return; return;
} }
auto bot_gender = MALE; auto bot_gender = Gender::Male;
if (sep->IsNumber(4)) { if (sep->IsNumber(4)) {
bot_gender = static_cast<uint8>(Strings::ToUnsignedInt(sep->arg[4])); bot_gender = static_cast<uint8>(Strings::ToUnsignedInt(sep->arg[4]));
if (bot_gender == NEUTER) { if (bot_gender == Gender::Neuter) {
bot_gender = MALE; bot_gender = Gender::Male;
} }
} else { } else {
if (!strcasecmp(sep->arg[4], "m") || !strcasecmp(sep->arg[4], "male")) { if (!strcasecmp(sep->arg[4], "m") || !strcasecmp(sep->arg[4], "male")) {
bot_gender = MALE; bot_gender = Gender::Male;
} else if (!strcasecmp(sep->arg[4], "f") || !strcasecmp(sep->arg[4], "female")) { } else if (!strcasecmp(sep->arg[4], "f") || !strcasecmp(sep->arg[4], "female")) {
bot_gender = FEMALE; bot_gender = Gender::Female;
} }
} }
@ -9561,15 +9561,15 @@ uint32 helper_bot_create(Client *bot_owner, std::string bot_name, uint8 bot_clas
return bot_id; return bot_id;
} }
if (!EQ::ValueWithin(bot_gender, MALE, FEMALE)) { if (!EQ::ValueWithin(bot_gender, Gender::Male, Gender::Female)) {
bot_owner->Message( bot_owner->Message(
Chat::White, Chat::White,
fmt::format( fmt::format(
"Gender: {} ({}) or {} ({})", "Gender: {} ({}) or {} ({})",
GetGenderName(MALE), GetGenderName(Gender::Male),
MALE, Gender::Male,
GetGenderName(FEMALE), GetGenderName(Gender::Female),
FEMALE Gender::Female
).c_str() ).c_str()
); );
return bot_id; return bot_id;

View File

@ -86,9 +86,9 @@ Client::Client(EQStreamInterface *ieqs) : Mob(
"", // in_lastname "", // in_lastname
0, // in_cur_hp 0, // in_cur_hp
0, // in_max_hp 0, // in_max_hp
0, // in_gender Gender::Male, // in_gender
0, // in_race Race::Doug, // in_race
0, // in_class Class::None, // in_class
BT_Humanoid, // in_bodytype BT_Humanoid, // in_bodytype
0, // in_deity 0, // in_deity
0, // in_level 0, // in_level

View File

@ -37,9 +37,9 @@ Encounter::Encounter(const char *enc_name) : Mob(
nullptr, // in_lastname nullptr, // in_lastname
0, // in_cur_hp 0, // in_cur_hp
0, // in_max_hp 0, // in_max_hp
MALE, // in_gender Gender::Male, // in_gender
INVISIBLE_MAN, // in_race Race::InvisibleMan, // in_race
0, // in_class Class::None, // in_class
BT_NoTarget, // in_bodytype BT_NoTarget, // in_bodytype
0, // in_deity 0, // in_deity
0, // in_level 0, // in_level

View File

@ -60,11 +60,11 @@ void command_fixmob(Client *c, const Seperator *sep)
ChangeSetting = Race; ChangeSetting = Race;
} }
else if (strcasecmp(command, "gender") == 0) { else if (strcasecmp(command, "gender") == 0) {
if (Gender == MALE && codeMove == 'p') { if (Gender == Gender::Male && codeMove == 'p') {
Gender = NEUTER; Gender = Gender::Neuter;
} }
else if (Gender >= NEUTER && codeMove != 'p') { else if (Gender >= Gender::Neuter && codeMove != 'p') {
Gender = MALE; Gender = Gender::Male;
} }
else { else {
Gender += Adjustment; Gender += Adjustment;

View File

@ -15,7 +15,7 @@ void SetGender(Client *c, const Seperator *sep)
} }
const uint8 gender_id = Strings::ToUnsignedInt(sep->arg[2]); const uint8 gender_id = Strings::ToUnsignedInt(sep->arg[2]);
if (!EQ::ValueWithin(gender_id, MALE, NEUTER)) { if (!EQ::ValueWithin(gender_id, Gender::Male, Gender::Neuter)) {
c->Message(Chat::White, "Usage: #set gender [Gender ID]"); c->Message(Chat::White, "Usage: #set gender [Gender ID]");
c->Message(Chat::White, "Genders: 0 = Male, 1 = Female, 2 = Neuter"); c->Message(Chat::White, "Genders: 0 = Male, 1 = Female, 2 = Neuter");
return; return;

View File

@ -15,7 +15,7 @@ void SetGenderPermanent(Client *c, const Seperator *sep)
} }
const uint8 gender_id = Strings::ToInt(sep->arg[2]); const uint8 gender_id = Strings::ToInt(sep->arg[2]);
if (!EQ::ValueWithin(gender_id, MALE, NEUTER)) { if (!EQ::ValueWithin(gender_id, Gender::Male, Gender::Neuter)) {
c->Message(Chat::White, "Usage: #set gender_permanent [Gender ID]"); c->Message(Chat::White, "Usage: #set gender_permanent [Gender ID]");
c->Message(Chat::White, "Genders: 0 = Male, 1 = Female, 2 = Neuter"); c->Message(Chat::White, "Genders: 0 = Male, 1 = Female, 2 = Neuter");
return; return;

View File

@ -4323,7 +4323,7 @@ Merc* Merc::LoadMerc(Client *c, MercTemplate* merc_template, uint32 merchant_id,
npc_type->race = merc_template->RaceID; npc_type->race = merc_template->RaceID;
// Use the Gender and Size of the Merchant if possible // Use the Gender and Size of the Merchant if possible
uint8 tmpgender = MALE; uint8 tmpgender = Gender::Male;
float tmpsize = 6.0f; float tmpsize = 6.0f;
if(merchant_id > 0) if(merchant_id > 0)
{ {
@ -5624,7 +5624,7 @@ void Client::SetMerc(Merc* newmerc) {
GetMercInfo().myTemplate = nullptr; GetMercInfo().myTemplate = nullptr;
GetMercInfo().IsSuspended = false; GetMercInfo().IsSuspended = false;
GetMercInfo().SuspendedTime = 0; GetMercInfo().SuspendedTime = 0;
GetMercInfo().Gender = MALE; GetMercInfo().Gender = Gender::Male;
GetMercInfo().State = 0; GetMercInfo().State = 0;
memset(GetMercInfo().merc_name, 0, 64); memset(GetMercInfo().merc_name, 0, 64);
Log(Logs::General, Logs::Mercenaries, "SetMerc No Merc for %s.", GetName()); Log(Logs::General, Logs::Mercenaries, "SetMerc No Merc for %s.", GetName());

View File

@ -3703,11 +3703,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case HUMAN: case HUMAN:
new_hair_color = zone->random.Int(0, 19); new_hair_color = zone->random.Int(0, 19);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_beard = zone->random.Int(0, 5); new_beard = zone->random.Int(0, 5);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
@ -3716,21 +3716,21 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
new_hair_color = zone->random.Int(0, 19); new_hair_color = zone->random.Int(0, 19);
new_luclin_face = zone->random.Int(0, 87); new_luclin_face = zone->random.Int(0, 87);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_beard = zone->random.Int(0, 5); new_beard = zone->random.Int(0, 5);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
break; break;
case ERUDITE: case ERUDITE:
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_beard_color = zone->random.Int(0, 19); new_beard_color = zone->random.Int(0, 19);
new_beard = zone->random.Int(0, 5); new_beard = zone->random.Int(0, 5);
new_luclin_face = zone->random.Int(0, 57); new_luclin_face = zone->random.Int(0, 57);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_luclin_face = zone->random.Int(0, 87); new_luclin_face = zone->random.Int(0, 87);
} }
@ -3738,9 +3738,9 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case WOOD_ELF: case WOOD_ELF:
new_hair_color = zone->random.Int(0, 19); new_hair_color = zone->random.Int(0, 19);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
@ -3748,11 +3748,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case HIGH_ELF: case HIGH_ELF:
new_hair_color = zone->random.Int(0, 14); new_hair_color = zone->random.Int(0, 14);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_luclin_face = zone->random.Int(0, 37); new_luclin_face = zone->random.Int(0, 37);
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
@ -3760,11 +3760,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case DARK_ELF: case DARK_ELF:
new_hair_color = zone->random.Int(13, 18); new_hair_color = zone->random.Int(13, 18);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_luclin_face = zone->random.Int(0, 37); new_luclin_face = zone->random.Int(0, 37);
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
@ -3772,11 +3772,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case HALF_ELF: case HALF_ELF:
new_hair_color = zone->random.Int(0, 19); new_hair_color = zone->random.Int(0, 19);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_luclin_face = zone->random.Int(0, 37); new_luclin_face = zone->random.Int(0, 37);
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
@ -3785,10 +3785,10 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
new_hair_color = zone->random.Int(0, 19); new_hair_color = zone->random.Int(0, 19);
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_beard = zone->random.Int(0, 5); new_beard = zone->random.Int(0, 5);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
new_luclin_face = zone->random.Int(0, 17); new_luclin_face = zone->random.Int(0, 17);
} }
@ -3798,14 +3798,14 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
new_eye_color_one = zone->random.Int(0, 10); new_eye_color_one = zone->random.Int(0, 10);
new_eye_color_two = zone->random.Int(0, 10); new_eye_color_two = zone->random.Int(0, 10);
if (current_gender == FEMALE) { if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_hair_color = zone->random.Int(0, 23); new_hair_color = zone->random.Int(0, 23);
} }
break; break;
case OGRE: case OGRE:
if (current_gender == FEMALE) { if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_hair_color = zone->random.Int(0, 23); new_hair_color = zone->random.Int(0, 23);
} }
@ -3814,11 +3814,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case HALFLING: case HALFLING:
new_hair_color = zone->random.Int(0, 19); new_hair_color = zone->random.Int(0, 19);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_beard = zone->random.Int(0, 5); new_beard = zone->random.Int(0, 5);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
@ -3826,11 +3826,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case GNOME: case GNOME:
new_hair_color = zone->random.Int(0, 24); new_hair_color = zone->random.Int(0, 24);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_beard_color = new_hair_color; new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3); new_hair_style = zone->random.Int(0, 3);
new_beard = zone->random.Int(0, 5); new_beard = zone->random.Int(0, 5);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2); new_hair_style = zone->random.Int(0, 2);
} }
@ -3852,10 +3852,10 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
new_drakkin_tattoo = zone->random.Int(0, 7); new_drakkin_tattoo = zone->random.Int(0, 7);
new_drakkin_details = zone->random.Int(0, 7); new_drakkin_details = zone->random.Int(0, 7);
if (current_gender == MALE) { if (current_gender == Gender::Male) {
new_beard = zone->random.Int(0, 12); new_beard = zone->random.Int(0, 12);
new_hair_style = zone->random.Int(0, 8); new_hair_style = zone->random.Int(0, 8);
} else if (current_gender == FEMALE) { } else if (current_gender == Gender::Female) {
new_beard = zone->random.Int(0, 3); new_beard = zone->random.Int(0, 3);
new_hair_style = zone->random.Int(0, 7); new_hair_style = zone->random.Int(0, 7);
} }
@ -3961,8 +3961,8 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
in_race == Race::HumanGhost || in_race == Race::HumanGhost ||
in_race == Race::Coldain2 in_race == Race::Coldain2
) { ) {
if (in_gender >= 2) { // Male default for PC Races if (in_gender >= Gender::Neuter) { // Male default for PC Races
return 0; return Gender::Male;
} else { } else {
return in_gender; return in_gender;
} }
@ -3986,7 +3986,7 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
in_race == Race::RoyalGuard || in_race == Race::RoyalGuard ||
in_race == Race::Erudite2 in_race == Race::Erudite2
) { // Male only races ) { // Male only races
return 0; return Gender::Male;
} else if ( } else if (
in_race == Race::Fairy || in_race == Race::Fairy ||
in_race == Race::Pixie || in_race == Race::Pixie ||
@ -3995,9 +3995,9 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
in_race == Race::AyonaeRo || in_race == Race::AyonaeRo ||
in_race == Race::SullonZek in_race == Race::SullonZek
) { // Female only races ) { // Female only races
return 1; return Gender::Female;
} else { // Neutral default for NPC Races } else { // Neutral default for NPC Races
return 2; return Gender::Neuter;
} }
} }

View File

@ -1220,7 +1220,7 @@ void NPC::SpawnGridNodeNPC(const glm::vec4 &position, int32 grid_id, int32 grid_
npc_type->current_hp = 4000000; npc_type->current_hp = 4000000;
npc_type->max_hp = 4000000; npc_type->max_hp = 4000000;
npc_type->race = 2254; npc_type->race = 2254;
npc_type->gender = NEUTER; npc_type->gender = Gender::Neuter;
npc_type->class_ = 9; npc_type->class_ = 9;
npc_type->deity = 1; npc_type->deity = 1;
npc_type->level = 200; npc_type->level = 200;

View File

@ -529,7 +529,7 @@ void PathfinderWaypoint::ShowNode(const Node &n) {
npc_type->current_hp = 4000000; npc_type->current_hp = 4000000;
npc_type->max_hp = 4000000; npc_type->max_hp = 4000000;
npc_type->race = 2254; npc_type->race = 2254;
npc_type->gender = NEUTER; npc_type->gender = Gender::Neuter;
npc_type->class_ = 9; npc_type->class_ = 9;
npc_type->deity = 1; npc_type->deity = 1;
npc_type->level = 75; npc_type->level = 75;

View File

@ -8077,33 +8077,33 @@ bool Mob::PassCastRestriction(int value)
} }
case IS_CLIENT_AND_MALE_PLATE_USER: case IS_CLIENT_AND_MALE_PLATE_USER:
if (IsClient() && GetGender() == MALE && IsPlateClass(GetClass())) if (IsClient() && GetGender() == Gender::Male && IsPlateClass(GetClass()))
return true; return true;
break; break;
case IS_CLEINT_AND_MALE_DRUID_ENCHANTER_MAGICIAN_NECROANCER_SHAMAN_OR_WIZARD: case IS_CLEINT_AND_MALE_DRUID_ENCHANTER_MAGICIAN_NECROANCER_SHAMAN_OR_WIZARD:
if (IsClient() && GetGender() == MALE && (IsCasterClass(GetClass()) && GetClass() != Class::Cleric)) if (IsClient() && GetGender() == Gender::Male && (IsCasterClass(GetClass()) && GetClass() != Class::Cleric))
return true; return true;
break; break;
case IS_CLIENT_AND_MALE_BEASTLORD_BERSERKER_MONK_RANGER_OR_ROGUE: case IS_CLIENT_AND_MALE_BEASTLORD_BERSERKER_MONK_RANGER_OR_ROGUE:
if (IsClient() && GetGender() == MALE && if (IsClient() && GetGender() == Gender::Male &&
(GetClass() == Class::Beastlord || GetClass() == Class::Berserker || GetClass() == Class::Monk || GetClass() == Class::Ranger || GetClass() == Class::Rogue)) (GetClass() == Class::Beastlord || GetClass() == Class::Berserker || GetClass() == Class::Monk || GetClass() == Class::Ranger || GetClass() == Class::Rogue))
return true; return true;
break; break;
case IS_CLIENT_AND_FEMALE_PLATE_USER: case IS_CLIENT_AND_FEMALE_PLATE_USER:
if (IsClient() && GetGender() == FEMALE && IsPlateClass(GetClass())) if (IsClient() && GetGender() == Gender::Female && IsPlateClass(GetClass()))
return true; return true;
break; break;
case IS_CLIENT_AND_FEMALE_DRUID_ENCHANTER_MAGICIAN_NECROANCER_SHAMAN_OR_WIZARD: case IS_CLIENT_AND_FEMALE_DRUID_ENCHANTER_MAGICIAN_NECROANCER_SHAMAN_OR_WIZARD:
if (IsClient() && GetGender() == FEMALE && (IsCasterClass(GetClass()) && GetClass() != Class::Cleric)) if (IsClient() && GetGender() == Gender::Female && (IsCasterClass(GetClass()) && GetClass() != Class::Cleric))
return true; return true;
break; break;
case IS_CLIENT_AND_FEMALE_BEASTLORD_BERSERKER_MONK_RANGER_OR_ROGUE: case IS_CLIENT_AND_FEMALE_BEASTLORD_BERSERKER_MONK_RANGER_OR_ROGUE:
if (IsClient() && GetGender() == FEMALE && if (IsClient() && GetGender() == Gender::Female &&
(GetClass() == Class::Beastlord || GetClass() == Class::Berserker || GetClass() == Class::Monk || GetClass() == Class::Ranger || GetClass() == Class::Rogue)) (GetClass() == Class::Beastlord || GetClass() == Class::Berserker || GetClass() == Class::Monk || GetClass() == Class::Ranger || GetClass() == Class::Rogue))
return true; return true;
break; break;
@ -10219,7 +10219,7 @@ void Mob::ApplySpellEffectIllusion(int32 spell_id, Mob *caster, int buffslot, in
if (base == -1) { if (base == -1) {
// Specific Gender Illusions // Specific Gender Illusions
if (spell_id == SPELL_ILLUSION_MALE || spell_id == SPELL_ILLUSION_FEMALE) { if (spell_id == SPELL_ILLUSION_MALE || spell_id == SPELL_ILLUSION_FEMALE) {
uint8 specific_gender = spell_id == SPELL_ILLUSION_MALE ? MALE : FEMALE; uint8 specific_gender = spell_id == SPELL_ILLUSION_MALE ? Gender::Male : Gender::Female;
if (caster && caster->GetTarget()) { if (caster && caster->GetTarget()) {
SendIllusionPacket( SendIllusionPacket(
@ -10234,7 +10234,7 @@ void Mob::ApplySpellEffectIllusion(int32 spell_id, Mob *caster, int buffslot, in
// Change Gender Illusions // Change Gender Illusions
else { else {
if (caster && caster->GetTarget()) { if (caster && caster->GetTarget()) {
uint8 opposite_gender = caster->GetTarget()->GetGender() == MALE ? FEMALE : MALE; uint8 opposite_gender = caster->GetTarget()->GetGender() == Gender::Male ? Gender::Female : Gender::Male;
SendIllusionPacket( SendIllusionPacket(
AppearanceStruct{ AppearanceStruct{

View File

@ -152,11 +152,11 @@ bool TitleManager::IsClientEligibleForTitle(Client *client, TitleEntry title)
return false; return false;
} }
if (title.gender_id >= 0 && client->GetBaseGender() != title.gender_id) { if (title.gender_id >= Gender::Male && client->GetBaseGender() != title.gender_id) {
return false; return false;
} }
if (title.class_id >= 0 && client->GetBaseClass() != title.class_id) { if (title.class_id >= Class::None && client->GetBaseClass() != title.class_id) {
return false; return false;
} }

View File

@ -1147,7 +1147,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
LogTradeskills("Tradeskill failed"); LogTradeskills("Tradeskill failed");
if (GetGroup()) if (GetGroup())
{ {
entity_list.MessageGroup(this, true, Chat::Skills,"%s was unsuccessful in %s tradeskill attempt.",GetName(),GetGender() == 0 ? "his" : GetGender() == 1 ? "her" : "its"); entity_list.MessageGroup(this, true, Chat::Skills,"%s was unsuccessful in %s tradeskill attempt.",GetName(),GetGender() == Gender::Male ? "his" : GetGender() == Gender::Female ? "her" : "its");
} }

View File

@ -510,7 +510,7 @@ void Trap::CreateHiddenTrigger()
make_npc->runspeed = 0.0f; make_npc->runspeed = 0.0f;
make_npc->bodytype = BT_Special; make_npc->bodytype = BT_Special;
make_npc->race = 127; make_npc->race = 127;
make_npc->gender = MALE; make_npc->gender = Gender::Male;
make_npc->loottable_id = 0; make_npc->loottable_id = 0;
make_npc->npc_spells_id = 0; make_npc->npc_spells_id = 0;
make_npc->d_melee_texture1 = 0; make_npc->d_melee_texture1 = 0;

View File

@ -340,7 +340,7 @@ namespace BeastlordPetData {
uint16 race_id = WOLF; uint16 race_id = WOLF;
uint8 texture = 0; uint8 texture = 0;
uint8 helm_texture = 0; uint8 helm_texture = 0;
uint8 gender = NEUTER; uint8 gender = Gender::Neuter;
float size_modifier = 1.0f; float size_modifier = 1.0f;
uint8 face = 0; uint8 face = 0;
}; };