aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2023-12-30 17:14:09 +0100
committerGitHub <noreply@github.com>2023-12-30 17:14:09 +0100
commit37eb2e64a6ad075e9866af6feb72bb4fbccb2adc (patch)
tree664b202a458f43fa73815fb40d39e1cae85debca /sql
parentdbe54dc877416367c5d6297893fcefd269d2b031 (diff)
Core/AreaTriggers: Refactor (#29500)
* Moved IsServerside to custom flags * Flags moved from areatrigger_template to areatrigger_create_properties * New field to create custom CreateProperties (IsCustom) * New field to reference custom areatriggers (IsAreatriggerCustom) * Moved fields for shape data to areatrigger_create_properties
Diffstat (limited to 'sql')
-rw-r--r--sql/updates/world/master/2023_12_30_01_world.sql143
1 files changed, 143 insertions, 0 deletions
diff --git a/sql/updates/world/master/2023_12_30_01_world.sql b/sql/updates/world/master/2023_12_30_01_world.sql
new file mode 100644
index 00000000000..41ba54640ee
--- /dev/null
+++ b/sql/updates/world/master/2023_12_30_01_world.sql
@@ -0,0 +1,143 @@
+
+DELIMITER ;;
+CREATE PROCEDURE areatrigger_refactor() BEGIN
+ IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema`=SCHEMA() AND `table_name`='areatrigger_create_properties' AND `column_name`='IsCustom') THEN
+
+ ALTER TABLE `areatrigger_create_properties`
+ ADD COLUMN `IsCustom` tinyint unsigned NOT NULL AFTER `Id`,
+ ADD COLUMN `IsAreatriggerCustom` tinyint unsigned NOT NULL AFTER `AreaTriggerId`,
+ ADD COLUMN `Flags` int unsigned NOT NULL DEFAULT '0' AFTER `IsAreatriggerCustom`,
+ DROP PRIMARY KEY, ADD PRIMARY KEY (`Id`, `IsCustom`);
+
+ ALTER TABLE `areatrigger_create_properties_orbit`
+ ADD COLUMN `IsCustom` tinyint unsigned NOT NULL AFTER `AreaTriggerCreatePropertiesId`,
+ DROP PRIMARY KEY, ADD PRIMARY KEY (`AreaTriggerCreatePropertiesId`, `IsCustom`);
+
+ ALTER TABLE `areatrigger_create_properties_polygon_vertex`
+ ADD COLUMN `IsCustom` tinyint unsigned NOT NULL AFTER `AreaTriggerCreatePropertiesId`,
+ DROP PRIMARY KEY, ADD PRIMARY KEY (`AreaTriggerCreatePropertiesId`, `IsCustom`, `Idx`);
+
+ ALTER TABLE `areatrigger_create_properties_spline_point`
+ ADD COLUMN `IsCustom` tinyint unsigned NOT NULL AFTER `AreaTriggerCreatePropertiesId`,
+ DROP PRIMARY KEY, ADD PRIMARY KEY (`AreaTriggerCreatePropertiesId`, `IsCustom`, `Idx`);
+
+ END IF;
+
+ IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema`=SCHEMA() AND `table_name`='areatrigger_template' AND `column_name`='IsCustom') THEN
+
+ ALTER TABLE `areatrigger_template`
+ DROP COLUMN `Type`,
+ DROP COLUMN `Data0`,
+ DROP COLUMN `Data1`,
+ DROP COLUMN `Data2`,
+ DROP COLUMN `Data3`,
+ DROP COLUMN `Data4`,
+ DROP COLUMN `Data5`,
+ DROP COLUMN `Data6`,
+ DROP COLUMN `Data7`,
+ CHANGE COLUMN `IsServerSide` `IsCustom` tinyint unsigned NOT NULL;
+
+ ALTER TABLE `areatrigger_template_actions`
+ CHANGE COLUMN `IsServerSide` `IsCustom` tinyint unsigned NOT NULL;
+
+ END IF;
+
+ UPDATE `areatrigger_create_properties` SET `IsAreatriggerCustom`=1 WHERE `AreaTriggerId` IN (42,43,50);
+ UPDATE `areatrigger_template` SET `IsCustom`=1 WHERE `Id` IN (42,43,50);
+ UPDATE `smart_scripts` SET `source_type`=12 WHERE `source_type`=11 AND `entryorguid` IN (42,43);
+
+ UPDATE `areatrigger_create_properties` atcp
+ LEFT JOIN `areatrigger_template` att ON att.`Id`=atcp.`AreaTriggerId` and att.`IsCustom`=atcp.`IsAreatriggerCustom`
+ SET atcp.`Flags`=att.`Flags`
+ WHERE att.`Flags` IS NOT NULL;
+
+ UPDATE `areatrigger_template` SET `Flags`=0x0;
+ UPDATE `areatrigger_template` SET `Flags`=0x1 WHERE `Id` BETWEEN 1 AND 33;
+ UPDATE `areatrigger_template` SET `Flags`=0x1 WHERE `Id` BETWEEN 42 AND 54;
+
+ UPDATE `areatrigger_template` SET `IsCustom`=0, `Flags`=0x1 WHERE `Id`=17635;
+
+ SET @CPC_ID := 1;
+ DELETE FROM `areatrigger_create_properties` WHERE `IsCustom`=1 AND `Id` BETWEEN @CPC_ID+0 AND @CPC_ID+42;
+ INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`) VALUES
+ (@CPC_ID+0, 1, 1, 1, 1, 3, 1, 3, 3, 1, 3, 0, 0),
+ (@CPC_ID+1, 1, 2, 1, 1, 1.25977, 1.27927, 3.70216, 1.25977, 1.27927, 3.70216, 0, 0),
+ (@CPC_ID+2, 1, 3, 1, 4, 4, 4, 6, 6, 0, 0, 0, 0),
+ (@CPC_ID+3, 1, 4, 1, 4, 0.5, 0.5, 3, 3, 0, 0, 0, 0),
+ (@CPC_ID+4, 1, 5, 1, 4, 40, 40, 10, 10, 0, 0, 0, 0),
+ (@CPC_ID+5, 1, 6, 1, 4, 0.5, 0.5, 3, 3, 0, 0, 0, 0),
+ (@CPC_ID+6, 1, 7, 1, 4, 3, 3, 5, 5, 0, 0, 0, 0),
+ (@CPC_ID+7, 1, 8, 1, 4, 4, 4, 4, 4, 0, 0, 0, 0),
+ (@CPC_ID+8, 1, 9, 1, 4, 4, 4, 7, 7, 0, 0, 0, 0),
+ (@CPC_ID+9, 1, 10, 1, 4, 5, 5, 5, 5, 0, 0, 0, 0),
+ (@CPC_ID+10, 1, 11, 1, 4, 4, 4, 15, 15, 0, 0, 0, 0),
+ (@CPC_ID+11, 1, 12, 1, 4, 4, 4, 5, 5, 0, 0, 0, 0),
+ (@CPC_ID+12, 1, 13, 1, 4, 4, 4, 5, 5, 0, 0, 0, 0),
+ (@CPC_ID+13, 1, 14, 1, 4, 4, 4, 5, 5, 0, 0, 0, 0),
+ (@CPC_ID+14, 1, 15, 1, 4, 4, 4, 5, 5, 0, 0, 0, 0),
+ (@CPC_ID+15, 1, 16, 1, 4, 4, 4, 5, 5, 0, 0, 0, 0),
+ (@CPC_ID+16, 1, 17, 1, 4, 5, 5, 8, 8, 0, 0, 0, 0),
+ (@CPC_ID+17, 1, 18, 1, 4, 5, 5, 8, 8, 0, 0, 0, 0),
+ (@CPC_ID+18, 1, 19, 1, 4, 5, 5, 9, 9, 0, 0, 0, 0),
+ (@CPC_ID+19, 1, 20, 1, 6, 5, 5, 8, 8, 0, 0, 0, 0),
+ (@CPC_ID+20, 1, 21, 1, 4, 5, 5, 6, 6, 0, 0, 0, 0),
+ (@CPC_ID+21, 1, 22, 1, 4, 5, 5, 8, 8, 0, 0, 0, 0),
+ (@CPC_ID+22, 1, 23, 1, 1, 18, 18, 12, 18, 18, 12, 0, 0),
+ (@CPC_ID+23, 1, 24, 1, 1, 2, 50, 30, 2, 50, 30, 0, 0),
+ (@CPC_ID+24, 1, 25, 1, 1, 1, 25, 80, 1, 25, 80, 0, 0),
+ (@CPC_ID+25, 1, 26, 1, 1, 1, 20, 30, 1, 20, 30, 0, 0),
+ (@CPC_ID+26, 1, 27, 1, 1, 20, 50, 5, 20, 50, 5, 0, 0),
+ (@CPC_ID+27, 1, 28, 1, 1, 10, 25, 1, 10, 25, 1, 0, 0),
+ (@CPC_ID+28, 1, 29, 1, 0, 3, 3, 0, 0, 0, 0, 0, 0),
+ (@CPC_ID+29, 1, 30, 1, 0, 5, 5, 0, 0, 0, 0, 0, 0),
+ (@CPC_ID+30, 1, 31, 1, 0, 5, 5, 0, 0, 0, 0, 0, 0),
+ (@CPC_ID+31, 1, 32, 1, 1, 38, 38, 25, 38, 38, 25, 0, 0),
+ (@CPC_ID+32, 1, 33, 1, 0, 1.5, 1.5, 0, 0, 0, 0, 0, 0),
+ (@CPC_ID+33, 1, 44, 1, 1, 30, 20, 10, 30, 20, 10, 0, 0),
+ (@CPC_ID+34, 1, 45, 1, 1, 250, 250, 50, 250, 250, 50, 0, 0),
+ (@CPC_ID+35, 1, 46, 1, 0, 75, 75, 0, 0, 0, 0, 0, 0),
+ (@CPC_ID+36, 1, 48, 1, 1, 35, 20, 25, 35, 20, 25, 0, 0),
+ (@CPC_ID+37, 1, 49, 1, 1, 30, 50, 5, 30, 50, 5, 0, 0),
+ (@CPC_ID+38, 1, 51, 1, 0, 70, 70, 0, 0, 0, 0, 0, 0),
+ (@CPC_ID+39, 1, 52, 1, 1, 20, 20, 10, 20, 20, 10, 0, 0),
+ (@CPC_ID+40, 1, 53, 1, 1, 30, 20, 10, 30, 20, 10, 0, 0),
+ (@CPC_ID+41, 1, 54, 1, 1, 4, 60, 30, 4, 60, 30, 0, 0),
+ (@CPC_ID+42, 1, 17635, 0, 4, 40, 40, 10, 10, 0, 0, 0, 0);
+
+ IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema`=SCHEMA() AND `table_name`='areatrigger' AND `column_name`='IsCustom') THEN
+
+ UPDATE `areatrigger` SET `IsServerside`=0 WHERE `AreaTriggerId`=17635;
+
+ UPDATE `areatrigger` att
+ LEFT JOIN `areatrigger_create_properties` atcp ON att.`AreaTriggerId`=atcp.`AreaTriggerId` AND att.`IsServerSide`=atcp.`IsAreatriggerCustom`
+ SET
+ att.`AreaTriggerId`=atcp.`Id`,
+ att.`IsServerSide`=atcp.`IsCustom`
+ WHERE atcp.`Id` IS NOT NULL
+ AND atcp.`IsCustom` IS NOT NULL;
+
+ ALTER TABLE `areatrigger`
+ DROP COLUMN `Shape`,
+ DROP COLUMN `ShapeData0`,
+ DROP COLUMN `ShapeData1`,
+ DROP COLUMN `ShapeData2`,
+ DROP COLUMN `ShapeData3`,
+ DROP COLUMN `ShapeData4`,
+ DROP COLUMN `ShapeData5`,
+ DROP COLUMN `ShapeData6`,
+ DROP COLUMN `ShapeData7`,
+ CHANGE COLUMN `AreaTriggerId` `AreaTriggerCreatePropertiesId` int unsigned NOT NULL,
+ CHANGE COLUMN `IsServerSide` `IsCustom` tinyint unsigned NOT NULL;
+
+ END IF;
+END;;
+
+DELIMITER ;
+CALL areatrigger_refactor();
+
+DROP PROCEDURE IF EXISTS areatrigger_refactor;
+
+DELETE FROM `trinity_string` WHERE `entry` IN (1997, 1998);
+INSERT INTO `trinity_string` (`entry`, `content_default`) VALUES
+(1997,'You have entered areatrigger entity %u (IsCustom: %u IsSpawn: %u GUID: %u).'),
+(1998,'You have left areatrigger entity %u (IsCustom: %u IsSpawn: %u GUID: %u).');