aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/characters_database.sql3
-rw-r--r--sql/updates/characters/master/2024_08_05_00_characters.sql23
-rw-r--r--src/server/game/Spells/SpellEffects.cpp3
3 files changed, 28 insertions, 1 deletions
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql
index 44c876cc49a..936051a3131 100644
--- a/sql/base/characters_database.sql
+++ b/sql/base/characters_database.sql
@@ -3743,7 +3743,8 @@ INSERT INTO `updates` VALUES
('2024_04_28_00_characters.sql','F80F476704BE535B5DCB0BCEBDD56024FCFBBAA2','ARCHIVED','2024-04-28 19:26:58',0),
('2024_05_11_00_characters.sql','A65765D87C1BA181561A6517040DC1A3A8103B71','ARCHIVED','2024-05-11 03:06:52',0),
('2024_07_31_00_characters.sql','F7E7AE0B8077CB9A1EA0AE4F49693BB05A742AC3','RELEASED','2024-07-31 16:18:36',0),
-('2024_08_04_00_characters.sql','7D153C59998416E6EA1455086730A2321AD0F2A8','RELEASED','2024-08-04 17:58:59',0);
+('2024_08_04_00_characters.sql','7D153C59998416E6EA1455086730A2321AD0F2A8','RELEASED','2024-08-04 17:58:59',0),
+('2024_08_05_00_characters.sql','7E4AE28F9EC370A1B22DBD8DD718EE027A321F33','RELEASED','2024-08-05 11:19:40',0);
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/characters/master/2024_08_05_00_characters.sql b/sql/updates/characters/master/2024_08_05_00_characters.sql
new file mode 100644
index 00000000000..cd0d2f167ea
--- /dev/null
+++ b/sql/updates/characters/master/2024_08_05_00_characters.sql
@@ -0,0 +1,23 @@
+DELETE
+ ctc,
+ cte,
+ ca
+FROM
+ character_trait_config AS ctc
+ LEFT JOIN (
+ SELECT
+ ctc2.guid AS guid,
+ MIN(ctc2.traitConfigId) AS traitConfigId
+ FROM
+ character_trait_config ctc2
+ WHERE
+ ctc2.type = 3
+ GROUP BY
+ ctc2.guid,
+ ctc2.traitSystemId
+ ) AS minctc ON ctc.guid = minctc.guid AND ctc.traitConfigId = minctc.traitConfigId
+ LEFT JOIN character_trait_entry AS cte ON ctc.guid = cte.guid AND ctc.traitConfigId = cte.traitConfigId
+ LEFT JOIN character_action AS ca ON ctc.guid = ca.guid AND ctc.traitConfigId = ca.traitConfigId
+WHERE
+ ctc.type = 3 AND
+ minctc.traitConfigId IS NULL;
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 48791d06b5f..54d36d7f24e 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -6048,6 +6048,9 @@ void Spell::EffectCreateTraitTreeConfig()
if (!target)
return;
+ if (target->IsLoading() && target->m_activePlayerData->TraitConfigs.empty())
+ return; // traits not loaded yet
+
WorldPackets::Traits::TraitConfig newConfig;
newConfig.Type = TraitMgr::GetConfigTypeForTree(effectInfo->MiscValue);
if (newConfig.Type != TraitConfigType::Generic)