mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Spells: Implemented SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE
This commit is contained in:
@@ -771,7 +771,7 @@ enum SpellAttr9 : uint32
|
||||
SPELL_ATTR9_NOT_IN_ARENA = 0x00000200, // TITLE Not In Arena
|
||||
SPELL_ATTR9_TARGET_MUST_BE_GROUNDED = 0x00000400, // TITLE Target Must Be Grounded
|
||||
SPELL_ATTR9_ALLOW_WHILE_BANISHED_AURA_STATE = 0x00000800, // TITLE Allow While Banished Aura State DESCRIPTION Doesn't seem to be doing anything, banish behaves like a regular stun now - tested on patch 10.2.7 with spell 17767 (doesn't have this attribute, only SPELL_ATTR5_ALLOW_WHILE_STUNNED and was castable while banished)
|
||||
SPELL_ATTR9_UNK12 = 0x00001000, // TITLE Unknown attribute 12@Attr9
|
||||
SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE = 0x00001000, // TITLE Face unit target upon completion of jump charge
|
||||
SPELL_ATTR9_SLAM = 0x00002000, // TITLE Haste Affects Melee Ability Casttime
|
||||
SPELL_ATTR9_USABLE_IN_RATED_BATTLEGROUNDS = 0x00004000, // TITLE Ignore Default Rated Battleground Restrictions
|
||||
SPELL_ATTR9_UNK15 = 0x00008000, // TITLE Unknown attribute 15@Attr9
|
||||
|
||||
@@ -1447,7 +1447,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr9>::ToString(SpellAttr9 value)
|
||||
case SPELL_ATTR9_NOT_IN_ARENA: return { "SPELL_ATTR9_NOT_IN_ARENA", "Not In Arena", "" };
|
||||
case SPELL_ATTR9_TARGET_MUST_BE_GROUNDED: return { "SPELL_ATTR9_TARGET_MUST_BE_GROUNDED", "Target Must Be Grounded", "" };
|
||||
case SPELL_ATTR9_ALLOW_WHILE_BANISHED_AURA_STATE: return { "SPELL_ATTR9_ALLOW_WHILE_BANISHED_AURA_STATE", "Allow While Banished Aura State", "Doesn't seem to be doing anything, banish behaves like a regular stun now - tested on patch 10.2.7 with spell 17767 (doesn't have this attribute, only SPELL_ATTR5_ALLOW_WHILE_STUNNED and was castable while banished)" };
|
||||
case SPELL_ATTR9_UNK12: return { "SPELL_ATTR9_UNK12", "Unknown attribute 12@Attr9", "" };
|
||||
case SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE: return { "SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE", "Face unit target upon completion of jump charge", "" };
|
||||
case SPELL_ATTR9_SLAM: return { "SPELL_ATTR9_SLAM", "Haste Affects Melee Ability Casttime", "" };
|
||||
case SPELL_ATTR9_USABLE_IN_RATED_BATTLEGROUNDS: return { "SPELL_ATTR9_USABLE_IN_RATED_BATTLEGROUNDS", "Ignore Default Rated Battleground Restrictions", "" };
|
||||
case SPELL_ATTR9_UNK15: return { "SPELL_ATTR9_UNK15", "Unknown attribute 15@Attr9", "" };
|
||||
@@ -1491,7 +1491,7 @@ TC_API_EXPORT SpellAttr9 EnumUtils<SpellAttr9>::FromIndex(size_t index)
|
||||
case 9: return SPELL_ATTR9_NOT_IN_ARENA;
|
||||
case 10: return SPELL_ATTR9_TARGET_MUST_BE_GROUNDED;
|
||||
case 11: return SPELL_ATTR9_ALLOW_WHILE_BANISHED_AURA_STATE;
|
||||
case 12: return SPELL_ATTR9_UNK12;
|
||||
case 12: return SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE;
|
||||
case 13: return SPELL_ATTR9_SLAM;
|
||||
case 14: return SPELL_ATTR9_USABLE_IN_RATED_BATTLEGROUNDS;
|
||||
case 15: return SPELL_ATTR9_UNK15;
|
||||
@@ -1532,7 +1532,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr9>::ToIndex(SpellAttr9 value)
|
||||
case SPELL_ATTR9_NOT_IN_ARENA: return 9;
|
||||
case SPELL_ATTR9_TARGET_MUST_BE_GROUNDED: return 10;
|
||||
case SPELL_ATTR9_ALLOW_WHILE_BANISHED_AURA_STATE: return 11;
|
||||
case SPELL_ATTR9_UNK12: return 12;
|
||||
case SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE: return 12;
|
||||
case SPELL_ATTR9_SLAM: return 13;
|
||||
case SPELL_ATTR9_USABLE_IN_RATED_BATTLEGROUNDS: return 14;
|
||||
case SPELL_ATTR9_UNK15: return 15;
|
||||
|
||||
@@ -893,10 +893,17 @@ void Spell::EffectJump()
|
||||
|
||||
float speedXY, speedZ;
|
||||
CalculateJumpSpeeds(effectInfo, unitCaster->GetExactDist2d(unitTarget), speedXY, speedZ);
|
||||
MovementFacingTarget facing;
|
||||
if (Unit const* target = m_targets.GetUnitTarget())
|
||||
{
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE))
|
||||
facing = target;
|
||||
}
|
||||
|
||||
JumpArrivalCastArgs arrivalCast;
|
||||
arrivalCast.SpellId = effectInfo->TriggerSpell;
|
||||
arrivalCast.Target = unitTarget->GetGUID();
|
||||
unitCaster->GetMotionMaster()->MoveJump(*unitTarget, speedXY, speedZ, EVENT_JUMP, {}, &arrivalCast);
|
||||
unitCaster->GetMotionMaster()->MoveJump(*unitTarget, speedXY, speedZ, EVENT_JUMP, facing, &arrivalCast);
|
||||
}
|
||||
|
||||
void Spell::EffectJumpDest()
|
||||
@@ -917,8 +924,14 @@ void Spell::EffectJumpDest()
|
||||
float speedXY, speedZ;
|
||||
CalculateJumpSpeeds(effectInfo, unitCaster->GetExactDist2d(destTarget), speedXY, speedZ);
|
||||
MovementFacingTarget facing;
|
||||
if (!m_targets.GetUnitTargetGUID().IsEmpty())
|
||||
if (Unit const* target = m_targets.GetUnitTarget())
|
||||
{
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE))
|
||||
facing = target;
|
||||
}
|
||||
else
|
||||
facing = destTarget->GetOrientation();
|
||||
|
||||
JumpArrivalCastArgs arrivalCast;
|
||||
arrivalCast.SpellId = effectInfo->TriggerSpell;
|
||||
unitCaster->GetMotionMaster()->MoveJump(*destTarget, speedXY, speedZ, EVENT_JUMP, facing, &arrivalCast);
|
||||
@@ -5764,6 +5777,13 @@ void Spell::EffectJumpCharge()
|
||||
if (params->TreatSpeedAsMoveTimeSeconds)
|
||||
speed = unitCaster->GetExactDist(destTarget) / params->MoveTimeInSec;
|
||||
|
||||
MovementFacingTarget facing;
|
||||
if (Unit const* target = m_targets.GetUnitTarget())
|
||||
{
|
||||
if (m_spellInfo->HasAttribute(SPELL_ATTR9_FACE_UNIT_TARGET_UPON_COMPLETION_OF_JUMP_CHARGE))
|
||||
facing = target;
|
||||
}
|
||||
|
||||
Optional<JumpArrivalCastArgs> arrivalCast;
|
||||
if (effectInfo->TriggerSpell)
|
||||
{
|
||||
@@ -5785,7 +5805,7 @@ void Spell::EffectJumpCharge()
|
||||
effectExtra->ParabolicCurveId = *params->ParabolicCurveId;
|
||||
}
|
||||
|
||||
unitCaster->GetMotionMaster()->MoveJumpWithGravity(*destTarget, speed, params->JumpGravity, EVENT_JUMP, {},
|
||||
unitCaster->GetMotionMaster()->MoveJumpWithGravity(*destTarget, speed, params->JumpGravity, EVENT_JUMP, facing,
|
||||
arrivalCast ? &*arrivalCast : nullptr,
|
||||
effectExtra ? &*effectExtra : nullptr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user