Core/Auras: Implement gravity opcodes and SPELL_AURA_MOD_GRAVITY (#31997)
This commit is contained in:
@@ -290,7 +290,7 @@ void BaseEntity::BuildMovementUpdate(ByteBuffer& data, CreateObjectBits flags, P
|
|||||||
data << uint32(0); // RemoveForcesIDs.size()
|
data << uint32(0); // RemoveForcesIDs.size()
|
||||||
data << uint32(0); // MoveIndex
|
data << uint32(0); // MoveIndex
|
||||||
|
|
||||||
data << float(unit->m_movementInfo.gravityModifier);
|
data << float(unit->m_movementInfo.gravityModifier); // GravityModifier
|
||||||
|
|
||||||
//for (std::size_t i = 0; i < RemoveForcesIDs.size(); ++i)
|
//for (std::size_t i = 0; i < RemoveForcesIDs.size(); ++i)
|
||||||
// data << ObjectGuid(RemoveForcesIDs);
|
// data << ObjectGuid(RemoveForcesIDs);
|
||||||
|
|||||||
@@ -15038,6 +15038,25 @@ void Unit::UpdateMovementForcesModMagnitude()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Unit::SetGravityModifier(float gravityModifier)
|
||||||
|
{
|
||||||
|
if (Player const* movingPlayer = GetPlayerMovingMe())
|
||||||
|
{
|
||||||
|
WorldPackets::Movement::MoveSetGravityModifier setGravityModifier;
|
||||||
|
setGravityModifier.MoverGUID = GetGUID();
|
||||||
|
setGravityModifier.SequenceIndex = m_movementCounter++;
|
||||||
|
setGravityModifier.GravityModifier = gravityModifier;
|
||||||
|
movingPlayer->SendDirectMessage(setGravityModifier.Write());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WorldPackets::Movement::MoveUpdateSetGravityModifier updateSetGravityModifier;
|
||||||
|
updateSetGravityModifier.Status = &m_movementInfo;
|
||||||
|
updateSetGravityModifier.GravityModifier = gravityModifier;
|
||||||
|
SendMessageToSet(updateSetGravityModifier.Write(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Unit::SetPlayHoverAnim(bool enable, bool sendUpdate /*= true*/)
|
void Unit::SetPlayHoverAnim(bool enable, bool sendUpdate /*= true*/)
|
||||||
{
|
{
|
||||||
if (IsPlayingHoverAnim() == enable)
|
if (IsPlayingHoverAnim() == enable)
|
||||||
|
|||||||
@@ -1206,6 +1206,8 @@ class TC_GAME_API Unit : public WorldObject
|
|||||||
void ApplyInertia(int32 id, Milliseconds duration);
|
void ApplyInertia(int32 id, Milliseconds duration);
|
||||||
void RemoveInertia(int32 id);
|
void RemoveInertia(int32 id);
|
||||||
|
|
||||||
|
void SetGravityModifier(float gravityModifier);
|
||||||
|
|
||||||
void SetInFront(WorldObject const* target);
|
void SetInFront(WorldObject const* target);
|
||||||
void SetFacingTo(float ori, bool force = true, uint32 movementId = EVENT_FACE);
|
void SetFacingTo(float ori, bool force = true, uint32 movementId = EVENT_FACE);
|
||||||
void SetFacingToObject(WorldObject const* object, bool force = true, uint32 movementId = EVENT_FACE);
|
void SetFacingToObject(WorldObject const* object, bool force = true, uint32 movementId = EVENT_FACE);
|
||||||
|
|||||||
@@ -1066,3 +1066,22 @@ void WorldSession::HandleDiscardedTimeSyncAcks(WorldPackets::Movement::Discarded
|
|||||||
|
|
||||||
player->m_movementCounter = 0;
|
player->m_movementCounter = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WorldSession::HandleMoveForceGravityModifierChangeAck(WorldPackets::Movement::MoveForceGravityModifierChangeAck& moveForceGravityModifierChangeAck)
|
||||||
|
{
|
||||||
|
Unit* mover = ValidateAndGetUnitBeingMoved(moveForceGravityModifierChangeAck.Ack.Status.guid, moveForceGravityModifierChangeAck.GetOpcode(), true);
|
||||||
|
if (!mover)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!ValidateMovementInfo(mover, &moveForceGravityModifierChangeAck.Ack.Status))
|
||||||
|
return;
|
||||||
|
|
||||||
|
moveForceGravityModifierChangeAck.Ack.Status.time = AdjustClientMovementTime(moveForceGravityModifierChangeAck.Ack.Status.time);
|
||||||
|
mover->m_movementInfo = moveForceGravityModifierChangeAck.Ack.Status;
|
||||||
|
mover->m_movementInfo.gravityModifier = moveForceGravityModifierChangeAck.Ack.Status.gravityModifier;
|
||||||
|
|
||||||
|
WorldPackets::Movement::MoveUpdateSetGravityModifier updateSetGravityModifier;
|
||||||
|
updateSetGravityModifier.Status = &mover->m_movementInfo;
|
||||||
|
updateSetGravityModifier.GravityModifier = moveForceGravityModifierChangeAck.GravityModifier;
|
||||||
|
mover->SendMessageToSet(updateSetGravityModifier.Write(), false);
|
||||||
|
}
|
||||||
|
|||||||
@@ -1263,4 +1263,27 @@ WorldPacket const* MoveInitialObjectUpdateComplete::Write()
|
|||||||
_worldPacket << uint32(SequenceIndex);
|
_worldPacket << uint32(SequenceIndex);
|
||||||
return &_worldPacket;
|
return &_worldPacket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MoveForceGravityModifierChangeAck::Read()
|
||||||
|
{
|
||||||
|
_worldPacket >> Ack;
|
||||||
|
_worldPacket >> GravityModifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldPacket const* MoveSetGravityModifier::Write()
|
||||||
|
{
|
||||||
|
_worldPacket << MoverGUID;
|
||||||
|
_worldPacket << uint32(SequenceIndex);
|
||||||
|
_worldPacket << float(GravityModifier);
|
||||||
|
|
||||||
|
return &_worldPacket;
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldPacket const* MoveUpdateSetGravityModifier::Write()
|
||||||
|
{
|
||||||
|
_worldPacket << *Status;
|
||||||
|
_worldPacket << float(GravityModifier);
|
||||||
|
|
||||||
|
return &_worldPacket;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -862,6 +862,40 @@ namespace WorldPackets
|
|||||||
uint32 SequenceIndex = 0;
|
uint32 SequenceIndex = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MoveForceGravityModifierChangeAck final : public ClientPacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MoveForceGravityModifierChangeAck(WorldPacket&& packet) : ClientPacket(CMSG_MOVE_FORCE_GRAVITY_MODIFIER_CHANGE_ACK, std::move(packet)) {}
|
||||||
|
|
||||||
|
void Read() override;
|
||||||
|
|
||||||
|
MovementAck Ack;
|
||||||
|
float GravityModifier = 1.0f;
|
||||||
|
};
|
||||||
|
|
||||||
|
class MoveSetGravityModifier final : public ServerPacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MoveSetGravityModifier() : ServerPacket(SMSG_MOVE_SET_GRAVITY_MODIFIER, 16 + 4 + 4) {}
|
||||||
|
|
||||||
|
WorldPacket const* Write() override;
|
||||||
|
|
||||||
|
ObjectGuid MoverGUID;
|
||||||
|
uint32 SequenceIndex = 0;
|
||||||
|
float GravityModifier = 1.0f;
|
||||||
|
};
|
||||||
|
|
||||||
|
class MoveUpdateSetGravityModifier final : public ServerPacket
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MoveUpdateSetGravityModifier() : ServerPacket(SMSG_MOVE_UPDATE_SET_GRAVITY_MODIFIER, sizeof(MovementInfo) + 4) {}
|
||||||
|
|
||||||
|
WorldPacket const* Write() override;
|
||||||
|
|
||||||
|
MovementInfo* Status = nullptr;
|
||||||
|
float GravityModifier = 1.0f;
|
||||||
|
};
|
||||||
|
|
||||||
ByteBuffer& operator>>(ByteBuffer& data, MovementAck& ack);
|
ByteBuffer& operator>>(ByteBuffer& data, MovementAck& ack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -729,7 +729,7 @@ void OpcodeTable::InitializeClientOpcodes()
|
|||||||
DEFINE_HANDLER(CMSG_MOVE_FEATHER_FALL_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
|
DEFINE_HANDLER(CMSG_MOVE_FEATHER_FALL_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
|
||||||
DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
||||||
DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
DEFINE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
||||||
DEFINE_HANDLER(CMSG_MOVE_FORCE_GRAVITY_MODIFIER_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
DEFINE_HANDLER(CMSG_MOVE_FORCE_GRAVITY_MODIFIER_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveForceGravityModifierChangeAck);
|
||||||
DEFINE_HANDLER(CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
DEFINE_HANDLER(CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
||||||
DEFINE_HANDLER(CMSG_MOVE_FORCE_ROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
|
DEFINE_HANDLER(CMSG_MOVE_FORCE_ROOT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage);
|
||||||
DEFINE_HANDLER(CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
DEFINE_HANDLER(CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck);
|
||||||
@@ -2014,7 +2014,7 @@ void OpcodeTable::InitializeServerOpcodes()
|
|||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FEATHER_FALL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FEATHER_FALL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_FLIGHT_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_GRAVITY_MODIFIER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_GRAVITY_MODIFIER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_HOVERING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_HOVERING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_LAND_WALK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_LAND_WALK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
@@ -2081,7 +2081,7 @@ void OpcodeTable::InitializeServerOpcodes()
|
|||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_REMOVE_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SET_GRAVITY_MODIFIER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SET_GRAVITY_MODIFIER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TELEPORT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TELEPORT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||||
|
|||||||
@@ -1678,6 +1678,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint32 opcode) co
|
|||||||
case CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK: // not profiled
|
case CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK: // not profiled
|
||||||
case CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK: // not profiled
|
case CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK: // not profiled
|
||||||
case CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK: // not profiled
|
case CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK: // not profiled
|
||||||
|
case CMSG_MOVE_FORCE_GRAVITY_MODIFIER_CHANGE_ACK:// not profiled
|
||||||
{
|
{
|
||||||
// "0" is a magic number meaning there's no limit for the opcode.
|
// "0" is a magic number meaning there's no limit for the opcode.
|
||||||
// All the opcodes above must cause little CPU usage and no sync/async database queries at all
|
// All the opcodes above must cause little CPU usage and no sync/async database queries at all
|
||||||
|
|||||||
@@ -902,6 +902,7 @@ namespace WorldPackets
|
|||||||
class MoveInitActiveMoverComplete;
|
class MoveInitActiveMoverComplete;
|
||||||
class MoveApplyInertiaAck;
|
class MoveApplyInertiaAck;
|
||||||
class MoveRemoveInertiaAck;
|
class MoveRemoveInertiaAck;
|
||||||
|
class MoveForceGravityModifierChangeAck;
|
||||||
class DiscardedTimeSyncAcks;
|
class DiscardedTimeSyncAcks;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1740,6 +1741,7 @@ public:
|
|||||||
void HandleMoveApplyInertiaAck(WorldPackets::Movement::MoveApplyInertiaAck& moveApplyInertiaAck);
|
void HandleMoveApplyInertiaAck(WorldPackets::Movement::MoveApplyInertiaAck& moveApplyInertiaAck);
|
||||||
void HandleMoveRemoveInertiaAck(WorldPackets::Movement::MoveRemoveInertiaAck& moveRemoveInertiaAck);
|
void HandleMoveRemoveInertiaAck(WorldPackets::Movement::MoveRemoveInertiaAck& moveRemoveInertiaAck);
|
||||||
void HandleDiscardedTimeSyncAcks(WorldPackets::Movement::DiscardedTimeSyncAcks& packet);
|
void HandleDiscardedTimeSyncAcks(WorldPackets::Movement::DiscardedTimeSyncAcks& packet);
|
||||||
|
void HandleMoveForceGravityModifierChangeAck(WorldPackets::Movement::MoveForceGravityModifierChangeAck& moveForceGravityModifierChangeAck);
|
||||||
|
|
||||||
void HandleRepopRequest(WorldPackets::Misc::RepopRequest& packet);
|
void HandleRepopRequest(WorldPackets::Misc::RepopRequest& packet);
|
||||||
void HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& packet);
|
void HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& packet);
|
||||||
|
|||||||
@@ -713,7 +713,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
|
|||||||
&AuraEffect::HandleNULL, //641
|
&AuraEffect::HandleNULL, //641
|
||||||
&AuraEffect::HandleNULL, //642
|
&AuraEffect::HandleNULL, //642
|
||||||
&AuraEffect::HandleNULL, //643 SPELL_AURA_MOD_RANGED_ATTACK_SPEED_FLAT
|
&AuraEffect::HandleNULL, //643 SPELL_AURA_MOD_RANGED_ATTACK_SPEED_FLAT
|
||||||
&AuraEffect::HandleNULL, //644 SPELL_AURA_MOD_GRAVITY
|
&AuraEffect::HandleModGravity, //644 SPELL_AURA_MOD_GRAVITY
|
||||||
&AuraEffect::HandleNULL, //645
|
&AuraEffect::HandleNULL, //645
|
||||||
&AuraEffect::HandleNULL, //646 SPELL_AURA_ADD_FLAT_PVP_MODIFIER
|
&AuraEffect::HandleNULL, //646 SPELL_AURA_ADD_FLAT_PVP_MODIFIER
|
||||||
&AuraEffect::HandleNULL, //647 SPELL_AURA_ADD_PCT_PVP_MODIFIER
|
&AuraEffect::HandleNULL, //647 SPELL_AURA_ADD_PCT_PVP_MODIFIER
|
||||||
@@ -6480,6 +6480,19 @@ void AuraEffect::HandleEnablePowerBarTimer(AuraApplication const* aurApp, uint8
|
|||||||
aurApp->GetTarget()->SetMaxPower(POWER_ALTERNATE_POWER, 0);
|
aurApp->GetTarget()->SetMaxPower(POWER_ALTERNATE_POWER, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AuraEffect::HandleModGravity(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const
|
||||||
|
{
|
||||||
|
if (!(mode & AURA_EFFECT_HANDLE_REAL))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Unit* target = aurApp->GetTarget();
|
||||||
|
Unit::AuraEffectList const& gravityAuras = target->GetAuraEffectsByType(SPELL_AURA_MOD_GRAVITY);
|
||||||
|
float amount = std::transform_reduce(gravityAuras.begin(), gravityAuras.end(), 1.0f, std::multiplies(),
|
||||||
|
[](AuraEffect const* aurEff) { return aurEff->GetAmount(); });
|
||||||
|
|
||||||
|
target->SetGravityModifier(std::max(amount, 0.01f));
|
||||||
|
}
|
||||||
|
|
||||||
void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool apply) const
|
void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool apply) const
|
||||||
{
|
{
|
||||||
if (!(mode & AURA_EFFECT_HANDLE_REAL))
|
if (!(mode & AURA_EFFECT_HANDLE_REAL))
|
||||||
|
|||||||
@@ -335,6 +335,7 @@ class TC_GAME_API AuraEffect
|
|||||||
void HandleMastery(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
void HandleMastery(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||||
void HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
void HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||||
void HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
void HandleEnableAltPower(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||||
|
void HandleModGravity(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||||
void HandleEnablePowerBarTimer(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
void HandleEnablePowerBarTimer(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||||
void HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
void HandleModSpellCategoryCooldown(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||||
void HandleModRecoveryRate(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
void HandleModRecoveryRate(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user