mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Core/Players: Update racemask definitions to include Haranir
This commit is contained in:
@@ -3947,12 +3947,12 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
if (!items)
|
||||
continue;
|
||||
|
||||
for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex)
|
||||
for (ChrRacesEntry const* race : sChrRacesStore)
|
||||
{
|
||||
if (!characterLoadout->RaceMask.HasRace(raceIndex))
|
||||
if (!characterLoadout->RaceMask.HasRace(race->ID))
|
||||
continue;
|
||||
|
||||
if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(characterLoadout->ChrClassID) }))
|
||||
if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race->ID), Classes(characterLoadout->ChrClassID) }))
|
||||
{
|
||||
playerInfo->itemContext = ItemContext(characterLoadout->ItemContext);
|
||||
|
||||
@@ -4006,14 +4006,14 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
uint32 current_race = fields[0].GetUInt8();
|
||||
if (current_race >= MAX_RACES)
|
||||
if (!sChrRacesStore.HasRecord(current_race))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Wrong race {} in `playercreateinfo_item` table, ignoring.", current_race);
|
||||
continue;
|
||||
}
|
||||
|
||||
uint32 current_class = fields[1].GetUInt8();
|
||||
if (current_class >= MAX_CLASSES)
|
||||
if (!sChrClassesStore.HasRecord(current_class))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Wrong class {} in `playercreateinfo_item` table, ignoring.", current_class);
|
||||
continue;
|
||||
@@ -4038,9 +4038,9 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
if (!current_race || !current_class)
|
||||
{
|
||||
uint32 min_race = current_race ? current_race : 1;
|
||||
uint32 max_race = current_race ? current_race + 1 : MAX_RACES;
|
||||
uint32 max_race = current_race ? current_race + 1 : sChrRacesStore.GetNumRows();
|
||||
uint32 min_class = current_class ? current_class : 1;
|
||||
uint32 max_class = current_class ? current_class + 1 : MAX_CLASSES;
|
||||
uint32 max_class = current_class ? current_class + 1 : sChrClassesStore.GetNumRows();
|
||||
for (uint32 r = min_race; r < max_race; ++r)
|
||||
for (uint32 c = min_class; c < max_class; ++c)
|
||||
PlayerCreateInfoAddItemHelper(r, c, item_id, amount);
|
||||
@@ -4063,11 +4063,11 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
|
||||
for (SkillRaceClassInfoEntry const* rcInfo : sSkillRaceClassInfoStore)
|
||||
if (rcInfo->Availability == 1)
|
||||
for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex)
|
||||
if (rcInfo->RaceMask.IsEmpty() || rcInfo->RaceMask.HasRace(raceIndex))
|
||||
for (ChrRacesEntry const* race : sChrRacesStore)
|
||||
if (rcInfo->RaceMask.IsEmpty() || rcInfo->RaceMask.HasRace(race->ID))
|
||||
for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex)
|
||||
if (rcInfo->ClassMask == -1 || rcInfo->ClassMask == 0 || ((1 << (classIndex - 1)) & rcInfo->ClassMask))
|
||||
if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(classIndex) }))
|
||||
if (PlayerInfo* playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race->ID), Classes(classIndex) }))
|
||||
playerInfo->skills.push_back(rcInfo);
|
||||
|
||||
TC_LOG_INFO("server.loading", ">> Loaded player create skills in {} ms", GetMSTimeDiffToNow(oldMSTime));
|
||||
@@ -4107,15 +4107,15 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
continue;
|
||||
}
|
||||
|
||||
for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex)
|
||||
for (ChrRacesEntry const* race : sChrRacesStore)
|
||||
{
|
||||
if (raceMask.IsEmpty() || raceMask.HasRace(raceIndex))
|
||||
if (raceMask.IsEmpty() || raceMask.HasRace(race->ID))
|
||||
{
|
||||
for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex)
|
||||
{
|
||||
if (classMask == 0 || ((1 << (classIndex - 1)) & classMask))
|
||||
{
|
||||
if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(classIndex) }))
|
||||
if (PlayerInfo* playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, {Races(race->ID), Classes(classIndex)}))
|
||||
{
|
||||
playerInfo->customSpells.push_back(spellId);
|
||||
++count;
|
||||
@@ -4174,15 +4174,15 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
continue;
|
||||
}
|
||||
|
||||
for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex)
|
||||
for (ChrRacesEntry const* race : sChrRacesStore)
|
||||
{
|
||||
if (raceMask.IsEmpty() || raceMask.HasRace(raceIndex))
|
||||
if (raceMask.IsEmpty() || raceMask.HasRace(race->ID))
|
||||
{
|
||||
for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex)
|
||||
{
|
||||
if (classMask == 0 || ((1 << (classIndex - 1)) & classMask))
|
||||
{
|
||||
if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(classIndex) }))
|
||||
if (PlayerInfo* playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race->ID), Classes(classIndex) }))
|
||||
{
|
||||
playerInfo->castSpells[playerCreateMode].push_back(spellId);
|
||||
++count;
|
||||
@@ -4218,14 +4218,14 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
uint32 current_race = fields[0].GetUInt8();
|
||||
if (current_race >= MAX_RACES)
|
||||
if (!sChrRacesStore.HasRecord(current_race))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Wrong race {} in `playercreateinfo_action` table, ignoring.", current_race);
|
||||
continue;
|
||||
}
|
||||
|
||||
uint32 current_class = fields[1].GetUInt8();
|
||||
if (current_class >= MAX_CLASSES)
|
||||
if (!sChrClassesStore.HasRecord(current_class))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Wrong class {} in `playercreateinfo_action` table, ignoring.", current_class);
|
||||
continue;
|
||||
@@ -4247,10 +4247,15 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
{
|
||||
struct RaceStats
|
||||
{
|
||||
Races Race;
|
||||
std::array<int16, MAX_STATS> StatModifier = { };
|
||||
|
||||
explicit RaceStats(Races race) : Race(race) { }
|
||||
std::strong_ordering operator<=>(RaceStats const& right) const { return Race <=> right.Race; }
|
||||
bool operator==(RaceStats const& right) const { return Race == right.Race; }
|
||||
};
|
||||
|
||||
std::array<RaceStats, MAX_RACES> raceStatModifiers = { };
|
||||
Trinity::Containers::FlatSet<RaceStats> raceStatModifiers;
|
||||
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
@@ -4267,14 +4272,15 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
Field* fields = raceStatsResult->Fetch();
|
||||
|
||||
uint32 current_race = fields[0].GetUInt8();
|
||||
if (current_race >= MAX_RACES)
|
||||
if (!sChrRacesStore.HasRecord(current_race))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Wrong race {} in `player_racestats` table, ignoring.", current_race);
|
||||
continue;
|
||||
}
|
||||
|
||||
RaceStats& stats = *raceStatModifiers.emplace(Races(current_race)).first;
|
||||
for (uint32 i = 0; i < MAX_STATS; ++i)
|
||||
raceStatModifiers[current_race].StatModifier[i] = fields[i + 1].GetInt16();
|
||||
stats.StatModifier[i] = fields[i + 1].GetInt16();
|
||||
|
||||
} while (raceStatsResult->NextRow());
|
||||
|
||||
@@ -4294,7 +4300,7 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
uint32 current_class = fields[0].GetUInt8();
|
||||
if (current_class >= MAX_CLASSES)
|
||||
if (!sChrClassesStore.HasRecord(current_class))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Wrong class {} in `player_classlevelstats` table, ignoring.", current_class);
|
||||
continue;
|
||||
@@ -4311,16 +4317,16 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
continue;
|
||||
}
|
||||
|
||||
for (std::size_t race = 0; race < raceStatModifiers.size(); ++race)
|
||||
for (RaceStats const& raceStats : raceStatModifiers)
|
||||
{
|
||||
if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(current_class) }))
|
||||
if (PlayerInfo* playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { raceStats.Race, Classes(current_class) }))
|
||||
{
|
||||
if (!playerInfo->levelInfo)
|
||||
playerInfo->levelInfo = std::make_unique<PlayerLevelInfo[]>(sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL));
|
||||
|
||||
PlayerLevelInfo& levelInfo = playerInfo->levelInfo[current_level - 1];
|
||||
for (uint8 i = 0; i < MAX_STATS; ++i)
|
||||
levelInfo.stats[i] = fields[i + 2].GetInt32() + raceStatModifiers[race].StatModifier[i];
|
||||
levelInfo.stats[i] = fields[i + 2].GetInt32() + raceStats.StatModifier[i];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4329,61 +4335,24 @@ void ObjectMgr::LoadPlayerInfo()
|
||||
while (result->NextRow());
|
||||
|
||||
// Fill gaps and check integrity
|
||||
for (uint8 race = 0; race < MAX_RACES; ++race)
|
||||
for (auto const& [raceClass, playerInfo] : _playerInfo)
|
||||
{
|
||||
// skip non existed races
|
||||
if (!sChrRacesStore.LookupEntry(race))
|
||||
continue;
|
||||
auto [race, class_] = raceClass;
|
||||
|
||||
for (uint8 class_ = 0; class_ < MAX_CLASSES; ++class_)
|
||||
// fatal error if no level 1 data
|
||||
if (!playerInfo->levelInfo || playerInfo->levelInfo[0].stats[0] == 0)
|
||||
{
|
||||
// skip non existed classes
|
||||
if (!sChrClassesStore.LookupEntry(class_))
|
||||
continue;
|
||||
TC_LOG_ERROR("sql.sql", "Race {} Class {} Level 1 does not have stats data!", race, class_);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(class_) });
|
||||
if (!playerInfo)
|
||||
continue;
|
||||
|
||||
// skip expansion races if not playing with expansion
|
||||
if (sWorld->getIntConfig(CONFIG_EXPANSION) < EXPANSION_THE_BURNING_CRUSADE && (race == RACE_BLOODELF || race == RACE_DRAENEI))
|
||||
continue;
|
||||
|
||||
// skip expansion classes if not playing with expansion
|
||||
if (sWorld->getIntConfig(CONFIG_EXPANSION) < EXPANSION_WRATH_OF_THE_LICH_KING && class_ == CLASS_DEATH_KNIGHT)
|
||||
continue;
|
||||
|
||||
// skip expansion races if not playing with expansion
|
||||
if (sWorld->getIntConfig(CONFIG_EXPANSION) < EXPANSION_CATACLYSM && (race == RACE_GOBLIN || race == RACE_WORGEN))
|
||||
continue;
|
||||
|
||||
if (sWorld->getIntConfig(CONFIG_EXPANSION) < EXPANSION_MISTS_OF_PANDARIA && (race == RACE_PANDAREN_NEUTRAL || race == RACE_PANDAREN_HORDE || race == RACE_PANDAREN_ALLIANCE))
|
||||
continue;
|
||||
|
||||
if (sWorld->getIntConfig(CONFIG_EXPANSION) < EXPANSION_LEGION && class_ == CLASS_DEMON_HUNTER)
|
||||
continue;
|
||||
|
||||
if (sWorld->getIntConfig(CONFIG_EXPANSION) < EXPANSION_DRAGONFLIGHT && (class_ == CLASS_EVOKER || race == RACE_DRACTHYR_ALLIANCE || race == RACE_DRACTHYR_HORDE))
|
||||
continue;
|
||||
|
||||
if (sWorld->getIntConfig(CONFIG_EXPANSION) < EXPANSION_THE_WAR_WITHIN && (race == RACE_EARTHEN_DWARF_HORDE || race == RACE_EARTHEN_DWARF_ALLIANCE))
|
||||
continue;
|
||||
|
||||
// fatal error if no level 1 data
|
||||
if (!playerInfo->levelInfo || playerInfo->levelInfo[0].stats[0] == 0)
|
||||
// fill level gaps
|
||||
for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
||||
{
|
||||
if (playerInfo->levelInfo[level].stats[0] == 0)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Race {} Class {} Level 1 does not have stats data!", race, class_);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
// fill level gaps
|
||||
for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); ++level)
|
||||
{
|
||||
if (playerInfo->levelInfo[level].stats[0] == 0)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Race {} Class {} Level {} does not have stats data. Using stats data of level {}.", race, class_, level + 1, level);
|
||||
playerInfo->levelInfo[level] = playerInfo->levelInfo[level - 1];
|
||||
}
|
||||
TC_LOG_ERROR("sql.sql", "Race {} Class {} Level {} does not have stats data. Using stats data of level {}.", race, class_, level + 1, level);
|
||||
playerInfo->levelInfo[level] = playerInfo->levelInfo[level - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4468,10 +4437,10 @@ void ObjectMgr::GetPlayerClassLevelInfo(uint32 class_, uint8 level, uint32& base
|
||||
|
||||
void ObjectMgr::GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, PlayerLevelInfo* info) const
|
||||
{
|
||||
if (level < 1 || race >= MAX_RACES || class_ >= MAX_CLASSES)
|
||||
if (level < 1)
|
||||
return;
|
||||
|
||||
PlayerInfo const* pInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, {Races(race), Classes(class_)});
|
||||
PlayerInfo const* pInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(class_) });
|
||||
if (!pInfo)
|
||||
return;
|
||||
|
||||
@@ -10609,10 +10578,6 @@ VehicleAccessoryList const* ObjectMgr::GetVehicleAccessoryList(Vehicle* veh) con
|
||||
|
||||
PlayerInfo const* ObjectMgr::GetPlayerInfo(uint32 race, uint32 class_) const
|
||||
{
|
||||
if (race >= MAX_RACES)
|
||||
return nullptr;
|
||||
if (class_ >= MAX_CLASSES)
|
||||
return nullptr;
|
||||
return Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(class_) });
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef RaceMask_h__
|
||||
#define RaceMask_h__
|
||||
#ifndef TRINITYCORE_RACE_MASK_H
|
||||
#define TRINITYCORE_RACE_MASK_H
|
||||
|
||||
#include "Define.h"
|
||||
#include <type_traits>
|
||||
@@ -76,13 +76,13 @@ enum Races
|
||||
//RACE_ROSTRUM_FAERIE_DRAGON = 83,
|
||||
RACE_EARTHEN_DWARF_HORDE = 84, // TITLE Earthen DESCRIPTION Earthen (Horde) (RaceMask bit 17)
|
||||
RACE_EARTHEN_DWARF_ALLIANCE = 85, // TITLE Earthen DESCRIPTION Earthen (Alliance) (RaceMask bit 18)
|
||||
//RACE_HARRONIR = 86,
|
||||
//RACE_ROSTRUM_AIRSHIP = 87,
|
||||
RACE_HARANIR_ALLIANCE = 86, // TITLE Haranir DESCRIPTION Haranir (Alliance) (RaceMask bit 20)
|
||||
//RACE_ROSTRUM_AIRSHIP_SEASON_1 = 87,
|
||||
//RACE_ROSTRUM_AIRSHIP_SEASON_2 = 90,
|
||||
RACE_HARANIR_HORDE = 91, // TITLE Haranir DESCRIPTION Haranir (Horde) (RaceMask bit 19)
|
||||
//RACE_ROSTRUM_AIRSHIP_SEASON_3 = 92,
|
||||
};
|
||||
|
||||
// max+1 for player race
|
||||
#define MAX_RACES 88
|
||||
|
||||
namespace Trinity
|
||||
{
|
||||
template<typename T>
|
||||
@@ -92,12 +92,12 @@ struct RaceMask
|
||||
|
||||
T RawValue;
|
||||
|
||||
constexpr bool HasRace(uint8 raceId) const
|
||||
constexpr bool HasRace(uint32 raceId) const
|
||||
{
|
||||
return (RawValue & GetMaskForRace(raceId)) != 0;
|
||||
}
|
||||
|
||||
static constexpr int32 GetRaceBit(uint8 raceId)
|
||||
static constexpr int32 GetRaceBit(uint32 raceId)
|
||||
{
|
||||
switch (raceId)
|
||||
{
|
||||
@@ -139,13 +139,17 @@ struct RaceMask
|
||||
return 17;
|
||||
case RACE_EARTHEN_DWARF_ALLIANCE:
|
||||
return 18;
|
||||
case RACE_HARANIR_HORDE:
|
||||
return 19;
|
||||
case RACE_HARANIR_ALLIANCE:
|
||||
return 20;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static constexpr T GetMaskForRace(uint8 raceId)
|
||||
static constexpr T GetMaskForRace(uint32 raceId)
|
||||
{
|
||||
int32 raceBit = GetRaceBit(raceId);
|
||||
return raceBit >= 0 && uint32(raceBit) < sizeof(T) * 8 ? (T(1) << raceBit) : T(0);
|
||||
@@ -159,55 +163,59 @@ struct RaceMask
|
||||
};
|
||||
}
|
||||
|
||||
constexpr Trinity::RaceMask<uint64> RACEMASK_ALL_PLAYABLE = { std::integral_constant<uint64,
|
||||
inline constexpr Trinity::RaceMask<uint64> RACEMASK_ALL_PLAYABLE = { std::integral_constant<uint64,
|
||||
// force compile time evaluation via integral_constant
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HUMAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_ORC) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_NIGHTELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_UNDEAD_PLAYER) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_TAUREN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_GNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_TROLL) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_BLOODELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_GOBLIN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_WORGEN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_NEUTRAL) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_HORDE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_NIGHTBORNE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HIGHMOUNTAIN_TAUREN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_VOID_ELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_ZANDALARI_TROLL) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_KUL_TIRAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DARK_IRON_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_VULPERA) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_MAGHAR_ORC) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_MECHAGNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRACTHYR_HORDE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_EARTHEN_DWARF_HORDE)>::value };
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HUMAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_ORC) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_NIGHTELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_UNDEAD_PLAYER) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_TAUREN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_GNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_TROLL) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_BLOODELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_GOBLIN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_WORGEN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_NEUTRAL) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_HORDE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_NIGHTBORNE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HIGHMOUNTAIN_TAUREN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_VOID_ELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_ZANDALARI_TROLL) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_KUL_TIRAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DARK_IRON_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_VULPERA) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_MAGHAR_ORC) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_MECHAGNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRACTHYR_HORDE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_EARTHEN_DWARF_HORDE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_EARTHEN_DWARF_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HARANIR_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HARANIR_HORDE)>::value };
|
||||
|
||||
constexpr Trinity::RaceMask<uint64> RACEMASK_NEUTRAL = { std::integral_constant<uint64, Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_NEUTRAL)>::value };
|
||||
inline constexpr Trinity::RaceMask<uint64> RACEMASK_NEUTRAL = { std::integral_constant<uint64, Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_NEUTRAL)>::value };
|
||||
|
||||
constexpr Trinity::RaceMask<uint64> RACEMASK_ALLIANCE = { std::integral_constant<uint64,
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HUMAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_NIGHTELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_GNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_WORGEN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_VOID_ELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_KUL_TIRAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DARK_IRON_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_MECHAGNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_EARTHEN_DWARF_ALLIANCE)>::value };
|
||||
inline constexpr Trinity::RaceMask<uint64> RACEMASK_ALLIANCE = { std::integral_constant<uint64,
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HUMAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_NIGHTELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_GNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_WORGEN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_PANDAREN_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_VOID_ELF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_KUL_TIRAN) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DARK_IRON_DWARF) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_MECHAGNOME) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_EARTHEN_DWARF_ALLIANCE) |
|
||||
Trinity::RaceMask<uint64>::GetMaskForRace(RACE_HARANIR_ALLIANCE)>::value };
|
||||
|
||||
constexpr Trinity::RaceMask<uint64> RACEMASK_HORDE = { std::integral_constant<uint64, (RACEMASK_ALL_PLAYABLE & ~(RACEMASK_NEUTRAL | RACEMASK_ALLIANCE)).RawValue>::value };
|
||||
inline constexpr Trinity::RaceMask<uint64> RACEMASK_HORDE = { std::integral_constant<uint64, (RACEMASK_ALL_PLAYABLE & ~(RACEMASK_NEUTRAL | RACEMASK_ALLIANCE)).RawValue>::value };
|
||||
|
||||
#endif // RaceMask_h__
|
||||
#endif // TRINITYCORE_RACE_MASK_H
|
||||
|
||||
@@ -60,12 +60,14 @@ TC_API_EXPORT EnumText EnumUtils<Races>::ToString(Races value)
|
||||
case RACE_DRACTHYR_HORDE: return { "RACE_DRACTHYR_HORDE", "Dracthyr", "Dracthyr (Horde) (RaceMask bit 15)" };
|
||||
case RACE_EARTHEN_DWARF_HORDE: return { "RACE_EARTHEN_DWARF_HORDE", "Earthen", "Earthen (Horde) (RaceMask bit 17)" };
|
||||
case RACE_EARTHEN_DWARF_ALLIANCE: return { "RACE_EARTHEN_DWARF_ALLIANCE", "Earthen", "Earthen (Alliance) (RaceMask bit 18)" };
|
||||
case RACE_HARANIR_ALLIANCE: return { "RACE_HARANIR_ALLIANCE", "Haranir", "Haranir (Alliance) (RaceMask bit 20)" };
|
||||
case RACE_HARANIR_HORDE: return { "RACE_HARANIR_HORDE", "Haranir", "Haranir (Horde) (RaceMask bit 19)" };
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT size_t EnumUtils<Races>::Count() { return 29; }
|
||||
TC_API_EXPORT size_t EnumUtils<Races>::Count() { return 31; }
|
||||
|
||||
template <>
|
||||
TC_API_EXPORT Races EnumUtils<Races>::FromIndex(size_t index)
|
||||
@@ -101,6 +103,8 @@ TC_API_EXPORT Races EnumUtils<Races>::FromIndex(size_t index)
|
||||
case 26: return RACE_DRACTHYR_HORDE;
|
||||
case 27: return RACE_EARTHEN_DWARF_HORDE;
|
||||
case 28: return RACE_EARTHEN_DWARF_ALLIANCE;
|
||||
case 29: return RACE_HARANIR_ALLIANCE;
|
||||
case 30: return RACE_HARANIR_HORDE;
|
||||
default: throw std::out_of_range("index");
|
||||
}
|
||||
}
|
||||
@@ -139,6 +143,8 @@ TC_API_EXPORT size_t EnumUtils<Races>::ToIndex(Races value)
|
||||
case RACE_DRACTHYR_HORDE: return 26;
|
||||
case RACE_EARTHEN_DWARF_HORDE: return 27;
|
||||
case RACE_EARTHEN_DWARF_ALLIANCE: return 28;
|
||||
case RACE_HARANIR_ALLIANCE: return 29;
|
||||
case RACE_HARANIR_HORDE: return 30;
|
||||
default: throw std::out_of_range("value");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -799,6 +799,8 @@ CharacterCreating.Disabled = 0
|
||||
# 65536 - (Disabled, Dracthyr Alliance)
|
||||
# 131072 - (Disabled, Earthen Horde)
|
||||
# 262144 - (Disabled, Earthen Alliance)
|
||||
# 524288 - (Disabled, Haranir Horde)
|
||||
# 1048576 - (Disabled, Haranir Alliance)
|
||||
# 2097152 - (Disabled, Worgen)
|
||||
# 8388608 - (Disabled, Pandaren Neutral)
|
||||
# 16777216 - (Disabled, Pandaren Alliance)
|
||||
|
||||
Reference in New Issue
Block a user