diff --git a/zone/client_process.cpp b/zone/client_process.cpp index 31e914cc8..99f6a48f5 100644 --- a/zone/client_process.cpp +++ b/zone/client_process.cpp @@ -561,6 +561,10 @@ bool Client::Process() { { ItemTimerCheck(); } + + if (m_clear_wearchange_cache_timer.Check()) { + m_last_seen_wearchange.clear(); + } } } diff --git a/zone/mob.cpp b/zone/mob.cpp index 97c2d17e5..16774bfbc 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -133,6 +133,7 @@ Mob::Mob( m_see_close_mobs_timer(1000), m_mob_check_moving_timer(1000), bot_attack_flag_timer(10000), + m_clear_wearchange_cache_timer(60 * 10 * 1000), // 10 minutes m_destroying(false) { mMovementManager = &MobMovementManager::Get(); diff --git a/zone/mob.h b/zone/mob.h index 18541857e..193d8aae2 100644 --- a/zone/mob.h +++ b/zone/mob.h @@ -211,6 +211,7 @@ public: uint16 m_last_wearchange_race_id = 0; // client_id -> slot_id -> key std::unordered_map> m_last_seen_wearchange; + Timer m_clear_wearchange_cache_timer; // Bot attack flag Timer bot_attack_flag_timer; diff --git a/zone/npc.cpp b/zone/npc.cpp index 4a87dc1f6..ade7c8e93 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -632,6 +632,10 @@ bool NPC::Process() } if (tic_timer.Check()) { + if (m_clear_wearchange_cache_timer.Check()) { + m_last_seen_wearchange.clear(); + } + if (parse->HasQuestSub(GetNPCTypeID(), EVENT_TICK)) { parse->EventNPC(EVENT_TICK, this, nullptr, "", 0); }