diff --git a/zone/lua_client.cpp b/zone/lua_client.cpp index eaeb743bf..6abd1d895 100644 --- a/zone/lua_client.cpp +++ b/zone/lua_client.cpp @@ -2401,6 +2401,26 @@ void Lua_Client::AddItem(luabind::object item_table) { ); } +int Lua_Client::CountAugmentEquippedByID(uint32 item_id) { + Lua_Safe_Call_Int(); + return self->GetInv().CountAugmentEquippedByID(item_id); +} + +bool Lua_Client::HasAugmentEquippedByID(uint32 item_id) { + Lua_Safe_Call_Bool(); + return self->GetInv().HasAugmentEquippedByID(item_id); +} + +int Lua_Client::CountItemEquippedByID(uint32 item_id) { + Lua_Safe_Call_Int(); + return self->GetInv().CountItemEquippedByID(item_id); +} + +bool Lua_Client::HasItemEquippedByID(uint32 item_id) { + Lua_Safe_Call_Bool(); + return self->GetInv().HasItemEquippedByID(item_id); +} + void Lua_Client::AddPlatinum(uint32 platinum) { Lua_Safe_Call_Void(); self->AddPlatinum(platinum); @@ -2471,7 +2491,9 @@ luabind::scope lua_register_client() { .def("ClearCompassMark",(void(Lua_Client::*)(void))&Lua_Client::ClearCompassMark) .def("ClearZoneFlag", (void(Lua_Client::*)(int))&Lua_Client::ClearZoneFlag) .def("Connected", (bool(Lua_Client::*)(void))&Lua_Client::Connected) + .def("CountAugmentEquippedByID", (int(Lua_Client::*)(uint32))&Lua_Client::CountAugmentEquippedByID) .def("CountItem", (int(Lua_Client::*)(uint32))&Lua_Client::CountItem) + .def("CountItemEquippedByID", (int(Lua_Client::*)(uint32))&Lua_Client::CountItemEquippedByID) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(luabind::object))&Lua_Client::CreateExpedition) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32))&Lua_Client::CreateExpedition) .def("CreateExpedition", (Lua_Expedition(Lua_Client::*)(std::string, uint32, uint32, std::string, uint32, uint32, bool))&Lua_Client::CreateExpedition) @@ -2620,8 +2642,10 @@ luabind::scope lua_register_client() { .def("GrantAlternateAdvancementAbility", (bool(Lua_Client::*)(int, int, bool))&Lua_Client::GrantAlternateAdvancementAbility) .def("GuildID", (uint32(Lua_Client::*)(void))&Lua_Client::GuildID) .def("GuildRank", (int(Lua_Client::*)(void))&Lua_Client::GuildRank) + .def("HasAugmentEquippedByID", (bool(Lua_Client::*)(uint32))&Lua_Client::HasAugmentEquippedByID) .def("HasDisciplineLearned", (bool(Lua_Client::*)(uint16))&Lua_Client::HasDisciplineLearned) .def("HasExpeditionLockout", (bool(Lua_Client::*)(std::string, std::string))&Lua_Client::HasExpeditionLockout) + .def("HasItemEquippedByID", (bool(Lua_Client::*)(uint32))&Lua_Client::HasItemEquippedByID) .def("HasSkill", (bool(Lua_Client::*)(int))&Lua_Client::HasSkill) .def("HasSpellScribed", (bool(Lua_Client::*)(int))&Lua_Client::HasSpellScribed) .def("HasZoneFlag", (bool(Lua_Client::*)(int))&Lua_Client::HasZoneFlag) diff --git a/zone/lua_client.h b/zone/lua_client.h index f87d463c4..cc48ba4f2 100644 --- a/zone/lua_client.h +++ b/zone/lua_client.h @@ -399,6 +399,10 @@ public: void RemoveItem(uint32 item_id, uint32 quantity); void SetGMStatus(uint32 newStatus); void AddItem(luabind::object item_table); + int CountAugmentEquippedByID(uint32 item_id); + int CountItemEquippedByID(uint32 item_id); + bool HasAugmentEquippedByID(uint32 item_id); + bool HasItemEquippedByID(uint32 item_id); int GetEnvironmentDamageModifier(); void SetEnvironmentDamageModifier(int value); diff --git a/zone/perl_client.cpp b/zone/perl_client.cpp index 00b17b922..0853d786e 100644 --- a/zone/perl_client.cpp +++ b/zone/perl_client.cpp @@ -6122,6 +6122,41 @@ XS(XS_Client_AddItem) { XSRETURN_EMPTY; } +XS(XS_Client_HasAugmentEquippedByID); +XS(XS_Client_HasAugmentEquippedByID) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Client::HasAugmentEquippedByID(THIS, uint32 item_id)"); + { + Client *THIS; + bool has_equipped = false; + uint32 item_id = (uint32) SvUV(ST(1)); + VALIDATE_THIS_IS_CLIENT; + has_equipped = THIS->GetInv().HasAugmentEquippedByID(item_id); + ST(0) = boolSV(has_equipped); + sv_2mortal(ST(0)); + } + XSRETURN(1); +} + +XS(XS_Client_CountAugmentEquippedByID); +XS(XS_Client_CountAugmentEquippedByID) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Client::CountAugmentEquippedByID(THIS, uint32 item_id)"); + { + Client *THIS; + int quantity = 0; + uint32 item_id = (uint32) SvUV(ST(1)); + dXSTARG; + VALIDATE_THIS_IS_CLIENT; + quantity = THIS->GetInv().CountAugmentEquippedByID(item_id); + XSprePUSH; + PUSHi((IV)quantity); + } + XSRETURN(1); +} + XS(XS_Client_AddPlatinum); /* prototype to pass -Wmissing-prototypes */ XS(XS_Client_AddPlatinum) { dXSARGS; @@ -6159,6 +6194,41 @@ XS(XS_Client_GetCarriedPlatinum) { XSRETURN(1); } +XS(XS_Client_HasItemEquippedByID); +XS(XS_Client_HasItemEquippedByID) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Client::HasItemEquippedByID(THIS, uint32 item_id)"); + { + Client *THIS; + bool has_equipped = false; + uint32 item_id = (uint32) SvUV(ST(1)); + VALIDATE_THIS_IS_CLIENT; + has_equipped = THIS->GetInv().HasItemEquippedByID(item_id); + ST(0) = boolSV(has_equipped); + sv_2mortal(ST(0)); + } + XSRETURN(1); +} + +XS(XS_Client_CountItemEquippedByID); +XS(XS_Client_CountItemEquippedByID) { + dXSARGS; + if (items != 2) + Perl_croak(aTHX_ "Usage: Client::CountItemEquippedByID(THIS, uint32 item_id)"); + { + Client *THIS; + int quantity = 0; + uint32 item_id = (uint32) SvUV(ST(1)); + dXSTARG; + VALIDATE_THIS_IS_CLIENT; + quantity = THIS->GetInv().CountItemEquippedByID(item_id); + XSprePUSH; + PUSHi((IV)quantity); + } + XSRETURN(1); +} + XS(XS_Client_TakePlatinum); /* prototype to pass -Wmissing-prototypes */ XS(XS_Client_TakePlatinum) { dXSARGS; @@ -6230,7 +6300,9 @@ XS(boot_Client) { newXSproto(strcpy(buf, "ClearCompassMark"), XS_Client_ClearCompassMark, file, "$"); newXSproto(strcpy(buf, "ClearZoneFlag"), XS_Client_ClearZoneFlag, file, "$$"); newXSproto(strcpy(buf, "Connected"), XS_Client_Connected, file, "$"); + newXSproto(strcpy(buf, "CountAugmentEquippedByID"), XS_Client_CountAugmentEquippedByID, file, "$$"); newXSproto(strcpy(buf, "CountItem"), XS_Client_CountItem, file, "$$"); + newXSproto(strcpy(buf, "CountItemEquippedByID"), XS_Client_CountItemEquippedByID, file, "$$"); newXSproto(strcpy(buf, "CreateExpedition"), XS_Client_CreateExpedition, file, "$$$$$$$;$"); newXSproto(strcpy(buf, "CreateTaskDynamicZone"), XS_Client_CreateTaskDynamicZone, file, "$$"); newXSproto(strcpy(buf, "DecreaseByID"), XS_Client_DecreaseByID, file, "$$$"); @@ -6360,8 +6432,10 @@ XS(boot_Client) { newXSproto(strcpy(buf, "GrantAlternateAdvancementAbility"), XS_Client_GrantAlternateAdvancementAbility, file, "$$$;$"); newXSproto(strcpy(buf, "GuildID"), XS_Client_GuildID, file, "$"); newXSproto(strcpy(buf, "GuildRank"), XS_Client_GuildRank, file, "$"); + newXSproto(strcpy(buf, "HasAugmentEquippedByID"), XS_Client_HasAugmentEquippedByID, file, "$$"); newXSproto(strcpy(buf, "HasDisciplineLearned"), XS_Client_HasDisciplineLearned, file, "$$"); newXSproto(strcpy(buf, "HasExpeditionLockout"), XS_Client_HasExpeditionLockout, file, "$$$"); + newXSproto(strcpy(buf, "HasItemEquippedByID"), XS_Client_HasItemEquippedByID, file, "$$"); newXSproto(strcpy(buf, "HasSkill"), XS_Client_HasSkill, file, "$$"); newXSproto(strcpy(buf, "HasSpellScribed"), XS_Client_HasSkill, file, "$$"); newXSproto(strcpy(buf, "HasZoneFlag"), XS_Client_HasZoneFlag, file, "$$");