[Quest API] Add DoesAugmentFit() to Perl/Lua. (#2688)

# Perl
- Add `quest::does_augment_fit(item, augment_id)`.

# Lua
- Add `eq.does_augment_fit(item, augment_id)`.

# Notes
- Returns the augment slot index where the augment fits within the item instance provided, returns `-1` if it doesn't fit or has no open slot to fit in.
This commit is contained in:
Alex King
2023-01-01 12:20:07 -05:00
committed by GitHub
parent 1531650b3a
commit 0b8b363c13
5 changed files with 49 additions and 10 deletions
+6
View File
@@ -3980,6 +3980,11 @@ bool Perl__do_augment_slots_match(uint32 item_one, uint32 item_two)
return quest_manager.DoAugmentSlotsMatch(item_one, item_two);
}
int8 Perl__does_augment_fit(EQ::ItemInstance* inst, uint32 augment_id)
{
return quest_manager.DoesAugmentFit(inst, augment_id);
}
void perl_register_quest()
{
perl::interpreter perl(PERL_GET_THX);
@@ -4327,6 +4332,7 @@ void perl_register_quest()
package.add("doanim", (void(*)(int, int, bool))&Perl__doanim);
package.add("doanim", (void(*)(int, int, bool, int))&Perl__doanim);
package.add("do_augment_slots_match", &Perl__do_augment_slots_match);
package.add("does_augment_fit", &Perl__does_augment_fit);
package.add("echo", &Perl__echo);
package.add("emote", &Perl__emote);
package.add("enable_proximity_say", &Perl__enable_proximity_say);
+6
View File
@@ -3691,6 +3691,11 @@ bool lua_do_augment_slots_match(uint32 item_one, uint32 item_two)
return quest_manager.DoAugmentSlotsMatch(item_one, item_two);
}
int8 lua_does_augment_fit(EQ::ItemInstance* inst, uint32 augment_id)
{
return quest_manager.DoesAugmentFit(inst, augment_id);
}
#define LuaCreateNPCParse(name, c_type, default_value) do { \
cur = table[#name]; \
if(luabind::type(cur) != LUA_TNIL) { \
@@ -4207,6 +4212,7 @@ luabind::scope lua_register_general() {
luabind::def("do_anim", (void(*)(int,int,bool))&lua_do_anim),
luabind::def("do_anim", (void(*)(int,int,bool,int))&lua_do_anim),
luabind::def("do_augment_slots_match", &lua_do_augment_slots_match),
luabind::def("does_augment_fit", &lua_does_augment_fit),
/*
Cross Zone
*/
+16 -1
View File
@@ -3947,7 +3947,8 @@ void QuestManager::marquee(uint32 type, uint32 priority, uint32 fade_in, uint32
initiator->SendMarqueeMessage(type, priority, fade_in, fade_out, duration, message);
}
bool QuestManager::DoAugmentSlotsMatch(uint32 item_one, uint32 item_two) {
bool QuestManager::DoAugmentSlotsMatch(uint32 item_one, uint32 item_two)
{
const auto* inst_one = database.GetItem(item_one);
if (!inst_one) {
return false;
@@ -3966,3 +3967,17 @@ bool QuestManager::DoAugmentSlotsMatch(uint32 item_one, uint32 item_two) {
return true;
}
int8 QuestManager::DoesAugmentFit(EQ::ItemInstance* inst, uint32 augment_id)
{
if (!inst) {
return INVALID_INDEX;
}
const auto* aug_inst = database.GetItem(augment_id);
if (!aug_inst) {
return INVALID_INDEX;
}
return inst->AvailableAugmentSlot(aug_inst->AugType);
}
+1
View File
@@ -346,6 +346,7 @@ public:
std::string GetRecipeName(uint32 recipe_id);
bool HasRecipeLearned(uint32 recipe_id);
bool DoAugmentSlotsMatch(uint32 item_one, uint32 item_two);
int8 DoesAugmentFit(EQ::ItemInstance* inst, uint32 augment_id);
#ifdef BOTS
Bot *GetBot() const;