diff options
Diffstat (limited to 'src')
4 files changed, 18 insertions, 6 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index c071e2aa489..1ffd8784b2b 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1710,7 +1710,7 @@ void GameObject::TakenDamage(uint32 damage, Unit *who) if (Battleground* bg = pwho->GetBattleground()) bg->DestroyGate(pwho, this, m_goInfo->building.destroyedEvent); hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_DESTROYED; - sScriptMgr->OnGameObjectDestroyed(pwho, this, m_goInfo->building.destroyedEvent); + sScriptMgr->OnGameObjectDestroyed(this, pwho, m_goInfo->building.destroyedEvent); } if (pwho) if (Battleground* bg = pwho->GetBattleground()) @@ -1732,6 +1732,7 @@ void GameObject::TakenDamage(uint32 damage, Unit *who) SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); SetUInt32Value(GAMEOBJECT_DISPLAYID, m_goInfo->building.damagedDisplayId); EventInform(m_goInfo->building.damagedEvent); + sScriptMgr->OnGameObjectDamaged(this, pwho, m_goInfo->building.damagedEvent); hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_HIGH_DAMAGED; } if (pwho) diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index f7f5e495280..8849194a8c5 100755 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -823,12 +823,20 @@ uint32 ScriptMgr::GetDialogStatus(Player* player, GameObject* go) return tmpscript->GetDialogStatus(player, go); } -void ScriptMgr::OnGameObjectDestroyed(Player* player, GameObject* go, uint32 eventId) +void ScriptMgr::OnGameObjectDestroyed(GameObject* go, Player* player, uint32 eventId) { ASSERT(go); GET_SCRIPT(GameObjectScript, go->GetScriptId(), tmpscript); - tmpscript->OnDestroyed(player, go, eventId); + tmpscript->OnDestroyed(go, player, eventId); +} + +void ScriptMgr::OnGameObjectDamaged(GameObject* go, Player* player, uint32 eventId) +{ + ASSERT(go); + + GET_SCRIPT(GameObjectScript, go->GetScriptId(), tmpscript); + tmpscript->OnDamaged(go, player, eventId); } void ScriptMgr::OnGameObjectUpdate(GameObject* go, uint32 diff) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 85c8dfbc866..5153bd12087 100755 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -464,7 +464,9 @@ class GameObjectScript : public ScriptObject, public UpdatableScript<GameObject> virtual uint32 GetDialogStatus(Player* /*player*/, GameObject* /*go*/) { return 100; } // Called when the gameobject is destroyed (destructible buildings only). - virtual void OnDestroyed(Player* /*player*/, GameObject* /*go*/, uint32 /*eventId*/) { } + virtual void OnDestroyed(GameObject* /*go*/, Player* /*player*/, uint32 /*eventId*/) { } + // Called when the gameobject is damaged (destructible buildings only). + virtual void OnDamaged(GameObject* /*go*/, Player* /*player*/, uint32 /*eventId*/) { } }; class AreaTriggerScript : public ScriptObject @@ -859,7 +861,8 @@ class ScriptMgr bool OnQuestAccept(Player* player, GameObject* go, Quest const* quest); bool OnQuestReward(Player* player, GameObject* go, Quest const* quest, uint32 opt); uint32 GetDialogStatus(Player* player, GameObject* go); - void OnGameObjectDestroyed(Player* player, GameObject* go, uint32 eventId); + void OnGameObjectDestroyed(GameObject* go, Player* player, uint32 eventId); + void OnGameObjectDamaged(GameObject* go, Player* player, uint32 eventId); void OnGameObjectUpdate(GameObject* go, uint32 diff); public: /* AreaTriggerScript */ diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp index 06162b8feb6..6f0c8ec2bd3 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_flame_leviathan.cpp @@ -1284,7 +1284,7 @@ class go_ulduar_tower : public GameObjectScript public: go_ulduar_tower() : GameObjectScript("go_ulduar_tower") { } - void OnDestroyed(Player* /*pPlayer*/, GameObject* go, uint32 /*value*/) + void OnDestroyed(GameObject* go, Player* /*pPlayer*/, uint32 /*value*/) { InstanceScript* instance = go->GetInstanceScript(); if (!instance) |
