feat(Core/Player): Allow spell validation to be skipped at server owner's risk (#22521)

Co-authored-by: Tereneckla <Tereneckla@pm.me>
This commit is contained in:
Christian M
2025-07-26 18:26:00 -04:00
committed by GitHub
parent 00f411c0b1
commit d2fb893f87
4 changed files with 15 additions and 0 deletions

View File

@@ -1765,6 +1765,16 @@ CleanCharacterDB = 0
PersistentCharacterCleanFlags = 0
#
# ValidateSkillLearnedBySpells
# Description: If enabled, players will lose spells that are invalid for their race/class.
# Default: 1 - (Enabled, enforce valid spells)
# 0 - (Disabled, allow invalid spells)
# Disabling this and then having your character learn spells which require DBC edits can result in the character not being saved in the database
# Disable AT YOUR OWN RISK
ValidateSkillLearnedBySpells = 1
#
###################################################################################################

View File

@@ -3103,6 +3103,9 @@ bool Player::addSpell(uint32 spellId, uint8 addSpecMask, bool updateActive, bool
bool Player::CheckSkillLearnedBySpell(uint32 spellId)
{
if (!sWorld->getBoolConfig(CONFIG_VALIDATE_SKILL_LEARNED_BY_SPELLS))
return true;
SkillLineAbilityMapBounds skill_bounds = sSpellMgr->GetSkillLineAbilityMapBounds(spellId);
uint32 errorSkill = 0;
for (SkillLineAbilityMap::const_iterator sla = skill_bounds.first; sla != skill_bounds.second; ++sla)

View File

@@ -160,6 +160,7 @@ void WorldConfig::BuildConfigCache()
SetConfigValue<uint32>(CONFIG_INTERVAL_SAVE, "PlayerSaveInterval", 900000);
SetConfigValue<uint32>(CONFIG_INTERVAL_DISCONNECT_TOLERANCE, "DisconnectToleranceInterval", 0);
SetConfigValue<bool>(CONFIG_STATS_SAVE_ONLY_ON_LOGOUT, "PlayerSave.Stats.SaveOnlyOnLogout", true);
SetConfigValue<bool>(CONFIG_VALIDATE_SKILL_LEARNED_BY_SPELLS, "ValidateSkillLearnedBySpells", true);
SetConfigValue<uint32>(CONFIG_MIN_LEVEL_STAT_SAVE, "PlayerSave.Stats.MinLevel", 0, ConfigValueCache::Reloadable::Yes, [](uint32 const& value) { return value < MAX_LEVEL; }, "< MAX_LEVEL");

View File

@@ -474,6 +474,7 @@ enum ServerConfigs
RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE,
RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER,
CONFIG_NEW_CHAR_STRING,
CONFIG_VALIDATE_SKILL_LEARNED_BY_SPELLS,
MAX_NUM_SERVER_CONFIGS
};