Core/AreaTriggers: Move ScriptName from areatrigger_template to areatrigger_create_properties and areatrigger tables

Port From (https://github.com/TrinityCore/TrinityCore/commit/77ddb4da816b4dfc7ff03b79b88b5ca80918bc2d)
This commit is contained in:
hondacrx
2021-12-07 17:21:58 -05:00
parent 7e09c70f80
commit 552f12655e
4 changed files with 32 additions and 9 deletions
@@ -120,8 +120,8 @@ namespace Game.DataStorage
Log.outInfo(LogFilter.ServerLoading, "Loaded 0 AreaTrigger splines. DB table `areatrigger_create_properties_spline_point` is empty."); Log.outInfo(LogFilter.ServerLoading, "Loaded 0 AreaTrigger splines. DB table `areatrigger_create_properties_spline_point` is empty.");
} }
// 0 1 2 3 // 0 1 2
SQLResult templates = DB.World.Query("SELECT Id, IsServerSide, Flags, ScriptName FROM `areatrigger_template`"); SQLResult templates = DB.World.Query("SELECT Id, IsServerSide, Flags FROM `areatrigger_template`");
if (!templates.IsEmpty()) if (!templates.IsEmpty())
{ {
do do
@@ -137,7 +137,6 @@ namespace Game.DataStorage
continue; continue;
} }
areaTriggerTemplate.ScriptId = Global.ObjectMgr.GetScriptId(templates.Read<string>(3));
areaTriggerTemplate.Actions = actionsByAreaTrigger[areaTriggerTemplate.Id]; areaTriggerTemplate.Actions = actionsByAreaTrigger[areaTriggerTemplate.Id];
_areaTriggerTemplateStore[areaTriggerTemplate.Id] = areaTriggerTemplate; _areaTriggerTemplateStore[areaTriggerTemplate.Id] = areaTriggerTemplate;
@@ -147,8 +146,8 @@ namespace Game.DataStorage
// 0 1 2 3 4 5 6 7 8 9 10 // 0 1 2 3 4 5 6 7 8 9 10
SQLResult areatriggerCreateProperties = DB.World.Query("SELECT Id, AreaTriggerId, MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, AnimId, AnimKitId, DecalPropertiesId, TimeToTarget, TimeToTargetScale, " + SQLResult areatriggerCreateProperties = DB.World.Query("SELECT Id, AreaTriggerId, MoveCurveId, ScaleCurveId, MorphCurveId, FacingCurveId, AnimId, AnimKitId, DecalPropertiesId, TimeToTarget, TimeToTargetScale, " +
//11 12 13 14 15 16 17 //11 12 13 14 15 16 17 18
"Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5 FROM `areatrigger_create_properties`"); "Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5, ScriptName FROM `areatrigger_create_properties`");
if (!areatriggerCreateProperties.IsEmpty()) if (!areatriggerCreateProperties.IsEmpty())
{ {
do do
@@ -203,6 +202,8 @@ namespace Game.DataStorage
createProperties.Shape.DefaultDatas.Data[i] = areatriggerCreateProperties.Read<float>(12 + i); createProperties.Shape.DefaultDatas.Data[i] = areatriggerCreateProperties.Read<float>(12 + i);
} }
createProperties.ScriptId = Global.ObjectMgr.GetScriptId(areatriggerCreateProperties.Read<string>(18));
if (shape == AreaTriggerTypes.Polygon) if (shape == AreaTriggerTypes.Polygon)
if (createProperties.Shape.PolygonDatas.Height <= 0.0f) if (createProperties.Shape.PolygonDatas.Height <= 0.0f)
createProperties.Shape.PolygonDatas.Height = 1.0f; createProperties.Shape.PolygonDatas.Height = 1.0f;
@@ -287,8 +288,8 @@ namespace Game.DataStorage
// Load area trigger positions (to put them on the server) // Load area trigger positions (to put them on the server)
// 0 1 2 3 4 5 6 7 8 9 10 // 0 1 2 3 4 5 6 7 8 9 10
SQLResult templates = DB.World.Query("SELECT SpawnId, AreaTriggerId, IsServerSide, MapId, PosX, PosY, PosZ, Orientation, PhaseUseFlags, PhaseId, PhaseGroup, " + SQLResult templates = DB.World.Query("SELECT SpawnId, AreaTriggerId, IsServerSide, MapId, PosX, PosY, PosZ, Orientation, PhaseUseFlags, PhaseId, PhaseGroup, " +
//11 12 13 14 15 16 17 //11 12 13 14 15 16 17 18
"Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5 FROM `areatrigger`"); "Shape, ShapeData0, ShapeData1, ShapeData2, ShapeData3, ShapeData4, ShapeData5, ScriptName FROM `areatrigger`");
if (!templates.IsEmpty()) if (!templates.IsEmpty())
{ {
do do
@@ -332,6 +333,8 @@ namespace Game.DataStorage
spawn.Shape.DefaultDatas.Data[i] = templates.Read<float>(12 + i); spawn.Shape.DefaultDatas.Data[i] = templates.Read<float>(12 + i);
} }
spawn.ScriptId = Global.ObjectMgr.GetScriptId(templates.Read<string>(18));
// Add the trigger to a map::cell map, which is later used by GridLoader to query // Add the trigger to a map::cell map, which is later used by GridLoader to query
CellCoord cellCoord = GridDefines.ComputeCellCoord(spawn.Location.GetPositionX(), spawn.Location.GetPositionY()); CellCoord cellCoord = GridDefines.ComputeCellCoord(spawn.Location.GetPositionX(), spawn.Location.GetPositionY());
if (!_areaTriggerSpawnsByLocation.ContainsKey((spawn.Location.GetMapId(), cellCoord.GetId()))) if (!_areaTriggerSpawnsByLocation.ContainsKey((spawn.Location.GetMapId(), cellCoord.GetId())))
@@ -225,6 +225,8 @@ namespace Game.Entities
public override bool LoadFromDB(ulong spawnId, Map map, bool addToMap, bool allowDuplicate) public override bool LoadFromDB(ulong spawnId, Map map, bool addToMap, bool allowDuplicate)
{ {
_spawnId = spawnId;
AreaTriggerSpawn position = Global.AreaTriggerDataStorage.GetAreaTriggerSpawn(spawnId); AreaTriggerSpawn position = Global.AreaTriggerDataStorage.GetAreaTriggerSpawn(spawnId);
if (position == null) if (position == null)
return false; return false;
@@ -499,7 +501,13 @@ namespace Game.Entities
public uint GetScriptId() public uint GetScriptId()
{ {
return GetTemplate() != null ? GetTemplate().ScriptId : 0; if (_spawnId != 0)
return Global.AreaTriggerDataStorage.GetAreaTriggerSpawn(_spawnId).ScriptId;
if (GetCreateProperties() != null)
return GetCreateProperties().ScriptId;
return 0;
} }
public Unit GetCaster() public Unit GetCaster()
@@ -1051,6 +1059,8 @@ namespace Game.Entities
AreaTriggerFieldData m_areaTriggerData; AreaTriggerFieldData m_areaTriggerData;
ulong _spawnId;
ObjectGuid _targetGuid; ObjectGuid _targetGuid;
AuraEffect _aurEff; AuraEffect _aurEff;
@@ -252,7 +252,6 @@ namespace Game.Entities
{ {
public AreaTriggerId Id; public AreaTriggerId Id;
public AreaTriggerFlags Flags; public AreaTriggerFlags Flags;
public uint ScriptId;
public List<AreaTriggerAction> Actions = new(); public List<AreaTriggerAction> Actions = new();
@@ -316,6 +315,8 @@ namespace Game.Entities
public List<Vector2> PolygonVerticesTarget = new(); public List<Vector2> PolygonVerticesTarget = new();
public List<Vector3> SplinePoints = new(); public List<Vector3> SplinePoints = new();
public Optional<AreaTriggerOrbitInfo> OrbitInfo; public Optional<AreaTriggerOrbitInfo> OrbitInfo;
public uint ScriptId;
} }
public class AreaTriggerSpawn public class AreaTriggerSpawn
@@ -328,6 +329,8 @@ namespace Game.Entities
public byte PhaseUseFlags; public byte PhaseUseFlags;
public AreaTriggerShapeInfo Shape = new(); public AreaTriggerShapeInfo Shape = new();
public uint ScriptId;
} }
public struct AreaTriggerAction public struct AreaTriggerAction
@@ -0,0 +1,7 @@
ALTER TABLE `areatrigger` ADD `ScriptName` varchar(64) NOT NULL DEFAULT '' AFTER `ShapeData5`;
ALTER TABLE `areatrigger_create_properties` ADD `ScriptName` varchar(64) NOT NULL DEFAULT '' AFTER `ShapeData5`;
UPDATE `areatrigger` SET `ScriptName`=COALESCE((SELECT att.`ScriptName` FROM `areatrigger_template` att WHERE att.`Id`=`AreaTriggerId` AND att.`IsServerSide`=`IsServerSide`), '');
UPDATE `areatrigger_create_properties` SET `ScriptName`=COALESCE((SELECT att.`ScriptName` FROM `areatrigger_template` att WHERE att.`Id`=`AreaTriggerId` AND att.`IsServerSide`=0), '');
ALTER TABLE `areatrigger_template` DROP `ScriptName`;