diff options
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObjectData.h | 1 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 14 |
3 files changed, 16 insertions, 7 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index c21ab893fdc..20651695cac 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1291,6 +1291,14 @@ uint8 GameObject::GetLevelForTarget(WorldObject const* target) const if (Unit* owner = GetOwner()) return owner->GetLevelForTarget(target); + if (GetGoType() == GAMEOBJECT_TYPE_TRAP) + { + if (GetGOInfo()->trap.level != 0) + return GetGOInfo()->trap.level; + if (const Unit* targetUnit = target->ToUnit()) + return targetUnit->GetLevel(); + } + return 1; } diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index eb92b7605ea..c9ba759b543 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -454,6 +454,7 @@ struct GameObjectTemplate case GAMEOBJECT_TYPE_CHEST: return chest.losOK == 0; case GAMEOBJECT_TYPE_GOOBER: return goober.losOK == 0; case GAMEOBJECT_TYPE_FLAGSTAND: return flagstand.losOK == 0; + case GAMEOBJECT_TYPE_TRAP: return true; default: return false; } } diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index d376669ee7f..3b45a48c64d 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -2872,19 +2872,19 @@ class spell_gen_restoration : public AuraScript { PreventDefaultAction(); - Unit* caster = GetCaster(); - if (!caster) + Unit* target = GetTarget(); + if (!target) return; - int32 heal = caster->CountPctFromMaxHealth(10); - HealInfo healInfo(caster, GetTarget(), heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask()); - caster->HealBySpell(healInfo); + int32 heal = target->CountPctFromMaxHealth(10); + HealInfo healInfo(target, target, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask()); + target->HealBySpell(healInfo); /// @todo: should proc other auras? - if (int32 mana = caster->GetMaxPower(POWER_MANA)) + if (int32 mana = target->GetMaxPower(POWER_MANA)) { mana /= 10; - caster->EnergizeBySpell(caster, GetId(), mana, POWER_MANA); + target->EnergizeBySpell(target, GetId(), mana, POWER_MANA); } } |