Core/Spells: Implemented target type TARGET_DEST_DEST_TARGET_TOWARDS_CASTER (#29085)
This commit is contained in:
@@ -2753,7 +2753,7 @@ enum Targets
|
||||
TARGET_UNK_145 = 145,
|
||||
TARGET_UNK_146 = 146,
|
||||
TARGET_UNK_147 = 147,
|
||||
TARGET_UNK_148 = 148,
|
||||
TARGET_DEST_DEST_TARGET_TOWARDS_CASTER = 148,
|
||||
TARGET_UNK_149 = 149,
|
||||
TARGET_UNIT_OWN_CRITTER = 150, // own battle pet from UNIT_FIELD_CRITTER
|
||||
TARGET_UNK_151 = 151,
|
||||
|
||||
@@ -1674,6 +1674,18 @@ void Spell::SelectImplicitDestDestTargets(SpellEffectInfo const& spellEffectInfo
|
||||
case TARGET_DEST_DEST_GROUND:
|
||||
dest._position.m_positionZ = m_caster->GetMapHeight(dest._position.GetPositionX(), dest._position.GetPositionY(), dest._position.GetPositionZ());
|
||||
break;
|
||||
case TARGET_DEST_DEST_TARGET_TOWARDS_CASTER:
|
||||
{
|
||||
float dist = spellEffectInfo.CalcRadius(m_caster);
|
||||
Position pos = dest._position;
|
||||
float angle = pos.GetAbsoluteAngle(m_caster) - m_caster->GetOrientation();
|
||||
|
||||
m_caster->MovePositionToFirstCollision(pos, dist, angle);
|
||||
pos.SetOrientation(m_caster->GetAbsoluteAngle(dest._position));
|
||||
|
||||
dest.Relocate(pos);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
float angle = targetType.CalcDirectionAngle();
|
||||
|
||||
@@ -388,7 +388,7 @@ std::array<SpellImplicitTargetInfo::StaticData, TOTAL_SPELL_TARGETS> SpellImplic
|
||||
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 145
|
||||
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 146
|
||||
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 147
|
||||
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 148
|
||||
{TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_DEST, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 148 TARGET_DEST_DEST_TARGET_TOWARDS_CASTER
|
||||
{TARGET_OBJECT_TYPE_DEST, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_RANDOM}, // 149
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_DEFAULT, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, // 150 TARGET_UNIT_OWN_CRITTER
|
||||
{TARGET_OBJECT_TYPE_UNIT, TARGET_REFERENCE_TYPE_CASTER, TARGET_SELECT_CATEGORY_AREA, TARGET_CHECK_ENEMY, TARGET_DIR_NONE}, // 151
|
||||
|
||||
Reference in New Issue
Block a user