mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-24 02:46:33 +01:00
Stats Limits
This commit is contained in:
@@ -575,6 +575,10 @@ void Player::UpdateBlockPercentage()
|
||||
value += GetTotalAuraModifier(SPELL_AURA_MOD_BLOCK_PERCENT);
|
||||
// Increase from rating
|
||||
value += GetRatingBonusValue(CR_BLOCK);
|
||||
|
||||
if (sWorld->getBoolConfig(CONFIG_STATS_LIMITS_ENABLE))
|
||||
value = value > sWorld->getFloatConfig(CONFIG_STATS_LIMITS_BLOCK) ? sWorld->getFloatConfig(CONFIG_STATS_LIMITS_BLOCK) : value;
|
||||
|
||||
value = value < 0.0f ? 0.0f : value;
|
||||
}
|
||||
SetStatFloatValue(PLAYER_BLOCK_PERCENTAGE, value);
|
||||
@@ -609,6 +613,10 @@ void Player::UpdateCritPercentage(WeaponAttackType attType)
|
||||
float value = GetTotalPercentageModValue(modGroup) + GetRatingBonusValue(cr);
|
||||
// Modify crit from weapon skill and maximized defense skill of same level victim difference
|
||||
value += (int32(GetWeaponSkillValue(attType)) - int32(GetMaxSkillValueForLevel())) * 0.04f;
|
||||
|
||||
if (sWorld->getBoolConfig(CONFIG_STATS_LIMITS_ENABLE))
|
||||
value = value > sWorld->getFloatConfig(CONFIG_STATS_LIMITS_CRIT) ? sWorld->getFloatConfig(CONFIG_STATS_LIMITS_CRIT) : value;
|
||||
|
||||
value = value < 0.0f ? 0.0f : value;
|
||||
SetStatFloatValue(index, value);
|
||||
}
|
||||
@@ -700,6 +708,10 @@ void Player::UpdateParryPercentage()
|
||||
nondiminishing += GetTotalAuraModifier(SPELL_AURA_MOD_PARRY_PERCENT);
|
||||
// apply diminishing formula to diminishing parry chance
|
||||
value = nondiminishing + diminishing * parry_cap[pclass] / (diminishing + parry_cap[pclass] * m_diminishing_k[pclass]);
|
||||
|
||||
if (sWorld->getBoolConfig(CONFIG_STATS_LIMITS_ENABLE))
|
||||
value = value > sWorld->getFloatConfig(CONFIG_STATS_LIMITS_PARRY) ? sWorld->getFloatConfig(CONFIG_STATS_LIMITS_PARRY) : value;
|
||||
|
||||
value = value < 0.0f ? 0.0f : value;
|
||||
}
|
||||
SetStatFloatValue(PLAYER_PARRY_PERCENTAGE, value);
|
||||
@@ -735,6 +747,9 @@ void Player::UpdateDodgePercentage()
|
||||
uint32 pclass = getClass()-1;
|
||||
float value = nondiminishing + (diminishing * dodge_cap[pclass] / (diminishing + dodge_cap[pclass] * m_diminishing_k[pclass]));
|
||||
|
||||
if (sWorld->getBoolConfig(CONFIG_STATS_LIMITS_ENABLE))
|
||||
value = value > sWorld->getFloatConfig(CONFIG_STATS_LIMITS_DODGE) ? sWorld->getFloatConfig(CONFIG_STATS_LIMITS_DODGE) : value;
|
||||
|
||||
value = value < 0.0f ? 0.0f : value;
|
||||
SetStatFloatValue(PLAYER_DODGE_PERCENTAGE, value);
|
||||
}
|
||||
|
||||
@@ -1222,6 +1222,13 @@ void World::LoadConfigSettings(bool reload)
|
||||
m_int_configs[CONFIG_WINTERGRASP_NOBATTLETIME] = ConfigMgr::GetIntDefault("Wintergrasp.NoBattleTimer", 150);
|
||||
m_int_configs[CONFIG_WINTERGRASP_RESTART_AFTER_CRASH] = ConfigMgr::GetIntDefault("Wintergrasp.CrashRestartTimer", 10);
|
||||
|
||||
// Stats limits
|
||||
m_bool_configs[CONFIG_STATS_LIMITS_ENABLE] = ConfigMgr::GetBoolDefault("Stats.Limits.Enable", false);
|
||||
m_float_configs[CONFIG_STATS_LIMITS_DODGE] = ConfigMgr::GetFloatDefault("Stats.Limits.Dodge", 95.0f);
|
||||
m_float_configs[CONFIG_STATS_LIMITS_PARRY] = ConfigMgr::GetFloatDefault("Stats.Limits.Parry", 95.0f);
|
||||
m_float_configs[CONFIG_STATS_LIMITS_BLOCK] = ConfigMgr::GetFloatDefault("Stats.Limits.Block", 95.0f);
|
||||
m_float_configs[CONFIG_STATS_LIMITS_CRIT] = ConfigMgr::GetFloatDefault("Stats.Limits.Crit", 95.0f);
|
||||
|
||||
// call ScriptMgr if we're reloading the configuration
|
||||
if (reload)
|
||||
sScriptMgr->OnConfigLoad(reload);
|
||||
|
||||
@@ -159,6 +159,7 @@ enum WorldBoolConfigs
|
||||
CONFIG_WINTERGRASP_ENABLE,
|
||||
CONFIG_UI_QUESTLEVELS_IN_DIALOGS, // Should we add quest levels to the title in the NPC dialogs?
|
||||
CONFIG_EVENT_ANNOUNCE,
|
||||
CONFIG_STATS_LIMITS_ENABLE,
|
||||
BOOL_CONFIG_VALUE_COUNT
|
||||
};
|
||||
|
||||
@@ -175,6 +176,10 @@ enum WorldFloatConfigs
|
||||
CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS,
|
||||
CONFIG_THREAT_RADIUS,
|
||||
CONFIG_CHANCE_OF_GM_SURVEY,
|
||||
CONFIG_STATS_LIMITS_DODGE,
|
||||
CONFIG_STATS_LIMITS_PARRY,
|
||||
CONFIG_STATS_LIMITS_BLOCK,
|
||||
CONFIG_STATS_LIMITS_CRIT,
|
||||
FLOAT_CONFIG_VALUE_COUNT
|
||||
};
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
# GAME MASTER SETTINGS
|
||||
# VISIBILITY AND DISTANCES
|
||||
# SERVER RATES
|
||||
# STATS LIMITS
|
||||
# AUTO BROADCAST
|
||||
# BATTLEGROUND CONFIG
|
||||
# BATTLEFIELD CONFIG
|
||||
@@ -2003,6 +2004,28 @@ Die.Command.Mode = 1
|
||||
#
|
||||
###################################################################################################
|
||||
|
||||
###################################################################################################
|
||||
# STATS LIMITS
|
||||
#
|
||||
# Stats.Limits.Enable
|
||||
# Description: Enable or disable stats system
|
||||
# Default: 0 - Disabled
|
||||
|
||||
Stats.Limits.Enable = 0
|
||||
|
||||
#
|
||||
# Stats.Limit.[STAT]
|
||||
# Description: Set percentage limit for dodge, parry, block and crit rating
|
||||
# Default: 95.0 (95%)
|
||||
|
||||
Stats.Limits.Dodge = 95.0
|
||||
Stats.Limits.Parry = 95.0
|
||||
Stats.Limits.Block = 95.0
|
||||
Stats.Limits.Crit = 95.0
|
||||
|
||||
#
|
||||
###################################################################################################
|
||||
|
||||
###################################################################################################
|
||||
# AUTO BROADCAST
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user