From da3e2f433b93370b526adabb5c9f162f362f63a9 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 22 Feb 2021 15:48:55 -0500 Subject: [PATCH] Core/Auras: Implemented SPELL_AURA_MOD_COMBAT_RATING_FROM_COMBAT_RATING Port From (https://github.com/TrinityCore/TrinityCore/commit/b811da080c1e2a73a8f7787716b5d51ed6e6b3b6) --- Source/Game/Entities/StatSystem.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Source/Game/Entities/StatSystem.cs b/Source/Game/Entities/StatSystem.cs index 9706db9cd..dec833bd7 100644 --- a/Source/Game/Entities/StatSystem.cs +++ b/Source/Game/Entities/StatSystem.cs @@ -1299,8 +1299,21 @@ namespace Game.Entities { int amount = baseRatingValue[(int)cr]; - var modRatingPct = GetAuraEffectsByType(AuraType.ModRatingPct); - foreach (var aurEff in modRatingPct) + foreach (AuraEffect aurEff in GetAuraEffectsByType(AuraType.ModCombatRatingFromCombatRating)) + { + if ((aurEff.GetMiscValueB() & (1 << (int)cr)) != 0) + { + short? highestRating = null; + for (byte dependentRating = 0; dependentRating < (int)CombatRating.Max; ++dependentRating) + if ((aurEff.GetMiscValue() & (1 << dependentRating)) != 0) + highestRating = (short)Math.Max(highestRating.HasValue ? highestRating.Value : baseRatingValue[dependentRating], baseRatingValue[dependentRating]); + + if (highestRating != 0) + amount += MathFunctions.CalculatePct(highestRating.Value, aurEff.GetAmount()); + } + } + + foreach (var aurEff in GetAuraEffectsByType(AuraType.ModRatingPct)) if (Convert.ToBoolean(aurEff.GetMiscValue() & (1 << (int)cr))) amount += MathFunctions.CalculatePct(amount, aurEff.GetAmount());