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);
|
||||
|
||||
if (spellForVisuals != null)
|
||||
spellVisual.SpellXSpellVisualID = spellForVisuals.GetSpellXSpellVisualId();
|
||||
spellVisual.SpellXSpellVisualID = caster != null ? caster.GetCastSpellXSpellVisualId(spellForVisuals) : spellForVisuals.GetSpellXSpellVisualId();
|
||||
}
|
||||
if (spellForVisuals != null)
|
||||
SetUpdateFieldValue(areaTriggerData.ModifyValue(m_areaTriggerData.SpellForVisuals), spellForVisuals.Id);
|
||||
|
||||
SpellCastVisualField spellCastVisual = areaTriggerData.ModifyValue(m_areaTriggerData.SpellVisual);
|
||||
SetUpdateFieldValue(ref spellCastVisual.SpellXSpellVisualID, spellVisual.SpellXSpellVisualID);
|
||||
SetUpdateFieldValue(ref spellCastVisual.ScriptVisualID, spellVisual.ScriptVisualID);
|
||||
SetSpellVisual(spellVisual);
|
||||
|
||||
if (!IsStaticSpawn())
|
||||
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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
_duration = newDuration;
|
||||
@@ -1449,7 +1454,7 @@ namespace Game.Entities
|
||||
|
||||
public AreaTriggerOrbitInfo GetOrbit() { return _orbitInfo; }
|
||||
|
||||
AreaTriggerFieldData m_areaTriggerData;
|
||||
public AreaTriggerFieldData m_areaTriggerData;
|
||||
|
||||
ulong _spawnId;
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ public class ObjectAccessor : Singleton<ObjectAccessor>
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -623,6 +623,23 @@ namespace Game
|
||||
_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)]
|
||||
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
|
||||
class AreaTriggerSplineInfo
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user