diff options
| author | jackpoz <giacomopoz@gmail.com> | 2019-04-17 21:01:32 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-11-30 23:05:27 +0100 |
| commit | b02143118f830691412bbc7649c1d0c9ec32f3a9 (patch) | |
| tree | 4fab382122ee8503792ec79e364225e0fbba59e6 /src | |
| parent | 5e845a48ddbe9f9a78a9203890ff5c0a972e9ab2 (diff) | |
Core/Database: Delete gameobject_addon data when deleting a GameObject from the database
Close #23076
(cherry picked from commit f88a5b12bd7511331ea27975fe26bfc98d92d20d)
Diffstat (limited to 'src')
3 files changed, 6 insertions, 0 deletions
diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp index 886f1d64e79..e21f3016d28 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.cpp +++ b/src/server/database/Database/Implementation/WorldDatabase.cpp @@ -93,6 +93,7 @@ void WorldDatabaseConnection::DoPrepareStatements() PrepareStatement(WORLD_UPD_CREATURE_ZONE_AREA_DATA, "UPDATE creature SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, "UPDATE gameobject SET zoneId = ?, areaId = ? WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_DEL_SPAWNGROUP_MEMBER, "DELETE FROM spawn_group WHERE spawnType = ? AND spawnId = ?", CONNECTION_ASYNC); + PrepareStatement(WORLD_DEL_GAMEOBJECT_ADDON, "DELETE FROM gameobject_addon WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(WORLD_SEL_GUILD_REWARDS_REQ_ACHIEVEMENTS, "SELECT AchievementRequired FROM guild_rewards_req_achievements WHERE ItemID = ?", CONNECTION_SYNCH); } diff --git a/src/server/database/Database/Implementation/WorldDatabase.h b/src/server/database/Database/Implementation/WorldDatabase.h index 99a54fc35ae..2922fbde8f4 100644 --- a/src/server/database/Database/Implementation/WorldDatabase.h +++ b/src/server/database/Database/Implementation/WorldDatabase.h @@ -99,6 +99,7 @@ enum WorldDatabaseStatements : uint32 WORLD_UPD_CREATURE_ZONE_AREA_DATA, WORLD_UPD_GAMEOBJECT_ZONE_AREA_DATA, WORLD_DEL_SPAWNGROUP_MEMBER, + WORLD_DEL_GAMEOBJECT_ADDON, WORLD_SEL_GUILD_REWARDS_REQ_ACHIEVEMENTS, MAX_WORLDDATABASE_STATEMENTS diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index b249f65e0c9..d12c8bae8de 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1269,6 +1269,10 @@ void GameObject::DeleteFromDB() stmt->setUInt32(1, LINKED_RESPAWN_CREATURE_TO_GO); trans->Append(stmt); + stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAMEOBJECT_ADDON); + stmt->setUInt32(0, m_spawnId); + trans->Append(stmt); + WorldDatabase.CommitTransaction(trans); } |
