diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-12-29 11:47:32 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-29 11:47:32 +0100 |
commit | 8921d07201addf661db1642e507034a24fdfa3de (patch) | |
tree | de336285f36e7da44d63b4469f832131dea08e7d /src | |
parent | bbdb70ed57887465f5e06a131c8326b71743950c (diff) |
Core/Spells: Rename TARGET_UNIT_CONE_ENEMY_54 to TARGET_UNIT_CONE_180_DEG_ENEMY and add 180 degree fallback for this target type
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 2 |
3 files changed, 15 insertions, 3 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index ea1d095c3da..7b0b4a71c51 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -2552,7 +2552,7 @@ enum Targets TARGET_GAMEOBJECT_SRC_AREA = 51, TARGET_GAMEOBJECT_DEST_AREA = 52, TARGET_DEST_TARGET_ENEMY = 53, - TARGET_UNIT_CONE_ENEMY_54 = 54, + TARGET_UNIT_CONE_180_DEG_ENEMY = 54, // Defaults to 180 if ConeDegrees is not set TARGET_DEST_CASTER_FRONT_LEAP = 55, // for a leap spell TARGET_UNIT_CASTER_AREA_RAID = 56, TARGET_UNIT_TARGET_RAID = 57, diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 5abd3372fdc..4f2ee7cafe9 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1138,6 +1138,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, void Spell::SelectImplicitConeTargets(SpellEffectInfo const& spellEffectInfo, SpellImplicitTargetInfo const& targetType, uint32 effMask) { Position coneSrc(*m_caster); + float coneAngle = m_spellInfo->ConeAngle; switch (targetType.GetReferenceType()) { case TARGET_REFERENCE_TYPE_CASTER: @@ -1149,6 +1150,17 @@ void Spell::SelectImplicitConeTargets(SpellEffectInfo const& spellEffectInfo, Sp default: break; } + + switch (targetType.GetTarget()) + { + case TARGET_UNIT_CONE_180_DEG_ENEMY: + if (coneAngle == 0.0f) + coneAngle = 180.0f; + break; + default: + break; + } + std::list<WorldObject*> targets; SpellTargetObjectTypes objectType = targetType.GetObjectType(); SpellTargetCheckTypes selectionType = targetType.GetCheckType(); @@ -1157,7 +1169,7 @@ void Spell::SelectImplicitConeTargets(SpellEffectInfo const& spellEffectInfo, Sp if (uint32 containerTypeMask = GetSearcherTypeMask(objectType, condList)) { - 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::WorldObjectSpellConeTargetCheck check(coneSrc, DegToRad(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); diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index fdf39d7235c..52f15f19052 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -272,7 +272,7 @@ SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_T {TARGET_OBJECT_TYPE_GOBJ, TARGET_REFERENCE_TYPE_SRC, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 51 TARGET_GAMEOBJECT_SRC_AREA {TARGET_OBJECT_TYPE_GOBJ, TARGET_REFERENCE_TYPE_DEST, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 52 TARGET_GAMEOBJECT_DEST_AREA {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_ENEMY, TARGET_DIR_NONE}, // 53 TARGET_DEST_TARGET_ENEMY - {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_CONE, TARGET_CHECK_ENEMY, TARGET_DIR_FRONT}, // 54 TARGET_UNIT_CONE_ENEMY_54 + {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_CONE, TARGET_CHECK_ENEMY, TARGET_DIR_FRONT}, // 54 TARGET_UNIT_CONE_180_DEG_ENEMY {TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 55 TARGET_DEST_CASTER_FRONT_LEAP {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_RAID, TARGET_DIR_NONE}, // 56 TARGET_UNIT_CASTER_AREA_RAID {TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_TARGET, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_RAID, TARGET_DIR_NONE}, // 57 TARGET_UNIT_TARGET_RAID |