mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 09:17:36 +01:00
Core/Spells: Rename TARGET_UNIT_CONE_ENEMY_104 to TARGET_UNIT_CONE_CASTER_TO_DEST_ENEMY
This commit is contained in:
@@ -2602,7 +2602,7 @@ enum Targets
|
||||
TARGET_UNIT_PASSENGER_5 = 101,
|
||||
TARGET_UNIT_PASSENGER_6 = 102,
|
||||
TARGET_UNIT_PASSENGER_7 = 103,
|
||||
TARGET_UNIT_CONE_ENEMY_104 = 104,
|
||||
TARGET_UNIT_CONE_CASTER_TO_DEST_ENEMY = 104,
|
||||
TARGET_UNIT_UNK_105 = 105, // 1 spell
|
||||
TARGET_DEST_CHANNEL_CASTER = 106,
|
||||
TARGET_UNK_DEST_AREA_UNK_107 = 107, // not enough info - only generic spells avalible
|
||||
|
||||
@@ -1137,10 +1137,17 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo,
|
||||
|
||||
void Spell::SelectImplicitConeTargets(SpellEffectInfo const& spellEffectInfo, SpellImplicitTargetInfo const& targetType, uint32 effMask)
|
||||
{
|
||||
if (targetType.GetReferenceType() != TARGET_REFERENCE_TYPE_CASTER)
|
||||
Position coneSrc(*m_caster);
|
||||
switch (targetType.GetReferenceType())
|
||||
{
|
||||
ASSERT(false && "Spell::SelectImplicitConeTargets: received not implemented target reference type");
|
||||
return;
|
||||
case TARGET_REFERENCE_TYPE_CASTER:
|
||||
break;
|
||||
case TARGET_REFERENCE_TYPE_DEST:
|
||||
if (m_caster->GetExactDist2d(m_targets.GetDstPos()) > 0.1f)
|
||||
coneSrc.SetOrientation(m_caster->GetAbsoluteAngle(m_targets.GetDstPos()));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
std::list<WorldObject*> targets;
|
||||
SpellTargetObjectTypes objectType = targetType.GetObjectType();
|
||||
@@ -1150,7 +1157,7 @@ void Spell::SelectImplicitConeTargets(SpellEffectInfo const& spellEffectInfo, Sp
|
||||
|
||||
if (uint32 containerTypeMask = GetSearcherTypeMask(objectType, condList))
|
||||
{
|
||||
Trinity::WorldObjectSpellConeTargetCheck check(DegToRad(m_spellInfo->ConeAngle), m_spellInfo->Width ? m_spellInfo->Width : m_caster->GetCombatReach(), radius, m_caster, m_spellInfo, selectionType, condList, objectType);
|
||||
Trinity::WorldObjectSpellConeTargetCheck check(coneSrc, DegToRad(m_spellInfo->ConeAngle), m_spellInfo->Width ? m_spellInfo->Width : m_caster->GetCombatReach(), radius, m_caster, m_spellInfo, selectionType, condList, objectType);
|
||||
Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellConeTargetCheck> searcher(m_caster, targets, check, containerTypeMask);
|
||||
SearchTargets<Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellConeTargetCheck> >(searcher, containerTypeMask, m_caster, m_caster, radius);
|
||||
|
||||
@@ -8499,20 +8506,20 @@ bool WorldObjectSpellAreaTargetCheck::operator()(WorldObject* target) const
|
||||
return WorldObjectSpellTargetCheck::operator ()(target);
|
||||
}
|
||||
|
||||
WorldObjectSpellConeTargetCheck::WorldObjectSpellConeTargetCheck(float coneAngle, float lineWidth, float range, WorldObject* caster,
|
||||
WorldObjectSpellConeTargetCheck::WorldObjectSpellConeTargetCheck(Position const& coneSrc, float coneAngle, float lineWidth, float range, WorldObject* caster,
|
||||
SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType)
|
||||
: WorldObjectSpellAreaTargetCheck(range, caster, caster, caster, spellInfo, selectionType, condList, objectType), _coneAngle(coneAngle), _lineWidth(lineWidth) { }
|
||||
: WorldObjectSpellAreaTargetCheck(range, caster, caster, caster, spellInfo, selectionType, condList, objectType), _coneSrc(coneSrc), _coneAngle(coneAngle), _lineWidth(lineWidth) { }
|
||||
|
||||
bool WorldObjectSpellConeTargetCheck::operator()(WorldObject* target) const
|
||||
{
|
||||
if (_spellInfo->HasAttribute(SPELL_ATTR0_CU_CONE_BACK))
|
||||
{
|
||||
if (!_caster->isInBack(target, _coneAngle))
|
||||
if (_coneSrc.HasInArc(-std::abs(_coneAngle), target))
|
||||
return false;
|
||||
}
|
||||
else if (_spellInfo->HasAttribute(SPELL_ATTR0_CU_CONE_LINE))
|
||||
{
|
||||
if (!_caster->HasInLine(target, target->GetCombatReach(), _lineWidth))
|
||||
if (!_coneSrc.HasInLine(target, target->GetCombatReach(), _lineWidth))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@@ -8520,7 +8527,7 @@ bool WorldObjectSpellConeTargetCheck::operator()(WorldObject* target) const
|
||||
if (!_caster->IsUnit() || !_caster->ToUnit()->IsWithinBoundaryRadius(target->ToUnit()))
|
||||
// ConeAngle > 0 -> select targets in front
|
||||
// ConeAngle < 0 -> select targets in back
|
||||
if (_caster->HasInArc(_coneAngle, target) != G3D::fuzzyGe(_coneAngle, 0.f))
|
||||
if (_coneSrc.HasInArc(_coneAngle, target) != G3D::fuzzyGe(_coneAngle, 0.f))
|
||||
return false;
|
||||
}
|
||||
return WorldObjectSpellAreaTargetCheck::operator ()(target);
|
||||
|
||||
@@ -904,9 +904,10 @@ namespace Trinity
|
||||
|
||||
struct TC_GAME_API WorldObjectSpellConeTargetCheck : public WorldObjectSpellAreaTargetCheck
|
||||
{
|
||||
Position _coneSrc;
|
||||
float _coneAngle;
|
||||
float _lineWidth;
|
||||
WorldObjectSpellConeTargetCheck(float coneAngle, float lineWidth, float range, WorldObject* caster,
|
||||
WorldObjectSpellConeTargetCheck(Position const& coneSrc, float coneAngle, float lineWidth, float range, WorldObject* caster,
|
||||
SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType);
|
||||
|
||||
bool operator()(WorldObject* target) const;
|
||||
|
||||
@@ -322,7 +322,7 @@ SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_T
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 101 TARGET_UNIT_PASSENGER_5
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 102 TARGET_UNIT_PASSENGER_6
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 103 TARGET_UNIT_PASSENGER_7
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_CONE, TARGET_CHECK_ENEMY, TARGET_DIR_FRONT}, // 104 TARGET_UNIT_CONE_ENEMY_104
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_DEST, TARGET_SELECT_CATEGORY_CONE, TARGET_CHECK_ENEMY, TARGET_DIR_FRONT}, // 104 TARGET_UNIT_CONE_CASTER_TO_DEST_ENEMY
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 105 TARGET_UNIT_UNK_105
|
||||
{TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_CHANNEL, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 106 TARGET_DEST_CHANNEL_CASTER
|
||||
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_DEST, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 107 TARGET_UNK_DEST_AREA_UNK_107
|
||||
|
||||
@@ -173,7 +173,7 @@ class spell_argaloth_meteor_slash : public SpellScriptLoader
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_argaloth_meteor_slash_SpellScript::CountTargets, EFFECT_0, TARGET_UNIT_CONE_ENEMY_104);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_argaloth_meteor_slash_SpellScript::CountTargets, EFFECT_0, TARGET_UNIT_CONE_CASTER_TO_DEST_ENEMY);
|
||||
OnHit += SpellHitFn(spell_argaloth_meteor_slash_SpellScript::SplitDamage);
|
||||
}
|
||||
|
||||
|
||||
@@ -305,7 +305,7 @@ class spell_sha_crash_lightning : public SpellScript
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_crash_lightning::CountTargets, EFFECT_0, TARGET_UNIT_CONE_ENEMY_104);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_crash_lightning::CountTargets, EFFECT_0, TARGET_UNIT_CONE_CASTER_TO_DEST_ENEMY);
|
||||
AfterCast += SpellCastFn(spell_sha_crash_lightning::TriggerCleaveBuff);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user