Skip to content

Commit a74d833

Browse files
authored
Merge pull request #106 from OSRS-Taskman/related_tasks_assignment
get first instance of task when generating
2 parents 8432bbf + e21ea94 commit a74d833

1 file changed

Lines changed: 28 additions & 14 deletions

File tree

task_database.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,13 @@ def get_incomplete_tasks(tier: str) -> list[TaskData]:
442442
completed_task_ids = list(map(lambda x: x.id, user.get_task_list(tier).completed_tasks))
443443
return list(filter(lambda x: x.id not in completed_task_ids, all_tasks))
444444

445+
def get_first_task_instance(generated_task: TaskData, incomplete_tasks: list[TaskData]) -> TaskData:
446+
if generated_task.verification:
447+
first_task_instance = min([task for task in incomplete_tasks if task.name == generated_task.name],
448+
key=lambda task: getattr(task.verification, "count", 0))
449+
return first_task_instance
450+
return generated_task
451+
445452
tasks_easy = get_incomplete_tasks('easy')
446453
tasks_medium = get_incomplete_tasks('medium')
447454
tasks_hard = get_incomplete_tasks('hard')
@@ -450,27 +457,34 @@ def get_incomplete_tasks(tier: str) -> list[TaskData]:
450457

451458
if len(tasks_easy) != 0:
452459
generated_task = random.choice(tasks_easy)
453-
__set_current_task(username, 'easyTasks', generated_task.id, True)
454-
return generated_task
460+
first_task_instance = get_first_task_instance(generated_task, tasks_easy)
461+
__set_current_task(username, 'easyTasks', first_task_instance.id, True)
462+
return first_task_instance
463+
455464
elif len(tasks_medium) != 0:
456465
generated_task = random.choice(tasks_medium)
457-
__set_current_task(username, 'mediumTasks', generated_task.id, True)
458-
return generated_task
466+
first_task_instance = get_first_task_instance(generated_task, tasks_medium)
467+
__set_current_task(username, 'mediumTasks', first_task_instance.id, True)
468+
return first_task_instance
469+
459470
elif len(tasks_hard) != 0:
460471
generated_task = random.choice(tasks_hard)
461-
__set_current_task(username, 'hardTasks', generated_task.id, True)
462-
return generated_task
472+
first_task_instance = get_first_task_instance(generated_task, tasks_hard)
473+
__set_current_task(username, 'hardTasks', first_task_instance.id, True)
474+
return first_task_instance
475+
463476
elif len(tasks_elite) != 0:
464477
generated_task = random.choice(tasks_elite)
465-
__set_current_task(username, 'eliteTasks', generated_task.id, True)
466-
return generated_task
478+
first_task_instance = get_first_task_instance(generated_task, tasks_elite)
479+
__set_current_task(username, 'eliteTasks', first_task_instance.id, True)
480+
return first_task_instance
481+
467482
elif len(tasks_master) != 0:
468-
if tasks_master[0].id == "6b09384d-c06b-44ac-8a07-b7038cd30710":
469-
generated_task = tasks_master[0]
470-
else:
471-
generated_task = random.choice(tasks_master)
472-
__set_current_task(username, 'masterTasks', generated_task.id, True)
473-
return generated_task
483+
generated_task = random.choice(tasks_master)
484+
first_task_instance = get_first_task_instance(generate_task, tasks_master)
485+
__set_current_task(username, 'masterTasks', first_task_instance.id, True)
486+
return first_task_instance
487+
474488
return None
475489

476490
# If user has just completed a task of the given tier and the progress is 100, then they've just completed the last task

0 commit comments

Comments
 (0)