From 7999455e9f9b73fb8c739b2cf864386a7f3466fe Mon Sep 17 00:00:00 2001 From: mittorn Date: Tue, 11 Oct 2016 18:31:25 +0000 Subject: [PATCH] Fix linear move bug --- dlls/subs.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/dlls/subs.cpp b/dlls/subs.cpp index 8914f9f7..a527a2fe 100644 --- a/dlls/subs.cpp +++ b/dlls/subs.cpp @@ -26,6 +26,7 @@ #include "saverestore.h" #include "nodes.h" #include "doors.h" +#include "game.h" extern CGraph WorldGraph; @@ -428,6 +429,20 @@ After moving, set origin to exact final destination, call "move done" function */ void CBaseToggle::LinearMoveDone( void ) { + // stupid bug: Linear move is broken during changelevel + if( mp_coop.value && pev->globalname ) + { + Vector vecDestDelta = m_vecFinalDest - pev->origin; + if( vecDestDelta.Length() > 50 ) + { + pev->nextthink = -1; + float speed = pev->velocity.Length(); + if( speed < 10 ) + speed = 10; + LinearMove( m_vecFinalDest, 10); + return; + } + } UTIL_SetOrigin( pev, m_vecFinalDest ); pev->velocity = g_vecZero; pev->nextthink = -1;