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

View File

@ -21,9 +21,11 @@
#include "../common/types.h"
#include <string>
#define MALE 0
#define FEMALE 1
#define NEUTER 2
namespace Gender {
constexpr uint8 Male = 0;
constexpr uint8 Female = 1;
constexpr uint8 Neuter = 2;
}
//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;
/* Female */
if (GetGender() == 1) {
if (GetGender() == Gender::Female) {
entity_list.FilteredMessageCloseString(
this, /* Sender */
false, /* Skip Sender */

View File

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

View File

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

View File

@ -2870,7 +2870,7 @@ void bot_command_apply_poison(Client *c, const Seperator *sep)
}
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;
}
@ -5633,7 +5633,7 @@ void bot_subcommand_bot_beard_color(Client *c, const Seperator *sep)
uint8 uvalue = Strings::ToInt(sep->arg[1]);
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;
else if (!PlayerAppearance::IsValidBeardColor(my_bot->GetRace(), my_bot->GetGender(), uvalue))
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]);
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;
else if (!PlayerAppearance::IsValidBeard(my_bot->GetRace(), my_bot->GetGender(), uvalue))
fail_type = BCEnum::AFT_Value;
@ -6171,18 +6171,18 @@ void bot_subcommand_bot_create(Client *c, const Seperator *sep)
return;
}
auto bot_gender = MALE;
auto bot_gender = Gender::Male;
if (sep->IsNumber(4)) {
bot_gender = static_cast<uint8>(Strings::ToUnsignedInt(sep->arg[4]));
if (bot_gender == NEUTER) {
bot_gender = MALE;
if (bot_gender == Gender::Neuter) {
bot_gender = Gender::Male;
}
} else {
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")) {
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;
}
if (!EQ::ValueWithin(bot_gender, MALE, FEMALE)) {
if (!EQ::ValueWithin(bot_gender, Gender::Male, Gender::Female)) {
bot_owner->Message(
Chat::White,
fmt::format(
"Gender: {} ({}) or {} ({})",
GetGenderName(MALE),
MALE,
GetGenderName(FEMALE),
FEMALE
GetGenderName(Gender::Male),
Gender::Male,
GetGenderName(Gender::Female),
Gender::Female
).c_str()
);
return bot_id;

View File

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

View File

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

View File

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

View File

@ -15,7 +15,7 @@ void SetGender(Client *c, const Seperator *sep)
}
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, "Genders: 0 = Male, 1 = Female, 2 = Neuter");
return;

View File

@ -15,7 +15,7 @@ void SetGenderPermanent(Client *c, const Seperator *sep)
}
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, "Genders: 0 = Male, 1 = Female, 2 = Neuter");
return;

View File

