From 035c51944f6e969592cb19dd9a6ee7b1bb87207f Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Sun, 19 Jan 2025 17:36:48 -0500 Subject: [PATCH] [Quest API] Add SetAAEXPPercentage to Perl/Lua (#4597) --- zone/client.cpp | 16 ++++++++++++++++ zone/client.h | 2 ++ zone/client_packet.cpp | 3 ++- zone/lua_client.cpp | 7 +++++++ zone/lua_client.h | 1 + zone/perl_client.cpp | 6 ++++++ 6 files changed, 34 insertions(+), 1 deletion(-) diff --git a/zone/client.cpp b/zone/client.cpp index be693e453..6b8fb3144 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -13106,3 +13106,19 @@ void Client::ShowZoneShardMenu() number++; } } + +void Client::SetAAEXPPercentage(uint8 percentage) +{ + const uint32 before_percentage = m_epp.perAA; + + if (before_percentage > 0 && percentage == 0) { + MessageString(Chat::White, AA_OFF); + } else if (before_percentage == 0 && percentage > 0) { + MessageString(Chat::White, AA_ON); + } + + m_epp.perAA = EQ::Clamp(static_cast(percentage), 0, 100); + + SendAlternateAdvancementStats(); + SendAlternateAdvancementTable(); +} diff --git a/zone/client.h b/zone/client.h index a60b01b43..b050c34fa 100644 --- a/zone/client.h +++ b/zone/client.h @@ -692,6 +692,8 @@ public: void SetAAEXPModifier(uint32 zone_id, float aa_modifier, int16 instance_version = -1); void SetEXPModifier(uint32 zone_id, float exp_modifier, int16 instance_version = -1); + void SetAAEXPPercentage(uint8 percentage); + bool UpdateLDoNPoints(uint32 theme_id, int points); void SetLDoNPoints(uint32 theme_id, uint32 points); void SetPVPPoints(uint32 Points) { m_pp.PVPCurrentPoints = Points; } diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index 55085620f..ef671ef12 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -1864,8 +1864,9 @@ void Client::Handle_OP_AAAction(const EQApplicationPacket *app) PurchaseAlternateAdvancementRank(action->ability); } else if (action->action == aaActionDisableEXP) { //Turn Off AA Exp - if (m_epp.perAA > 0) + if (m_epp.perAA > 0) { MessageString(Chat::White, AA_OFF); + } m_epp.perAA = 0; SendAlternateAdvancementStats(); diff --git a/zone/lua_client.cpp b/zone/lua_client.cpp index 97747d642..566510cf9 100644 --- a/zone/lua_client.cpp +++ b/zone/lua_client.cpp @@ -3458,6 +3458,12 @@ void Lua_Client::ShowZoneShardMenu() self->ShowZoneShardMenu(); } +void Lua_Client::SetAAEXPPercentage(uint8 percentage) +{ + Lua_Safe_Call_Void(); + self->SetAAEXPPercentage(percentage); +} + luabind::scope lua_register_client() { return luabind::class_("Client") .def(luabind::constructor<>()) @@ -3890,6 +3896,7 @@ luabind::scope lua_register_client() { .def("SetAAEXPModifier", (void(Lua_Client::*)(float))&Lua_Client::SetAAEXPModifier) .def("SetAAEXPModifier", (void(Lua_Client::*)(uint32,float))&Lua_Client::SetAAEXPModifier) .def("SetAAEXPModifier", (void(Lua_Client::*)(uint32,float,int16))&Lua_Client::SetAAEXPModifier) + .def("SetAAEXPPercentage", (void(Lua_Client::*)(uint8))&Lua_Client::SetAAEXPPercentage) .def("SetAAPoints", (void(Lua_Client::*)(int))&Lua_Client::SetAAPoints) .def("SetAATitle", (void(Lua_Client::*)(std::string))&Lua_Client::SetAATitle) .def("SetAATitle", (void(Lua_Client::*)(std::string,bool))&Lua_Client::SetAATitle) diff --git a/zone/lua_client.h b/zone/lua_client.h index 4374fe199..d86705f2e 100644 --- a/zone/lua_client.h +++ b/zone/lua_client.h @@ -510,6 +510,7 @@ public: void AreaTaunt(float range); void AreaTaunt(float range, int bonus_hate); luabind::object GetInventorySlots(lua_State* L); + void SetAAEXPPercentage(uint8 percentage); void ApplySpell(int spell_id); void ApplySpell(int spell_id, int duration); diff --git a/zone/perl_client.cpp b/zone/perl_client.cpp index fdeece8f8..d86c70bf4 100644 --- a/zone/perl_client.cpp +++ b/zone/perl_client.cpp @@ -3229,6 +3229,11 @@ perl::array Perl_Client_GetInventorySlots(Client* self) return result; } +void Perl_Client_SetAAEXPPercentage(Client* self, uint8 percentage) +{ + self->SetAAEXPPercentage(percentage); +} + void perl_register_client() { perl::interpreter perl(PERL_GET_THX); @@ -3657,6 +3662,7 @@ void perl_register_client() package.add("SetAAEXPModifier", (void(*)(Client*, float))&Perl_Client_SetAAEXPModifier); package.add("SetAAEXPModifier", (void(*)(Client*, uint32, float))&Perl_Client_SetAAEXPModifier); package.add("SetAAEXPModifier", (void(*)(Client*, uint32, float, int16))&Perl_Client_SetAAEXPModifier); + package.add("SetAAEXPPercentage", &Perl_Client_SetAAEXPPercentage); package.add("SetAAPoints", &Perl_Client_SetAAPoints); package.add("SetAATitle", (void(*)(Client*, std::string))&Perl_Client_SetAATitle); package.add("SetAATitle", (void(*)(Client*, std::string, bool))&Perl_Client_SetAATitle);