diff options
Diffstat (limited to 'src/game/SpellEffects.cpp')
-rw-r--r-- | src/game/SpellEffects.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 56679b1abe4..465730eaab6 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -7038,7 +7038,22 @@ void Spell::EffectRedirectThreat(uint32 /*i*/) void Spell::EffectWMODamage(uint32 /*i*/) { if(gameObjTarget && gameObjTarget->GetGoType() == GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING) - gameObjTarget->TakenDamage((uint32)damage); + { + Unit *caster = m_originalCaster; + if(!caster) + return; + + const GameObjectInfo *gInfo = objmgr.GetGameObjectInfo(gameObjTarget->GetEntry()); + if (!gInfo) + return; + + FactionTemplateEntry const *casterft, *goft; + casterft = caster->getFactionTemplateEntry(); + goft = sFactionTemplateStore.LookupEntry(gInfo->faction); + // Do not allow to damage GO's of friendly factions (ie: Wintergrasp Walls) + if (casterft && goft && !casterft->IsFriendlyTo(*goft)) + gameObjTarget->TakenDamage((uint32)damage); + } } void Spell::EffectWMORepair(uint32 /*i*/) |