@@ -2662,7 +2662,7 @@ void CGameClient::OnPredict()
26622662 if (g_Config.m_TcFastInput && Tick > FinalTickRegular)
26632663 {
26642664 pInputData = &m_Controls.m_FastInput ;
2665- if (g_Config.m_ClDummyCopyMoves )
2665+ if (g_Config.m_ClDummyCopyMoves && PredictDummy () )
26662666 pDummyInputData = &m_Controls.m_FastInput ;
26672667 }
26682668
@@ -4056,7 +4056,7 @@ void CGameClient::UpdateRenderedCharacters()
40564056
40574057 if (g_Config.m_TcRemoveAnti )
40584058 Pos = GetFreezePos (i);
4059- else if (g_Config.m_TcFastInput && i == m_Snap.m_LocalClientId )
4059+ else if (g_Config.m_TcFastInput && ( i == m_Snap.m_LocalClientId || ( PredictDummy () && i == m_aLocalIds[!g_Config. m_ClDummy ])) )
40604060 Pos = GetFastInputPos (i);
40614061
40624062 if (i == m_Snap.m_LocalClientId || (PredictDummy () && i == m_aLocalIds[!g_Config.m_ClDummy ]))
@@ -4336,12 +4336,13 @@ vec2 CGameClient::GetFreezePos(int ClientId)
43364336
43374337 FastInputTicks += CarryOverTicks;
43384338
4339- if (ClientId != m_Snap.m_LocalClientId && g_Config.m_TcFastInputOthers && g_Config.m_TcFastInput )
4339+ const bool IsLocal = ClientId == m_Snap.m_LocalClientId || (PredictDummy () && ClientId == m_aLocalIds[!g_Config.m_ClDummy ]);
4340+ if (IsLocal && g_Config.m_TcFastInput )
43404341 {
43414342 SmoothTick += FastInputTicks;
43424343 SmoothIntra = FinalIntra;
43434344 }
4344- else if (ClientId == m_Snap. m_LocalClientId && g_Config.m_TcFastInput )
4345+ else if (!IsLocal && g_Config. m_TcFastInputOthers && g_Config.m_TcFastInput )
43454346 {
43464347 SmoothTick += FastInputTicks;
43474348 SmoothIntra = FinalIntra;
0 commit comments