Core/Spells: Fixed TARGET_UNIT_AREA_THREAT_LIST and TARGET_UNIT_AREA_TAP_LIST

This commit is contained in:
Shauren
2024-04-11 19:59:43 +02:00
parent 796b37102a
commit 66abcaff14
3 changed files with 15 additions and 15 deletions

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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