Core/Creature: improve DB linked_respawn handling

Port From (https://github.com/TrinityCore/TrinityCore/commit/1206e815cd9785e4671f30548140f038567811a2)
This commit is contained in:
hondacrx
2021-05-18 12:55:23 -04:00
parent ccd92e8dd5
commit 5a9ff185b9
5 changed files with 54 additions and 10 deletions
+20
View File
@@ -1660,6 +1660,26 @@ namespace Game.Entities
stmt.AddValue(0, m_spawnId);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.CreatureToCreature);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.CreatureToGO);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN_MASTER);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.CreatureToCreature);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN_MASTER);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.GOToCreature);
trans.Append(stmt);
DB.World.CommitTransaction(trans);
// then delete any active instances of the creature
@@ -1075,6 +1075,26 @@ namespace Game.Entities
stmt.AddValue(0, m_spawnId);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.GOToGO);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.GOToCreature);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN_MASTER);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.GOToGO);
trans.Append(stmt);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN_MASTER);
stmt.AddValue(0, m_spawnId);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.CreatureToGO);
trans.Append(stmt);
DB.World.CommitTransaction(trans);
}
+4 -2
View File
@@ -3523,8 +3523,9 @@ namespace Game
if (linkedGuidLow == 0) // we're removing the linking
{
linkedRespawnStorage.Remove(guid);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_CRELINKED_RESPAWN);
stmt = DB.World.GetPreparedStatement(WorldStatements.DEL_LINKED_RESPAWN);
stmt.AddValue(0, guidLow);
stmt.AddValue(1, (uint)CreatureLinkedRespawnType.CreatureToCreature);
DB.World.Execute(stmt);
return true;
}
@@ -3553,9 +3554,10 @@ namespace Game
ObjectGuid linkedGuid = ObjectGuid.Create(HighGuid.Creature, slave.spawnPoint.GetMapId(), slave.Id, linkedGuidLow);
linkedRespawnStorage[guid] = linkedGuid;
stmt = DB.World.GetPreparedStatement(WorldStatements.REP_CREATURE_LINKED_RESPAWN);
stmt = DB.World.GetPreparedStatement(WorldStatements.REP_LINKED_RESPAWN);
stmt.AddValue(0, guidLow);
stmt.AddValue(1, linkedGuidLow);
stmt.AddValue(2, (uint)CreatureLinkedRespawnType.CreatureToCreature);
DB.World.Execute(stmt);
return true;
}