From 4b76323d6a363f86309de612bab5de04700c6ac8 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Sat, 24 Jun 2023 09:21:46 -0400 Subject: [PATCH] Core/Spells: Implemented target type TARGET_DEST_DEST_TARGET_TOWARDS_CASTER Port From (https://github.com/TrinityCore/TrinityCore/commit/80e22230c34106753cd6be57d9a496642e47216d) --- Source/Framework/Constants/Spells/SpellConst.cs | 2 +- Source/Game/Spells/Spell.cs | 12 ++++++++++++ Source/Game/Spells/SpellInfo.cs | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Source/Framework/Constants/Spells/SpellConst.cs b/Source/Framework/Constants/Spells/SpellConst.cs index d4958da56..7f62eba3a 100644 --- a/Source/Framework/Constants/Spells/SpellConst.cs +++ b/Source/Framework/Constants/Spells/SpellConst.cs @@ -2836,7 +2836,7 @@ namespace Framework.Constants Unk145 = 145, Unk146 = 146, Unk147 = 147, - Unk148 = 148, + DestDestTargetTowardsCaster = 148, Unk149 = 149, UnitOwnCritter = 150, // own battle pet from UNIT_FIELD_CRITTER Unk151 = 151, diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index 885caff5f..4fe044577 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -1185,6 +1185,18 @@ namespace Game.Spells case Targets.DestDestGround: dest.Position.posZ = m_caster.GetMapHeight(dest.Position.GetPositionX(), dest.Position.GetPositionY(), dest.Position.GetPositionZ()); break; + case Targets.DestDestTargetTowardsCaster: + { + 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(); diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index d435e46ed..06c0f5dae 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -5198,7 +5198,7 @@ namespace Game.Spells new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 145 new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 146 new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 147 - new StaticData(SpellTargetObjectTypes.None, SpellTargetReferenceTypes.None, SpellTargetSelectionCategories.Nyi, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 148 + new StaticData(SpellTargetObjectTypes.Dest, SpellTargetReferenceTypes.Dest, SpellTargetSelectionCategories.Default, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 148 TARGET_DEST_DEST_TARGET_TOWARDS_CASTER new StaticData(SpellTargetObjectTypes.Dest, SpellTargetReferenceTypes.Caster, SpellTargetSelectionCategories.Default, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.Random), // 149 new StaticData(SpellTargetObjectTypes.Unit, SpellTargetReferenceTypes.Caster, SpellTargetSelectionCategories.Default, SpellTargetCheckTypes.Default, SpellTargetDirectionTypes.None), // 150 TARGET_UNIT_OWN_CRITTER new StaticData(SpellTargetObjectTypes.Unit, SpellTargetReferenceTypes.Caster, SpellTargetSelectionCategories.Area, SpellTargetCheckTypes.Enemy, SpellTargetDirectionTypes.None), // 151