aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.h
diff options
context:
space:
mode:
authorTelegrill <nyrdeveloper@gmail.com>2025-09-06 00:40:47 +0200
committerShauren <shauren.trinity@gmail.com>2025-09-06 13:19:38 +0200
commit2e3f3fda3fc533daa4064739b633dbb28f5115d3 (patch)
tree6775145b5e44b6f34bf5afb45db4e41ca380b071 /src/server/game/Spells/Spell.h
parent52cb4cf9f166c1cf7cd02a0b1e2b25f18ab0024a (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.h10
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);