@ -4323,7 +4323,7 @@ Merc* Merc::LoadMerc(Client *c, MercTemplate* merc_template, uint32 merchant_id,
npc_type->race = merc_template->RaceID;
// Use the Gender and Size of the Merchant if possible
uint8 tmpgender = MALE;
uint8 tmpgender = Gender::Male;
float tmpsize = 6.0f;
if(merchant_id > 0)
{
@ -5624,7 +5624,7 @@ void Client::SetMerc(Merc* newmerc) {
GetMercInfo().myTemplate = nullptr;
GetMercInfo().IsSuspended = false;
GetMercInfo().SuspendedTime = 0;
GetMercInfo().Gender = MALE;
GetMercInfo().Gender = Gender::Male;
GetMercInfo().State = 0;
memset(GetMercInfo().merc_name, 0, 64);
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:
new_hair_color = zone->random.Int(0, 19);
if (current_gender == MALE) {
if (current_gender == Gender::Male) {
new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3);
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);
}
@ -3716,21 +3716,21 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
new_hair_color = zone->random.Int(0, 19);
new_luclin_face = zone->random.Int(0, 87);
if (current_gender == MALE) {
if (current_gender == Gender::Male) {
new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3);
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);
}
break;
case ERUDITE:
if (current_gender == MALE) {
if (current_gender == Gender::Male) {
new_beard_color = zone->random.Int(0, 19);
new_beard = zone->random.Int(0, 5);
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);
}
@ -3738,9 +3738,9 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case WOOD_ELF:
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);
} else if (current_gender == FEMALE) {
} else if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 2);
}
@ -3748,11 +3748,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case HIGH_ELF:
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_luclin_face = zone->random.Int(0, 37);
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);
}
@ -3760,11 +3760,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case DARK_ELF:
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_luclin_face = zone->random.Int(0, 37);
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);
}
@ -3772,11 +3772,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case HALF_ELF:
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_luclin_face = zone->random.Int(0, 37);
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);
}
@ -3785,10 +3785,10 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
new_hair_color = zone->random.Int(0, 19);
new_beard_color = new_hair_color;
if (current_gender == MALE) {
if (current_gender == Gender::Male) {
new_hair_style = zone->random.Int(0, 3);
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_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_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_color = zone->random.Int(0, 23);
}
break;
case OGRE:
if (current_gender == FEMALE) {
if (current_gender == Gender::Female) {
new_hair_style = zone->random.Int(0, 3);
new_hair_color = zone->random.Int(0, 23);
}
@ -3814,11 +3814,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case HALFLING:
new_hair_color = zone->random.Int(0, 19);
if (current_gender == MALE) {
if (current_gender == Gender::Male) {
new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3);
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);
}
@ -3826,11 +3826,11 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
case GNOME:
new_hair_color = zone->random.Int(0, 24);
if (current_gender == MALE) {
if (current_gender == Gender::Male) {
new_beard_color = new_hair_color;
new_hair_style = zone->random.Int(0, 3);
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);
}
@ -3852,10 +3852,10 @@ bool Mob::RandomizeFeatures(bool send_illusion, bool set_variables)
new_drakkin_tattoo = 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_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_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::Coldain2
) {
if (in_gender >= 2) { // Male default for PC Races
return 0;
if (in_gender >= Gender::Neuter) { // Male default for PC Races
return Gender::Male;
} else {
return in_gender;
}
@ -3986,7 +3986,7 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
in_race == Race::RoyalGuard ||
in_race == Race::Erudite2
) { // Male only races
return 0;
return Gender::Male;
} else if (
in_race == Race::Fairy ||
in_race == Race::Pixie ||
@ -3995,9 +3995,9 @@ uint8 Mob::GetDefaultGender(uint16 in_race, uint8 in_gender) {
in_race == Race::AyonaeRo ||
in_race == Race::SullonZek
) { // Female only races
return 1;
return Gender::Female;
} 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->max_hp = 4000000;
npc_type->race = 2254;
npc_type->gender = NEUTER;
npc_type->gender = Gender::Neuter;
npc_type->class_ = 9;
npc_type->deity = 1;
npc_type->level = 200;

View File

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

View File

@ -8077,33 +8077,33 @@ bool Mob::PassCastRestriction(int value)
}
case IS_CLIENT_AND_MALE_PLATE_USER:
if (IsClient() && GetGender() == MALE && IsPlateClass(GetClass()))
if (IsClient() && GetGender() == Gender::Male && IsPlateClass(GetClass()))
return true;
break;
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;
break;
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))
return true;
break;
case IS_CLIENT_AND_FEMALE_PLATE_USER:
if (IsClient() && GetGender() == FEMALE && IsPlateClass(GetClass()))
if (IsClient() && GetGender() == Gender::Female && IsPlateClass(GetClass()))
return true;
break;
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;
break;
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))
return true;
break;
@ -10219,7 +10219,7 @@ void Mob::ApplySpellEffectIllusion(int32 spell_id, Mob *caster, int buffslot, in
if (base == -1) {
// Specific Gender Illusions
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()) {
SendIllusionPacket(
@ -10234,7 +10234,7 @@ void Mob::ApplySpellEffectIllusion(int32 spell_id, Mob *caster, int buffslot, in
// Change Gender Illusions
else {
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(
AppearanceStruct{

View File

@ -152,11 +152,11 @@ bool TitleManager::IsClientEligibleForTitle(Client *client, TitleEntry title)
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;
}
if (title.class_id >= 0 && client->GetBaseClass() != title.class_id) {
if (title.class_id >= Class::None && client->GetBaseClass() != title.class_id) {
return false;
}

View File

@ -1147,7 +1147,7 @@ bool Client::TradeskillExecute(DBTradeskillRecipe_Struct *spec) {
LogTradeskills("Tradeskill failed");
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->bodytype = BT_Special;
make_npc->race = 127;
make_npc->gender = MALE;
make_npc->gender = Gender::Male;
make_npc->loottable_id = 0;
make_npc->npc_spells_id = 0;
make_npc->d_melee_texture1 = 0;

View File

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