[Quest API] Add AreTasksCompleted() to Perl/Lua. (#4456)

* [Quest API] Add AreTasksCompleted() to Perl/Lua.

* Bool
This commit is contained in:
Alex King
2024-08-22 20:21:14 -04:00
committed by GitHub
parent b7f8d0f179
commit e2b545991a
10 changed files with 144 additions and 24 deletions
+36 -2
View File
@@ -1409,9 +1409,9 @@ void Lua_Client::FailTask(int task) {
self->FailTask(task);
}
bool Lua_Client::IsTaskCompleted(int task) {
bool Lua_Client::IsTaskCompleted(int task_id) {
Lua_Safe_Call_Bool();
return self->IsTaskCompleted(task) != 0;
return self->IsTaskCompleted(task_id);
}
bool Lua_Client::IsTaskActive(int task) {
@@ -3379,6 +3379,39 @@ uint8 Lua_Client::GetSkillTrainLevel(int skill_id)
return self->GetSkillTrainLevel(static_cast<EQ::skills::SkillType>(skill_id), self->GetClass());
}
bool Lua_Client::AreTasksCompleted(luabind::object task_ids)
{
Lua_Safe_Call_Int();
if (luabind::type(task_ids) != LUA_TTABLE) {
return false;
}
std::vector<int> v;
int index = 1;
while (luabind::type(task_ids[index]) != LUA_TNIL) {
auto current_id = task_ids[index];
int task_id = 0;
if (luabind::type(current_id) != LUA_TNIL) {
try {
task_id = luabind::object_cast<int>(current_id);
} catch(luabind::cast_failed &) {
}
} else {
break;
}
v.push_back(task_id);
++index;
}
if (v.empty()) {
return false;
}
return self->AreTasksCompleted(v);
}
luabind::scope lua_register_client() {
return luabind::class_<Lua_Client, Lua_Mob>("Client")
.def(luabind::constructor<>())
@@ -3425,6 +3458,7 @@ luabind::scope lua_register_client() {
.def("ApplySpellRaid", (void(Lua_Client::*)(int,int,int,bool))&Lua_Client::ApplySpellRaid)
.def("ApplySpellRaid", (void(Lua_Client::*)(int,int,int,bool,bool))&Lua_Client::ApplySpellRaid)
.def("ApplySpellRaid", (void(Lua_Client::*)(int,int,int,bool,bool,bool))&Lua_Client::ApplySpellRaid)
.def("AreTasksCompleted", (bool(Lua_Client::*)(luabind::object))&Lua_Client::AreTasksCompleted)
.def("AssignTask", (void(Lua_Client::*)(int))&Lua_Client::AssignTask)
.def("AssignTask", (void(Lua_Client::*)(int,int))&Lua_Client::AssignTask)
.def("AssignTask", (void(Lua_Client::*)(int,int,bool))&Lua_Client::AssignTask)