diff --git a/src/server/game/Handlers/PerkProgramHandler.cpp b/src/server/game/Handlers/PerkProgramHandler.cpp
new file mode 100644
index 000000000..098f5448f
--- /dev/null
+++ b/src/server/game/Handlers/PerkProgramHandler.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2023 Algeth
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+
+#include "Bag.h"
+#include "PerkProgramData.h"
+#include "PerkProgramMgr.h"
+#include "PerksProgramPacketsCommon.h"
+#include "Config.h"
+#include "DatabaseEnv.h"
+#include "ObjectMgr.h"
+#include "ScriptMgr.h"
+#include "Random.h"
+#include
+
+
+void WorldSession::HandleGetPerkProgramRequest(WorldPackets::PerksProgram::PerksProgramStatusRequest& /*packet*/)
+{
+ if (!_player)
+ return;
+ GetPerkProgramMgr()->SendPerksProgramActivities();
+}
+
+void WorldSession::HandlePerkProgramRequestPurchase(WorldPackets::PerksProgram::PerksProgramRequestPurchase& packet)
+{
+ if (!_player)
+ return;
+
+ //GetPerkProgramMgr()->BuyItem(packet.PerksVendorItemID, packet.vendorGuid);
+}
+
+void WorldSession::HandlePerkProgamSetForzenVendorItem(WorldPackets::PerksProgram::PerksProgramSetFrozenVendorItem& packet)
+{
+ if (!_player)
+ return;
+}
+
+void WorldSession::HandlePerkProgramPendingReward(WorldPackets::PerksProgram::PerksProgramPendingReward& packet)
+{
+ if (!_player)
+ return;
+}
diff --git a/src/server/game/Server/Packets/PerksProgramPackets.h b/src/server/game/Server/Packets/PerksProgramPackets.h
index fd9cd2900..cb42924ec 100644
--- a/src/server/game/Server/Packets/PerksProgramPackets.h
+++ b/src/server/game/Server/Packets/PerksProgramPackets.h
@@ -110,6 +110,14 @@ public:
Timestamp<> TimeUntilStart = 0;
Timestamp<> TimeUntilEnd = 0;
};
+
+class PerksProgramPendingReward final : public ClientPacket
+{
+public:
+ PerksProgramPendingReward(WorldPacket&& packet) : ClientPacket(CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, std::move(packet)) {}
+
+ void Read() override {}
+};
}
#endif
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 65d70c566..414649038 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -879,8 +879,8 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_GET_RECENT_PURCHASES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_ITEMS_REFRESHED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_CART_CHECKOUT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
- DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PENDING_REWARDS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandlePerkProgramPendingReward);
+ DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_PURCHASE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandlePerkProgramRequestPurchase);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_REQUEST_REFUND, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_PERKS_PROGRAM_STATUS_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index f41d6acbd..3f674442a 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -37,6 +37,9 @@
#include