Core/Items: Implement azerite essences
Port From (https://github.com/TrinityCore/TrinityCore/commit/ec9d624aec9e0a39b1bcee7d4077f46be358faad)
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
|
||||
using Framework.Constants;
|
||||
using Game.Entities;
|
||||
using Framework.Dynamic;
|
||||
|
||||
namespace Game.Network.Packets
|
||||
{
|
||||
@@ -33,4 +34,69 @@ namespace Game.Network.Packets
|
||||
public ObjectGuid ItemGUID;
|
||||
public ulong XP;
|
||||
}
|
||||
|
||||
class AzeriteEssenceForgeOpened : ServerPacket
|
||||
{
|
||||
public AzeriteEssenceForgeOpened() : base(ServerOpcodes.AzeriteEssenceForgeOpened) { }
|
||||
|
||||
public override void Write()
|
||||
{
|
||||
_worldPacket.WritePackedGuid(ForgeGUID);
|
||||
}
|
||||
|
||||
public ObjectGuid ForgeGUID;
|
||||
}
|
||||
|
||||
class AzeriteEssenceForgeClose : ServerPacket
|
||||
{
|
||||
public AzeriteEssenceForgeClose() : base(ServerOpcodes.AzeriteEssenceForgeClose) { }
|
||||
|
||||
public override void Write() { }
|
||||
}
|
||||
|
||||
class AzeriteEssenceUnlockMilestone : ClientPacket
|
||||
{
|
||||
public AzeriteEssenceUnlockMilestone(WorldPacket packet) : base(packet) { }
|
||||
|
||||
public override void Read()
|
||||
{
|
||||
AzeriteItemMilestonePowerID = _worldPacket.ReadInt32();
|
||||
}
|
||||
|
||||
public int AzeriteItemMilestonePowerID;
|
||||
}
|
||||
|
||||
class AzeriteEssenceActivateEssence : ClientPacket
|
||||
{
|
||||
public AzeriteEssenceActivateEssence(WorldPacket packet) : base(packet) { }
|
||||
|
||||
public override void Read()
|
||||
{
|
||||
AzeriteEssenceID = _worldPacket.ReadUInt32();
|
||||
Slot = _worldPacket.ReadUInt8();
|
||||
}
|
||||
|
||||
public uint AzeriteEssenceID;
|
||||
public byte Slot;
|
||||
}
|
||||
|
||||
class AzeriteEssenceSelectionResult : ServerPacket
|
||||
{
|
||||
public AzeriteEssenceSelectionResult() : base(ServerOpcodes.AzeriteEssenceSelectionResult) { }
|
||||
|
||||
public override void Write()
|
||||
{
|
||||
_worldPacket.WriteBits((int)Reason, 4);
|
||||
_worldPacket.WriteBit(Slot.HasValue);
|
||||
_worldPacket.WriteUInt32(Arg);
|
||||
_worldPacket.WriteUInt32(AzeriteEssenceID);
|
||||
if (Slot.HasValue)
|
||||
_worldPacket.WriteUInt8(Slot.Value);
|
||||
}
|
||||
|
||||
public AzeriteEssenceActivateResult Reason;
|
||||
public uint Arg;
|
||||
public uint AzeriteEssenceID;
|
||||
public byte? Slot;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace Game.Network.Packets
|
||||
GuildData.Value.Write(_worldPacket);
|
||||
|
||||
if (AzeriteLevel.HasValue)
|
||||
_worldPacket.WriteInt32(AzeriteLevel.Value);
|
||||
_worldPacket.WriteUInt32((uint)AzeriteLevel);
|
||||
}
|
||||
|
||||
public PlayerModelDisplayInfo DisplayInfo;
|
||||
@@ -84,7 +84,7 @@ namespace Game.Network.Packets
|
||||
public List<ushort> PvpTalents = new List<ushort>();
|
||||
public Optional<InspectGuildData> GuildData = new Optional<InspectGuildData>();
|
||||
public Array<PVPBracketData> Bracket = new Array<PVPBracketData>(6);
|
||||
public Optional<int> AzeriteLevel;
|
||||
public uint? AzeriteLevel;
|
||||
public int ItemLevel;
|
||||
public uint LifetimeHK;
|
||||
public uint HonorLevel;
|
||||
@@ -156,6 +156,30 @@ namespace Game.Network.Packets
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
AzeriteItem azeriteItem = item.ToAzeriteItem();
|
||||
if (azeriteItem != null)
|
||||
{
|
||||
SelectedAzeriteEssences essences = azeriteItem.GetSelectedAzeriteEssences();
|
||||
if (essences != null)
|
||||
{
|
||||
for (byte slot = 0; slot < essences.AzeriteEssenceID.GetSize(); ++slot)
|
||||
{
|
||||
AzeriteEssenceData essence = new AzeriteEssenceData();
|
||||
essence.Index = slot;
|
||||
essence.AzeriteEssenceID = essences.AzeriteEssenceID[slot];
|
||||
if (essence.AzeriteEssenceID != 0)
|
||||
{
|
||||
essence.Rank = azeriteItem.GetEssenceRank(essence.AzeriteEssenceID);
|
||||
essence.SlotUnlocked = true;
|
||||
}
|
||||
else
|
||||
essence.SlotUnlocked = azeriteItem.HasUnlockedEssenceSlot(slot);
|
||||
|
||||
AzeriteEssences.Add(essence);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Write(WorldPacket data)
|
||||
|
||||
Reference in New Issue
Block a user