diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index f7c9f3fe14d..673f2e5fcc4 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1643,6 +1643,8 @@ void GameObject::Use(Unit* user) itr->second = player->GetGUID(); //this slot in now used by player player->TeleportTo(GetMapId(), x_lowest, y_lowest, GetPositionZ(), GetOrientation(), TELE_TO_NOT_LEAVE_TRANSPORT | TELE_TO_NOT_LEAVE_COMBAT | TELE_TO_NOT_UNSUMMON_PET); player->SetStandState(UNIT_STAND_STATE_SIT_LOW_CHAIR+info->chair.height); + if (info->chair.triggeredEvent) + GameEvents::Trigger(info->chair.triggeredEvent, player, this); return; } } @@ -2055,6 +2057,9 @@ void GameObject::Use(Unit* user) bg->EventPlayerClickedOnFlag(player, this); break; } + + if (info->flagdrop.eventID) + GameEvents::Trigger(info->flagdrop.eventID, player, this); } //this cause to call return, all flags must be deleted here!! spellId = 0; @@ -2321,6 +2326,10 @@ void GameObject::ModifyHealth(int32 change, Unit* attackerOrHealer /*= nullptr*/ player->SendDirectMessage(&data); } + if (change < 0 && GetGOInfo()->building.damagedEvent) + GameEvents::Trigger(GetGOInfo()->building.damagedEvent, attackerOrHealer, this); + + GameObjectDestructibleState newState = GetDestructibleState(); if (!m_goValue.Building.Health) diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index bdf11ff600a..15f9c8e33ef 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -583,6 +583,7 @@ struct GameObjectTemplate { case GAMEOBJECT_TYPE_GOOBER: return goober.eventId; case GAMEOBJECT_TYPE_CHEST: return chest.eventId; + case GAMEOBJECT_TYPE_CHAIR: return chair.triggeredEvent; case GAMEOBJECT_TYPE_CAMERA: return camera.eventID; default: return 0; }