diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-04-11 19:59:43 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-04-11 19:59:43 +0200 |
commit | 66abcaff14a6d55380b612d1c1b9c2cee3c004ae (patch) | |
tree | 4ea1e0e8cb9ff90b916fcec3ddc81a309fd47aa5 | |
parent | 796b37102ac78d7a8f2cfc1dd748a3ba2461ff4e (diff) |
Core/Spells: Fixed TARGET_UNIT_AREA_THREAT_LIST and TARGET_UNIT_AREA_TAP_LIST
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 22 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.h | 4 |
3 files changed, 15 insertions, 15 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 3de0a179bcd..22095eae8c7 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1428,6 +1428,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); @@ -9162,16 +9174,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; } diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 5f2713ae508..530e733c215 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -363,8 +363,8 @@ std::array<SpellImplicitTargetInfo::StaticData, TOTAL_SPELL_TARGETS> SpellImplic {TARGET_OBJECT_TYPE_CORPSE, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_RAID, TARGET_DIR_NONE}, // 119 TARGET_CORPSE_SRC_AREA_RAID {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_SUMMONED, TARGET_DIR_NONE}, // 120 TARGET_UNIT_SELF_AND_SUMMONS {TARGET_OBJECT_TYPE_CORPSE, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_ALLY, TARGET_DIR_NONE}, // 121 TARGET_CORPSE_TARGET_ALLY - {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_THREAT, TARGET_DIR_NONE}, // 122 TARGET_UNIT_AREA_THREAT_LIST - {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_TAP, TARGET_DIR_NONE}, // 123 TARGET_UNIT_AREA_TAP_LIST + {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 122 TARGET_UNIT_AREA_THREAT_LIST + {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 123 TARGET_UNIT_AREA_TAP_LIST {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 124 TARGET_UNIT_TARGET_TAP_LIST {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 125 TARGET_DEST_CASTER_GROUND_2 {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 126 TARGET_UNIT_CASTER_AREA_ENEMY_CLUMP diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index cbc56e7a079..88f33903c01 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -87,9 +87,7 @@ enum SpellTargetCheckTypes : uint8 TARGET_CHECK_RAID, TARGET_CHECK_RAID_CLASS, TARGET_CHECK_PASSENGER, - TARGET_CHECK_SUMMONED, - TARGET_CHECK_THREAT, - TARGET_CHECK_TAP + TARGET_CHECK_SUMMONED }; enum SpellTargetDirectionTypes |