From 2e0ffba0bcea53f8b5ce15a51174c34cbc55d202 Mon Sep 17 00:00:00 2001 From: QAston Date: Sat, 11 Apr 2009 18:58:34 +0200 Subject: *Fix beacon of light. *Fix a crash in Spell::CanAutoCast. --HG-- branch : trunk --- src/game/Pet.cpp | 4 ---- src/game/Spell.cpp | 5 +++-- src/game/Unit.cpp | 28 ++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index 65694557175..dba79a47a72 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -359,10 +359,6 @@ void Pet::SavePetToDB(PetSaveMode mode) if(mode > PET_SAVE_AS_CURRENT) { RemoveAllAuras(); - - //only alive hunter pets get auras saved, the others don't - if(!(getPetType() == HUNTER_PET && isAlive())) - m_Auras.clear(); } _SaveSpells(); diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 7c40049fd32..691aa35d774 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4641,8 +4641,9 @@ bool Spell::CanAutoCast(Unit* target) } else { - if( (target->GetAuraEffect(m_spellInfo->Id, j))->GetParentAura()->GetStackAmount() >= m_spellInfo->StackAmount) - return false; + if( AuraEffect * aureff = target->GetAuraEffect(m_spellInfo->Id, j)) + if (aureff->GetParentAura()->GetStackAmount() >= m_spellInfo->StackAmount) + return false; } } else if ( IsAreaAuraEffect( m_spellInfo->Effect[j] )) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index c287cb1a033..88155b4be51 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5834,6 +5834,34 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger basepoints0 = GetAttackTime(BASE_ATTACK) * int32(ap*0.022f + 0.044f * holy) / 1000; break; } + // Light's Beacon - Beacon of Light + if ( dummySpell->Id == 53651 ) + { + if (Unit * caster = triggeredByAura->GetCaster()) + { + // do not proc when target of beacon of light is healed + if (caster == pVictim) + return false; + if (Aura * aur = caster->GetAura(53563)) + { + if (Unit * paladin = aur->GetCaster()) + { + if (paladin != this) + return false; + basepoints0 = damage; + triggered_spell_id = 53654; + target = caster; + break; + } + else + { + pVictim->RemoveAura(triggeredByAura->GetParentAura()); + return false; + } + } + } + else return false; + } // Judgements of the Wise if (dummySpell->SpellIconID == 3017) { -- cgit v1.2.3