Core/Unit: cleanup and minor fixes of miss and resist calculations
- Removed Unit::GetUnitMeleeSkill as it was basically a copy of GetMaxSkillValueForLevel - Removed static from GetEffectiveResistChance, as this was passed anyways, changed name to CalculateAverageResistReduction, which better reflects what it does - Fix melee miss chances calculated from attacker maxskill instead of victim maxskill - Do actual checks if spell can be resisted/missed in MagicSpellHitResult (ie chances > 0) - Fixed SPELLMOD_RESIST_MISS_CHANCE calculation in MeleeSpellMissChance - Minor codestyle and cleanup of diminishing returns calcs (cherry picked from commit e565b34f6d24411e210151d0d03e524f94cdff85)
This commit is contained in:
1 parent
0e8422c30a
commit
d441e864c4
3 files changed
+105
-91
No files matched your search
@@ -941,7 +941,7 @@ class TC_GAME_API Unit : public WorldObject
|
||||
uint32 GetResistance(SpellSchools school) const { return GetUInt32Value(UNIT_FIELD_RESISTANCES+school); }
|
||||
uint32 GetResistance(SpellSchoolMask mask) const;
|
||||
void SetResistance(SpellSchools school, int32 val) { SetStatInt32Value(UNIT_FIELD_RESISTANCES+school, val); }
|
||||
static float GetEffectiveResistChance(Unit const* owner, SpellSchoolMask schoolMask, Unit const* victim, SpellInfo const* spellInfo = nullptr);
|
||||
float CalculateAverageResistReduction(SpellSchoolMask schoolMask, Unit const* victim, SpellInfo const* spellInfo = nullptr) const;
|
||||
|
||||
uint32 GetHealth() const { return GetUInt32Value(UNIT_FIELD_HEALTH); }
|
||||
uint32 GetMaxHealth() const { return GetUInt32Value(UNIT_FIELD_MAXHEALTH); }
|
||||
@@ -1035,7 +1035,7 @@ class TC_GAME_API Unit : public WorldObject
|
||||
void SendDurabilityLoss(Player* receiver, uint32 percent);
|
||||
void PlayOneShotAnimKitId(uint16 animKitId);
|
||||
|
||||
uint16 GetMaxSkillValueForLevel(Unit const* target = nullptr) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; }
|
||||
uint32 GetMaxSkillValueForLevel(Unit const* target = nullptr) const { return (target ? getLevelForTarget(target) : getLevel()) * 5; }
|
||||
void DealDamageMods(Unit const* victim, uint32 &damage, uint32* absorb) const;
|
||||
uint32 DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDamage = nullptr, DamageEffectType damagetype = DIRECT_DAMAGE, SpellSchoolMask damageSchoolMask = SPELL_SCHOOL_MASK_NORMAL, SpellInfo const* spellProto = nullptr, bool durabilityLoss = true);
|
||||
void Kill(Unit* victim, bool durabilityLoss = true);
|
||||
|
||||
Reference in new issue
Block a user