From 46852a3808955ab3fb5d3044c9f0c85d8223c986 Mon Sep 17 00:00:00 2001 From: Elron103 Date: Sun, 2 Sep 2012 00:19:13 +0200 Subject: Core/Scripting: Fix DoAction function of SummonList incorrectly removing entries in SummonList --- src/server/game/AI/ScriptedAI/ScriptedCreature.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index ba0a94d2590..aa46d555b7d 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -41,8 +41,10 @@ class SummonList : public std::list template void DoAction(int32 info, Predicate& predicate, uint16 max = 0) { - Trinity::Containers::RandomResizeList(*this, predicate, max); - for (iterator i = begin(); i != end(); ) + // We need to use a copy of SummonList here, otherwise original SummonList would be modified + std::list listCopy = *this; + Trinity::Containers::RandomResizeList(listCopy, predicate, max); + for (iterator i = listCopy.begin(); i != listCopy.end(); ) { Creature* summon = Unit::GetCreature(*me, *i++); if (summon && summon->IsAIEnabled) -- cgit v1.2.3