aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-02-18 21:55:28 +0100
committerShauren <shauren.trinity@gmail.com>2017-02-18 21:55:28 +0100
commit5e437f5d3d500b735eb623914a6cfc6bcb35247b (patch)
tree19544b0c8685de73eaf6772b70b7721ec2b52623 /src/server/game/Server
parent255dd29562ae42a73c5947c2a8907faac888af31 (diff)
Core/Movement: Implement SpellEffectExtraData curve modifiers
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp
index 3156a8516b3..20405fbd097 100644
--- a/src/server/game/Server/Packets/MovementPackets.cpp
+++ b/src/server/game/Server/Packets/MovementPackets.cpp
@@ -302,7 +302,7 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
data.WriteBits(moveSpline.getPath().size(), 16);
data.WriteBits(uint8(moveSpline.spline.mode()), 2); // Mode
data.WriteBit(0); // HasSplineFilter
- data.WriteBit(0); // HasSpellEffectExtraData
+ data.WriteBit(moveSpline.spell_effect_extra.is_initialized()); // HasSpellEffectExtraData
data.FlushBits();
//if (HasSplineFilterKey)
@@ -341,13 +341,13 @@ void WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(::
data.append<G3D::Vector3>(&moveSpline.getPath()[0], moveSpline.getPath().size());
- //if (HasSpellEffectExtraData)
- //{
- // data << ObjectGuid(TargetGUID);
- // data << uint32(SpellVisualID);
- // data << uint32(ProgressCurveID);
- // data << uint32(ParabolicCurveID);
- //}
+ if (moveSpline.spell_effect_extra)
+ {
+ data << moveSpline.spell_effect_extra->Target;
+ data << uint32(moveSpline.spell_effect_extra->SpellVisualId);
+ data << uint32(moveSpline.spell_effect_extra->ProgressCurveId);
+ data << uint32(moveSpline.spell_effect_extra->ParabolicCurveId);
+ }
}
}
@@ -381,6 +381,15 @@ void WorldPackets::Movement::MonsterMove::InitializeSplineData(::Movement::MoveS
if (splineFlags.fadeObject)
movementSpline.SpecialTime = moveSpline.effect_start_time;
+ if (moveSpline.spell_effect_extra)
+ {
+ movementSpline.SpellEffectExtraData = boost::in_place();
+ movementSpline.SpellEffectExtraData->TargetGUID = moveSpline.spell_effect_extra->Target;
+ movementSpline.SpellEffectExtraData->SpellVisualID = moveSpline.spell_effect_extra->SpellVisualId;
+ movementSpline.SpellEffectExtraData->ProgressCurveID = moveSpline.spell_effect_extra->ProgressCurveId;
+ movementSpline.SpellEffectExtraData->ParabolicCurveID = moveSpline.spell_effect_extra->ParabolicCurveId;
+ }
+
::Movement::Spline<int32> const& spline = moveSpline.spline;
std::vector<G3D::Vector3> const& array = spline.getPoints();