Jump to content

[patch] dummy proc "Divine Aegis"


Auntie Mangos

Recommended Posts

Can u make new version of your patch please ?

Our server is running on patch 3.3.5a mangos rev. 10229.

This patch ( http://getmangos.eu/community/viewtopic.php?id=9314&pagenumber=&highlight=divine%20aegis ) was probably ready, but when our GM was trying implement this patch, there was some error.

patching file `src/game/SpellMgr.cpp'

Hunk #1 succeeded at 1951 (offset 370 lines).

patching file `src/game/Unit.cpp'

patch unexpectedly ends in middle of line

Hunk #1 FAILED at 5825.

1 out of 1 hunk FAILED -- saving rejects to src/game/Unit.cpp.rej

Do you know where the problem is? Thank for your reply .

Sorry for my English.

Link to comment
Share on other sites

  • 39 years later...

Spell: http://www.wowhead.com/?spell=47509

Patch 3.1.0 (2009-04-14): Divine Aegis effects will now stack, however the amount absorbed cannot exceed 125*level (of the target). It will also now take into account total healing including overhealing.

From 604533a57a653a73d6d181ac065b6883af44a0da Mon Sep 17 00:00:00 2001
From: pasdVn <[email protected]>
Date: Fri, 24 Jul 2009 12:36:11 +0200
Subject: [PATCH] addition to dummy aura proc of 47509 and ranks

* make "Divine Aegis" possible to stack
---
src/game/Unit.cpp |   13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index fd634da..7f9b3a5 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5213,7 +5213,18 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
            // Divine Aegis
            if (dummySpell->SpellIconID == 2820)
            {
-                basepoints0 = damage * triggerAmount/100;
+                if(!pVictim || !pVictim->isAlive())
+                    return false;
+
+                // find Divine Aegis on the target and get absorb amount
+                Aura* DivineAegis = pVictim->GetAura(47753,0);
+                if (DivineAegis)
+                    basepoints0 = DivineAegis->GetModifier()->m_amount;
+                basepoints0 += damage * triggerAmount/100;
+
+                // limit absorb amount
+                if (basepoints0 > pVictim->getLevel()*125)
+                    basepoints0 = pVictim->getLevel()*125;
                triggered_spell_id = 47753;
                break;
            }
-- 
1.6.0.2.1172.ga5ed0

I'm not sure if those procs should "stack" if the heals are casted by different casters. If anybody has more detailed information they are welcome^^

Link to comment
Share on other sites

  • 4 months later...
  • 2 months later...
  • 1 month later...

Update to 9582 and added the PW:Shield + Divine Shield stacking from linked thread.

diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index d8773cd..33a4341 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -1581,6 +1581,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
                if ((spellInfo_1->Id == 47585 && spellInfo_2->Id == 60069) ||
                    (spellInfo_2->Id == 47585 && spellInfo_1->Id == 60069))
                    return false;
+                // Power Word: Shield and Divine Aegis
+                if ((spellInfo_1->SpellIconID == 566 && spellInfo_2->SpellIconID == 2820) ||
+                    (spellInfo_2->SpellIconID == 566 && spellInfo_1->SpellIconID == 2820))
+                    return false;
            }
            break;
        case SPELLFAMILY_DRUID:
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index a214e47..52e98d9 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5825,7 +5825,19 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
                // Divine Aegis
                case 2820:
                {
-                    basepoints[0] = damage * triggerAmount/100;
+                if(!pVictim || !pVictim->isAlive())
+                    return false;
+
+                // find Divine Aegis on the target and get absorb amount
+                Aura* DivineAegis = pVictim->GetAura(47753,0);
+                if (DivineAegis)
+                    basepoints[0] = DivineAegis->GetModifier()->m_amount;
+                basepoints[0] += damage * triggerAmount/100;
+
+                // limit absorb amount
+                if (basepoints[0] > pVictim->getLevel()*125)
+                    basepoints[0] = pVictim->getLevel()*125;
+
                    triggered_spell_id = 47753;
                    break;
                }

Link to comment
Share on other sites

Update to 9582 and added the PW:Shield + Divine Shield stacking from linked thread.

diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index d8773cd..33a4341 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -1581,6 +1581,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
                if ((spellInfo_1->Id == 47585 && spellInfo_2->Id == 60069) ||
                    (spellInfo_2->Id == 47585 && spellInfo_1->Id == 60069))
                    return false;
+                // Power Word: Shield and Divine Aegis
+                if ((spellInfo_1->SpellIconID == 566 && spellInfo_2->SpellIconID == 2820) ||
+                    (spellInfo_2->SpellIconID == 566 && spellInfo_1->SpellIconID == 2820))
+                    return false;
            }
            break;
        case SPELLFAMILY_DRUID:
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index a214e47..52e98d9 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5825,7 +5825,19 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
                // Divine Aegis
                case 2820:
                {
-                    basepoints[0] = damage * triggerAmount/100;
+                if(!pVictim || !pVictim->isAlive())
+                    return false;
+
+                // find Divine Aegis on the target and get absorb amount
+                Aura* DivineAegis = pVictim->GetAura(47753,0);
+                if (DivineAegis)
+                    basepoints[0] = DivineAegis->GetModifier()->m_amount;
+                basepoints[0] += damage * triggerAmount/100;
+
+                // limit absorb amount
+                if (basepoints[0] > pVictim->getLevel()*125)
+                    basepoints[0] = pVictim->getLevel()*125;
+
                    triggered_spell_id = 47753;
                    break;
                }

works 100 % on core 9582, ready for the master

Link to comment
Share on other sites

  • 4 months later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use