Core/Scripts: Expose Spell::GetUnitTargetIndexForEffect in scripts

Signed-off-by: luis <[email protected]>
This commit is contained in:
Shauren
2026-02-20 08:19:16 -03:00
committed by luis
parent 204748c946
commit 265b3dbeaf
3 changed files with 18 additions and 6 deletions
+6 -6
View File
@@ -2658,18 +2658,18 @@ int32 Spell::GetUnitTargetIndexForEffect(ObjectGuid const& target, SpellEffIndex
if (uniqueTargetInfo.MissCondition == SPELL_MISS_NONE && uniqueTargetInfo.EffectMask & (1 << effect))
{
if (uniqueTargetInfo.TargetGUID == target)
break;
return index;
++index;
}
}
return index;
return -1;
}
int64 Spell::GetUnitTargetCountForEffect(SpellEffIndex effect) const
{
return std::count_if(m_UniqueTargetInfo.begin(), m_UniqueTargetInfo.end(), [effect](TargetInfo const& targetInfo)
return std::ranges::count_if(m_UniqueTargetInfo, [effect](TargetInfo const& targetInfo)
{
return targetInfo.MissCondition == SPELL_MISS_NONE && targetInfo.EffectMask & (1 << effect);
});
@@ -2677,7 +2677,7 @@ int64 Spell::GetUnitTargetCountForEffect(SpellEffIndex effect) const
int64 Spell::GetGameObjectTargetCountForEffect(SpellEffIndex effect) const
{
return std::count_if(m_UniqueGOTargetInfo.begin(), m_UniqueGOTargetInfo.end(), [effect](GOTargetInfo const& targetInfo)
return std::ranges::count_if(m_UniqueGOTargetInfo, [effect](GOTargetInfo const& targetInfo)
{
return targetInfo.EffectMask & (1 << effect);
});
@@ -2685,7 +2685,7 @@ int64 Spell::GetGameObjectTargetCountForEffect(SpellEffIndex effect) const
int64 Spell::GetItemTargetCountForEffect(SpellEffIndex effect) const
{
return std::count_if(m_UniqueItemInfo.begin(), m_UniqueItemInfo.end(), [effect](ItemTargetInfo const& targetInfo)
return std::ranges::count_if(m_UniqueItemInfo, [effect](ItemTargetInfo const& targetInfo)
{
return targetInfo.EffectMask & (1 << effect);
});
@@ -2693,7 +2693,7 @@ int64 Spell::GetItemTargetCountForEffect(SpellEffIndex effect) const
int64 Spell::GetCorpseTargetCountForEffect(SpellEffIndex effect) const
{
return std::count_if(m_UniqueCorpseTargetInfo.begin(), m_UniqueCorpseTargetInfo.end(), [effect](CorpseTargetInfo const& targetInfo)
return std::ranges::count_if(m_UniqueCorpseTargetInfo, [effect](CorpseTargetInfo const& targetInfo)
{
return targetInfo.EffectMask & (1 << effect);
});
+11
View File
@@ -486,6 +486,17 @@ int64 SpellScript::GetUnitTargetCountForEffect(SpellEffIndex effect) const
return m_spell->GetUnitTargetCountForEffect(effect);
}
int32 SpellScript::GetUnitTargetIndexForEffect(ObjectGuid const& target, SpellEffIndex effect) const
{
if (!IsAfterTargetSelectionPhase())
{
TC_LOG_ERROR("scripts", "Script: `{}` Spell: `{}`: function SpellScript::GetUnitTargetIndexForEffect was called, but function has no effect in current hook! (spell has not selected targets yet)",
m_scriptName, m_scriptSpellId);
return 0;
}
return m_spell->GetUnitTargetIndexForEffect(target, effect);
}
int64 SpellScript::GetGameObjectTargetCountForEffect(SpellEffIndex effect) const
{
if (!IsAfterTargetSelectionPhase())
+1
View File
@@ -889,6 +889,7 @@ public:
// methods usable only after spell targets have been fully selected
int64 GetUnitTargetCountForEffect(SpellEffIndex effect) const;
int32 GetUnitTargetIndexForEffect(ObjectGuid const& target, SpellEffIndex effect) const;
int64 GetGameObjectTargetCountForEffect(SpellEffIndex effect) const;
int64 GetItemTargetCountForEffect(SpellEffIndex effect) const;
int64 GetCorpseTargetCountForEffect(SpellEffIndex effect) const;