diff --git a/src/game/client/components/items.cpp b/src/game/client/components/items.cpp index 4e18fde9f..7c45b760e 100644 --- a/src/game/client/components/items.cpp +++ b/src/game/client/components/items.cpp @@ -377,20 +377,17 @@ void CItems::OnRender() { if(auto *pProj = (CProjectile *)GameClient()->m_GameWorld.FindMatch(Item.m_ID, Item.m_Type, pData)) { - if(pProj->GetOwner() >= 0) + bool IsOtherTeam = m_pClient->IsOtherTeam(pProj->GetOwner()); + if(pProj->m_LastRenderTick <= 0 && (pProj->m_Type != WEAPON_SHOTGUN || (!pProj->m_Freeze && !pProj->m_Explosive)) // skip ddrace shotgun bullets + && (pProj->m_Type == WEAPON_SHOTGUN || fabs(length(pProj->m_Direction) - 1.f) < 0.02) // workaround to skip grenades on ball mod + && (pProj->GetOwner() < 0 || !GameClient()->m_aClients[pProj->GetOwner()].m_IsPredictedLocal || IsOtherTeam) // skip locally predicted projectiles + && !Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID)) { - bool IsOtherTeam = m_pClient->IsOtherTeam(pProj->GetOwner()); - if(pProj->m_LastRenderTick <= 0 && (pProj->m_Type != WEAPON_SHOTGUN || (!pProj->m_Freeze && !pProj->m_Explosive)) // skip ddrace shotgun bullets - && (pProj->m_Type == WEAPON_SHOTGUN || fabs(length(pProj->m_Direction) - 1.f) < 0.02) // workaround to skip grenades on ball mod - && (pProj->GetOwner() < 0 || !GameClient()->m_aClients[pProj->GetOwner()].m_IsPredictedLocal || IsOtherTeam) // skip locally predicted projectiles - && !Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID)) - { - ReconstructSmokeTrail(&Data, pProj->m_DestroyTick); - } - pProj->m_LastRenderTick = Client()->GameTick(g_Config.m_ClDummy); - if(!IsOtherTeam) - continue; + ReconstructSmokeTrail(&Data, pProj->m_DestroyTick); } + pProj->m_LastRenderTick = Client()->GameTick(g_Config.m_ClDummy); + if(!IsOtherTeam) + continue; } } if(Inactive && (Data.m_Explosive ? BlinkingProjEx : BlinkingProj))