From 78362dff35b5cf51bc77ca5353e714160bc09c4e Mon Sep 17 00:00:00 2001 From: mourningsickness Date: Mon, 22 Jun 2026 12:50:05 -0700 Subject: [PATCH 1/3] Update shavit-checkpoints.sp fix major exploit where you do not get your practice mode set if you save a checkpoint in the start zone with velocity (noclip, prespeed, etc) this is the proper "fix" to the "practice mode message spam" nora tried to remedy but introduced this bad bug. --- addons/sourcemod/scripting/shavit-checkpoints.sp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/sourcemod/scripting/shavit-checkpoints.sp b/addons/sourcemod/scripting/shavit-checkpoints.sp index 0655c8ec1..358a873a9 100644 --- a/addons/sourcemod/scripting/shavit-checkpoints.sp +++ b/addons/sourcemod/scripting/shavit-checkpoints.sp @@ -1905,12 +1905,15 @@ bool LoadCheckpointCache(int client, cp_cache_t cpcache, int index, bool force = return true; } - if (cpcache.aSnapshot.iFullTicks > 0 && (cpcache.aSnapshot.bPracticeMode || !(cpcache.bSegmented || isPersistentData) || GetSteamAccountID(client) != cpcache.iSteamID)) + if (cpcache.aSnapshot.bPracticeMode || !(cpcache.bSegmented || isPersistentData) || GetSteamAccountID(client) != cpcache.iSteamID) { cpcache.aSnapshot.bPracticeMode = true; // Do this here to trigger practice mode alert - Shavit_SetPracticeMode(client, true, true); + if (!Shavit_InsideZone(client, Zone_Start, -1)) + { + Shavit_SetPracticeMode(client, true, true); + } } Shavit_LoadSnapshot(client, cpcache.aSnapshot, sizeof(timer_snapshot_t), force); From e30fb0c1b206db326950bbbbf9d28a8a8ca28f67 Mon Sep 17 00:00:00 2001 From: mourningsickness Date: Mon, 22 Jun 2026 13:36:23 -0700 Subject: [PATCH 2/3] shavit-checkpoints.sp - update comment --- addons/sourcemod/scripting/shavit-checkpoints.sp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sourcemod/scripting/shavit-checkpoints.sp b/addons/sourcemod/scripting/shavit-checkpoints.sp index 358a873a9..f0ab73d0c 100644 --- a/addons/sourcemod/scripting/shavit-checkpoints.sp +++ b/addons/sourcemod/scripting/shavit-checkpoints.sp @@ -1909,7 +1909,7 @@ bool LoadCheckpointCache(int client, cp_cache_t cpcache, int index, bool force = { cpcache.aSnapshot.bPracticeMode = true; - // Do this here to trigger practice mode alert + // Do this here to only trigger a practice mode alert if the client was outside the start zone (prevent alert spam in some cases) if (!Shavit_InsideZone(client, Zone_Start, -1)) { Shavit_SetPracticeMode(client, true, true); From 5b3f215f207089a74c847f5e2d7201ff378886ff Mon Sep 17 00:00:00 2001 From: mourningsickness Date: Tue, 23 Jun 2026 06:15:14 -0700 Subject: [PATCH 3/3] shavit-checkpoints.sp - update exploit fix detect conditions --- addons/sourcemod/scripting/shavit-checkpoints.sp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/sourcemod/scripting/shavit-checkpoints.sp b/addons/sourcemod/scripting/shavit-checkpoints.sp index f0ab73d0c..cedbef7fb 100644 --- a/addons/sourcemod/scripting/shavit-checkpoints.sp +++ b/addons/sourcemod/scripting/shavit-checkpoints.sp @@ -1909,8 +1909,8 @@ bool LoadCheckpointCache(int client, cp_cache_t cpcache, int index, bool force = { cpcache.aSnapshot.bPracticeMode = true; - // Do this here to only trigger a practice mode alert if the client was outside the start zone (prevent alert spam in some cases) - if (!Shavit_InsideZone(client, Zone_Start, -1)) + // Do this here to only trigger a practice mode alert if the client was <=1s into a run (prevent alert spam in some cases) + if (cpcache.aSnapshot.iFullTicks > 100) { Shavit_SetPracticeMode(client, true, true); }