From 1b91ed5424ff3c3db93d100271192a257323158b Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sat, 11 Sep 2021 17:13:03 +0200 Subject: [PATCH] Core/Spells: no longer round PPM chance calculation results and stay more faithful to the original formula --- src/server/game/Entities/Unit/Unit.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 762351eab6..73327e5069 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8166,7 +8166,7 @@ float Unit::GetWeaponProcChance() const return 0; } -float Unit::GetPPMProcChance(uint32 WeaponSpeed, float PPM, SpellInfo const* spellProto) const +float Unit::GetPPMProcChance(uint32 weaponSpeed, float PPM, SpellInfo const* spellProto) const { // proc per minute chance calculation if (PPM <= 0) @@ -8177,7 +8177,8 @@ float Unit::GetPPMProcChance(uint32 WeaponSpeed, float PPM, SpellInfo const* spe if (Player* modOwner = GetSpellModOwner()) modOwner->ApplySpellMod(spellProto->Id, SPELLMOD_PROC_PER_MINUTE, PPM); - return std::floor((WeaponSpeed * PPM) / 600.0f); // result is chance in percents (probability = Speed_in_sec * (PPM / 60)) + // result is chance in percents (probability = Speed_in_sec * (PPM / 60)) + return (((float)weaponSpeed / IN_MILLISECONDS) * PPM) / 60.0f; } void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry)