mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
Update task_client_state.cpp
This commit is contained in:
parent
f429df39a9
commit
01f69bcc51
@ -223,7 +223,7 @@ void ClientTaskState::DisableTask(int character_id, int task_count, int *task_li
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
LogTasks(
|
LogTasks(
|
||||||
"[DisableTask] DisableTask called for characterID: [{}] ... but, no tasks exist",
|
"[DisableTask] DisableTask called for character_id [{}] ... but, no tasks exist",
|
||||||
character_id
|
character_id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -359,8 +359,8 @@ bool ClientTaskState::UnlockActivities(int character_id, ClientTaskInformation &
|
|||||||
{
|
{
|
||||||
bool all_activities_complete = true;
|
bool all_activities_complete = true;
|
||||||
|
|
||||||
TaskInformation *p_task_information = task_manager->m_task_data[task_info.task_id];
|
TaskInformation *p_task_data = task_manager->m_task_data[task_info.task_id];
|
||||||
if (p_task_information == nullptr) {
|
if (p_task_data == nullptr) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,18 +371,18 @@ bool ClientTaskState::UnlockActivities(int character_id, ClientTaskInformation &
|
|||||||
"character_id [{}] task_id [{}] sequence_mode [{}]",
|
"character_id [{}] task_id [{}] sequence_mode [{}]",
|
||||||
character_id,
|
character_id,
|
||||||
task_info.task_id,
|
task_info.task_id,
|
||||||
p_task_information->sequence_mode
|
p_task_data->sequence_mode
|
||||||
);
|
);
|
||||||
|
|
||||||
if (p_task_information->sequence_mode == ActivitiesSequential) {
|
if (p_task_data->sequence_mode == ActivitiesSequential) {
|
||||||
if (task_info.activity[0].activity_state != ActivityCompleted) {
|
if (task_info.activity[0].activity_state != ActivityCompleted) {
|
||||||
task_info.activity[0].activity_state = ActivityActive;
|
task_info.activity[0].activity_state = ActivityActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable the next Hidden task.
|
// Enable the next Hidden task.
|
||||||
for (int i = 0; i < p_task_information->activity_count; i++) {
|
for (int i = 0; i < p_task_data->activity_count; i++) {
|
||||||
if ((task_info.activity[i].activity_state == ActivityActive) &&
|
if ((task_info.activity[i].activity_state == ActivityActive) &&
|
||||||
(!p_task_information->activity_information[i].optional)) {
|
(!p_task_data->activity_information[i].optional)) {
|
||||||
all_activities_complete = false;
|
all_activities_complete = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -422,9 +422,8 @@ bool ClientTaskState::UnlockActivities(int character_id, ClientTaskInformation &
|
|||||||
completed_task_information.task_id = task_info.task_id;
|
completed_task_information.task_id = task_info.task_id;
|
||||||
completed_task_information.completed_time = time(nullptr);
|
completed_task_information.completed_time = time(nullptr);
|
||||||
|
|
||||||
for (int i = 0; i < p_task_information->activity_count; i++) {
|
for (int i = 0; i < p_task_data->activity_count; i++) {
|
||||||
completed_task_information.activity_done[i] = (task_info.activity[i].activity_state ==
|
completed_task_information.activity_done[i] = (task_info.activity[i].activity_state == ActivityCompleted);
|
||||||
ActivityCompleted);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_completed_tasks.push_back(completed_task_information);
|
m_completed_tasks.push_back(completed_task_information);
|
||||||
@ -443,16 +442,16 @@ bool ClientTaskState::UnlockActivities(int character_id, ClientTaskInformation &
|
|||||||
LogTasks(
|
LogTasks(
|
||||||
"[UnlockActivities] Current step [{}] last_step [{}]",
|
"[UnlockActivities] Current step [{}] last_step [{}]",
|
||||||
task_info.current_step,
|
task_info.current_step,
|
||||||
p_task_information->last_step
|
p_task_data->last_step
|
||||||
);
|
);
|
||||||
|
|
||||||
// If current_step is -1, this is the first call to this method since loading the
|
// If current_step is -1, this is the first call to this method since loading the
|
||||||
// client state. Unlock all activities with a step number of 0
|
// client state. Unlock all activities with a step number of 0
|
||||||
|
|
||||||
if (task_info.current_step == -1) {
|
if (task_info.current_step == -1) {
|
||||||
for (int i = 0; i < p_task_information->activity_count; i++) {
|
for (int i = 0; i < p_task_data->activity_count; i++) {
|
||||||
|
|
||||||
if (p_task_information->activity_information[i].step_number == 0 &&
|
if (p_task_data->activity_information[i].step_number == 0 &&
|
||||||
task_info.activity[i].activity_state == ActivityHidden) {
|
task_info.activity[i].activity_state == ActivityHidden) {
|
||||||
task_info.activity[i].activity_state = ActivityActive;
|
task_info.activity[i].activity_state = ActivityActive;
|
||||||
// task_info.activity_information[i].updated=true;
|
// task_info.activity_information[i].updated=true;
|
||||||
@ -461,11 +460,11 @@ bool ClientTaskState::UnlockActivities(int character_id, ClientTaskInformation &
|
|||||||
task_info.current_step = 0;
|
task_info.current_step = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int current_step = task_info.current_step; current_step <= p_task_information->last_step; current_step++) {
|
for (int current_step = task_info.current_step; current_step <= p_task_data->last_step; current_step++) {
|
||||||
for (int activity = 0; activity < p_task_information->activity_count; activity++) {
|
for (int activity = 0; activity < p_task_data->activity_count; activity++) {
|
||||||
if (p_task_information->activity_information[activity].step_number == (int) task_info.current_step) {
|
if (p_task_data->activity_information[activity].step_number == (int) task_info.current_step) {
|
||||||
if ((task_info.activity[activity].activity_state != ActivityCompleted) &&
|
if ((task_info.activity[activity].activity_state != ActivityCompleted) &&
|
||||||
(!p_task_information->activity_information[activity].optional)) {
|
(!p_task_data->activity_information[activity].optional)) {
|
||||||
current_step_complete = false;
|
current_step_complete = false;
|
||||||
all_activities_complete = false;
|
all_activities_complete = false;
|
||||||
break;
|
break;
|
||||||
@ -510,7 +509,7 @@ bool ClientTaskState::UnlockActivities(int character_id, ClientTaskInformation &
|
|||||||
completed_task_information.task_id = task_info.task_id;
|
completed_task_information.task_id = task_info.task_id;
|
||||||
completed_task_information.completed_time = time(nullptr);
|
completed_task_information.completed_time = time(nullptr);
|
||||||
|
|
||||||
for (int activity_id = 0; activity_id < p_task_information->activity_count; activity_id++) {
|
for (int activity_id = 0; activity_id < p_task_data->activity_count; activity_id++) {
|
||||||
completed_task_information.activity_done[activity_id] =
|
completed_task_information.activity_done[activity_id] =
|
||||||
(task_info.activity[activity_id].activity_state == ActivityCompleted);
|
(task_info.activity[activity_id].activity_state == ActivityCompleted);
|
||||||
}
|
}
|
||||||
@ -521,8 +520,8 @@ bool ClientTaskState::UnlockActivities(int character_id, ClientTaskInformation &
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mark all non-completed tasks in the current step as active
|
// Mark all non-completed tasks in the current step as active
|
||||||
for (int activity = 0; activity < p_task_information->activity_count; activity++) {
|
for (int activity = 0; activity < p_task_data->activity_count; activity++) {
|
||||||
if ((p_task_information->activity_information[activity].step_number == (int) task_info.current_step) &&
|
if ((p_task_data->activity_information[activity].step_number == (int) task_info.current_step) &&
|
||||||
(task_info.activity[activity].activity_state == ActivityHidden)) {
|
(task_info.activity[activity].activity_state == ActivityHidden)) {
|
||||||
task_info.activity[activity].activity_state = ActivityActive;
|
task_info.activity[activity].activity_state = ActivityActive;
|
||||||
task_info.activity[activity].updated = true;
|
task_info.activity[activity].updated = true;
|
||||||
@ -559,7 +558,7 @@ bool ClientTaskState::UpdateTasksByNPC(Client *client, int activity_type, int np
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if there are any active kill activities for this p_task_information
|
// Check if there are any active kill activities for this p_task_data
|
||||||
auto p_task_data = task_manager->m_task_data[current_task->task_id];
|
auto p_task_data = task_manager->m_task_data[current_task->task_id];
|
||||||
if (p_task_data == nullptr) {
|
if (p_task_data == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
@ -610,7 +609,7 @@ bool ClientTaskState::UpdateTasksByNPC(Client *client, int activity_type, int np
|
|||||||
// If METHODQUEST, don't updated the activity_information here
|
// If METHODQUEST, don't updated the activity_information here
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// We found an active p_task_information to kill this type of NPC, so increment the done count
|
// We found an active p_task_data to kill this type of NPC, so increment the done count
|
||||||
LogTasksDetail("Calling increment done count ByNPC");
|
LogTasksDetail("Calling increment done count ByNPC");
|
||||||
IncrementDoneCount(client, p_task_data, current_task->slot, activity_id);
|
IncrementDoneCount(client, p_task_data, current_task->slot, activity_id);
|
||||||
is_updating = true;
|
is_updating = true;
|
||||||
@ -1162,7 +1161,10 @@ void ClientTaskState::IncrementDoneCount(
|
|||||||
else {
|
else {
|
||||||
// Send an updated packet for this single activity_information
|
// Send an updated packet for this single activity_information
|
||||||
task_manager->SendTaskActivityLong(
|
task_manager->SendTaskActivityLong(
|
||||||
client, info->task_id, activity_id, task_index,
|
client,
|
||||||
|
info->task_id,
|
||||||
|
activity_id,
|
||||||
|
task_index,
|
||||||
task_information->activity_information[activity_id].optional
|
task_information->activity_information[activity_id].optional
|
||||||
);
|
);
|
||||||
task_manager->SaveClientState(client, this);
|
task_manager->SaveClientState(client, this);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user