From 597485f1d4ccadaccf800a2663f3d74342aa5c4d Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 24 Apr 2022 00:56:00 +0200 Subject: Core/GameObjects: Implement more gameobject gameevent uses --- src/server/game/Entities/GameObject/GameObject.cpp | 8 ++++++++ src/server/game/Entities/GameObject/GameObjectData.h | 1 + 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index f87dce96843..76a09af2d0b 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1951,6 +1951,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(UnitStandStateType(UNIT_STAND_STATE_SIT_LOW_CHAIR + info->chair.chairheight)); + if (info->chair.triggeredEvent) + GameEvents::Trigger(info->chair.triggeredEvent, player, this); return; } } @@ -2362,6 +2364,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; @@ -2629,6 +2634,9 @@ void GameObject::ModifyHealth(int32 change, WorldObject* attackerOrHealer /*= nu player->SendDirectMessage(packet.Write()); } + if (change < 0 && GetGOInfo()->destructibleBuilding.DamageEvent) + GameEvents::Trigger(GetGOInfo()->destructibleBuilding.DamageEvent, 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 66ab069abeb..d4977063b98 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -974,6 +974,7 @@ struct GameObjectTemplate { case GAMEOBJECT_TYPE_GOOBER: return goober.eventID; case GAMEOBJECT_TYPE_CHEST: return chest.triggeredEvent; + case GAMEOBJECT_TYPE_CHAIR: return chair.triggeredEvent; case GAMEOBJECT_TYPE_CAMERA: return camera.eventID; case GAMEOBJECT_TYPE_GATHERING_NODE: return gatheringNode.triggeredEvent; default: return 0; -- cgit v1.2.3