mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Spells: Moved SpellVisual functions from Unit to WorldObject
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
#include "ReputationMgr.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "SpellPackets.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "Totem.h"
|
||||
#include "Transport.h"
|
||||
@@ -2609,6 +2610,117 @@ SpellCastResult WorldObject::CastSpell(CastSpellTargetArg const& targets, uint32
|
||||
return spell->prepare(*targets.Targets, args.TriggeringAura);
|
||||
}
|
||||
|
||||
void WorldObject::SendPlaySpellVisual(WorldObject* target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlaySpellVisual playSpellVisual;
|
||||
playSpellVisual.Source = GetGUID();
|
||||
playSpellVisual.Target = target->GetGUID();
|
||||
playSpellVisual.TargetPosition = target->GetPosition();
|
||||
playSpellVisual.SpellVisualID = spellVisualId;
|
||||
playSpellVisual.TravelSpeed = travelSpeed;
|
||||
playSpellVisual.MissReason = missReason;
|
||||
playSpellVisual.ReflectStatus = reflectStatus;
|
||||
playSpellVisual.SpeedAsTime = speedAsTime;
|
||||
SendMessageToSet(playSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void WorldObject::SendPlaySpellVisual(Position const& targetPosition, float launchDelay, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlaySpellVisual playSpellVisual;
|
||||
playSpellVisual.Source = GetGUID();
|
||||
playSpellVisual.TargetPosition = targetPosition;
|
||||
playSpellVisual.LaunchDelay = launchDelay;
|
||||
playSpellVisual.SpellVisualID = spellVisualId;
|
||||
playSpellVisual.TravelSpeed = travelSpeed;
|
||||
playSpellVisual.MissReason = missReason;
|
||||
playSpellVisual.ReflectStatus = reflectStatus;
|
||||
playSpellVisual.SpeedAsTime = speedAsTime;
|
||||
SendMessageToSet(playSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void WorldObject::SendCancelSpellVisual(uint32 id)
|
||||
{
|
||||
WorldPackets::Spells::CancelSpellVisual cancelSpellVisual;
|
||||
cancelSpellVisual.Source = GetGUID();
|
||||
cancelSpellVisual.SpellVisualID = id;
|
||||
SendMessageToSet(cancelSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void WorldObject::SendPlayOrphanSpellVisual(ObjectGuid const& target, uint32 spellVisualId, float travelSpeed, bool speedAsTime /*= false*/, bool withSourceOrientation /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlayOrphanSpellVisual playOrphanSpellVisual;
|
||||
playOrphanSpellVisual.SourceLocation = GetPosition();
|
||||
if (withSourceOrientation)
|
||||
{
|
||||
if (IsGameObject())
|
||||
{
|
||||
QuaternionData rotation = ToGameObject()->GetWorldRotation();
|
||||
rotation.toEulerAnglesZYX(playOrphanSpellVisual.SourceRotation.Pos.m_positionZ,
|
||||
playOrphanSpellVisual.SourceRotation.Pos.m_positionY,
|
||||
playOrphanSpellVisual.SourceRotation.Pos.m_positionX);
|
||||
}
|
||||
else
|
||||
playOrphanSpellVisual.SourceRotation = Position(0.0f, 0.0f, GetOrientation());
|
||||
}
|
||||
|
||||
playOrphanSpellVisual.Target = target; // exclusive with TargetLocation
|
||||
playOrphanSpellVisual.SpellVisualID = spellVisualId;
|
||||
playOrphanSpellVisual.TravelSpeed = travelSpeed;
|
||||
playOrphanSpellVisual.SpeedAsTime = speedAsTime;
|
||||
playOrphanSpellVisual.LaunchDelay = 0.0f;
|
||||
SendMessageToSet(playOrphanSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void WorldObject::SendPlayOrphanSpellVisual(Position const& targetLocation, uint32 spellVisualId, float travelSpeed, bool speedAsTime /*= false*/, bool withSourceOrientation /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlayOrphanSpellVisual playOrphanSpellVisual;
|
||||
playOrphanSpellVisual.SourceLocation = GetPosition();
|
||||
if (withSourceOrientation)
|
||||
{
|
||||
if (IsGameObject())
|
||||
{
|
||||
QuaternionData rotation = ToGameObject()->GetWorldRotation();
|
||||
rotation.toEulerAnglesZYX(playOrphanSpellVisual.SourceRotation.Pos.m_positionZ,
|
||||
playOrphanSpellVisual.SourceRotation.Pos.m_positionY,
|
||||
playOrphanSpellVisual.SourceRotation.Pos.m_positionX);
|
||||
}
|
||||
else
|
||||
playOrphanSpellVisual.SourceRotation = Position(0.0f, 0.0f, GetOrientation());
|
||||
}
|
||||
|
||||
playOrphanSpellVisual.TargetLocation = targetLocation; // exclusive with Target
|
||||
playOrphanSpellVisual.SpellVisualID = spellVisualId;
|
||||
playOrphanSpellVisual.TravelSpeed = travelSpeed;
|
||||
playOrphanSpellVisual.SpeedAsTime = speedAsTime;
|
||||
playOrphanSpellVisual.LaunchDelay = 0.0f;
|
||||
SendMessageToSet(playOrphanSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void WorldObject::SendCancelOrphanSpellVisual(uint32 id)
|
||||
{
|
||||
WorldPackets::Spells::CancelOrphanSpellVisual cancelOrphanSpellVisual;
|
||||
cancelOrphanSpellVisual.SpellVisualID = id;
|
||||
SendMessageToSet(cancelOrphanSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void WorldObject::SendPlaySpellVisualKit(uint32 id, uint32 type, uint32 duration) const
|
||||
{
|
||||
WorldPackets::Spells::PlaySpellVisualKit playSpellVisualKit;
|
||||
playSpellVisualKit.Unit = GetGUID();
|
||||
playSpellVisualKit.KitRecID = id;
|
||||
playSpellVisualKit.KitType = type;
|
||||
playSpellVisualKit.Duration = duration;
|
||||
SendMessageToSet(playSpellVisualKit.Write(), true);
|
||||
}
|
||||
|
||||
void WorldObject::SendCancelSpellVisualKit(uint32 id)
|
||||
{
|
||||
WorldPackets::Spells::CancelSpellVisualKit cancelSpellVisualKit;
|
||||
cancelSpellVisualKit.Source = GetGUID();
|
||||
cancelSpellVisualKit.SpellVisualKitID = id;
|
||||
SendMessageToSet(cancelSpellVisualKit.Write(), true);
|
||||
}
|
||||
|
||||
// function based on function Unit::CanAttack from 13850 client
|
||||
bool WorldObject::IsValidAttackTarget(WorldObject const* target, SpellInfo const* bySpell /*= nullptr*/) const
|
||||
{
|
||||
|
||||
@@ -624,6 +624,17 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
|
||||
// CastSpell's third arg can be a variety of things - check out CastSpellExtraArgs' constructors!
|
||||
SpellCastResult CastSpell(CastSpellTargetArg const& targets, uint32 spellId, CastSpellExtraArgs const& args = { });
|
||||
|
||||
void SendPlayOrphanSpellVisual(ObjectGuid const& target, uint32 spellVisualId, float travelSpeed, bool speedAsTime = false, bool withSourceOrientation = false);
|
||||
void SendPlayOrphanSpellVisual(Position const& targetLocation, uint32 spellVisualId, float travelSpeed, bool speedAsTime = false, bool withSourceOrientation = false);
|
||||
void SendCancelOrphanSpellVisual(uint32 id);
|
||||
|
||||
void SendPlaySpellVisual(WorldObject* target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime = false);
|
||||
void SendPlaySpellVisual(Position const& targetPosition, float o, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime = false);
|
||||
void SendCancelSpellVisual(uint32 id);
|
||||
|
||||
void SendPlaySpellVisualKit(uint32 id, uint32 type, uint32 duration) const;
|
||||
void SendCancelSpellVisualKit(uint32 id);
|
||||
|
||||
bool IsValidAttackTarget(WorldObject const* target, SpellInfo const* bySpell = nullptr) const;
|
||||
bool IsValidAssistTarget(WorldObject const* target, SpellInfo const* bySpell = nullptr) const;
|
||||
|
||||
|
||||
@@ -11311,95 +11311,6 @@ void Unit::SetAuraStack(uint32 spellId, Unit* target, uint32 stack)
|
||||
aura->SetStackAmount(stack);
|
||||
}
|
||||
|
||||
void Unit::SendCancelOrphanSpellVisual(uint32 id)
|
||||
{
|
||||
WorldPackets::Spells::CancelOrphanSpellVisual cancelOrphanSpellVisual;
|
||||
cancelOrphanSpellVisual.SpellVisualID = id;
|
||||
SendMessageToSet(cancelOrphanSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::SendPlayOrphanSpellVisual(ObjectGuid const& target, uint32 spellVisualId, float travelSpeed, bool speedAsTime /*= false*/, bool withSourceOrientation /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlayOrphanSpellVisual playOrphanSpellVisual;
|
||||
playOrphanSpellVisual.SourceLocation = GetPosition();
|
||||
if (withSourceOrientation)
|
||||
playOrphanSpellVisual.SourceRotation = Position(0.0f, 0.0f, GetOrientation());
|
||||
playOrphanSpellVisual.Target = target; // exclusive with TargetLocation
|
||||
playOrphanSpellVisual.SpellVisualID = spellVisualId;
|
||||
playOrphanSpellVisual.TravelSpeed = travelSpeed;
|
||||
playOrphanSpellVisual.SpeedAsTime = speedAsTime;
|
||||
playOrphanSpellVisual.LaunchDelay = 0.0f;
|
||||
SendMessageToSet(playOrphanSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::SendPlayOrphanSpellVisual(Position const& targetLocation, uint32 spellVisualId, float travelSpeed, bool speedAsTime /*= false*/, bool withSourceOrientation /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlayOrphanSpellVisual playOrphanSpellVisual;
|
||||
playOrphanSpellVisual.SourceLocation = GetPosition();
|
||||
if (withSourceOrientation)
|
||||
playOrphanSpellVisual.SourceRotation = Position(0.0f, 0.0f, GetOrientation());
|
||||
playOrphanSpellVisual.TargetLocation = targetLocation; // exclusive with Target
|
||||
playOrphanSpellVisual.SpellVisualID = spellVisualId;
|
||||
playOrphanSpellVisual.TravelSpeed = travelSpeed;
|
||||
playOrphanSpellVisual.SpeedAsTime = speedAsTime;
|
||||
playOrphanSpellVisual.LaunchDelay = 0.0f;
|
||||
SendMessageToSet(playOrphanSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::SendCancelSpellVisual(uint32 id)
|
||||
{
|
||||
WorldPackets::Spells::CancelSpellVisual cancelSpellVisual;
|
||||
cancelSpellVisual.Source = GetGUID();
|
||||
cancelSpellVisual.SpellVisualID = id;
|
||||
SendMessageToSet(cancelSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::SendPlaySpellVisual(Unit* target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlaySpellVisual playSpellVisual;
|
||||
playSpellVisual.Source = GetGUID();
|
||||
playSpellVisual.Target = target->GetGUID();
|
||||
playSpellVisual.TargetPosition = target->GetPosition();
|
||||
playSpellVisual.SpellVisualID = spellVisualId;
|
||||
playSpellVisual.TravelSpeed = travelSpeed;
|
||||
playSpellVisual.MissReason = missReason;
|
||||
playSpellVisual.ReflectStatus = reflectStatus;
|
||||
playSpellVisual.SpeedAsTime = speedAsTime;
|
||||
SendMessageToSet(playSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::SendPlaySpellVisual(Position const& targetPosition, float launchDelay, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime /*= false*/)
|
||||
{
|
||||
WorldPackets::Spells::PlaySpellVisual playSpellVisual;
|
||||
playSpellVisual.Source = GetGUID();
|
||||
playSpellVisual.TargetPosition = targetPosition;
|
||||
playSpellVisual.LaunchDelay = launchDelay;
|
||||
playSpellVisual.SpellVisualID = spellVisualId;
|
||||
playSpellVisual.TravelSpeed = travelSpeed;
|
||||
playSpellVisual.MissReason = missReason;
|
||||
playSpellVisual.ReflectStatus = reflectStatus;
|
||||
playSpellVisual.SpeedAsTime = speedAsTime;
|
||||
SendMessageToSet(playSpellVisual.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::SendCancelSpellVisualKit(uint32 id)
|
||||
{
|
||||
WorldPackets::Spells::CancelSpellVisualKit cancelSpellVisualKit;
|
||||
cancelSpellVisualKit.Source = GetGUID();
|
||||
cancelSpellVisualKit.SpellVisualKitID = id;
|
||||
SendMessageToSet(cancelSpellVisualKit.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::SendPlaySpellVisualKit(uint32 id, uint32 type, uint32 duration) const
|
||||
{
|
||||
WorldPackets::Spells::PlaySpellVisualKit playSpellVisualKit;
|
||||
playSpellVisualKit.Unit = GetGUID();
|
||||
playSpellVisualKit.KitRecID = id;
|
||||
playSpellVisualKit.KitType = type;
|
||||
playSpellVisualKit.Duration = duration;
|
||||
SendMessageToSet(playSpellVisualKit.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::CancelSpellMissiles(uint32 spellId, bool reverseMissile /*= false*/)
|
||||
{
|
||||
bool hasMissile = false;
|
||||
|
||||
@@ -1162,14 +1162,6 @@ class TC_GAME_API Unit : public WorldObject
|
||||
Aura* AddAura(SpellInfo const* spellInfo, uint32 effMask, Unit* target);
|
||||
void SetAuraStack(uint32 spellId, Unit* target, uint32 stack);
|
||||
|
||||
void SendCancelOrphanSpellVisual(uint32 id);
|
||||
void SendPlayOrphanSpellVisual(ObjectGuid const& target, uint32 spellVisualId, float travelSpeed, bool speedAsTime = false, bool withSourceOrientation = false);
|
||||
void SendPlayOrphanSpellVisual(Position const& targetLocation, uint32 spellVisualId, float travelSpeed, bool speedAsTime = false, bool withSourceOrientation = false);
|
||||
void SendCancelSpellVisual(uint32 id);
|
||||
void SendPlaySpellVisual(Unit* target, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime = false);
|
||||
void SendPlaySpellVisual(Position const& targetPosition, float o, uint32 spellVisualId, uint16 missReason, uint16 reflectStatus, float travelSpeed, bool speedAsTime = false);
|
||||
void SendCancelSpellVisualKit(uint32 id);
|
||||
void SendPlaySpellVisualKit(uint32 id, uint32 type, uint32 duration) const;
|
||||
void CancelSpellMissiles(uint32 spellId, bool reverseMissile = false);
|
||||
|
||||
void DeMorph();
|
||||
|
||||
Reference in New Issue
Block a user