Add quest::uncompletetask to quest API

This commit is contained in:
Barathos 2025-06-13 14:31:35 -07:00
parent a0ff9d67a1
commit 66dda2f107
5 changed files with 43 additions and 0 deletions

15
CMakeSettings.json Normal file
View File

@ -0,0 +1,15 @@
{
"configurations": [
{
"name": "x64-Debug",
"generator": "Visual Studio 17 2022",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
}
]
}

View File

@ -1271,6 +1271,11 @@ void Perl__failtask(int task_id)
quest_manager.failtask(task_id);
}
void Perl__uncompletetask(int task_id)
{
quest_manager.uncompletetask(task_id);
}
int Perl__tasktimeleft(int task_id)
{
return quest_manager.tasktimeleft(task_id);
@ -6628,6 +6633,7 @@ void perl_register_quest()
package.add("faction", (void(*)(int, int, int))&Perl__faction);
package.add("factionvalue", &Perl__FactionValue);
package.add("failtask", &Perl__failtask);
package.add("uncompletetask", &Perl__uncompletetask);
package.add("firsttaskinset", &Perl__firsttaskinset);
package.add("follow", (void(*)(int))&Perl__follow);
package.add("follow", (void(*)(int, int))&Perl__follow);

View File

@ -722,6 +722,10 @@ void lua_fail_task(int task_id) {
quest_manager.failtask(task_id);
}
void lua_uncomplete_task(int task_id) {
quest_manager.uncompletetask(task_id);
}
int lua_task_time_left(int task_id) {
return quest_manager.tasktimeleft(task_id);
}
@ -5970,6 +5974,7 @@ luabind::scope lua_register_general() {
luabind::def("reset_task_activity", &lua_reset_task_activity),
luabind::def("assign_task", &lua_assign_task),
luabind::def("fail_task", &lua_fail_task),
luabind::def("uncomplete_task", &lua_uncomplete_task),
luabind::def("task_time_left", &lua_task_time_left),
luabind::def("is_task_completed", &lua_is_task_completed),
luabind::def("enabled_task_count", &lua_enabled_task_count),

View File

@ -40,6 +40,7 @@
#include "dialogue_window.h"
#include "../common/repositories/account_repository.h"
#include "../common/repositories/completed_tasks_repository.h"
#include "../common/repositories/tradeskill_recipe_repository.h"
#include "../common/repositories/instance_list_repository.h"
#include "../common/repositories/grid_entries_repository.h"
@ -2958,6 +2959,21 @@ void QuestManager::failtask(int taskid) {
initiator->FailTask(taskid);
}
void QuestManager::uncompletetask(int task_id) {
QuestManagerCurrentQuestVars();
if (RuleB(TaskSystem, EnableTaskSystem) && initiator) {
CompletedTasksRepository::DeleteWhere(
database,
fmt::format(
"charid = {} AND taskid = {}",
initiator->CharacterID(),
task_id
)
);
}
}
int QuestManager::tasktimeleft(int taskid) {
QuestManagerCurrentQuestVars();

View File

@ -224,6 +224,7 @@ public:
void resettaskactivity(int task, int activity);
void assigntask(int taskid, bool enforce_level_requirement = false);
void failtask(int taskid);
void uncompletetask(int task_id);
int tasktimeleft(int taskid);
bool istaskcompleted(int task_id);
bool aretaskscompleted(const std::vector<int>& task_ids);