Core/Auras: Implemented SPELL_AURA_MOD_ROOT_DISABLE_GRAVITY
Port From (https://github.com/TrinityCore/TrinityCore/commit/dbed48becc30e10b4b17d95f595056d08a987bad)
This commit is contained in:
@@ -5245,7 +5245,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
MoveSetCompoundState setCompoundState = new();
|
MoveSetCompoundState setCompoundState = new();
|
||||||
// manual send package (have code in HandleEffect(this, AURA_EFFECT_HANDLE_SEND_FOR_CLIENT, true); that must not be re-applied.
|
// manual send package (have code in HandleEffect(this, AURA_EFFECT_HANDLE_SEND_FOR_CLIENT, true); that must not be re-applied.
|
||||||
if (HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2))
|
if (HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2) || HasAuraType(AuraType.ModRootDisableGravity))
|
||||||
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveRoot, m_movementCounter++));
|
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveRoot, m_movementCounter++));
|
||||||
|
|
||||||
if (HasAuraType(AuraType.FeatherFall))
|
if (HasAuraType(AuraType.FeatherFall))
|
||||||
@@ -5257,6 +5257,9 @@ namespace Game.Entities
|
|||||||
if (HasAuraType(AuraType.Hover))
|
if (HasAuraType(AuraType.Hover))
|
||||||
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveSetHovering, m_movementCounter++));
|
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveSetHovering, m_movementCounter++));
|
||||||
|
|
||||||
|
if (HasAuraType(AuraType.ModRootDisableGravity) || HasAuraType(AuraType.ModStunDisableGravity))
|
||||||
|
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveDisableGravity, m_movementCounter++));
|
||||||
|
|
||||||
if (HasAuraType(AuraType.CanTurnWhileFalling))
|
if (HasAuraType(AuraType.CanTurnWhileFalling))
|
||||||
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveSetCanTurnWhileFalling, m_movementCounter++));
|
setCompoundState.StateChanges.Add(new MoveSetCompoundState.MoveStateChange(ServerOpcodes.MoveSetCanTurnWhileFalling, m_movementCounter++));
|
||||||
|
|
||||||
|
|||||||
@@ -1223,7 +1223,7 @@ namespace Game.Entities
|
|||||||
SetStunned(false);
|
SetStunned(false);
|
||||||
break;
|
break;
|
||||||
case UnitState.Root:
|
case UnitState.Root:
|
||||||
if (HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2) || GetVehicle() != null || (IsCreature() && ToCreature().GetMovementTemplate().IsRooted()))
|
if (HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2) || HasAuraType(AuraType.ModRootDisableGravity) || GetVehicle() != null || (IsCreature() && ToCreature().GetMovementTemplate().IsRooted()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ClearUnitState(state);
|
ClearUnitState(state);
|
||||||
@@ -1258,7 +1258,7 @@ namespace Game.Entities
|
|||||||
if (HasUnitState(UnitState.Stunned) || HasAuraType(AuraType.ModStun) || HasAuraType(AuraType.ModStunDisableGravity))
|
if (HasUnitState(UnitState.Stunned) || HasAuraType(AuraType.ModStun) || HasAuraType(AuraType.ModStunDisableGravity))
|
||||||
SetStunned(true);
|
SetStunned(true);
|
||||||
|
|
||||||
if (HasUnitState(UnitState.Root) || HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2))
|
if (HasUnitState(UnitState.Root) || HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2) || HasAuraType(AuraType.ModRootDisableGravity))
|
||||||
SetRooted(true);
|
SetRooted(true);
|
||||||
|
|
||||||
if (HasUnitState(UnitState.Confused) || HasAuraType(AuraType.ModConfuse))
|
if (HasUnitState(UnitState.Confused) || HasAuraType(AuraType.ModConfuse))
|
||||||
|
|||||||
@@ -1819,7 +1819,7 @@ namespace Game.Entities
|
|||||||
public bool HasInvisibilityAura() { return HasAuraType(AuraType.ModInvisibility); }
|
public bool HasInvisibilityAura() { return HasAuraType(AuraType.ModInvisibility); }
|
||||||
public bool IsFeared() { return HasAuraType(AuraType.ModFear); }
|
public bool IsFeared() { return HasAuraType(AuraType.ModFear); }
|
||||||
public bool IsFrozen() { return HasAuraState(AuraStateType.Frozen); }
|
public bool IsFrozen() { return HasAuraState(AuraStateType.Frozen); }
|
||||||
public bool HasRootAura() { return HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2); }
|
public bool HasRootAura() { return HasAuraType(AuraType.ModRoot) || HasAuraType(AuraType.ModRoot2) || HasAuraType(AuraType.ModRootDisableGravity); }
|
||||||
public bool IsPolymorphed()
|
public bool IsPolymorphed()
|
||||||
{
|
{
|
||||||
uint transformId = GetTransformSpell();
|
uint transformId = GetTransformSpell();
|
||||||
|
|||||||
@@ -2467,6 +2467,28 @@ namespace Game.Spells
|
|||||||
target.SetControlled(false, UnitState.Fleeing);
|
target.SetControlled(false, UnitState.Fleeing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[AuraEffectHandler(AuraType.ModRootDisableGravity)]
|
||||||
|
void HandleAuraModRootAndDisableGravity(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
|
||||||
|
{
|
||||||
|
if (!mode.HasAnyFlag(AuraEffectHandleModes.Real))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Unit target = aurApp.GetTarget();
|
||||||
|
|
||||||
|
target.SetControlled(apply, UnitState.Root);
|
||||||
|
|
||||||
|
// Do not remove DisableGravity if there are more than this auraEffect of that kind on the unit or if it's a creature with DisableGravity on its movement template.
|
||||||
|
if (!apply
|
||||||
|
&& (target.HasAuraType(GetAuraType())
|
||||||
|
|| target.HasAuraType(AuraType.ModStunDisableGravity)
|
||||||
|
|| (target.IsCreature() && target.ToCreature().GetMovementTemplate().Flight == CreatureFlightMovementType.DisableGravity)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (target.SetDisableGravity(apply))
|
||||||
|
if (!apply && !target.IsFlying())
|
||||||
|
target.GetMotionMaster().MoveFall();
|
||||||
|
}
|
||||||
|
|
||||||
[AuraEffectHandler(AuraType.ModStunDisableGravity)]
|
[AuraEffectHandler(AuraType.ModStunDisableGravity)]
|
||||||
void HandleAuraModStunAndDisableGravity(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
|
void HandleAuraModStunAndDisableGravity(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user