diff options
| author | Jeremy <Golrag@users.noreply.github.com> | 2023-08-15 21:33:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-15 21:33:59 +0200 |
| commit | 1ab7050cb72544faa6a7fa17a0bf644e22538ff3 (patch) | |
| tree | 85867b3e04fb8226c5cc20e7c0d9e96540dfe117 /src/server/game/Entities/AreaTrigger | |
| parent | fefc7192631764245396cd2622aa11f649411946 (diff) | |
Core/Scripts: Add ZoneScript hook for AreaTrigger creation/deletion (#29236)
Diffstat (limited to 'src/server/game/Entities/AreaTrigger')
| -rw-r--r-- | src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index 82716129e28..cea910b24c4 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -39,6 +39,7 @@ #include "Transport.h" #include "Unit.h" #include "UpdateData.h" +#include "ZoneScript.h" #include "advstd.h" #include <bit> @@ -63,6 +64,9 @@ void AreaTrigger::AddToWorld() ///- Register the AreaTrigger for guid lookup and for caster if (!IsInWorld()) { + if (m_zoneScript) + m_zoneScript->OnAreaTriggerCreate(this); + GetMap()->GetObjectsStore().Insert<AreaTrigger>(GetGUID(), this); if (_spawnId) GetMap()->GetAreaTriggerBySpawnIdStore().insert(std::make_pair(_spawnId, this)); @@ -76,6 +80,9 @@ void AreaTrigger::RemoveFromWorld() ///- Remove the AreaTrigger from the accessor and from all lists of objects in world if (IsInWorld()) { + if (m_zoneScript) + m_zoneScript->OnAreaTriggerRemove(this); + _isRemoved = true; if (Unit* caster = GetCaster()) @@ -114,6 +121,8 @@ bool AreaTrigger::Create(uint32 areaTriggerCreatePropertiesId, Unit* caster, Uni return false; } + SetZoneScript(); + _areaTriggerTemplate = _areaTriggerCreateProperties->Template; Object::_Create(ObjectGuid::Create<HighGuid::AreaTrigger>(GetMapId(), GetTemplate() ? GetTemplate()->Id.Id : 0, caster->GetMap()->GenerateLowGuid<HighGuid::AreaTrigger>())); @@ -254,6 +263,8 @@ bool AreaTrigger::CreateServer(Map* map, AreaTriggerTemplate const* areaTriggerT return false; } + SetZoneScript(); + _areaTriggerTemplate = areaTriggerTemplate; Object::_Create(ObjectGuid::Create<HighGuid::AreaTrigger>(GetMapId(), areaTriggerTemplate->Id.Id, GetMap()->GenerateLowGuid<HighGuid::AreaTrigger>())); |
