eqemu-server/zone/perl_questitem.cpp
Alex King 251993c61b
[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
2023-07-02 11:26:49 -04:00

341 lines
10 KiB
C++

#include "../common/features.h"
#include "../common/languages.h"
#include "client.h"
#ifdef EMBPERL_XS_CLASSES
#include "../common/global_define.h"
#include "embperl.h"
std::string Perl_QuestItem_GetName(EQ::ItemInstance* self) // @categories Inventory and Items
{
return self->GetItem()->Name;
}
void Perl_QuestItem_SetScale(EQ::ItemInstance* self, float scale_multiplier) // @categories Inventory and Items
{
if (self->IsScaling()) {
self->SetExp((int) (scale_multiplier * 10000 + .5));
}
}
void Perl_QuestItem_ItemSay(EQ::ItemInstance* self, const char* text) // @categories Inventory and Items
{
quest_manager.GetInitiator()->ChannelMessageSend(self->GetItem()->Name, 0, ChatChannel_Say, LANG_COMMON_TONGUE, MAX_LANGUAGE_SKILL, text);
}
void Perl_QuestItem_ItemSay(EQ::ItemInstance* self, const char* text, uint8 language_id) // @categories Inventory and Items
{
quest_manager.GetInitiator()->ChannelMessageSend(self->GetItem()->Name, 0, ChatChannel_Say, language_id, MAX_LANGUAGE_SKILL, text);
}
bool Perl_QuestItem_IsType(EQ::ItemInstance* self, int type) // @categories Inventory and Items
{
return self->IsType(static_cast<EQ::item::ItemClass>(type));
}
bool Perl_QuestItem_IsAttuned(EQ::ItemInstance* self) // @categories Inventory and Items
{
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();
}
EQ::ItemInstance* Perl_QuestItem_GetAugment(EQ::ItemInstance* self, uint8 slot_id) // @categories Inventory and Items
{
return self->GetAugment(slot_id);
}
uint32_t Perl_QuestItem_GetID(EQ::ItemInstance* self) // @categories Inventory and Items
{
return self->GetItem()->ID;
}
bool Perl_QuestItem_ContainsAugmentByID(EQ::ItemInstance* self, uint32_t item_id) // @categories Inventory and Items
{
return self->ContainsAugmentByID(item_id);
}
int Perl_QuestItem_CountAugmentByID(EQ::ItemInstance* self, uint32_t item_id) // @categories Inventory and Items
{
return self->CountAugmentByID(item_id);
}
bool Perl_QuestItem_IsStackable(EQ::ItemInstance* self)
{
return self->IsStackable();
}
void Perl_QuestItem_SetCharges(EQ::ItemInstance* self, int16_t charges)
{
self->SetCharges(charges);
}
int Perl_QuestItem_GetTaskDeliveredCount(EQ::ItemInstance* self)
{
return self->GetTaskDeliveredCount();
}
int Perl_QuestItem_RemoveTaskDeliveredItems(EQ::ItemInstance* self)
{
return self->RemoveTaskDeliveredItems();
}
void Perl_QuestItem_AddEXP(EQ::ItemInstance* self, uint32 exp)
{
self->AddExp(exp);
}
void Perl_QuestItem_ClearTimers(EQ::ItemInstance* self)
{
self->ClearTimers();
}
EQ::ItemInstance* Perl_QuestItem_Clone(EQ::ItemInstance* self)
{
return self->Clone();
}
void Perl_QuestItem_DeleteCustomData(EQ::ItemInstance* self, std::string identifier)
{
self->DeleteCustomData(identifier);
}
uint32 Perl_QuestItem_GetAugmentItemID(EQ::ItemInstance* self, uint8 slot_id)
{
return self->GetAugmentItemID(slot_id);
}
int Perl_QuestItem_GetAugmentType(EQ::ItemInstance* self)
{
return self->GetAugmentType();
}
uint32 Perl_QuestItem_GetColor(EQ::ItemInstance* self)
{
return self->GetColor();
}
std::string Perl_QuestItem_GetCustomData(EQ::ItemInstance* self, std::string identifier)
{
return self->GetCustomData(identifier);
}
std::string Perl_QuestItem_GetCustomDataString(EQ::ItemInstance* self)
{
return self->GetCustomDataString();
}
uint32 Perl_QuestItem_GetEXP(EQ::ItemInstance* self)
{
return self->GetExp();
}
EQ::ItemInstance* Perl_QuestItem_GetItem(EQ::ItemInstance* self, uint8 slot_id)
{
return self->GetItem(slot_id);
}
uint32 Perl_QuestItem_GetItemID(EQ::ItemInstance* self, uint8 slot_id)
{
return self->GetItemID(slot_id);
}
uint32 Perl_QuestItem_GetItemScriptID(EQ::ItemInstance* self)
{
return self->GetItemScriptID();
}
uint32 Perl_QuestItem_GetKillsNeeded(EQ::ItemInstance* self, uint8 current_level)
{
return self->GetKillsNeeded(current_level);
}
int8 Perl_QuestItem_GetMaxEvolveLevel(EQ::ItemInstance* self)
{
return self->GetMaxEvolveLvl();
}
uint32 Perl_QuestItem_GetPrice(EQ::ItemInstance* self)
{
return self->GetPrice();
}
uint8 Perl_QuestItem_GetTotalItemCount(EQ::ItemInstance* self)
{
return self->GetTotalItemCount();
}
bool Perl_QuestItem_IsAmmo(EQ::ItemInstance* self)
{
return self->IsAmmo();
}
bool Perl_QuestItem_IsAugmentable(EQ::ItemInstance* self)
{
return self->IsAugmentable();
}
bool Perl_QuestItem_IsAugmented(EQ::ItemInstance* self)
{
return self->IsAugmented();
}
bool Perl_QuestItem_IsEquipable(EQ::ItemInstance* self, int16 slot_id)
{
return self->IsEquipable(slot_id);
}
bool Perl_QuestItem_IsEquipable(EQ::ItemInstance* self, uint16 race_bitmask, uint16 class_bitmask)
{
return self->IsEquipable(race_bitmask, class_bitmask);
}
bool Perl_QuestItem_IsExpendable(EQ::ItemInstance* self)
{
return self->IsExpendable();
}
bool Perl_QuestItem_IsWeapon(EQ::ItemInstance* self)
{
return self->IsWeapon();
}
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);
}
void Perl_QuestItem_SetPrice(EQ::ItemInstance* self, uint32 price)
{
self->SetPrice(price);
}
void Perl_QuestItem_SetScaling(EQ::ItemInstance* self, bool is_scaling)
{
self->SetScaling(is_scaling);
}
void Perl_QuestItem_SetTimer(EQ::ItemInstance* self, std::string timer_name, uint32 timer)
{
self->SetTimer(timer_name, timer);
}
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);
auto package = perl.new_class<EQ::ItemInstance>("QuestItem");
package.add("AddEXP", &Perl_QuestItem_AddEXP);
package.add("ClearTimers", &Perl_QuestItem_ClearTimers);
package.add("Clone", &Perl_QuestItem_Clone);
package.add("ContainsAugmentByID", &Perl_QuestItem_ContainsAugmentByID);
package.add("CountAugmentByID", &Perl_QuestItem_CountAugmentByID);
package.add("DeleteCustomData", &Perl_QuestItem_DeleteCustomData);
package.add("GetAugment", &Perl_QuestItem_GetAugment);
package.add("GetAugmentItemID", &Perl_QuestItem_GetAugmentItemID);
package.add("GetAugmentType", &Perl_QuestItem_GetAugmentType);
package.add("GetCharges", &Perl_QuestItem_GetCharges);
package.add("GetColor", &Perl_QuestItem_GetColor);
package.add("GetCustomData", &Perl_QuestItem_GetCustomData);
package.add("GetCustomDataString", &Perl_QuestItem_GetCustomDataString);
package.add("GetEXP", &Perl_QuestItem_GetEXP);
package.add("GetID", &Perl_QuestItem_GetID);
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);
package.add("GetMaxEvolveLevel", &Perl_QuestItem_GetMaxEvolveLevel);
package.add("GetName", &Perl_QuestItem_GetName);
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);
package.add("IsAugmented", &Perl_QuestItem_IsAugmented);
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_IsInstanceNoDrop);
package.add("IsStackable", &Perl_QuestItem_IsStackable);
package.add("IsType", &Perl_QuestItem_IsType);
package.add("IsWeapon", &Perl_QuestItem_IsWeapon);
package.add("ItemSay", (void(*)(EQ::ItemInstance*, const char*))&Perl_QuestItem_ItemSay);
package.add("ItemSay", (void(*)(EQ::ItemInstance*, const char*, uint8))&Perl_QuestItem_ItemSay);
package.add("RemoveTaskDeliveredItems", &Perl_QuestItem_RemoveTaskDeliveredItems);
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_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_SetInstanceNoDrop);
package.add("SetPrice", &Perl_QuestItem_SetPrice);
package.add("SetScale", &Perl_QuestItem_SetScale);
package.add("SetScaling", &Perl_QuestItem_SetScaling);
package.add("SetTimer", &Perl_QuestItem_SetTimer);
package.add("StopTimer", &Perl_QuestItem_StopTimer);
}
#endif //EMBPERL_XS_CLASSES