diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-04-11 19:59:43 +0200 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2024-05-28 16:41:09 +0200 |
| commit | 8b6df512bb57045503daa817ca6cae6ba9642e04 (patch) | |
| tree | de9d94cb6c6a67333f63029719f054bfdee56db8 /src/server/game/Spells/Spell.cpp | |
| parent | 2c56ee9ce181af94eff7999849af295c9fb7e2ca (diff) | |
Core/Spells: Fixed TARGET_UNIT_AREA_THREAT_LIST and TARGET_UNIT_AREA_TAP_LIST
(cherry picked from commit 66abcaff14a6d55380b612d1c1b9c2cee3c004ae)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 9927b4f7ec2..97a1a91900a 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1427,6 +1427,18 @@ void Spell::SelectImplicitAreaTargets(SpellEffectInfo const& spellEffectInfo, Sp SearchAreaTargets(targets, spellEffectInfo, radius, center, referer, targetType.GetObjectType(), targetType.GetCheckType(), spellEffectInfo.ImplicitTargetConditions.get(), Trinity::WorldObjectSpellAreaTargetSearchReason::Area); break; + case TARGET_UNIT_AREA_THREAT_LIST: + if (Unit* unit = m_caster->ToUnit()) + for (ThreatReference const* threatRef : unit->GetThreatManager().GetUnsortedThreatList()) + if (Unit* threateningUnit = threatRef->GetVictim()) + targets.push_back(threateningUnit); + break; + case TARGET_UNIT_AREA_TAP_LIST: + if (Creature* creature = m_caster->ToCreature()) + for (ObjectGuid const& tapperGuid : creature->GetTapList()) + if (Player* tapper = ObjectAccessor::GetPlayer(*m_caster, tapperGuid)) + targets.push_back(tapper); + break; default: SearchAreaTargets(targets, spellEffectInfo, radius, center, referer, targetType.GetObjectType(), targetType.GetCheckType(), spellEffectInfo.ImplicitTargetConditions.get(), Trinity::WorldObjectSpellAreaTargetSearchReason::Area); @@ -9077,16 +9089,6 @@ bool WorldObjectSpellTargetCheck::operator()(WorldObject* target) const if (unitTarget->ToTempSummon()->GetSummonerGUID() != _caster->GetGUID()) return false; break; - case TARGET_CHECK_THREAT: - if (!_referer->IsUnit() || _referer->ToUnit()->GetThreatManager().GetThreat(unitTarget, true) <= 0.0f) - return false; - break; - case TARGET_CHECK_TAP: - if (_referer->GetTypeId() != TYPEID_UNIT || unitTarget->GetTypeId() != TYPEID_PLAYER) - return false; - if (!_referer->ToCreature()->isTappedBy(unitTarget->ToPlayer())) - return false; - break; default: break; } |
