diff --git a/zone/bot.h b/zone/bot.h index 3992561bc..48d60b246 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -588,6 +588,7 @@ public: uint32 augment_six = 0 ); uint32 CountBotItem(uint32 item_id); + uint32 GetBotItemBySlot(uint16 slot_id); bool HasBotItem(uint32 item_id); void RemoveBotItem(uint32 item_id); uint32 GetTotalPlayTime(); @@ -733,7 +734,6 @@ private: // Private "Inventory" Methods void GetBotItems(EQ::InventoryProfile &inv, std::string* error_message); void BotAddEquipItem(uint16 slot_id, uint32 item_id); - uint32 GetBotItemBySlot(uint16 slot_id); // Private "Pet" Methods bool LoadPet(); // Load and spawn bot pet if there is one diff --git a/zone/lua_bot.cpp b/zone/lua_bot.cpp index 1e1ab1e89..3c1a3666d 100644 --- a/zone/lua_bot.cpp +++ b/zone/lua_bot.cpp @@ -6,6 +6,7 @@ #include "bot.h" #include "lua_bot.h" +#include "lua_iteminst.h" #include "lua_mob.h" void Lua_Bot::AddBotItem(uint16 slot_id, uint32 item_id) { @@ -73,6 +74,16 @@ void Lua_Bot::RemoveBotItem(uint32 item_id) { self->RemoveBotItem(item_id); } +Lua_ItemInst Lua_Bot::GetBotItem(uint16 slot_id) { + Lua_Safe_Call_Class(Lua_ItemInst); + return self->GetBotItem(slot_id); +} + +uint32 Lua_Bot::GetBotItemIDBySlot(uint16 slot_id) { + Lua_Safe_Call_Int(); + return self->GetBotItemBySlot(slot_id); +} + luabind::scope lua_register_bot() { return luabind::class_("Bot") .def(luabind::constructor<>()) @@ -86,6 +97,8 @@ luabind::scope lua_register_bot() { .def("AddBotItem", (void(Lua_Bot::*)(uint16,uint32,int16,bool,uint32,uint32,uint32,uint32,uint32))&Lua_Bot::AddBotItem) .def("AddBotItem", (void(Lua_Bot::*)(uint16,uint32,int16,bool,uint32,uint32,uint32,uint32,uint32,uint32))&Lua_Bot::AddBotItem) .def("CountBotItem", (uint32(Lua_Bot::*)(uint32))&Lua_Bot::CountBotItem) + .def("GetBotItem", (Lua_ItemInst(Lua_Bot::*)(uint16))&Lua_Bot::GetBotItem) + .def("GetBotItemIDBySlot", (uint32(Lua_Bot::*)(uint16))&Lua_Bot::GetBotItemIDBySlot) .def("GetOwner", (Lua_Mob(Lua_Bot::*)(void))&Lua_Bot::GetOwner) .def("HasBotItem", (bool(Lua_Bot::*)(uint32))&Lua_Bot::HasBotItem) .def("RemoveBotItem", (void(Lua_Bot::*)(uint32))&Lua_Bot::RemoveBotItem); diff --git a/zone/lua_bot.h b/zone/lua_bot.h index 7123e5270..a80062526 100644 --- a/zone/lua_bot.h +++ b/zone/lua_bot.h @@ -37,6 +37,8 @@ public: void AddBotItem(uint16 slot_id, uint32 item_id, int16 charges, bool attuned, uint32 augment_one, uint32 augment_two, uint32 augment_three, uint32 augment_four, uint32 augment_five); void AddBotItem(uint16 slot_id, uint32 item_id, int16 charges, bool attuned, uint32 augment_one, uint32 augment_two, uint32 augment_three, uint32 augment_four, uint32 augment_five, uint32 augment_six); uint32 CountBotItem(uint32 item_id); + Lua_ItemInst GetBotItem(uint16 slot_id); + uint32 GetBotItemIDBySlot(uint16 slot_id); Lua_Mob GetOwner(); bool HasBotItem(uint32 item_id); void RemoveBotItem(uint32 item_id); diff --git a/zone/perl_bot.cpp b/zone/perl_bot.cpp index f278514be..1c67fddf8 100644 --- a/zone/perl_bot.cpp +++ b/zone/perl_bot.cpp @@ -71,6 +71,16 @@ void Perl_Bot_RemoveBotItem(Bot* self, uint32 item_id) return self->RemoveBotItem(item_id); } +EQ::ItemInstance* Perl_Bot_GetBotItem(Bot* self, uint16 slot_id) +{ + return self->GetBotItem(slot_id); +} + +uint32 Perl_Bot_GetBotItemIDBySlot(Bot* self, uint16 slot_id) +{ + return self->GetBotItemBySlot(slot_id); +} + void perl_register_bot() { perl::interpreter state(PERL_GET_THX); @@ -87,6 +97,8 @@ void perl_register_bot() package.add("AddBotItem", (void(*)(Bot*, uint16, uint32, uint16, bool, uint32, uint32, uint32, uint32, uint32))&Perl_Bot_AddBotItem); package.add("AddBotItem", (void(*)(Bot*, uint16, uint32, uint16, bool, uint32, uint32, uint32, uint32, uint32, uint32))&Perl_Bot_AddBotItem); package.add("CountBotItem", &Perl_Bot_CountBotItem); + package.add("GetBotItem", &Perl_Bot_GetBotItem); + package.add("GetBotItemIDBySlot", &Perl_Bot_GetBotItemIDBySlot); package.add("GetOwner", &Perl_Bot_GetOwner); package.add("HasBotItem", &Perl_Bot_HasBotItem); package.add("RemoveBotItem", &Perl_Bot_RemoveBotItem);