mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
[Tasks] Let task completion event block task rewards (#2511)
Returning non-zero from EVENT_TASK_COMPLETE will prevent task rewards and completion emote. This is necessary for a DoN mission which scripts a mission failure but still gives the lockout.
This commit is contained in:
parent
9e836a9780
commit
43ec9dc815
@ -908,7 +908,7 @@ int ClientTaskState::IncrementDoneCount(
|
|||||||
AddReplayTimer(client, *info, *task_data);
|
AddReplayTimer(client, *info, *task_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
DispatchEventTaskComplete(client, *info, activity_id);
|
int event_res = DispatchEventTaskComplete(client, *info, activity_id);
|
||||||
|
|
||||||
/* QS: PlayerLogTaskUpdates :: Complete */
|
/* QS: PlayerLogTaskUpdates :: Complete */
|
||||||
if (RuleB(QueryServ, PlayerLogTaskUpdates)) {
|
if (RuleB(QueryServ, PlayerLogTaskUpdates)) {
|
||||||
@ -925,7 +925,11 @@ int ClientTaskState::IncrementDoneCount(
|
|||||||
client->SendTaskActivityComplete(info->task_id, 0, task_index, task_data->type, 0);
|
client->SendTaskActivityComplete(info->task_id, 0, task_index, task_data->type, 0);
|
||||||
|
|
||||||
// If Experience and/or cash rewards are set, reward them from the task even if reward_method is METHODQUEST
|
// If Experience and/or cash rewards are set, reward them from the task even if reward_method is METHODQUEST
|
||||||
RewardTask(client, task_data, *info);
|
// do not reward client if EVENT_TASK_COMPLETE returns non-zero
|
||||||
|
if (event_res == 0)
|
||||||
|
{
|
||||||
|
RewardTask(client, task_data, *info);
|
||||||
|
}
|
||||||
//RemoveTask(c, TaskIndex);
|
//RemoveTask(c, TaskIndex);
|
||||||
|
|
||||||
// shared tasks linger at the completion step and do not get removed from the task window unlike quests/task
|
// shared tasks linger at the completion step and do not get removed from the task window unlike quests/task
|
||||||
@ -951,7 +955,7 @@ int ClientTaskState::IncrementDoneCount(
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientTaskState::DispatchEventTaskComplete(Client* client, ClientTaskInformation& info, int activity_id)
|
int ClientTaskState::DispatchEventTaskComplete(Client* client, ClientTaskInformation& info, int activity_id)
|
||||||
{
|
{
|
||||||
std::string export_string = fmt::format(
|
std::string export_string = fmt::format(
|
||||||
"{} {} {}",
|
"{} {} {}",
|
||||||
@ -959,7 +963,7 @@ void ClientTaskState::DispatchEventTaskComplete(Client* client, ClientTaskInform
|
|||||||
info.activity[activity_id].activity_id,
|
info.activity[activity_id].activity_id,
|
||||||
info.task_id
|
info.task_id
|
||||||
);
|
);
|
||||||
parse->EventPlayer(EVENT_TASK_COMPLETE, client, export_string, 0);
|
return parse->EventPlayer(EVENT_TASK_COMPLETE, client, export_string, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientTaskState::RewardTask(Client *c, const TaskInformation *ti, ClientTaskInformation& client_task)
|
void ClientTaskState::RewardTask(Client *c, const TaskInformation *ti, ClientTaskInformation& client_task)
|
||||||
|
|||||||
@ -106,7 +106,7 @@ private:
|
|||||||
void AddReplayTimer(Client *client, ClientTaskInformation& client_task, const TaskInformation& task);
|
void AddReplayTimer(Client *client, ClientTaskInformation& client_task, const TaskInformation& task);
|
||||||
bool CanUpdate(Client* client, const TaskUpdateFilter& filter, int task_id,
|
bool CanUpdate(Client* client, const TaskUpdateFilter& filter, int task_id,
|
||||||
const ActivityInformation& activity, const ClientActivityInformation& client_activity) const;
|
const ActivityInformation& activity, const ClientActivityInformation& client_activity) const;
|
||||||
void DispatchEventTaskComplete(Client* client, ClientTaskInformation& client_task, int activity_id);
|
int DispatchEventTaskComplete(Client* client, ClientTaskInformation& client_task, int activity_id);
|
||||||
std::pair<int, int> FindTask(Client* client, const TaskUpdateFilter& filter) const;
|
std::pair<int, int> FindTask(Client* client, const TaskUpdateFilter& filter) const;
|
||||||
void RecordCompletedTask(uint32_t character_id, const TaskInformation& task, const ClientTaskInformation& client_task);
|
void RecordCompletedTask(uint32_t character_id, const TaskInformation& task, const ClientTaskInformation& client_task);
|
||||||
void UpdateTasksOnKill(Client* client, Client* exp_client, NPC* npc);
|
void UpdateTasksOnKill(Client* client, Client* exp_client, NPC* npc);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user