diff options
author | Telegrill <nyrdeveloper@gmail.com> | 2025-09-06 00:40:47 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2025-09-06 13:19:38 +0200 |
commit | 2e3f3fda3fc533daa4064739b633dbb28f5115d3 (patch) | |
tree | 6775145b5e44b6f34bf5afb45db4e41ca380b071 /src/server/game/Spells/Spell.h | |
parent | 52cb4cf9f166c1cf7cd02a0b1e2b25f18ab0024a (diff) |
Core/Spells: Add a helper function to sort spell targets based on custom scripted sorting rules
Diffstat (limited to 'src/server/game/Spells/Spell.h')
-rw-r--r-- | src/server/game/Spells/Spell.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 2fb3d3ae4c9..d6f968420d8 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -1054,6 +1054,16 @@ namespace Trinity }; TC_GAME_API void SelectRandomInjuredTargets(std::list<WorldObject*>& targets, size_t maxTargets, bool prioritizePlayers, Unit const* prioritizeGroupMembersOf = nullptr); + + struct PriorityRules + { + int32 weight; + std::function<bool(Unit*)> condition; + }; + + inline std::vector<PriorityRules> CreatePriorityRules(std::initializer_list<PriorityRules> rules) { return { rules }; } + + TC_GAME_API void SortTargetsWithPriorityRules(std::list<WorldObject*>& targets, size_t maxTargets, std::vector<PriorityRules> const& rules); } extern template void Spell::SearchTargets<Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck>>(Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck>& searcher, uint32 containerMask, WorldObject* referer, Position const* pos, float radius); |