diff options
| -rw-r--r-- | src/game/client/gc_client.cpp | 6 | ||||
| -rw-r--r-- | src/game/server/gs_server.cpp | 11 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/game/client/gc_client.cpp b/src/game/client/gc_client.cpp index c1f71f59..03b3a24c 100644 --- a/src/game/client/gc_client.cpp +++ b/src/game/client/gc_client.cpp @@ -784,6 +784,12 @@ extern "C" void modc_predict() if(!world.players[c]) continue; + + // TODO: this should be moved into the g_game + // but not done to preserve the nethash + if(length(world.players[c]->vel) > 150.0f) + world.players[c]->vel = normalize(world.players[c]->vel) * 150.0f; + world.players[c]->move(); world.players[c]->quantize(); } diff --git a/src/game/server/gs_server.cpp b/src/game/server/gs_server.cpp index 5bf8bad2..dc05208f 100644 --- a/src/game/server/gs_server.cpp +++ b/src/game/server/gs_server.cpp @@ -1069,8 +1069,15 @@ void player::tick_defered() vec2 start_pos = core.pos; vec2 start_vel = core.vel; bool stuck_before = test_box(core.pos, vec2(28.0f, 28.0f)); - if(length(core.vel) > 100.0f) - dbg_msg("server", "insane move! (%f,%f) %f", core.vel.x, core.vel.y, length(core.vel)); + + // TODO: this should be moved into the g_game + // but not done to preserve the nethash + if(length(core.vel) > 150.0f) + { + dbg_msg("server", "insane move! clamping (%f,%f) %f", core.vel.x, core.vel.y, length(core.vel)); + core.vel = normalize(core.vel) * 150.0f; + } + core.move(); bool stuck_after_move = test_box(core.pos, vec2(28.0f, 28.0f)); core.quantize(); |