From e07fddc51525d0e3788ebd04c8216766c5bc999a Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Sun, 12 Oct 2025 05:49:20 -0400 Subject: [PATCH] fix(Scripts/Item): Introduce Blizzlike Val'anyr absorption value bug. (#23152) --- src/server/scripts/Spells/spell_item.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 44d52f0e7..5b458f44c 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -1503,16 +1503,20 @@ class spell_item_blessing_of_ancient_kings : public AuraScript HealInfo* healInfo = eventInfo.GetHealInfo(); if (!healInfo) - { return; - } int32 absorb = int32(CalculatePct(healInfo->GetHeal(), 15.0f)); // xinef: all heals contribute to one bubble if (AuraEffect* protEff = eventInfo.GetProcTarget()->GetAuraEffect(SPELL_PROTECTION_OF_ANCIENT_KINGS, 0/*, eventInfo.GetActor()->GetGUID()*/)) { - // The shield can grow to a maximum size of 20,000 damage absorbtion - protEff->SetAmount(std::min(protEff->GetAmount() + absorb, 20000)); + // The shield is supposed to cap out at 20,000 absorption... + absorb += protEff->GetAmount(); + + // ...but Blizz wrote this instead. See #23152 for details + if (absorb > 20000) + absorb = 200000; + + protEff->SetAmount(absorb); // Refresh and return to prevent replacing the aura protEff->GetBase()->RefreshDuration();