From de047fb85166fbe1762c73c236e41715d62ea7a8 Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Sun, 12 Feb 2023 23:59:14 -0500 Subject: [PATCH] [Quest API] (Performance) Check event EVENT_FEIGN_DEATH exists before export and execute (#2916) * [Quest API] Optionally parse EVENT_FEIGN_DEATH # Notes - Optionally parse this event instead of always doing so. * Remove unused reference, fix other PR * Update task_client_state.cpp --------- Co-authored-by: Akkadius --- zone/cheat_manager.cpp | 4 ++-- zone/entity.cpp | 22 +++++++++++++--------- zone/task_client_state.cpp | 1 + 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/zone/cheat_manager.cpp b/zone/cheat_manager.cpp index a53583d35..b48fa4d31 100644 --- a/zone/cheat_manager.cpp +++ b/zone/cheat_manager.cpp @@ -81,10 +81,10 @@ void CheatManager::CheatDetected(CheatTypes type, glm::vec3 position1, glm::vec3 position1.z ); - parse->EventPlayer(EVENT_WARP, m_target, export_string, 0);; + parse->EventPlayer(EVENT_WARP, m_target, export_string, 0); } - m_time_since_last_warp_detection.Start(2500) + m_time_since_last_warp_detection.Start(2500); } break; case MQWarpShadowStep: diff --git a/zone/entity.cpp b/zone/entity.cpp index 80b8c6634..b01785f42 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -3662,21 +3662,25 @@ void EntityList::ClearFeignAggro(Mob *targ) } if (targ->IsClient()) { - std::vector args; - args.push_back(it->second); - int i = parse->EventPlayer(EVENT_FEIGN_DEATH, targ->CastToClient(), "", 0, &args); - if (i != 0) { - ++it; - continue; - } + if (parse->PlayerHasQuestSub(EVENT_FEIGN_DEATH)) { + std::vector args = { it->second }; - if (it->second->IsNPC()) { - int i = parse->EventNPC(EVENT_FEIGN_DEATH, it->second->CastToNPC(), targ, "", 0); + int i = parse->EventPlayer(EVENT_FEIGN_DEATH, targ->CastToClient(), "", 0, &args); if (i != 0) { ++it; continue; } } + + if (it->second->IsNPC()) { + if (parse->HasQuestSub(it->second->GetNPCTypeID(), EVENT_FEIGN_DEATH)) { + int i = parse->EventNPC(EVENT_FEIGN_DEATH, it->second->CastToNPC(), targ, "", 0); + if (i != 0) { + ++it; + continue; + } + } + } } it->second->RemoveFromHateList(targ); diff --git a/zone/task_client_state.cpp b/zone/task_client_state.cpp index 634c983da..e82ffc49b 100644 --- a/zone/task_client_state.cpp +++ b/zone/task_client_state.cpp @@ -2202,6 +2202,7 @@ void ClientTaskState::AcceptNewTask( .task_name = task_manager->GetTaskName(static_cast(task_id)), }; RecordPlayerEventLogWithClient(client, PlayerEvent::TASK_ACCEPT, e); + } } if (parse->PlayerHasQuestSub(EVENT_TASK_ACCEPTED)) {