feat(Core/Conf): Miss Chance Multiplier (#10873)
This commit is contained in:
@@ -3009,11 +3009,18 @@ SpellMissInfo Unit::MagicSpellHitResult(Unit* victim, SpellInfo const* spellInfo
|
|||||||
thisLevel = std::max<int32>(thisLevel, spellInfo->SpellLevel);
|
thisLevel = std::max<int32>(thisLevel, spellInfo->SpellLevel);
|
||||||
int32 levelDiff = int32(victim->getLevelForTarget(this)) - thisLevel;
|
int32 levelDiff = int32(victim->getLevelForTarget(this)) - thisLevel;
|
||||||
|
|
||||||
int32 MISS_CHANCE_MULTIPLIER = sWorld->getRate(
|
int32 MISS_CHANCE_MULTIPLIER;
|
||||||
|
if (sWorld->getBoolConfig(CONFIG_MISS_CHANCE_MULTIPLIER_ONLY_FOR_PLAYERS) && GetTypeId() != TYPEID_PLAYER) // keep it as it was originally (7 and 11)
|
||||||
|
{
|
||||||
|
MISS_CHANCE_MULTIPLIER = victim->GetTypeId() == TYPEID_PLAYER ? 7 : 11;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MISS_CHANCE_MULTIPLIER = sWorld->getRate(
|
||||||
victim->GetTypeId() == TYPEID_PLAYER
|
victim->GetTypeId() == TYPEID_PLAYER
|
||||||
? RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER
|
? RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER
|
||||||
: RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE
|
: RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE);
|
||||||
);
|
}
|
||||||
|
|
||||||
// Base hit chance from attacker and victim levels
|
// Base hit chance from attacker and victim levels
|
||||||
int32 modHitChance = levelDiff < 3
|
int32 modHitChance = levelDiff < 3
|
||||||
|
|||||||
@@ -173,6 +173,7 @@ enum WorldBoolConfigs
|
|||||||
CONFIG_REALM_LOGIN_ENABLED,
|
CONFIG_REALM_LOGIN_ENABLED,
|
||||||
CONFIG_PLAYER_SETTINGS_ENABLED,
|
CONFIG_PLAYER_SETTINGS_ENABLED,
|
||||||
CONFIG_ALLOW_JOIN_BG_AND_LFG,
|
CONFIG_ALLOW_JOIN_BG_AND_LFG,
|
||||||
|
CONFIG_MISS_CHANCE_MULTIPLIER_ONLY_FOR_PLAYERS,
|
||||||
BOOL_CONFIG_VALUE_COUNT
|
BOOL_CONFIG_VALUE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -574,6 +574,7 @@ void World::LoadConfigSettings(bool reload)
|
|||||||
|
|
||||||
rate_values[RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE] = sConfigMgr->GetOption<float>("Rate.MissChanceMultiplier.TargetCreature", 11.0f);
|
rate_values[RATE_MISS_CHANCE_MULTIPLIER_TARGET_CREATURE] = sConfigMgr->GetOption<float>("Rate.MissChanceMultiplier.TargetCreature", 11.0f);
|
||||||
rate_values[RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER] = sConfigMgr->GetOption<float>("Rate.MissChanceMultiplier.TargetPlayer", 7.0f);
|
rate_values[RATE_MISS_CHANCE_MULTIPLIER_TARGET_PLAYER] = sConfigMgr->GetOption<float>("Rate.MissChanceMultiplier.TargetPlayer", 7.0f);
|
||||||
|
m_bool_configs[CONFIG_MISS_CHANCE_MULTIPLIER_ONLY_FOR_PLAYERS] = sConfigMgr->GetOption<bool>("Rate.MissChanceMultiplier.OnlyAffectsPlayer", false);
|
||||||
|
|
||||||
rate_values[RATE_TALENT] = sConfigMgr->GetOption<float>("Rate.Talent", 1.0f);
|
rate_values[RATE_TALENT] = sConfigMgr->GetOption<float>("Rate.Talent", 1.0f);
|
||||||
if (rate_values[RATE_TALENT] < 0.0f)
|
if (rate_values[RATE_TALENT] < 0.0f)
|
||||||
|
|||||||
@@ -2550,6 +2550,7 @@ Die.Command.Mode = 1
|
|||||||
|
|
||||||
# Rate.MissChanceMultiplier.Creature
|
# Rate.MissChanceMultiplier.Creature
|
||||||
# Rate.MissChanceMultiplier.Player
|
# Rate.MissChanceMultiplier.Player
|
||||||
|
# Rate.MissChanceMultiplier.OnlyAffectsPlayer
|
||||||
#
|
#
|
||||||
# Description: When the target is 3 or more level higher than the player,
|
# Description: When the target is 3 or more level higher than the player,
|
||||||
# the chance to hit is determined by the formula: 94 - (levelDiff - 2) * Rate.MissChanceMultiplier
|
# the chance to hit is determined by the formula: 94 - (levelDiff - 2) * Rate.MissChanceMultiplier
|
||||||
@@ -2557,15 +2558,19 @@ Die.Command.Mode = 1
|
|||||||
#
|
#
|
||||||
# Note: this does not affect when the player is less than 3 levels different than the target,
|
# Note: this does not affect when the player is less than 3 levels different than the target,
|
||||||
# where this (linear) formula is used instead to calculate the hit chance: 96 - levelDiff.
|
# where this (linear) formula is used instead to calculate the hit chance: 96 - levelDiff.
|
||||||
|
# You can set Rate.MissChanceMultiplier.OnlyAffectsPlayer to 1 if you only want to affect the MissChance
|
||||||
|
# for player casters only. This way you won't be affecting creature missing chance.
|
||||||
#
|
#
|
||||||
# Example: if you want the chance to keep growing linearly, use 1.
|
# Example: if you want the chance to keep growing linearly, use 1.
|
||||||
#
|
#
|
||||||
# Default: Rate.MissChanceMultiplier.TargetCreature = 11
|
# Default: Rate.MissChanceMultiplier.TargetCreature = 11
|
||||||
# Rate.MissChanceMultiplier.TargetPlayer = 7
|
# Rate.MissChanceMultiplier.TargetPlayer = 7
|
||||||
|
# Rate.MissChanceMultiplier.OnlyAffectsPlayer = 0
|
||||||
#
|
#
|
||||||
|
|
||||||
Rate.MissChanceMultiplier.TargetCreature = 11
|
Rate.MissChanceMultiplier.TargetCreature = 11
|
||||||
Rate.MissChanceMultiplier.TargetPlayer = 7
|
Rate.MissChanceMultiplier.TargetPlayer = 7
|
||||||
|
Rate.MissChanceMultiplier.OnlyAffectsPlayer = 0
|
||||||
|
|
||||||
#
|
#
|
||||||
###################################################################################################
|
###################################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user