[Quest API] Add ItemData Class to Perl (#3465)

* [Quest API] Add ItemData Class to Perl

- Add `$questitem->GetItem()`.
- Add `$questitem->GetUnscaledItem()`.
- Add `$questitemdata->GetAGI()`.
- Add `$questitemdata->GetAC()`.
- Add `$questitemdata->GetCHA()`.
- Add `$questitemdata->GetDEX()`.
- Add `$questitemdata->GetINT()`.
- Add `$questitemdata->GetSTA()`.
- Add `$questitemdata->GetSTR()`.
- Add `$questitemdata->GetAWis()`.
- Add `$questitemdata->GetAccuracy()`.
- Add `$questitemdata->GetArtifactFlag()`.
- Add `$questitemdata->GetAttack()`.
- Add `$questitemdata->GetAttuneable()`.
- Add `$questitemdata->GetAugmentDistiller()`.
- Add `$questitemdata->GetAugmentRestrict()`.
- Add `$questitemdata->GetAugmentSlotType(slot_id)`.
- Add `$questitemdata->GetAugmentSlotUnk2(slot_id)`.
- Add `$questitemdata->GetAugmentSlotVisible(slot_id)`.
- Add `$questitemdata->GetAugmentType()`.
- Add `$questitemdata->GetAvoidance()`.
- Add `$questitemdata->GetBackstabDamage()`.
- Add `$questitemdata->GetBagSize()`.
- Add `$questitemdata->GetBagSlots()`.
- Add `$questitemdata->GetBagType()`.
- Add `$questitemdata->GetBagWeightReduction()`.
- Add `$questitemdata->GetBaneDamageAmount()`.
- Add `$questitemdata->GetBaneDamageBody()`.
- Add `$questitemdata->GetBaneDamageRace()`.
- Add `$questitemdata->GetBaneDamageRaceAmount()`.
- Add `$questitemdata->GetBardEffect()`.
- Add `$questitemdata->GetBardLevel()`.
- Add `$questitemdata->GetBardLevel2()`.
- Add `$questitemdata->GetBardType()`.
- Add `$questitemdata->GetBardSkillType()`.
- Add `$questitemdata->GetBardSkillValue()`.
- Add `$questitemdata->GetBenefitFlag()`.
- Add `$questitemdata->GetBook()`.
- Add `$questitemdata->GetBookType()`.
- Add `$questitemdata->GetCR()`.
- Add `$questitemdata->GetCastTime()`.
- Add `$questitemdata->GetCastTime_()`.
- Add `$questitemdata->GetCharmFile()`.
- Add `$questitemdata->GetCharmFileID()`.
- Add `$questitemdata->GetClairvoyance()`.
- Add `$questitemdata->GetClasses()`.
- Add `$questitemdata->GetClickName()`.
- Add `$questitemdata->GetClickEffect()`.
- Add `$questitemdata->GetClickLevel()`.
- Add `$questitemdata->GetClickLevel2()`.
- Add `$questitemdata->GetClickType()`.
- Add `$questitemdata->GetColor()`.
- Add `$questitemdata->GetCombatEffects()`.
- Add `$questitemdata->GetCorruption()`.
- Add `$questitemdata->GetDR()`.
- Add `$questitemdata->GetDSMitigation()`.
- Add `$questitemdata->GetDamage()`.
- Add `$questitemdata->GetDamageShield()`.
- Add `$questitemdata->GetDeity()`.
- Add `$questitemdata->GetDelay()`.
- Add `$questitemdata->GetDOTShielding()`.
- Add `$questitemdata->GetElementalDamageAmount()`.
- Add `$questitemdata->GetElementalDamageType()`.
- Add `$questitemdata->GetEliteMaterial()`.
- Add `$questitemdata->GetEndurance()`.
- Add `$questitemdata->GetEnduranceRegen()`.
- Add `$questitemdata->GetExpendableArrow()`.
- Add `$questitemdata->GetExtraDamageAmount()`.
- Add `$questitemdata->GetExtraDamageSkill()`.
- Add `$questitemdata->GetFR()`.
- Add `$questitemdata->GetFVNoDrop()`.
- Add `$questitemdata->GetFactionAmount1()`.
- Add `$questitemdata->GetFactionAmount2()`.
- Add `$questitemdata->GetFactionAmount3()`.
- Add `$questitemdata->GetFactionAmount4()`.
- Add `$questitemdata->GetFactionModifier1()`.
- Add `$questitemdata->GetFactionModifier2()`.
- Add `$questitemdata->GetFactionModifier3()`.
- Add `$questitemdata->GetFactionModifier4()`.
- Add `$questitemdata->GetFavor()`.
- Add `$questitemdata->GetFilename()`.
- Add `$questitemdata->GetFocusEffect()`.
- Add `$questitemdata->GetFocusName()`.
- Add `$questitemdata->GetFocusLevel()`.
- Add `$questitemdata->GetFocusLevel2()`.
- Add `$questitemdata->GetFocusType()`.
- Add `$questitemdata->GetFulfilment()`.
- Add `$questitemdata->GetGuildFavor()`.
- Add `$questitemdata->GetHP()`.
- Add `$questitemdata->GetHaste()`.
- Add `$questitemdata->GetHealAmount()`.
- Add `$questitemdata->GetHeroicAGI()`.
- Add `$questitemdata->GetHeroicCR()`.
- Add `$questitemdata->GetHeroicCHA()`.
- Add `$questitemdata->GetHeroicCorruption()`.
- Add `$questitemdata->GetHeroicDR()`.
- Add `$questitemdata->GetHeroicDEX()`.
- Add `$questitemdata->GetHeroicFR()`.
- Add `$questitemdata->GetHeroicINT()`.
- Add `$questitemdata->GetHeroicMR()`.
- Add `$questitemdata->GetHeroicPR()`.
- Add `$questitemdata->GetHeroicSTA()`.
- Add `$questitemdata->GetHeroicSTR()`.
- Add `$questitemdata->GetHeroicWIS()`.
- Add `$questitemdata->GetID()`.
- Add `$questitemdata->GetIDFile()`.
- Add `$questitemdata->GetIcon()`.
- Add `$questitemdata->GetItemClass()`.
- Add `$questitemdata->GetItemType()`.
- Add `$questitemdata->GetLDoNPrice()`.
- Add `$questitemdata->GetLDoNSellBackRate()`.
- Add `$questitemdata->GetLDoNSold()`.
- Add `$questitemdata->GetLDoNTheme()`.
- Add `$questitemdata->GetLight()`.
- Add `$questitemdata->GetLore()`.
- Add `$questitemdata->GetLoreFlag()`.
- Add `$questitemdata->GetLoreGroup()`.
- Add `$questitemdata->GetMR()`.
- Add `$questitemdata->GetMagic()`.
- Add `$questitemdata->GetMana()`.
- Add `$questitemdata->GetManaRegen()`.
- Add `$questitemdata->GetMaterial()`.
- Add `$questitemdata->GetMaximumCharges()`.
- Add `$questitemdata->GetMinimumStatus()`.
- Add `$questitemdata->GetName()`.
- Add `$questitemdata->GetNoDrop()`.
- Add `$questitemdata->GetNoPet()`.
- Add `$questitemdata->GetNoRent()`.
- Add `$questitemdata->GetNoTransfer()`.
- Add `$questitemdata->GetPR()`.
- Add `$questitemdata->GetPendingLoreFlag()`.
- Add `$questitemdata->GetPointType()`.
- Add `$questitemdata->GetPotionBelt()`.
- Add `$questitemdata->GetPotionBeltSlots()`.
- Add `$questitemdata->GetPrice()`.
- Add `$questitemdata->GetProcEffect()`.
- Add `$questitemdata->GetProcName()`.
- Add `$questitemdata->GetProcRate()`.
- Add `$questitemdata->GetProcLevel()`.
- Add `$questitemdata->GetProcLevel2()`.
- Add `$questitemdata->GetProcType()`.
- Add `$questitemdata->GetPurity()`.
- Add `$questitemdata->GetQuestItemFlag()`.
- Add `$questitemdata->GetRaces()`.
- Add `$questitemdata->GetRange()`.
- Add `$questitemdata->GetRecLevel()`.
- Add `$questitemdata->GetRecSkill()`.
- Add `$questitemdata->GetRecastDelay()`.
- Add `$questitemdata->GetRecastType()`.
- Add `$questitemdata->GetRegen()`.
- Add `$questitemdata->GetReqLevel()`.
- Add `$questitemdata->GetScriptFileID()`.
- Add `$questitemdata->GetScrollEffect()`.
- Add `$questitemdata->GetScrollName()`.
- Add `$questitemdata->GetScrollLevel()`.
- Add `$questitemdata->GetScrollLevel2()`.
- Add `$questitemdata->GetScrollType()`.
- Add `$questitemdata->GetSellRate()`.
- Add `$questitemdata->GetShielding()`.
- Add `$questitemdata->GetSize()`.
- Add `$questitemdata->GetSkillModifierType()`.
- Add `$questitemdata->GetSkillModifierValue()`.
- Add `$questitemdata->GetSlots()`.
- Add `$questitemdata->GetSpellDamage()`.
- Add `$questitemdata->GetSpellShield()`.
- Add `$questitemdata->GetStackSize()`.
- Add `$questitemdata->GetStackable()`.
- Add `$questitemdata->GetStrikeThrough()`.
- Add `$questitemdata->GetStunResist()`.
- Add `$questitemdata->GetSummonedFlag()`.
- Add `$questitemdata->GetTradeskills()`.
- Add `$questitemdata->GetWeight()`.
- Add `$questitemdata->GetWornName()`.
- Add `$questitemdata->GetWornEffect()`.
- Add `$questitemdata->GetWornLevel()`.
- Add `$questitemdata->GetWornLevel2()`.
- Add `$questitemdata->GetWornType()`.

- Fixed data type of parameters in a handful of methods.

- Allows operators to directly interact with item data without the need for `quest::getitemstat` or DBI or anything of the sort.

* Update perl_questitem.cpp

* Update lua_iteminst.cpp

* Update lua_iteminst.h

* Update lua_iteminst.h
This commit is contained in:
Alex King 2023-07-02 11:26:49 -04:00 committed by GitHub
parent 728ce0c519
commit 251993c61b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1154 additions and 23 deletions

View File

@ -118,6 +118,7 @@ SET(zone_sources
perl_perlpacket.cpp
perl_player_corpse.cpp
perl_questitem.cpp
perl_questitem_data.cpp
perl_raids.cpp
perl_spawn.cpp
perl_spell.cpp

View File

@ -46,6 +46,7 @@ void perl_register_group();
void perl_register_raid();
void perl_register_inventory();
void perl_register_questitem();
void perl_register_questitem_data();
void perl_register_spawn();
void perl_register_spell();
void perl_register_stat_bonuses();
@ -1070,6 +1071,7 @@ void PerlembParser::MapFunctions()
perl_register_raid();
perl_register_inventory();
perl_register_questitem();
perl_register_questitem_data();
perl_register_spawn();
perl_register_spell();
perl_register_stat_bonuses();

View File

@ -475,34 +475,34 @@ uint32 Lua_Item::GetAugType() {
return self->AugType;
}
int Lua_Item::GetAugSlotType(int i) {
int Lua_Item::GetAugSlotType(uint8 slot_id) {
Lua_Safe_Call_Int();
if(i >= 5 || i < 0) {
if (!EQ::ValueWithin(slot_id, EQ::invaug::SOCKET_BEGIN, EQ::invaug::SOCKET_END)) {
return 0;
}
return self->AugSlotType[i];
return self->AugSlotType[slot_id];
}
int Lua_Item::GetAugSlotVisible(int i) {
int Lua_Item::GetAugSlotVisible(uint8 slot_id) {
Lua_Safe_Call_Int();
if(i >= 5 || i < 0) {
if (!EQ::ValueWithin(slot_id, EQ::invaug::SOCKET_BEGIN, EQ::invaug::SOCKET_END)) {
return 0;
}
return self->AugSlotVisible[i];
return self->AugSlotVisible[slot_id];
}
int Lua_Item::GetAugSlotUnk2(int i) {
int Lua_Item::GetAugSlotUnk2(uint8 slot_id) {
Lua_Safe_Call_Int();
if(i >= 5 || i < 0) {
if (!EQ::ValueWithin(slot_id, EQ::invaug::SOCKET_BEGIN, EQ::invaug::SOCKET_END)) {
return 0;
}
return self->AugSlotUnk2[i];
return self->AugSlotUnk2[slot_id];
}
uint32 Lua_Item::GetLDoNTheme() {

View File

@ -121,9 +121,9 @@ public:
int GetFactionAmt4();
const char *GetCharmFile();
uint32 GetAugType();
int GetAugSlotType(int i);
int GetAugSlotVisible(int i);
int GetAugSlotUnk2(int i);
int GetAugSlotType(uint8 slot_id);
int GetAugSlotVisible(uint8 slot_id);
int GetAugSlotUnk2(uint8 slot_id);
uint32 GetLDoNTheme();
uint32 GetLDoNPrice();
uint32 GetLDoNSold();

View File

@ -176,11 +176,21 @@ bool Lua_ItemInst::IsInstNoDrop() {
return self->IsAttuned();
}
bool Lua_ItemInst::IsAttuned() {
Lua_Safe_Call_Bool();
return self->IsAttuned();
}
void Lua_ItemInst::SetInstNoDrop(bool flag) {
Lua_Safe_Call_Void();
return self->SetAttuned(flag);
}
void Lua_ItemInst::SetAttuned(bool flag) {
Lua_Safe_Call_Void();
return self->SetAttuned(flag);
}
std::string Lua_ItemInst::GetCustomDataString() {
Lua_Safe_Call_String();
return self->GetCustomDataString();
@ -342,7 +352,7 @@ luabind::scope lua_register_iteminst() {
.def("GetTotalItemCount", (uint8(Lua_ItemInst::*)(void))&Lua_ItemInst::GetTotalItemCount)
.def("GetUnscaledItem", (Lua_ItemInst(Lua_ItemInst::*)(int))&Lua_ItemInst::GetUnscaledItem)
.def("IsAmmo", (bool(Lua_ItemInst::*)(void))&Lua_ItemInst::IsAmmo)
.def("IsAttuned", (bool(Lua_ItemInst::*)(void))&Lua_ItemInst::IsInstNoDrop)
.def("IsAttuned", (bool(Lua_ItemInst::*)(void))&Lua_ItemInst::IsAttuned)
.def("IsAugmentable", (bool(Lua_ItemInst::*)(void))&Lua_ItemInst::IsAugmentable)
.def("IsAugmented", (bool(Lua_ItemInst::*)(void))&Lua_ItemInst::IsAugmented)
.def("IsEquipable", (bool(Lua_ItemInst::*)(int16))&Lua_ItemInst::IsEquipable)
@ -355,7 +365,7 @@ luabind::scope lua_register_iteminst() {
.def("ItemSay", (void(Lua_ItemInst::*)(const char*))&Lua_ItemInst::ItemSay)
.def("ItemSay", (void(Lua_ItemInst::*)(const char*, uint8))&Lua_ItemInst::ItemSay)
.def("RemoveTaskDeliveredItems", &Lua_ItemInst::RemoveTaskDeliveredItems)
.def("SetAttuned", (void(Lua_ItemInst::*)(bool))&Lua_ItemInst::SetInstNoDrop)
.def("SetAttuned", (void(Lua_ItemInst::*)(bool))&Lua_ItemInst::SetAttuned)
.def("SetCharges", (void(Lua_ItemInst::*)(int))&Lua_ItemInst::SetCharges)
.def("SetColor", (void(Lua_ItemInst::*)(uint32))&Lua_ItemInst::SetColor)
.def("SetCustomData", (void(Lua_ItemInst::*)(const std::string&,bool))&Lua_ItemInst::SetCustomData)

View File

@ -61,7 +61,9 @@ public:
void SetColor(uint32 color);
uint32 GetColor();
bool IsInstNoDrop();
bool IsAttuned();
void SetInstNoDrop(bool flag);
void SetAttuned(bool flag);
std::string GetCustomDataString();
void SetCustomData(const std::string &identifier, const std::string &value);
void SetCustomData(const std::string &identifier, int value);
@ -85,7 +87,6 @@ public:
int GetTaskDeliveredCount();
int RemoveTaskDeliveredItems();
std::string GetName();
bool IsAttuned();
void ItemSay(const char* text);
void ItemSay(const char* text, uint8 language_id);

View File

@ -39,6 +39,11 @@ bool Perl_QuestItem_IsAttuned(EQ::ItemInstance* self) // @categories Inventory a
return self->IsAttuned();
}
bool Perl_QuestItem_IsInstanceNoDrop(EQ::ItemInstance* self) // @categories Inventory and Items
{
return self->IsAttuned();
}
int Perl_QuestItem_GetCharges(EQ::ItemInstance* self) // @categories Inventory and Items
{
return self->GetCharges();
@ -83,7 +88,6 @@ int Perl_QuestItem_RemoveTaskDeliveredItems(EQ::ItemInstance* self)
{
return self->RemoveTaskDeliveredItems();
}
void Perl_QuestItem_AddEXP(EQ::ItemInstance* self, uint32 exp)
{
self->AddExp(exp);
@ -209,11 +213,36 @@ void Perl_QuestItem_SetAttuned(EQ::ItemInstance* self, bool is_attuned)
self->SetAttuned(is_attuned);
}
void Perl_QuestItem_SetInstanceNoDrop(EQ::ItemInstance* self, bool is_attuned)
{
self->SetAttuned(is_attuned);
}
void Perl_QuestItem_SetColor(EQ::ItemInstance* self, uint32 color)
{
self->SetColor(color);
}
void Perl_QuestItem_SetCustomData(EQ::ItemInstance* self, std::string identifier, bool value)
{
self->SetCustomData(identifier, value);
}
void Perl_QuestItem_SetCustomData(EQ::ItemInstance* self, std::string identifier, float value)
{
self->SetCustomData(identifier, value);
}
void Perl_QuestItem_SetCustomData(EQ::ItemInstance* self, std::string identifier, int value)
{
self->SetCustomData(identifier, value);
}
void Perl_QuestItem_SetCustomData(EQ::ItemInstance* self, std::string identifier, std::string value)
{
self->SetCustomData(identifier, value);
}
void Perl_QuestItem_SetEXP(EQ::ItemInstance* self, uint32 exp)
{
self->SetExp(exp);
@ -239,6 +268,14 @@ void Perl_QuestItem_StopTimer(EQ::ItemInstance* self, std::string timer_name)
self->StopTimer(timer_name);
}
EQ::ItemData* Perl_QuestItem_GetItem(EQ::ItemInstance* self) {
return const_cast<EQ::ItemData*>(self->GetItem());
}
EQ::ItemData* Perl_QuestItem_GetUnscaledItem(EQ::ItemInstance* self) {
return const_cast<EQ::ItemData*>(self->GetUnscaledItem());
}
void perl_register_questitem()
{
perl::interpreter perl(PERL_GET_THX);
@ -259,7 +296,8 @@ void perl_register_questitem()
package.add("GetCustomDataString", &Perl_QuestItem_GetCustomDataString);
package.add("GetEXP", &Perl_QuestItem_GetEXP);
package.add("GetID", &Perl_QuestItem_GetID);
package.add("GetItem", &Perl_QuestItem_GetItem);
package.add("GetItem", (EQ::ItemData*(*)(EQ::ItemInstance*))&Perl_QuestItem_GetItem);
package.add("GetItem", (EQ::ItemInstance*(*)(EQ::ItemInstance*, uint8))&Perl_QuestItem_GetItem);
package.add("GetItemID", &Perl_QuestItem_GetItemID);
package.add("GetItemScriptID", &Perl_QuestItem_GetItemScriptID);
package.add("GetKillsNeeded", &Perl_QuestItem_GetKillsNeeded);
@ -268,6 +306,7 @@ void perl_register_questitem()
package.add("GetPrice", &Perl_QuestItem_GetPrice);
package.add("GetTaskDeliveredCount", &Perl_QuestItem_GetTaskDeliveredCount);
package.add("GetTotalItemCount", &Perl_QuestItem_GetTotalItemCount);
package.add("GetUnscaledItem", &Perl_QuestItem_GetUnscaledItem);
package.add("IsAmmo", &Perl_QuestItem_IsAmmo);
package.add("IsAttuned", &Perl_QuestItem_IsAttuned);
package.add("IsAugmentable", &Perl_QuestItem_IsAugmentable);
@ -275,7 +314,7 @@ void perl_register_questitem()
package.add("IsEquipable", (bool(*)(EQ::ItemInstance*, int16))&Perl_QuestItem_IsEquipable);
package.add("IsEquipable", (bool(*)(EQ::ItemInstance*, uint16, uint16))&Perl_QuestItem_IsEquipable);
package.add("IsExpendable", &Perl_QuestItem_IsExpendable);
package.add("IsInstanceNoDrop", &Perl_QuestItem_IsAttuned);
package.add("IsInstanceNoDrop", &Perl_QuestItem_IsInstanceNoDrop);
package.add("IsStackable", &Perl_QuestItem_IsStackable);
package.add("IsType", &Perl_QuestItem_IsType);
package.add("IsWeapon", &Perl_QuestItem_IsWeapon);
@ -285,12 +324,12 @@ void perl_register_questitem()
package.add("SetAttuned", &Perl_QuestItem_SetAttuned);
package.add("SetCharges", &Perl_QuestItem_SetCharges);
package.add("SetColor", &Perl_QuestItem_SetColor);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, bool))&Perl_QuestItem_SetColor);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, float))&Perl_QuestItem_SetColor);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, int))&Perl_QuestItem_SetColor);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, std::string))&Perl_QuestItem_SetColor);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, bool))&Perl_QuestItem_SetCustomData);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, float))&Perl_QuestItem_SetCustomData);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, int))&Perl_QuestItem_SetCustomData);
package.add("SetCustomData", (void(*)(EQ::ItemInstance*, std::string, std::string))&Perl_QuestItem_SetCustomData);
package.add("SetEXP", &Perl_QuestItem_SetEXP);
package.add("SetInstanceNoDrop", &Perl_QuestItem_SetAttuned);
package.add("SetInstanceNoDrop", &Perl_QuestItem_SetInstanceNoDrop);
package.add("SetPrice", &Perl_QuestItem_SetPrice);
package.add("SetScale", &Perl_QuestItem_SetScale);
package.add("SetScaling", &Perl_QuestItem_SetScaling);

1078
zone/perl_questitem_data.cpp Normal file

File diff suppressed because it is too large Load Diff