Jump to content

[8492] patch Beacon of Light


Auntie Mangos

Recommended Posts

  • 39 years later...
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 5c44e86..20b8488 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -2490,6 +2490,19 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
            }
            break;
        }
+        case SPELLFAMILY_PALADIN:
+        {
+            // Beacon of Light
+            if (GetId() == 53563)
+            {
+                if(apply)
+                    m_target->CastSpell(m_target,53651,true,NULL,this,GetCasterGUID());
+                else
+                    m_target->RemoveAurasDueToSpell(53651);
+                return;
+            }
+            break;
+        }
        case SPELLFAMILY_DRUID:
        {
            switch(GetId())
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 4a9736a..a9dad92 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5816,6 +5816,26 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
                        return true;
                    break;
                }
+                // Light's Beacon
+                case 53651:
+                {
+                    if(!pVictim || pVictim == this)
+                        return false;
+
+                    Unit* caster = triggeredByAura->GetCaster();
+
+                    if (caster)
+                    {
+                        Aura * dummy = caster->GetDummyAura(53563);
+                        if(dummy && dummy->GetCasterGUID() == pVictim->GetGUID())
+                        {
+                            triggered_spell_id = 53652;
+                            basepoints0 = triggeredByAura->GetModifier()->m_amount*damage/100;
+                            target = caster;
+                        }
+                    }
+                    break;
+                }
                // Seal of the Martyr do damage trigger
                case 53720:
                {

Link to comment
Share on other sites

Can you post a author in next time? I think original author of patch Arthorius, then it modified a bit by MaS0n (Tanatos)

ok sorry, I just wanted to note that more developers and as soon as possible included in the revision

Link to comment
Share on other sites

What you have for Light's Beacon is incorrect and will only work when the paladin casts Beacon of Light on himself, since caster->GetDummyAura will only check the paladin's auras. Instead, I think you have to iterate through the paladin's SingleCastAuras and find whom he casted the dummy spell on.

Something like

// Light's Beacon
case 53651:
{
   // pVictim is the person who has casted a heal. caster is the person who casted Beacon of Light.
   Unit* caster = triggeredByAura->GetCaster();

   if (caster)
   {
       if(!pVictim || pVictim->GetGUID() != caster->GetGUID())
           return false;

       // Find the Beacon of Light dummy aura
       Aura * dummy = NULL;
       AuraList& scAuras = caster->GetSingleCastAuras();
       for(AuraList::const_iterator itr = scAuras.begin(); itr != scAuras.end(); ++itr)
       {
           if((*itr)->GetId() == 53563)
           {
               dummy = (*itr);
               break;
           }
       }

       if(dummy)
       {
           if(dummy->GetCasterGUID() == caster->GetGUID())
           {
               // Nothing triggered when Beacon of Light is healed directly
               if (dummy->GetTarget()->GetGUID() == GetGUID())
                   return false;

               triggered_spell_id = 53652;
               basepoints0 = triggeredByAura->GetModifier()->m_amount*damage/100;
               target = dummy->GetTarget();
           }
       }
   }
   break;
}

Edit: Also, can you explain why the target casts the aura on himself?

if(apply)
   m_target->CastSpell(m_target,53651,true,NULL,this,GetCasterGUID());

My version didn't work when I tried it this way

Link to comment
Share on other sites

  • 1 month later...
Any progress?

:lol: bump bump bump

btw iam tested this patch on 8296 rev and works

spell auras.cpp is here:

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 5c44e86..20b8488 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -2490,6 +2490,19 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
            }
            break;
        }
+        case SPELLFAMILY_PALADIN:
+        {
+            // Beacon of Light
+            if (GetId() == 53563)
+            {
+                if(apply)
+                    m_target->CastSpell(m_target,53651,true,NULL,this,GetCasterGUID());
+                else
+                    m_target->RemoveAurasDueToSpell(53651);
+                return;
+            }
+            break;
+        }
        case SPELLFAMILY_DRUID:
        {
            switch(GetId())

unit.cpp is here:

diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 4a9736a..a9dad92 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -5816,6 +5816,26 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
                        return true;
                    break;
                }
+                // Light's Beacon
+                case 53651:
+                {
+                    if(!pVictim || pVictim == this)
+                        return false;
+
+                    Unit* caster = triggeredByAura->GetCaster();
+
+                    if (caster)
+                    {
+                        Aura * dummy = caster->GetDummyAura(53563);
+                        if(dummy && dummy->GetCasterGUID() == pVictim->GetGUID())
+                        {
+                            triggered_spell_id = 53652;
+                            basepoints0 = triggeredByAura->GetModifier()->m_amount*damage/100;
+                            target = caster;
+                        }
+                    }
+                    break;
+                }
                // Seal of the Martyr do damage trigger
                case 53720:
                {

Link to comment
Share on other sites

ok sorry, I just wanted to note that more developers and as soon as possible included in the revision

And where authors listed? I must note that this _very_ unacceptable way not explicitly list real authors of patch.

In any case suggested patch not fully correct as i think

Correct spell work as i think:

for 3.1.3

53563 casted at target and this is single target spell.

This spell cast 60 yards wide area cast 53651 to around group members with apply dummy aura 53651 (with caster = beacon target).

When friendly unit get healed it search this dummy at self and prepare heal caster of 53651 (beacon target)

Before cast heal 53654 it check that target have 53563 aura and caster of 53563 is original healer

for 3.2.0

Instead dummy 53563 spell is periodic (2 sec) triggering aura and not required dummy part.

Other not changed

With this changes add to [8492].

Link to comment
Share on other sites

I found a bug on 8492:

1. pick 2 holy paladins

2. join them to group

3. first paladin uses Beacon of Light on second paladin

4. second paladin uses Beacon of Light on first paladin

5. Bug... Beacon of Light does not heal anymore until both buffs are expired

I think it's because a same spell icon or maybe we need add it to IsSingleFromSpellSpecificPerCaster ?

Another bug:

1. pick 1 holy paladin and any other class

2. join them to group

3. use Beacon of Light of self

4. use .aura 57975 on self - you affected by Wound poison healing reduce for 50%

5. use any healing spell on second member of your group

6. Look to combat log - as you can see the BUG: you have got 100% heal from healing spell that used on your party member

That is impossible to beat holy paladin for warrior, rogue or hunter if paladin using Beacon of Light on self and healing group member :/

Link to comment
Share on other sites

I confirm existance some problems but mostly result more generic problems with area auras, specailly with hostile area auras that similar expected way work with discussed talent (not applied to caster (beacon)). Not finish yet resolve its...

[added]I resolve first problem that strongly connected with 2 icon show and problwms with apply hostily area auras to enemy with casted own same hostily area aura.

But i now see that in original patch has been more correct set dummy aura caster to original caster. Without this at some player will not apply 2 auras from2 near beacons.

I will fix this first and retest my fixes to (1) problem.

Link to comment
Share on other sites

Many problems fixed in [8497].

4. use .aura 57975 on self - you affected by Wound poison healing reduce for 50%

This problem affect any self heal. Not fixed yet.

[added]With aura 57975... you sure that this must be affected?

Currently this is prevented by:

uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack)

{

// No heal amount for this class spells

if (spellProto->DmgClass == SPELL_DAMAGE_CLASS_NONE)

return healamount;

Maybe instead must be not applied only possitive cases...

Link to comment
Share on other sites

  • 1 month later...

Another bug:

1. pick 1 holy paladin and any other class

2. join them to group

3. use Beacon of Light of self

4. use .aura 57975 on self - you affected by Wound poison healing reduce for 50%

5. use any healing spell on second member of your group

6. Look to combat log - as you can see the BUG: you have got 100% heal from healing spell that used on your party member

That is impossible to beat holy paladin for warrior, rogue or hunter if paladin using Beacon of Light on self and healing group member :/

this is a bug or not?

Link to comment
Share on other sites

yes, it is bug, because heals from beacon of light is not reduced by healing reduction spells (like wound poison, aimed shot, ...) and they should be reduced

It's very powerful bug for paladins.

As i understand we can check for healing reduce auras on 53652 caster here (unit.cpp), but HOW?

                    triggered_spell_id = 53652;             // Beacon of Light
// HERE
                   basepoints0 = triggeredByAura->GetModifier()->m_amount*damage/100;

Link to comment
Share on other sites

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