Core/Auras: Implemented SPELL_AURA_DISABLE_INERTIA (506)
Port From (https://github.com/TrinityCore/TrinityCore/commit/d945a118db6d2b423a77c419eb8dd7f4732802a2)
This commit is contained in:
@@ -5749,6 +5749,12 @@ namespace Game.Entities
|
|||||||
if (HasAura(196055)) //DH DoubleJump
|
if (HasAura(196055)) //DH DoubleJump
|
||||||
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveEnableDoubleJump, m_movementCounter++));
|
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveEnableDoubleJump, m_movementCounter++));
|
||||||
|
|
||||||
|
if (HasAuraType(AuraType.IgnoreMovementForces))
|
||||||
|
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveSetIgnoreMovementForces, m_movementCounter++));
|
||||||
|
|
||||||
|
if (HasAuraType(AuraType.DisableInertia))
|
||||||
|
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveDisableInertia, m_movementCounter++));
|
||||||
|
|
||||||
if (!setCompoundState.StateChanges.Empty())
|
if (!setCompoundState.StateChanges.Empty())
|
||||||
{
|
{
|
||||||
setCompoundState.MoverGUID = GetGUID();
|
setCompoundState.MoverGUID = GetGUID();
|
||||||
|
|||||||
@@ -395,6 +395,32 @@ namespace Game.Entities
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool SetDisableInertia(bool disable)
|
||||||
|
{
|
||||||
|
if (disable == HasExtraUnitMovementFlag2(MovementFlags3.DisableInertia))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (disable)
|
||||||
|
AddExtraUnitMovementFlag2(MovementFlags3.DisableInertia);
|
||||||
|
else
|
||||||
|
RemoveExtraUnitMovementFlag2(MovementFlags3.DisableInertia);
|
||||||
|
|
||||||
|
Player playerMover = GetUnitBeingMoved()?.ToPlayer();
|
||||||
|
if (playerMover != null)
|
||||||
|
{
|
||||||
|
MoveSetFlag packet = new(disable ? ServerOpcodes.MoveDisableInertia : ServerOpcodes.MoveEnableInertia);
|
||||||
|
packet.MoverGUID = GetGUID();
|
||||||
|
packet.SequenceIndex = m_movementCounter++;
|
||||||
|
playerMover.SendPacket(packet);
|
||||||
|
|
||||||
|
MoveUpdate moveUpdate = new();
|
||||||
|
moveUpdate.Status = m_movementInfo;
|
||||||
|
SendMessageToSet(moveUpdate, playerMover);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public void JumpTo(float speedXY, float speedZ, float angle, Position dest = null)
|
public void JumpTo(float speedXY, float speedZ, float angle, Position dest = null)
|
||||||
{
|
{
|
||||||
if (dest != null)
|
if (dest != null)
|
||||||
|
|||||||
@@ -2303,6 +2303,24 @@ namespace Game.Spells
|
|||||||
target.SetIgnoreMovementForces(apply);
|
target.SetIgnoreMovementForces(apply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[AuraEffectHandler(AuraType.IgnoreMovementForces)]
|
||||||
|
void HandleDisableInertia(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
|
||||||
|
{
|
||||||
|
if (!mode.HasFlag(AuraEffectHandleModes.SendForClientMask))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Unit target = aurApp.GetTarget();
|
||||||
|
|
||||||
|
if (!apply)
|
||||||
|
{
|
||||||
|
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
|
||||||
|
if (target.HasAuraType(GetAuraType()))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
target.SetDisableInertia(apply);
|
||||||
|
}
|
||||||
|
|
||||||
/****************************/
|
/****************************/
|
||||||
/*** THREAT ***/
|
/*** THREAT ***/
|
||||||
/****************************/
|
/****************************/
|
||||||
|
|||||||
Reference in New Issue
Block a user