aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server/Packets
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-11-22 11:02:04 +0100
committerShauren <shauren.trinity@gmail.com>2019-11-22 11:02:04 +0100
commitec9d624aec9e0a39b1bcee7d4077f46be358faad (patch)
treee5aceec6e06d537fb1966f0ccab913f8558b3b8e /src/server/game/Server/Packets
parent2a46798362c7e39544886e406a619360096298a1 (diff)
Core/Items: Implement azerite essences
* Implement inspecting heart of azeroth data * Fixed heart of azeroth item level - bonuses now apply
Diffstat (limited to 'src/server/game/Server/Packets')
-rw-r--r--src/server/game/Server/Packets/AzeritePackets.cpp31
-rw-r--r--src/server/game/Server/Packets/AzeritePackets.h54
-rw-r--r--src/server/game/Server/Packets/InspectPackets.cpp23
3 files changed, 108 insertions, 0 deletions
diff --git a/src/server/game/Server/Packets/AzeritePackets.cpp b/src/server/game/Server/Packets/AzeritePackets.cpp
index 97e8bcc81ff..9f300d2d72d 100644
--- a/src/server/game/Server/Packets/AzeritePackets.cpp
+++ b/src/server/game/Server/Packets/AzeritePackets.cpp
@@ -16,6 +16,7 @@
*/
#include "AzeritePackets.h"
+#include "Util.h"
WorldPacket const* WorldPackets::Azerite::AzeriteXpGain::Write()
{
@@ -24,3 +25,33 @@ WorldPacket const* WorldPackets::Azerite::AzeriteXpGain::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Azerite::AzeriteEssenceForgeOpened::Write()
+{
+ _worldPacket << ForgeGUID;
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Azerite::AzeriteEssenceUnlockMilestone::Read()
+{
+ _worldPacket >> AzeriteItemMilestonePowerID;
+}
+
+void WorldPackets::Azerite::AzeriteEssenceActivateEssence::Read()
+{
+ _worldPacket >> AzeriteEssenceID;
+ _worldPacket >> Slot;
+}
+
+WorldPacket const* WorldPackets::Azerite::AzeriteEssenceSelectionResult::Write()
+{
+ _worldPacket.WriteBits(AsUnderlyingType(Reason), 4);
+ _worldPacket.WriteBit(Slot.is_initialized());
+ _worldPacket << int32(Arg);
+ _worldPacket << int32(AzeriteEssenceID);
+ if (Slot)
+ _worldPacket << uint8(*Slot);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/AzeritePackets.h b/src/server/game/Server/Packets/AzeritePackets.h
index 31ca4cdb13a..fea3a799db6 100644
--- a/src/server/game/Server/Packets/AzeritePackets.h
+++ b/src/server/game/Server/Packets/AzeritePackets.h
@@ -19,7 +19,9 @@
#define AzeriteItemPackets_h__
#include "Packet.h"
+#include "ItemDefines.h"
#include "ObjectGuid.h"
+#include "Optional.h"
namespace WorldPackets
{
@@ -35,6 +37,58 @@ namespace WorldPackets
ObjectGuid ItemGUID;
uint64 XP = 0;
};
+
+ class AzeriteEssenceForgeOpened final : public ServerPacket
+ {
+ public:
+ AzeriteEssenceForgeOpened() : ServerPacket(SMSG_AZERITE_ESSENCE_FORGE_OPENED, 16) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid ForgeGUID;
+ };
+
+ class AzeriteEssenceForgeClose final : public ServerPacket
+ {
+ public:
+ AzeriteEssenceForgeClose() : ServerPacket(SMSG_AZERITE_ESSENCE_FORGE_CLOSE, 0) { }
+
+ WorldPacket const* Write() override { return &_worldPacket; }
+ };
+
+ class AzeriteEssenceUnlockMilestone final : public ClientPacket
+ {
+ public:
+ AzeriteEssenceUnlockMilestone(WorldPacket&& packet) : ClientPacket(CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE, std::move(packet)) { }
+
+ void Read() override;
+
+ int32 AzeriteItemMilestonePowerID = 0;
+ };
+
+ class AzeriteEssenceActivateEssence final : public ClientPacket
+ {
+ public:
+ AzeriteEssenceActivateEssence(WorldPacket&& packet) : ClientPacket(CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE, std::move(packet)) { }
+
+ void Read() override;
+
+ int32 AzeriteEssenceID = 0;
+ uint8 Slot = 0;
+ };
+
+ class AzeriteEssenceSelectionResult final : public ServerPacket
+ {
+ public:
+ AzeriteEssenceSelectionResult() : ServerPacket(SMSG_AZERITE_ESSENCE_SELECTION_RESULT, 0) { }
+
+ WorldPacket const* Write() override;
+
+ AzeriteEssenceActivateResult Reason = AzeriteEssenceActivateResult::None;
+ int32 Arg = 0;
+ int32 AzeriteEssenceID = 0;
+ Optional<uint8> Slot;
+ };
}
}
diff --git a/src/server/game/Server/Packets/InspectPackets.cpp b/src/server/game/Server/Packets/InspectPackets.cpp
index 9442a6e0b73..cd5cc89db01 100644
--- a/src/server/game/Server/Packets/InspectPackets.cpp
+++ b/src/server/game/Server/Packets/InspectPackets.cpp
@@ -16,6 +16,7 @@
*/
#include "InspectPackets.h"
+#include "AzeriteItem.h"
#include "Item.h"
#include "Player.h"
@@ -166,6 +167,28 @@ WorldPackets::Inspect::InspectItemData::InspectItemData(::Item const* item, uint
}
++i;
}
+
+ if (AzeriteItem const* azeriteItem = item->ToAzeriteItem())
+ {
+ if (UF::SelectedAzeriteEssences const* essences = azeriteItem->GetSelectedAzeriteEssences())
+ {
+ for (uint8 slot = 0; slot < essences->AzeriteEssenceID.size(); ++slot)
+ {
+ AzeriteEssences.emplace_back();
+
+ WorldPackets::Inspect::AzeriteEssenceData& essence = AzeriteEssences.back();
+ essence.Index = slot;
+ essence.AzeriteEssenceID = essences->AzeriteEssenceID[slot];
+ if (essence.AzeriteEssenceID)
+ {
+ essence.Rank = azeriteItem->GetEssenceRank(essence.AzeriteEssenceID);
+ essence.SlotUnlocked = true;
+ }
+ else
+ essence.SlotUnlocked = azeriteItem->HasUnlockedEssenceSlot(slot);
+ }
+ }
+ }
}
WorldPacket const* WorldPackets::Inspect::InspectResult::Write()