diff options
Diffstat (limited to 'src/server/game/AI/ScriptedAI')
| -rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedCreature.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/AI/ScriptedAI/ScriptedCreature.h | 8 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index c6c232f57eb..fd01ee4b423 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -109,8 +109,11 @@ bool SummonList::HasEntry(uint32 entry) const return false; } -void SummonList::DoActionImpl(int32 action, StorageType const& summons) +void SummonList::DoActionImpl(int32 action, StorageType& summons, uint16 max) { + if (max) + Trinity::Containers::RandomResize(summons, max); + for (ObjectGuid const& guid : summons) { Creature* summon = ObjectAccessor::GetCreature(*_me, guid); diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.h b/src/server/game/AI/ScriptedAI/ScriptedCreature.h index d8d3a356c06..bcb0496ec36 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.h +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.h @@ -98,9 +98,9 @@ public: void DoAction(int32 info, Predicate&& predicate, uint16 max = 0) { // We need to use a copy of SummonList here, otherwise original SummonList would be modified - StorageType listCopy = _storage; - Trinity::Containers::RandomResize<StorageType, Predicate>(listCopy, std::forward<Predicate>(predicate), max); - DoActionImpl(info, listCopy); + StorageType listCopy; + std::copy_if(std::begin(_storage), std::end(_storage), std::inserter(listCopy, std::end(listCopy)), predicate); + DoActionImpl(info, listCopy, max); } void DoZoneInCombat(uint32 entry = 0); @@ -108,7 +108,7 @@ public: bool HasEntry(uint32 entry) const; private: - void DoActionImpl(int32 action, StorageType const& summons); + void DoActionImpl(int32 action, StorageType& summons, uint16 max); Creature* _me; StorageType _storage; |
