diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-12-04 23:47:40 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-04 23:47:40 +0100 |
commit | 77ddb4da816b4dfc7ff03b79b88b5ca80918bc2d (patch) | |
tree | 5895af04278b84f9e56af742ac92c8e5b0cf84ac /src | |
parent | 759d2fdd862eb86d022e79adcd3a90374fef58e4 (diff) |
Core/AreaTriggers: Move ScriptName from areatrigger_template to areatrigger_create_properties and areatrigger tables
Diffstat (limited to 'src')
5 files changed, 27 insertions, 10 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index a3720060d6f..e3902e82a0f 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -227,6 +227,8 @@ AreaTrigger* AreaTrigger::CreateAreaTrigger(uint32 areaTriggerCreatePropertiesId bool AreaTrigger::LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool /*addToMap*/, bool /*allowDuplicate*/) { + _spawnId = spawnId; + AreaTriggerSpawn const* position = sAreaTriggerDataStore->GetAreaTriggerSpawn(spawnId); if (!position) return false; @@ -512,7 +514,13 @@ AreaTriggerTemplate const* AreaTrigger::GetTemplate() const uint32 AreaTrigger::GetScriptId() const { - return GetTemplate() ? GetTemplate()->ScriptId : 0; + if (_spawnId) + return ASSERT_NOTNULL(sAreaTriggerDataStore->GetAreaTriggerSpawn(_spawnId))->ScriptId; + + if (GetCreateProperties()) + return GetCreateProperties()->ScriptId; + + return 0; } Unit* AreaTrigger::GetCaster() const diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.h b/src/server/game/Entities/AreaTrigger/AreaTrigger.h index f6bdaf8f583..094d9b4425b 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.h +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.h @@ -142,6 +142,8 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge void DebugVisualizePosition(); // Debug purpose only + ObjectGuid::LowType _spawnId; + ObjectGuid _targetGuid; AuraEffect const* _aurEff; diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp index 4458af15997..c0a623a4b52 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp @@ -53,7 +53,6 @@ AreaTriggerTemplate::AreaTriggerTemplate() { Id = { 0, false }; Flags = 0; - ScriptId = 0; } AreaTriggerTemplate::~AreaTriggerTemplate() @@ -85,6 +84,8 @@ AreaTriggerCreateProperties::AreaTriggerCreateProperties() ExtraScale.Data.Structured.OverrideActive = 1; Template = nullptr; + + ScriptId = 0; } AreaTriggerCreateProperties::~AreaTriggerCreateProperties() diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h index 73abbbcc21b..8630075ac42 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h @@ -193,7 +193,6 @@ public: AreaTriggerId Id; uint32 Flags; - uint32 ScriptId; std::vector<AreaTriggerAction> Actions; }; @@ -231,6 +230,8 @@ public: std::vector<Position> SplinePoints; Optional<AreaTriggerOrbitInfo> OrbitInfo; + + uint32 ScriptId; }; struct AreaTriggerSpawn @@ -243,6 +244,8 @@ struct AreaTriggerSpawn uint8 PhaseUseFlags = 0; AreaTriggerShapeInfo Shape; + + uint32 ScriptId = 0; }; #endif diff --git a/src/server/game/Globals/AreaTriggerDataStore.cpp b/src/server/game/Globals/AreaTriggerDataStore.cpp index d39acd1e34d..817f59d1284 100644 --- a/src/server/game/Globals/AreaTriggerDataStore.cpp +++ b/src/server/game/Globals/AreaTriggerDataStore.cpp @@ -150,8 +150,8 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() TC_LOG_INFO("server.loading", ">> Loaded 0 AreaTrigger splines. DB table `areatrigger_create_properties_spline_point` is empty."); } - // 0 1 2 3 - if (QueryResult templates = WorldDatabase.Query("SELECT Id, IsServerSide, Flags, ScriptName FROM `areatrigger_template`")) + // 0 1 2 + if (QueryResult templates = WorldDatabase.Query("SELECT Id, IsServerSide, Flags FROM `areatrigger_template`")) { do { @@ -169,7 +169,6 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() continue; } - areaTriggerTemplate.ScriptId = sObjectMgr->GetScriptId(fields[3].GetString()); areaTriggerTemplate.Actions = std::move(actionsByAreaTrigger[areaTriggerTemplate.Id]); _areaTriggerTemplateStore[areaTriggerTemplate.Id] = areaTriggerTemplate; @@ -179,8 +178,8 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() // 0 1 2 3 4 5 6 7 8 9 10 if (QueryResult areatriggerCreateProperties = WorldDatabase.Query("SELECT Id, AreaTriggerId, MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, AnimId, AnimKitId, DecalPropertiesId, TimeToTarget, TimeToTargetScale, " - // 11 12 13 14 15 16 17 - "Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5 FROM `areatrigger_create_properties`")) + // 11 12 13 14 15 16 17 18 + "Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5, ScriptName FROM `areatrigger_create_properties`")) { do { @@ -235,6 +234,8 @@ void AreaTriggerDataStore::LoadAreaTriggerTemplates() for (uint8 i = 0; i < MAX_AREATRIGGER_ENTITY_DATA; ++i) createProperties.Shape.DefaultDatas.Data[i] = fields[12 + i].GetFloat(); + createProperties.ScriptId = sObjectMgr->GetScriptId(fields[18].GetString()); + if (shape == AREATRIGGER_TYPE_POLYGON) if (createProperties.Shape.PolygonDatas.Height <= 0.0f) createProperties.Shape.PolygonDatas.Height = 1.0f; @@ -306,8 +307,8 @@ void AreaTriggerDataStore::LoadAreaTriggerSpawns() // Load area trigger positions (to put them on the server) // 0 1 2 3 4 5 6 7 8 9 10 if (QueryResult templates = WorldDatabase.Query("SELECT SpawnId, AreaTriggerId, IsServerSide, MapId, PosX, PosY, PosZ, Orientation, PhaseUseFlags, PhaseId, PhaseGroup, " - // 11 12 13 14 15 16 17 - "Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5 FROM `areatrigger`")) + // 11 12 13 14 15 16 17 18 + "Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5, ScriptName FROM `areatrigger`")) { do { @@ -352,6 +353,8 @@ void AreaTriggerDataStore::LoadAreaTriggerSpawns() for (uint8 i = 0; i < MAX_AREATRIGGER_ENTITY_DATA; ++i) spawn.Shape.DefaultDatas.Data[i] = fields[12 + i].GetFloat(); + spawn.ScriptId = sObjectMgr->GetScriptId(fields[18].GetString()); + // Add the trigger to a map::cell map, which is later used by GridLoader to query CellCoord cellCoord = Trinity::ComputeCellCoord(spawn.Location.GetPositionX(), spawn.Location.GetPositionY()); _areaTriggerSpawnsByLocation[{ spawn.Location.GetMapId(), cellCoord.GetId() }].insert(spawnId); |