Core/PacketIO: Implemented CMSG_UPDATE_AREA_TRIGGER_VISUAL
Port From (https://github.com/TrinityCore/TrinityCore/commit/b88f4b7f4f8744b7cd455c07d3b94a704c373dfe)
This commit is contained in:
@@ -136,14 +136,12 @@ namespace Game.Entities
|
|||||||
spellForVisuals = Global.SpellMgr.GetSpellInfo(GetCreateProperties().SpellForVisuals.Value, Difficulty.None);
|
spellForVisuals = Global.SpellMgr.GetSpellInfo(GetCreateProperties().SpellForVisuals.Value, Difficulty.None);
|
||||||
|
|
||||||
if (spellForVisuals != null)
|
if (spellForVisuals != null)
|
||||||
spellVisual.SpellXSpellVisualID = spellForVisuals.GetSpellXSpellVisualId();
|
spellVisual.SpellXSpellVisualID = caster != null ? caster.GetCastSpellXSpellVisualId(spellForVisuals) : spellForVisuals.GetSpellXSpellVisualId();
|
||||||
}
|
}
|
||||||
if (spellForVisuals != null)
|
if (spellForVisuals != null)
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellForVisuals), spellForVisuals.Id);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellForVisuals), spellForVisuals.Id);
|
||||||
|
|
||||||
SpellCastVisualField spellCastVisual = areaTriggerData.ModifyValue(m_areaTriggerData.SpellVisual);
|
SetSpellVisual(spellVisual);
|
||||||
SetUpdateFieldValue(ref spellCastVisual.SpellXSpellVisualID, spellVisual.SpellXSpellVisualID);
|
|
||||||
SetUpdateFieldValue(ref spellCastVisual.ScriptVisualID, spellVisual.ScriptVisualID);
|
|
||||||
|
|
||||||
if (!IsStaticSpawn())
|
if (!IsStaticSpawn())
|
||||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.TimeToTargetScale), GetCreateProperties().TimeToTargetScale != 0 ? GetCreateProperties().TimeToTargetScale : m_areaTriggerData.Duration);
|
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.TimeToTargetScale), GetCreateProperties().TimeToTargetScale != 0 ? GetCreateProperties().TimeToTargetScale : m_areaTriggerData.Duration);
|
||||||
@@ -404,6 +402,13 @@ namespace Game.Entities
|
|||||||
ClearScaleCurve(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.OverrideMoveCurveZ));
|
ClearScaleCurve(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.OverrideMoveCurveZ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetSpellVisual(SpellCastVisual visual)
|
||||||
|
{
|
||||||
|
SpellCastVisualField spellCastVisual = m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.SpellVisual);
|
||||||
|
SetUpdateFieldValue(ref spellCastVisual.SpellXSpellVisualID, visual.SpellXSpellVisualID);
|
||||||
|
SetUpdateFieldValue(ref spellCastVisual.ScriptVisualID, visual.ScriptVisualID);
|
||||||
|
}
|
||||||
|
|
||||||
public void SetDuration(int newDuration)
|
public void SetDuration(int newDuration)
|
||||||
{
|
{
|
||||||
_duration = newDuration;
|
_duration = newDuration;
|
||||||
@@ -1449,7 +1454,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public AreaTriggerOrbitInfo GetOrbit() { return _orbitInfo; }
|
public AreaTriggerOrbitInfo GetOrbit() { return _orbitInfo; }
|
||||||
|
|
||||||
AreaTriggerFieldData m_areaTriggerData;
|
public AreaTriggerFieldData m_areaTriggerData;
|
||||||
|
|
||||||
ulong _spawnId;
|
ulong _spawnId;
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public class ObjectAccessor : Singleton<ObjectAccessor>
|
|||||||
return u.GetMap().GetDynamicObject(guid);
|
return u.GetMap().GetDynamicObject(guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static AreaTrigger GetAreaTrigger(WorldObject u, ObjectGuid guid)
|
public static AreaTrigger GetAreaTrigger(WorldObject u, ObjectGuid guid)
|
||||||
{
|
{
|
||||||
return u.GetMap().GetAreaTrigger(guid);
|
return u.GetMap().GetAreaTrigger(guid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -623,6 +623,23 @@ namespace Game
|
|||||||
_player.SetChannelVisual(new SpellCastVisualField() { SpellXSpellVisualID = spellXspellVisualId });
|
_player.SetChannelVisual(new SpellCastVisualField() { SpellXSpellVisualID = spellXspellVisualId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WorldPacketHandler(ClientOpcodes.UpdateAreaTriggerVisual, Processing = PacketProcessing.Inplace)]
|
||||||
|
void HandleUpdateAreaTriggerVisual(UpdateAreaTriggerVisual updateAreaTriggerVisual)
|
||||||
|
{
|
||||||
|
AreaTrigger target = ObjectAccessor.GetAreaTrigger(_player, updateAreaTriggerVisual.TargetGUID);
|
||||||
|
if (target == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (target.GetCasterGuid() != _player.GetGUID())
|
||||||
|
return;
|
||||||
|
|
||||||
|
SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(target.m_areaTriggerData.SpellForVisuals, _player.GetMap().GetDifficultyID());
|
||||||
|
if (spellInfo == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
target.SetSpellVisual(new SpellCastVisual(_player.GetCastSpellXSpellVisualId(spellInfo), 0));
|
||||||
|
}
|
||||||
|
|
||||||
[WorldPacketHandler(ClientOpcodes.KeyboundOverride, Processing = PacketProcessing.ThreadSafe)]
|
[WorldPacketHandler(ClientOpcodes.KeyboundOverride, Processing = PacketProcessing.ThreadSafe)]
|
||||||
void HandleKeyboundOverride(KeyboundOverride keyboundOverride)
|
void HandleKeyboundOverride(KeyboundOverride keyboundOverride)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -93,6 +93,23 @@ namespace Game.Networking.Packets
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class UpdateAreaTriggerVisual : ClientPacket
|
||||||
|
{
|
||||||
|
public int SpellID;
|
||||||
|
public SpellCastVisual Visual;
|
||||||
|
public ObjectGuid TargetGUID;
|
||||||
|
|
||||||
|
public UpdateAreaTriggerVisual(WorldPacket packet) : base(packet) { }
|
||||||
|
|
||||||
|
public override void Read()
|
||||||
|
{
|
||||||
|
SpellID = _worldPacket.ReadInt32();
|
||||||
|
Visual.Read(_worldPacket);
|
||||||
|
TargetGUID = _worldPacket.ReadPackedGuid();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//Structs
|
//Structs
|
||||||
class AreaTriggerSplineInfo
|
class AreaTriggerSplineInfo
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user