aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-09-26 21:34:56 +0200
committerShauren <shauren.trinity@gmail.com>2018-09-26 23:08:23 +0200
commitdd356ea04c83b288bdd033222a400f82a9478cbe (patch)
treead7f027fa2d522dbd9f97a38a4835feef965d560
parenta6fb448b44b5c7e64e6ea960bf951ccf0a8dd0c9 (diff)
Core/Misc: Extended racemasks in db to uint64
-rw-r--r--sql/updates/world/master/2018_09_26_00_world.sql4
-rw-r--r--src/common/Configuration/Config.cpp7
-rw-r--r--src/common/Configuration/Config.h3
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp6
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp6
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp1
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.cpp2
-rw-r--r--src/server/game/Entities/Item/ItemTemplate.h2
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp16
-rw-r--r--src/server/game/Globals/ObjectMgr.h6
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp8
-rw-r--r--src/server/game/Spells/SpellMgr.cpp4
-rw-r--r--src/server/game/Spells/SpellMgr.h2
-rw-r--r--src/server/game/World/World.cpp3
-rw-r--r--src/server/game/World/World.h13
17 files changed, 54 insertions, 34 deletions
diff --git a/sql/updates/world/master/2018_09_26_00_world.sql b/sql/updates/world/master/2018_09_26_00_world.sql
new file mode 100644
index 00000000000..af7d0ed76d9
--- /dev/null
+++ b/sql/updates/world/master/2018_09_26_00_world.sql
@@ -0,0 +1,4 @@
+ALTER TABLE `mail_level_reward` CHANGE `raceMask` `raceMask` bigint(20) unsigned NOT NULL;
+ALTER TABLE `playercreateinfo_spell_custom` CHANGE `racemask` `racemask` bigint(20) unsigned NOT NULL;
+ALTER TABLE `playercreateinfo_cast_spell` CHANGE `raceMask` `raceMask` bigint(20) unsigned NOT NULL;
+ALTER TABLE `spell_area` CHANGE `racemask` `racemask` bigint(20) unsigned NOT NULL;
diff --git a/src/common/Configuration/Config.cpp b/src/common/Configuration/Config.cpp
index df4e5fd151d..a46f1ccaccc 100644
--- a/src/common/Configuration/Config.cpp
+++ b/src/common/Configuration/Config.cpp
@@ -135,7 +135,12 @@ bool ConfigMgr::GetBoolDefault(std::string const& name, bool def) const
return StringToBool(val);
}
-int ConfigMgr::GetIntDefault(std::string const& name, int def) const
+int32 ConfigMgr::GetIntDefault(std::string const& name, int32 def) const
+{
+ return GetValueDefault(name, def);
+}
+
+int64 ConfigMgr::GetInt64Default(std::string const& name, int64 def) const
{
return GetValueDefault(name, def);
}
diff --git a/src/common/Configuration/Config.h b/src/common/Configuration/Config.h
index a6075008969..550e6db5d6e 100644
--- a/src/common/Configuration/Config.h
+++ b/src/common/Configuration/Config.h
@@ -40,7 +40,8 @@ public:
std::string GetStringDefault(std::string const& name, const std::string& def) const;
bool GetBoolDefault(std::string const& name, bool def) const;
- int GetIntDefault(std::string const& name, int def) const;
+ int32 GetIntDefault(std::string const& name, int32 def) const;
+ int64 GetInt64Default(std::string const& name, int64 def) const;
float GetFloatDefault(std::string const& name, float def) const;
std::string const& GetFilename();
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index a491df3254f..744b87847bc 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -107,7 +107,7 @@ bool CriteriaData::IsValid(Criteria const* criteria)
criteria->ID, criteria->Entry->Type, DataType, ClassRace.Class);
return false;
}
- if (ClassRace.Race && ((1 << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0)
+ if (ClassRace.Race && ((UI64LIT(1) << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0)
{
TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) for data type CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE (%u) contains a non-existing race in value2 (%u), ignored.",
criteria->ID, criteria->Entry->Type, DataType, ClassRace.Race);
@@ -252,7 +252,7 @@ bool CriteriaData::IsValid(Criteria const* criteria)
criteria->ID, criteria->Entry->Type, DataType, ClassRace.Class);
return false;
}
- if (ClassRace.Race && ((1 << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0)
+ if (ClassRace.Race && ((UI64LIT(1) << (ClassRace.Race-1)) & RACEMASK_ALL_PLAYABLE) == 0)
{
TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) for data type CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE (%u) contains a non-existing race entry in value2 (%u), ignored.",
criteria->ID, criteria->Entry->Type, DataType, ClassRace.Race);
@@ -595,7 +595,7 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0
for (RewardedQuestSet::const_iterator itr = rewQuests.begin(); itr != rewQuests.end(); ++itr)
{
Quest const* quest = sObjectMgr->GetQuestTemplate(*itr);
- if (quest && quest->GetZoneOrSort() >= 0 && uint32(quest->GetZoneOrSort()) == criteria->Entry->Asset.ZoneID)
+ if (quest && quest->GetZoneOrSort() >= 0 && quest->GetZoneOrSort() == criteria->Entry->Asset.ZoneID)
++counter;
}
SetCriteriaProgress(criteria, counter, referencePlayer);
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index bad5c195667..685486fd749 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -2002,7 +2002,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const
}
case CONDITION_CLASS:
{
- if (!(cond->ConditionValue1 & CLASSMASK_ALL_PLAYABLE))
+ if (cond->ConditionValue1 & ~CLASSMASK_ALL_PLAYABLE)
{
TC_LOG_ERROR("sql.sql", "%s has non existing classmask (%u), skipped.", cond->ToString(true).c_str(), cond->ConditionValue1 & ~CLASSMASK_ALL_PLAYABLE);
return false;
@@ -2011,9 +2011,9 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const
}
case CONDITION_RACE:
{
- if (!(cond->ConditionValue1 & RACEMASK_ALL_PLAYABLE))
+ if (cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE)
{
- TC_LOG_ERROR("sql.sql", "%s has non existing racemask (%u), skipped.", cond->ToString(true).c_str(), cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE);
+ TC_LOG_ERROR("sql.sql", "%s has non existing racemask (" UI64FMTD "), skipped.", cond->ToString(true).c_str(), cond->ConditionValue1 & ~RACEMASK_ALL_PLAYABLE);
return false;
}
break;
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 52ae4deaa2f..0adeac47f51 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -2685,7 +2685,6 @@ void DB2Manager::Zone2MapCoordinates(uint32 areaId, float& x, float& y) const
if (!areaEntry)
return;
- int32 uiMapId = -1;
for (auto assignment : Trinity::Containers::MapEqualRange(_uiMapAssignmentByArea[UI_MAP_SYSTEM_WORLD], areaId))
{
if (assignment.second->MapID >= 0 && assignment.second->MapID != areaEntry->ContinentID)
diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp
index d541f70215d..43c817cde35 100644
--- a/src/server/game/Entities/Item/ItemTemplate.cpp
+++ b/src/server/game/Entities/Item/ItemTemplate.cpp
@@ -21,7 +21,7 @@
#include "ItemTemplate.h"
#include "Player.h"
-uint32 const SocketColorToGemTypeMask[19] =
+int32 const SocketColorToGemTypeMask[19] =
{
0,
SOCKET_COLOR_META,
diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h
index b9ea3bd7d23..6e806f0c124 100644
--- a/src/server/game/Entities/Item/ItemTemplate.h
+++ b/src/server/game/Entities/Item/ItemTemplate.h
@@ -337,7 +337,7 @@ enum SocketColor
SOCKET_COLOR_RELIC_HOLY = 0x10000
};
-extern uint32 const SocketColorToGemTypeMask[19];
+extern int32 const SocketColorToGemTypeMask[19];
#define SOCKET_COLOR_STANDARD (SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE)
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 2371a9b8a82..5bbe17cb277 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -6489,7 +6489,6 @@ void Player::AddHonorXP(uint32 xp)
void Player::SetHonorLevel(uint8 level)
{
uint8 oldHonorLevel = GetHonorLevel();
- uint8 prestige = GetPrestigeLevel();
if (level == oldHonorLevel)
return;
@@ -24489,7 +24488,7 @@ Player* Player::GetTrader() const
bool Player::IsSpellFitByClassAndRace(uint32 spell_id) const
{
- uint32 racemask = getRaceMask();
+ uint64 racemask = getRaceMask();
uint32 classmask = getClassMask();
SkillLineAbilityMapBounds bounds = sSpellMgr->GetSkillLineAbilityMapBounds(spell_id);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 967d4fae3f4..177c6aaeb4d 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1502,7 +1502,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
static bool IsValidGender(uint8 Gender) { return Gender <= GENDER_FEMALE; }
static bool IsValidClass(uint8 Class) { return ((1 << (Class - 1)) & CLASSMASK_ALL_PLAYABLE) != 0; }
- static bool IsValidRace(uint8 Race) { return ((1 << (Race - 1)) & RACEMASK_ALL_PLAYABLE) != 0; }
+ static bool IsValidRace(uint8 Race) { return ((UI64LIT(1) << (Race - 1)) & RACEMASK_ALL_PLAYABLE) != 0; }
static bool ValidateAppearance(uint8 race, uint8 class_, uint8 gender, uint8 hairID, uint8 hairColor, uint8 faceID, uint8 facialHair, uint8 skinColor, std::array<uint8, PLAYER_CUSTOM_DISPLAY_SIZE> const& customDisplay, bool create = false);
/*********************************************************/
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 53dbcb38f33..6f562ba412e 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -3492,13 +3492,13 @@ void ObjectMgr::LoadPlayerInfo()
do
{
Field* fields = result->Fetch();
- uint32 raceMask = fields[0].GetUInt32();
+ uint64 raceMask = fields[0].GetUInt64();
uint32 classMask = fields[1].GetUInt32();
uint32 spellId = fields[2].GetUInt32();
if (raceMask != 0 && !(raceMask & RACEMASK_ALL_PLAYABLE))
{
- TC_LOG_ERROR("sql.sql", "Wrong race mask %u in `playercreateinfo_spell_custom` table, ignoring.", raceMask);
+ TC_LOG_ERROR("sql.sql", "Wrong race mask " UI64FMTD " in `playercreateinfo_spell_custom` table, ignoring.", raceMask);
continue;
}
@@ -3510,7 +3510,7 @@ void ObjectMgr::LoadPlayerInfo()
for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex)
{
- if (raceMask == 0 || ((1 << (raceIndex - 1)) & raceMask))
+ if (raceMask == 0 || ((UI64LIT(1) << (raceIndex - 1)) & raceMask))
{
for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex)
{
@@ -3552,13 +3552,13 @@ void ObjectMgr::LoadPlayerInfo()
do
{
Field* fields = result->Fetch();
- uint32 raceMask = fields[0].GetUInt32();
+ uint64 raceMask = fields[0].GetUInt64();
uint32 classMask = fields[1].GetUInt32();
uint32 spellId = fields[2].GetUInt32();
if (raceMask != 0 && !(raceMask & RACEMASK_ALL_PLAYABLE))
{
- TC_LOG_ERROR("sql.sql", "Wrong race mask %u in `playercreateinfo_cast_spell` table, ignoring.", raceMask);
+ TC_LOG_ERROR("sql.sql", "Wrong race mask " UI64FMTD " in `playercreateinfo_cast_spell` table, ignoring.", raceMask);
continue;
}
@@ -3570,7 +3570,7 @@ void ObjectMgr::LoadPlayerInfo()
for (uint32 raceIndex = RACE_HUMAN; raceIndex < MAX_RACES; ++raceIndex)
{
- if (raceMask == 0 || ((1 << (raceIndex - 1)) & raceMask))
+ if (raceMask == 0 || ((UI64LIT(1) << (raceIndex - 1)) & raceMask))
{
for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex)
{
@@ -8578,7 +8578,7 @@ void ObjectMgr::LoadMailLevelRewards()
Field* fields = result->Fetch();
uint8 level = fields[0].GetUInt8();
- uint32 raceMask = fields[1].GetUInt32();
+ uint64 raceMask = fields[1].GetUInt64();
uint32 mailTemplateId = fields[2].GetUInt32();
uint32 senderEntry = fields[3].GetUInt32();
@@ -8590,7 +8590,7 @@ void ObjectMgr::LoadMailLevelRewards()
if (!(raceMask & RACEMASK_ALL_PLAYABLE))
{
- TC_LOG_ERROR("sql.sql", "Table `mail_level_reward` has raceMask (%u) for level %u that not include any player races, ignoring.", raceMask, level);
+ TC_LOG_ERROR("sql.sql", "Table `mail_level_reward` has raceMask (" UI64FMTD ") for level %u that not include any player races, ignoring.", raceMask, level);
continue;
}
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 51cbe07bcee..4be76f3cf8c 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -609,9 +609,9 @@ struct PetLevelInfo
struct MailLevelReward
{
MailLevelReward() : raceMask(0), mailTemplateId(0), senderEntry(0) { }
- MailLevelReward(uint32 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) { }
+ MailLevelReward(uint64 _raceMask, uint32 _mailTemplateId, uint32 _senderEntry) : raceMask(_raceMask), mailTemplateId(_mailTemplateId), senderEntry(_senderEntry) { }
- uint32 raceMask;
+ uint64 raceMask;
uint32 mailTemplateId;
uint32 senderEntry;
};
@@ -1308,7 +1308,7 @@ class TC_GAME_API ObjectMgr
ExclusiveQuestGroups mExclusiveQuestGroups;
- MailLevelReward const* GetMailLevelReward(uint8 level, uint32 raceMask)
+ MailLevelReward const* GetMailLevelReward(uint8 level, uint64 raceMask)
{
MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level);
if (map_itr == _mailLevelRewardStore.end())
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 51e97ed1b8d..9de1bcf3f98 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -506,8 +506,8 @@ void WorldSession::HandleCharCreateOpcode(WorldPackets::Character::CreateCharact
if (!HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_RACEMASK))
{
- uint32 raceMaskDisabled = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK);
- if ((1 << (charCreate.CreateInfo->Race - 1)) & raceMaskDisabled)
+ uint64 raceMaskDisabled = sWorld->GetUInt64Config(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK);
+ if ((UI64LIT(1) << (charCreate.CreateInfo->Race - 1)) & raceMaskDisabled)
{
SendCharCreate(CHAR_CREATE_DISABLED);
return;
@@ -1834,8 +1834,8 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
if (!HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_RACEMASK))
{
- uint32 raceMaskDisabled = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK);
- if ((1 << (factionChangeInfo->RaceID - 1)) & raceMaskDisabled)
+ uint64 raceMaskDisabled = sWorld->GetUInt64Config(CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK);
+ if ((UI64LIT(1) << (factionChangeInfo->RaceID - 1)) & raceMaskDisabled)
{
SendCharFactionChange(CHAR_CREATE_ERROR, factionChangeInfo.get());
return;
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index ca9bcfaf50d..483f695283f 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -2041,7 +2041,7 @@ void SpellMgr::LoadSpellAreas()
spellArea.questEndStatus = fields[4].GetUInt32();
spellArea.questEnd = fields[5].GetUInt32();
spellArea.auraSpell = fields[6].GetInt32();
- spellArea.raceMask = fields[7].GetUInt32();
+ spellArea.raceMask = fields[7].GetUInt64();
spellArea.gender = Gender(fields[8].GetUInt8());
spellArea.flags = fields[9].GetUInt8();
@@ -2162,7 +2162,7 @@ void SpellMgr::LoadSpellAreas()
if (spellArea.raceMask && (spellArea.raceMask & RACEMASK_ALL_PLAYABLE) == 0)
{
- TC_LOG_ERROR("sql.sql", "The spell %u listed in `spell_area` has wrong race mask (%u) requirement.", spell, spellArea.raceMask);
+ TC_LOG_ERROR("sql.sql", "The spell %u listed in `spell_area` has wrong race mask (" UI64FMTD ") requirement.", spell, spellArea.raceMask);
continue;
}
diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h
index eeb0399f357..50720cb53a6 100644
--- a/src/server/game/Spells/SpellMgr.h
+++ b/src/server/game/Spells/SpellMgr.h
@@ -464,7 +464,7 @@ struct TC_GAME_API SpellArea
uint32 questStart; // quest start (quest must be active or rewarded for spell apply)
uint32 questEnd; // quest end (quest must not be rewarded for spell apply)
int32 auraSpell; // spell aura must be applied for spell apply)if possitive) and it must not be applied in other case
- uint32 raceMask; // can be applied only to races
+ uint64 raceMask; // can be applied only to races
Gender gender; // can be applied only to gender
uint32 questStartStatus; // QuestStatus that quest_start must have in order to keep the spell
uint32 questEndStatus; // QuestStatus that the quest_end must have in order to keep the spell (if the quest_end's status is different than this, the spell will be dropped)
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 23a62783c83..da67f724864 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -145,6 +145,7 @@ World::World()
memset(rate_values, 0, sizeof(rate_values));
memset(m_int_configs, 0, sizeof(m_int_configs));
+ memset(m_int64_configs, 0, sizeof(m_int64_configs));
memset(m_bool_configs, 0, sizeof(m_bool_configs));
memset(m_float_configs, 0, sizeof(m_float_configs));
}
@@ -805,7 +806,7 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_CHARTER_COST_ARENA_5v5] = sConfigMgr->GetIntDefault("ArenaTeam.CharterCost.5v5", 2000000);
m_int_configs[CONFIG_CHARACTER_CREATING_DISABLED] = sConfigMgr->GetIntDefault("CharacterCreating.Disabled", 0);
- m_int_configs[CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK] = sConfigMgr->GetIntDefault("CharacterCreating.Disabled.RaceMask", 0);
+ m_int64_configs[CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK] = sConfigMgr->GetInt64Default("CharacterCreating.Disabled.RaceMask", 0);
m_int_configs[CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK] = sConfigMgr->GetIntDefault("CharacterCreating.Disabled.ClassMask", 0);
m_int_configs[CONFIG_CHARACTERS_PER_REALM] = sConfigMgr->GetIntDefault("CharactersPerRealm", MAX_CHARACTERS_PER_REALM);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 16850da37ae..58d4f4f35b0 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -237,7 +237,6 @@ enum WorldIntConfigs
CONFIG_MIN_CHARTER_NAME,
CONFIG_MIN_PET_NAME,
CONFIG_CHARACTER_CREATING_DISABLED,
- CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK,
CONFIG_CHARACTER_CREATING_DISABLED_CLASSMASK,
CONFIG_CHARACTERS_PER_ACCOUNT,
CONFIG_CHARACTERS_PER_REALM,
@@ -406,6 +405,12 @@ enum WorldIntConfigs
INT_CONFIG_VALUE_COUNT
};
+enum WorldInt64Configs
+{
+ CONFIG_CHARACTER_CREATING_DISABLED_RACEMASK,
+ INT64_CONFIT_VALUE_COUNT
+};
+
/// Server rates
enum Rates
{
@@ -743,6 +748,11 @@ class TC_GAME_API World
return index < INT_CONFIG_VALUE_COUNT ? m_int_configs[index] : 0;
}
+ uint64 GetUInt64Config(WorldInt64Configs index) const
+ {
+ return index < INT64_CONFIT_VALUE_COUNT ? m_int64_configs[index] : 0;
+ }
+
void setWorldState(uint32 index, uint32 value);
uint32 getWorldState(uint32 index) const;
void LoadWorldStates();
@@ -856,6 +866,7 @@ class TC_GAME_API World
float rate_values[MAX_RATES];
uint32 m_int_configs[INT_CONFIG_VALUE_COUNT];
+ uint64 m_int64_configs[INT64_CONFIT_VALUE_COUNT];
bool m_bool_configs[BOOL_CONFIG_VALUE_COUNT];
float m_float_configs[FLOAT_CONFIG_VALUE_COUNT];
typedef std::map<uint32, uint32> WorldStatesMap;