Core/Creatures: Create a CreatureGroup for every SummonCreatureGroup

Port From (https://github.com/TrinityCore/TrinityCore/commit/9a7a83ef3074faaad037cfb4c098784695f49d30)
This commit is contained in:
Hondacrx
2024-09-01 15:49:10 -04:00
parent 9b4f3681c0
commit 8edc440181
2 changed files with 43 additions and 13 deletions
+5 -13
View File
@@ -1685,21 +1685,13 @@ namespace Game.Entities
public void SummonCreatureGroup(byte group, out List<TempSummon> list)
{
Cypher.Assert((IsTypeId(TypeId.GameObject) || IsTypeId(TypeId.Unit)), "Only GOs and creatures can summon npc groups!");
list = new List<TempSummon>();
var data = Global.ObjectMgr.GetSummonGroup(GetEntry(), IsTypeId(TypeId.GameObject) ? SummonerType.GameObject : SummonerType.Creature, group);
if (data.Empty())
{
Log.outWarn(LogFilter.Scripts, "{0} ({1}) tried to summon non-existing summon group {2}.", GetName(), GetGUID().ToString(), group);
return;
}
list = new();
foreach (var tempSummonData in data)
Cypher.Assert(IsTypeId(TypeId.GameObject) || IsTypeId(TypeId.Unit), "Only GOs and creatures can summon npc groups!");
Map.SummonCreatureGroup(GetEntry(), GetTypeId() == TypeId.GameObject ? SummonerType.GameObject : SummonerType.Creature, group, list, tempSummonData =>
{
TempSummon summon = SummonCreature(tempSummonData.entry, tempSummonData.pos, tempSummonData.type, tempSummonData.time);
if (summon != null)
list.Add(summon);
}
return SummonCreature(tempSummonData.entry, tempSummonData.pos, tempSummonData.type, tempSummonData.time);
});
}
public Creature FindNearestCreature(uint entry, float range, bool alive = true)