mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 10:31:29 +00:00
[Quest API] Add GrantAllAAPoints() to Perl/Lua and Modify #grantaa (#3616)
# Command - Add optional `level` argument to `#grantaa` so you can grant AAs up the specified level. # Perl - Add `$client->GrantAllAAPoints()`. - Add `$client->GrantAllAAPoints(level)`. # Lua - Add `client:GrantAllAAPoints()`. - Add `client:GrantAllAAPoints(level)`. # Notes - Grants all AA abilities up to client's current level or a specified level.
This commit is contained in:
parent
565baec675
commit
345dd442dd
42
zone/aa.cpp
42
zone/aa.cpp
@ -2153,30 +2153,28 @@ void Client::AutoGrantAAPoints() {
|
|||||||
SendAlternateAdvancementStats();
|
SendAlternateAdvancementStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Client::GrantAllAAPoints()
|
void Client::GrantAllAAPoints(uint8 unlock_level)
|
||||||
{
|
{
|
||||||
//iterate through every AA
|
//iterate through every AA
|
||||||
for (auto& iter : zone->aa_abilities) {
|
for (auto& aa : zone->aa_abilities) {
|
||||||
auto ability = iter.second.get();
|
AA::Ability* ability = aa.second.get();
|
||||||
|
|
||||||
if (ability->charges > 0) {
|
if (ability->charges > 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto level = GetLevel();
|
const uint8 level = unlock_level ? unlock_level : GetLevel();
|
||||||
auto p = 1;
|
|
||||||
auto rank = ability->first;
|
AA::Rank* rank = ability->first;
|
||||||
while (rank != nullptr) {
|
while (rank) {
|
||||||
if (CanUseAlternateAdvancementRank(rank)) {
|
if (!CanUseAlternateAdvancementRank(rank)) {
|
||||||
if (rank->level_req <= level && !HasAlreadyPurchasedRank(rank)) {
|
|
||||||
FinishAlternateAdvancementPurchase(rank, true, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
p++;
|
if (rank->level_req <= level && !HasAlreadyPurchasedRank(rank)) {
|
||||||
|
FinishAlternateAdvancementPurchase(rank, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
rank = rank->next;
|
rank = rank->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2188,18 +2186,18 @@ void Client::GrantAllAAPoints()
|
|||||||
SendAlternateAdvancementStats();
|
SendAlternateAdvancementStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Client::HasAlreadyPurchasedRank(AA::Rank *rank) {
|
bool Client::HasAlreadyPurchasedRank(AA::Rank* rank) {
|
||||||
auto iter = aa_ranks.find(rank->base_ability->id);
|
const auto& aa = aa_ranks.find(rank->base_ability->id);
|
||||||
|
if (aa == aa_ranks.end()) {
|
||||||
if (iter == aa_ranks.end()) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ability_rank = zone->GetAlternateAdvancementAbilityAndRank(iter->first, iter->second.first);
|
const auto& ability_rank = zone->GetAlternateAdvancementAbilityAndRank(aa->first, aa->second.first);
|
||||||
auto ability = ability_rank.first;
|
|
||||||
auto current = ability_rank.second;
|
|
||||||
|
|
||||||
while (current != nullptr) {
|
AA::Ability* ability = ability_rank.first;
|
||||||
|
AA::Rank* current = ability_rank.second;
|
||||||
|
|
||||||
|
while (current) {
|
||||||
if (current == rank) {
|
if (current == rank) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -906,7 +906,7 @@ public:
|
|||||||
int GetSpentAA() { return m_pp.aapoints_spent; }
|
int GetSpentAA() { return m_pp.aapoints_spent; }
|
||||||
uint32 GetRequiredAAExperience();
|
uint32 GetRequiredAAExperience();
|
||||||
void AutoGrantAAPoints();
|
void AutoGrantAAPoints();
|
||||||
void GrantAllAAPoints();
|
void GrantAllAAPoints(uint8 unlock_level = 0);
|
||||||
bool HasAlreadyPurchasedRank(AA::Rank* rank);
|
bool HasAlreadyPurchasedRank(AA::Rank* rank);
|
||||||
|
|
||||||
bool SendGMCommand(std::string message, bool ignore_status = false);
|
bool SendGMCommand(std::string message, bool ignore_status = false);
|
||||||
|
|||||||
@ -137,7 +137,7 @@ int command_init(void)
|
|||||||
command_add("givemoney", "[Platinum] [Gold] [Silver] [Copper] - Gives specified amount of money to you or your player target", AccountStatus::GMMgmt, command_givemoney) ||
|
command_add("givemoney", "[Platinum] [Gold] [Silver] [Copper] - Gives specified amount of money to you or your player target", AccountStatus::GMMgmt, command_givemoney) ||
|
||||||
command_add("gmzone", "[Zone ID|Zone Short Name] [Version] [Instance Identifier] - Zones to a private GM instance (Version defaults to 0 and Instance Identifier defaults to 'gmzone' if not used)", AccountStatus::GMAdmin, command_gmzone) ||
|
command_add("gmzone", "[Zone ID|Zone Short Name] [Version] [Instance Identifier] - Zones to a private GM instance (Version defaults to 0 and Instance Identifier defaults to 'gmzone' if not used)", AccountStatus::GMAdmin, command_gmzone) ||
|
||||||
command_add("goto", "[playername] or [x y z] [h] - Teleport to the provided coordinates or to your target", AccountStatus::Steward, command_goto) ||
|
command_add("goto", "[playername] or [x y z] [h] - Teleport to the provided coordinates or to your target", AccountStatus::Steward, command_goto) ||
|
||||||
command_add("grantaa", "Grants a player all available AA points for their level.", AccountStatus::GMMgmt, command_grantaa) ||
|
command_add("grantaa", "[level] - Grants a player all available AA points up the specified level, all AAs are granted if no level is specified.", AccountStatus::GMMgmt, command_grantaa) ||
|
||||||
command_add("grid", "[add/delete] [grid_num] [wandertype] [pausetype] - Create/delete a wandering grid", AccountStatus::GMAreas, command_grid) ||
|
command_add("grid", "[add/delete] [grid_num] [wandertype] [pausetype] - Create/delete a wandering grid", AccountStatus::GMAreas, command_grid) ||
|
||||||
command_add("guild", "Guild manipulation commands. Use argument help for more info.", AccountStatus::Steward, command_guild) ||
|
command_add("guild", "Guild manipulation commands. Use argument help for more info.", AccountStatus::Steward, command_guild) ||
|
||||||
command_add("help", "[Search Criteria] - List available commands and their description, specify partial command as argument to search", AccountStatus::Player, command_help) ||
|
command_add("help", "[Search Criteria] - List available commands and their description, specify partial command as argument to search", AccountStatus::Player, command_help) ||
|
||||||
|
|||||||
@ -7,14 +7,24 @@ void command_grantaa(Client *c, const Seperator *sep)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uint8 unlock_level = sep->IsNumber(1) ? static_cast<uint8>(Strings::ToUnsignedInt(sep->arg[1])) : 0;
|
||||||
|
|
||||||
auto t = c->GetTarget()->CastToClient();
|
auto t = c->GetTarget()->CastToClient();
|
||||||
t->GrantAllAAPoints();
|
t->GrantAllAAPoints(unlock_level);
|
||||||
|
|
||||||
c->Message(
|
c->Message(
|
||||||
Chat::White,
|
Chat::White,
|
||||||
fmt::format(
|
fmt::format(
|
||||||
"Successfully granted all Alternate Advancements for {}.",
|
"Successfully granted all Alternate Advancements for {}{}.",
|
||||||
c->GetTargetDescription(t)
|
c->GetTargetDescription(t),
|
||||||
|
(
|
||||||
|
unlock_level ?
|
||||||
|
fmt::format(
|
||||||
|
" up to level {}",
|
||||||
|
unlock_level
|
||||||
|
) :
|
||||||
|
""
|
||||||
|
)
|
||||||
).c_str()
|
).c_str()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3164,6 +3164,18 @@ void Lua_Client::SetBucket(std::string bucket_name, std::string bucket_value, st
|
|||||||
self->SetBucket(bucket_name, bucket_value, expiration);
|
self->SetBucket(bucket_name, bucket_value, expiration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Lua_Client::GrantAllAAPoints()
|
||||||
|
{
|
||||||
|
Lua_Safe_Call_Void();
|
||||||
|
self->GrantAllAAPoints();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Lua_Client::GrantAllAAPoints(uint8 unlock_level)
|
||||||
|
{
|
||||||
|
Lua_Safe_Call_Void();
|
||||||
|
self->GrantAllAAPoints(unlock_level);
|
||||||
|
}
|
||||||
|
|
||||||
luabind::scope lua_register_client() {
|
luabind::scope lua_register_client() {
|
||||||
return luabind::class_<Lua_Client, Lua_Mob>("Client")
|
return luabind::class_<Lua_Client, Lua_Mob>("Client")
|
||||||
.def(luabind::constructor<>())
|
.def(luabind::constructor<>())
|
||||||
@ -3414,6 +3426,8 @@ luabind::scope lua_register_client() {
|
|||||||
.def("GetPEQZoneFlags", (luabind::object(Lua_Client::*)(lua_State*))&Lua_Client::GetPEQZoneFlags)
|
.def("GetPEQZoneFlags", (luabind::object(Lua_Client::*)(lua_State*))&Lua_Client::GetPEQZoneFlags)
|
||||||
.def("GetZoneFlags", (luabind::object(Lua_Client::*)(lua_State*))&Lua_Client::GetZoneFlags)
|
.def("GetZoneFlags", (luabind::object(Lua_Client::*)(lua_State*))&Lua_Client::GetZoneFlags)
|
||||||
.def("GoFish", (void(Lua_Client::*)(void))&Lua_Client::GoFish)
|
.def("GoFish", (void(Lua_Client::*)(void))&Lua_Client::GoFish)
|
||||||
|
.def("GrantAllAAPoints", (void(Lua_Client::*)(void))&Lua_Client::GrantAllAAPoints)
|
||||||
|
.def("GrantAllAAPoints", (void(Lua_Client::*)(uint8))&Lua_Client::GrantAllAAPoints)
|
||||||
.def("GrantAlternateAdvancementAbility", (bool(Lua_Client::*)(int, int))&Lua_Client::GrantAlternateAdvancementAbility)
|
.def("GrantAlternateAdvancementAbility", (bool(Lua_Client::*)(int, int))&Lua_Client::GrantAlternateAdvancementAbility)
|
||||||
.def("GrantAlternateAdvancementAbility", (bool(Lua_Client::*)(int, int, bool))&Lua_Client::GrantAlternateAdvancementAbility)
|
.def("GrantAlternateAdvancementAbility", (bool(Lua_Client::*)(int, int, bool))&Lua_Client::GrantAlternateAdvancementAbility)
|
||||||
.def("GuildID", (uint32(Lua_Client::*)(void))&Lua_Client::GuildID)
|
.def("GuildID", (uint32(Lua_Client::*)(void))&Lua_Client::GuildID)
|
||||||
|
|||||||
@ -480,6 +480,8 @@ public:
|
|||||||
std::string GetBucketRemaining(std::string bucket_name);
|
std::string GetBucketRemaining(std::string bucket_name);
|
||||||
void SetBucket(std::string bucket_name, std::string bucket_value);
|
void SetBucket(std::string bucket_name, std::string bucket_value);
|
||||||
void SetBucket(std::string bucket_name, std::string bucket_value, std::string expiration);
|
void SetBucket(std::string bucket_name, std::string bucket_value, std::string expiration);
|
||||||
|
void GrantAllAAPoints();
|
||||||
|
void GrantAllAAPoints(uint8 unlock_level);
|
||||||
|
|
||||||
void ApplySpell(int spell_id);
|
void ApplySpell(int spell_id);
|
||||||
void ApplySpell(int spell_id, int duration);
|
void ApplySpell(int spell_id, int duration);
|
||||||
|
|||||||
@ -2982,6 +2982,16 @@ void Perl_Client_SetLDoNPoints(Client* self, uint32 theme_id, uint32 points)
|
|||||||
self->SetLDoNPoints(theme_id, points);
|
self->SetLDoNPoints(theme_id, points);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Perl_Client_GrantAllAAPoints(Client* self)
|
||||||
|
{
|
||||||
|
self->GrantAllAAPoints();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Perl_Client_GrantAllAAPoints(Client* self, uint8 unlock_level)
|
||||||
|
{
|
||||||
|
self->GrantAllAAPoints(unlock_level);
|
||||||
|
}
|
||||||
|
|
||||||
void perl_register_client()
|
void perl_register_client()
|
||||||
{
|
{
|
||||||
perl::interpreter perl(PERL_GET_THX);
|
perl::interpreter perl(PERL_GET_THX);
|
||||||
@ -3232,6 +3242,8 @@ void perl_register_client()
|
|||||||
package.add("GetPEQZoneFlags", &Perl_Client_GetPEQZoneFlags);
|
package.add("GetPEQZoneFlags", &Perl_Client_GetPEQZoneFlags);
|
||||||
package.add("GetZoneFlags", &Perl_Client_GetZoneFlags);
|
package.add("GetZoneFlags", &Perl_Client_GetZoneFlags);
|
||||||
package.add("GoFish", &Perl_Client_GoFish);
|
package.add("GoFish", &Perl_Client_GoFish);
|
||||||
|
package.add("GrantAllAAPoints", (void(*)(Client*))&Perl_Client_GrantAllAAPoints);
|
||||||
|
package.add("GrantAllAAPoints", (void(*)(Client*, uint8))&Perl_Client_GrantAllAAPoints);
|
||||||
package.add("GrantAlternateAdvancementAbility", (bool(*)(Client*, int, int))&Perl_Client_GrantAlternateAdvancementAbility);
|
package.add("GrantAlternateAdvancementAbility", (bool(*)(Client*, int, int))&Perl_Client_GrantAlternateAdvancementAbility);
|
||||||
package.add("GrantAlternateAdvancementAbility", (bool(*)(Client*, int, int, bool))&Perl_Client_GrantAlternateAdvancementAbility);
|
package.add("GrantAlternateAdvancementAbility", (bool(*)(Client*, int, int, bool))&Perl_Client_GrantAlternateAdvancementAbility);
|
||||||
package.add("GuildID", &Perl_Client_GuildID);
|
package.add("GuildID", &Perl_Client_GuildID);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user