aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Druzenko <vvd@FreeBSD.org>2026-05-14 21:47:41 +0000
committerVladimir Druzenko <vvd@FreeBSD.org>2026-05-14 21:49:29 +0000
commit3e938bf8cf15f9ca1d7d74b309d3777312ad490a (patch)
tree49b269a012995bc7e58ce040798fc629bd32bf38
parenta7ce159c0abd12cae6c133a2749b258726140ebd (diff)
games/ktx: Update 1.45 => 1.46
Changelog: https://github.com/QW-Group/ktx/releases/tag/1.46 Sponsored by: UNIS Labs MFH: 2026Q2 (cherry picked from commit f540bd6bbd1635d7e167c06f990f7a9d25e7dc06)
-rw-r--r--games/ktx/Makefile16
-rw-r--r--games/ktx/distinfo18
-rw-r--r--games/ktx/files/patch-socd192
-rw-r--r--games/ktx/pkg-plist8
4 files changed, 36 insertions, 198 deletions
diff --git a/games/ktx/Makefile b/games/ktx/Makefile
index 59957e436ad3..a6702499975e 100644
--- a/games/ktx/Makefile
+++ b/games/ktx/Makefile
@@ -1,7 +1,15 @@
PORTNAME= ktx
-DISTVERSION= 1.45
+DISTVERSION= 1.46
CATEGORIES= games
+PATCH_SITES= https://github.com/QW-Group/ktx/commit/
+PATCHFILES= 18ce9990e07f08f433759d68f47115e93fa05067.patch:-p1 \
+ c166537fafc128cdcbe6f1d126d8089461a812bb.patch:-p1 \
+ 1f324ab0dd99c55bf8a4c126be7d72ba1992c779.patch:-p1 \
+ 0b8bf7ac91f8b47c15f926d2c3214dd9d413e1a6.patch:-p1 \
+ c43aafcdc31e66812bb9116c7eca4bc736b76376.patch:-p1 \
+ c871f3d2064e1881c694a7357986479b8cb96333.patch:-p1
+
MAINTAINER= vvd@FreeBSD.org
COMMENT= Kombat Teams eXtreme is a popular QuakeWorld server modification
WWW= https://github.com/QW-Group/ktx/
@@ -11,10 +19,12 @@ LICENSE= GPLv2
RUN_DEPENDS= mvdsv:games/mvdsv
USES= cmake dos2unix
-DOS2UNIX_FILES= resources/example-configs/ktx/ktx.cfg \
+DOS2UNIX_FILES= resources/example-configs/id1/maps/arena3.ent \
+ resources/example-configs/ktx/ktx.cfg \
resources/example-configs/ktx/mvdsv.cfg \
resources/example-configs/ktx/problem.cfg \
- resources/example-configs/ktx/race/routes/ztricks2.route
+ resources/example-configs/ktx/race/routes/ztricks2.route \
+ resources/extralog/ktxlog_0.1.xsd
USE_GITHUB= yes
GH_ACCOUNT= QW-Group
USE_RC_SUBR= ${PORTNAME}
diff --git a/games/ktx/distinfo b/games/ktx/distinfo
index 8518a04f1d3e..eaf0551f0f91 100644
--- a/games/ktx/distinfo
+++ b/games/ktx/distinfo
@@ -1,3 +1,15 @@
-TIMESTAMP = 1740344268
-SHA256 (QW-Group-ktx-1.45_GH0.tar.gz) = 3bf0e78569fa7d352a2e825257ea37d1e2423480c94f0d18fa58dc265f54288c
-SIZE (QW-Group-ktx-1.45_GH0.tar.gz) = 1704185
+TIMESTAMP = 1778778778
+SHA256 (QW-Group-ktx-1.46_GH0.tar.gz) = bda8ae19a9f8cbc4aad8cf8f7963d6e0c0a65b29657ad55b5ad45a14f76bf3a7
+SIZE (QW-Group-ktx-1.46_GH0.tar.gz) = 1744829
+SHA256 (18ce9990e07f08f433759d68f47115e93fa05067.patch) = f9c462297639e162869d86a9c74b69925c8927aa1344c53864fa28f29131d1c6
+SIZE (18ce9990e07f08f433759d68f47115e93fa05067.patch) = 6955
+SHA256 (c166537fafc128cdcbe6f1d126d8089461a812bb.patch) = 6fa7b510d748492c3528307bae9fa18a6172ea6aadc7ae603d982e8ee244f18a
+SIZE (c166537fafc128cdcbe6f1d126d8089461a812bb.patch) = 637
+SHA256 (1f324ab0dd99c55bf8a4c126be7d72ba1992c779.patch) = 964729e37c4fe5eafdc502da087ac3c69235dc5e01076bd4736d7390f2e6db5e
+SIZE (1f324ab0dd99c55bf8a4c126be7d72ba1992c779.patch) = 909
+SHA256 (0b8bf7ac91f8b47c15f926d2c3214dd9d413e1a6.patch) = a7b78008ca2006ac6efdb8fd2f5402c0735ef9761b389bcb0967ba3c4f192129
+SIZE (0b8bf7ac91f8b47c15f926d2c3214dd9d413e1a6.patch) = 1492
+SHA256 (c43aafcdc31e66812bb9116c7eca4bc736b76376.patch) = 5c3b3dad1f8297f7cf900ed2a639f154b9d73171a8c9b87ed9f254851e1f4281
+SIZE (c43aafcdc31e66812bb9116c7eca4bc736b76376.patch) = 778
+SHA256 (c871f3d2064e1881c694a7357986479b8cb96333.patch) = 68d6f265d6ad19e5b25a2d692f3b67dae6235f94dd74f7d3a22fd7fd6e7addfb
+SIZE (c871f3d2064e1881c694a7357986479b8cb96333.patch) = 6319
diff --git a/games/ktx/files/patch-socd b/games/ktx/files/patch-socd
deleted file mode 100644
index 03e80334b71e..000000000000
--- a/games/ktx/files/patch-socd
+++ /dev/null
@@ -1,192 +0,0 @@
-From 631b375f3dbb150c3f37430a0a45f237ffac8153 Mon Sep 17 00:00:00 2001
-From: blaze <blaze@discord>
-Date: Tue, 30 Jul 2024 22:49:02 -0700
-Subject: [PATCH] socd detection
-
----
- .gitignore | 3 +++
- include/progs.h | 11 ++++++++
- src/client.c | 61 ++++++++++++++++++++++++++++++++++++++++++++
- src/commands.c | 32 +++++++++++++++++++++--
- src/stats.c | 8 ++++++
- src/world.c | 2 ++
- tools/vs/ktx.vcxproj | 34 ++++++++++++++++++------
- 7 files changed, 141 insertions(+), 10 deletions(-)
-
---- include/progs.h.orig
-+++ include/progs.h
-@@ -944,6 +944,17 @@ typedef struct gedict_s
- float fIllegalFPSWarnings;
- // ILLEGALFPS]
-
-+// SOCD detectioin
-+ float fStrafeChangeCount;
-+ float fFramePerfectStrafeChangeCount;
-+ int socdDetected;
-+ int socdChecksCount;
-+ float fLastSideMoveSpeed;
-+ int matchStrafeChangeCount;
-+ int matchPerfectStrafeCount;
-+ int nullStrafeCount;
-+// SOCD
-+
- float shownick_time; // used to force centerprint is off at desired time
- clientType_t ct; // client type for client edicts
- // { timing
---- src/client.c.orig
-+++ src/client.c
-@@ -1658,6 +1658,16 @@ void ClientConnect()
- SendIntermissionToClient();
- }
-
-+// SOCD
-+ self->socdChecksCount = 0;
-+ self->socdDetected = 0;
-+ self->fStrafeChangeCount = 0;
-+ self->fFramePerfectStrafeChangeCount = 0;
-+ self->fLastSideMoveSpeed = 0;
-+ self->matchStrafeChangeCount = 0;
-+ self->matchPerfectStrafeCount = 0;
-+ self->nullStrafeCount = 0;
-+
- // ILLEGALFPS[
-
- // Zibbo's frametime checking code
-@@ -3520,6 +3530,57 @@ void PlayerPreThink()
- }
- #endif
-
-+// SOCD detection
-+ {
-+ float fSideMoveSpeed = self->movement[1];
-+
-+ if ((fSideMoveSpeed != 0) && (fSideMoveSpeed != self->fLastSideMoveSpeed) && (self->nullStrafeCount < 3)) //strafechange
-+ {
-+ self->fStrafeChangeCount += 1;
-+ if (match_in_progress)
-+ self->matchStrafeChangeCount += 1;
-+
-+ if ((fSideMoveSpeed != 0) && (self->fLastSideMoveSpeed != 0))
-+ {
-+ self->fFramePerfectStrafeChangeCount += 1;
-+ if (match_in_progress)
-+ self->matchPerfectStrafeCount += 1;
-+ }
-+
-+ self->nullStrafeCount = 0;
-+ }
-+ else
-+ {
-+ if (0 == fSideMoveSpeed)
-+ self->nullStrafeCount += 1;
-+ else
-+ self->nullStrafeCount = 0;
-+ }
-+
-+ self->fLastSideMoveSpeed = fSideMoveSpeed;
-+
-+ if (self->fStrafeChangeCount >= 16)
-+ {
-+ if (self->fFramePerfectStrafeChangeCount / self->fStrafeChangeCount >= 0.75)
-+ {
-+ int k_allow_socd_warning = cvar("k_allow_socd_warning");
-+
-+ self->socdDetected += 1;
-+
-+ if ((!match_in_progress) && (!self->isBot) && k_allow_socd_warning)
-+ {
-+ G_bprint(PRINT_HIGH,
-+ "Warning! %s: SOCD movement assistance detected. Please disable iDrive or keyboard SOCD features.\n",
-+ self->netname);
-+ }
-+ }
-+
-+ self->socdChecksCount += 1;
-+ self->fStrafeChangeCount = 0;
-+ self->fFramePerfectStrafeChangeCount = 0;
-+ }
-+ }
-+
- // ILLEGALFPS[
-
- self->fAverageFrameTime += g_globalvars.frametime;
---- src/commands.c.orig
-+++ src/commands.c
-@@ -8114,16 +8114,47 @@ void fcheck()
-
- if (!is_real_adm(self))
- {
-- if (strneq(arg_x, "f_version") && strneq(arg_x, "f_modified") && strneq(arg_x, "f_server"))
-+ if (strneq(arg_x, "f_version") && strneq(arg_x, "f_modified") && strneq(arg_x, "f_server") && strneq(arg_x, "f_movement"))
- {
- G_sprint(self, 2, "You are not allowed to check \020%s\021\n"
-- "available checks are: f_version, f_modified and f_server\n",
-+ "available checks are: f_version, f_modified, f_server and f_movement\n",
- arg_x);
-
- return;
- }
- }
-
-+ if (streq(arg_x, "f_movement"))
-+ {
-+ G_bprint(2, "%s is checking \020%s\021\n", self->netname, arg_x);
-+
-+ for (i = 1; i <= MAX_CLIENTS; i++)
-+ {
-+ if (!strnull(g_edicts[i].netname))
-+ {
-+ if (g_edicts[i].socdDetected > 0)
-+ {
-+ G_bprint(2, "%s: SOCD movement assistance detected!\n", g_edicts[i].netname);
-+ }
-+ else
-+ {
-+ if (g_edicts[i].socdChecksCount >= 2)
-+ {
-+ G_bprint(2, "%s: no assistance detected.\n", g_edicts[i].netname);
-+ }
-+ else
-+ {
-+ G_bprint(2, "%s: not enough movement to run SOCD detection. Please move around a map.\n", g_edicts[i].netname);
-+ }
-+ }
-+ G_bprint(2, "%s: %s:%d/%d %s:%d/%d\n", redtext("Movement"), redtext("Perfect strafes"),
-+ g_edicts[i].matchPerfectStrafeCount, g_edicts[i].matchStrafeChangeCount,
-+ redtext("SOCD detections"), g_edicts[i].socdDetected, g_edicts[i].socdChecksCount);
-+ }
-+ }
-+ return;
-+ }
-+
- for (i = 1; i <= MAX_CLIENTS; i++)
- {
- if (g_edicts[i].f_checkbuf)
---- src/stats.c.orig
-+++ src/stats.c
-@@ -763,6 +763,14 @@ void OnePlayerStats(gedict_t *p, int tp)
- p->ps.vel_frames > 0 ? p->ps.velocity_sum / p->ps.vel_frames : 0.);
- }
-
-+ if (!p->isBot)
-+ {
-+ G_bprint(2, "%s: %s:%d/%d %s:%d/%d\n", redtext("Movement"), redtext("Perfect strafes"),
-+ p->matchPerfectStrafeCount, p->matchStrafeChangeCount, redtext("SOCD detections"),
-+ p->socdDetected, p->socdChecksCount);
-+ }
-+
-+
- // armors + megahealths
- if (!lgc_enabled())
- {
---- src/world.c.orig
-+++ src/world.c
-@@ -1000,6 +1000,8 @@ void FirstFrame()
-
- RegisterCvar("k_teamoverlay"); // q3 like team overlay
-
-+ RegisterCvar("k_allow_socd_warning"); // socd
-+
- // { SP
- RegisterCvarEx("k_monster_spawn_time", "20");
- // }
diff --git a/games/ktx/pkg-plist b/games/ktx/pkg-plist
index cfa3e572433e..3272e5f95b20 100644
--- a/games/ktx/pkg-plist
+++ b/games/ktx/pkg-plist
@@ -5,6 +5,7 @@ quake/ktx/bots/maps/2towers.bot
quake/ktx/bots/maps/aerowalk.bot
quake/ktx/bots/maps/amphi2.bot
quake/ktx/bots/maps/arenazap.bot
+quake/ktx/bots/maps/aztek.bot
quake/ktx/bots/maps/bravado.bot
quake/ktx/bots/maps/cmt1b.bot
quake/ktx/bots/maps/cmt3.bot
@@ -18,25 +19,32 @@ quake/ktx/bots/maps/dmm4_1.bot
quake/ktx/bots/maps/dmm4_3.bot
quake/ktx/bots/maps/e1m2.bot
quake/ktx/bots/maps/endif.bot
+quake/ktx/bots/maps/forsaken.bot
quake/ktx/bots/maps/frobodm2.bot
quake/ktx/bots/maps/marena2.bot
quake/ktx/bots/maps/marena3.bot
quake/ktx/bots/maps/monsoon.bot
quake/ktx/bots/maps/nacmidair.bot
quake/ktx/bots/maps/noentry.bot
+quake/ktx/bots/maps/obsidian.bot
quake/ktx/bots/maps/oldcrat.bot
+quake/ktx/bots/maps/phantombase.bot
quake/ktx/bots/maps/pkeg1.bot
quake/ktx/bots/maps/povdmm4.bot
quake/ktx/bots/maps/povdmm4b.bot
quake/ktx/bots/maps/ptucket.bot
quake/ktx/bots/maps/pushdmm4.bot
quake/ktx/bots/maps/q1q3monsoon#td.bot
+quake/ktx/bots/maps/qobblestone.bot
quake/ktx/bots/maps/rarena3.bot
quake/ktx/bots/maps/ravageqwb8.bot
+quake/ktx/bots/maps/rocka.bot
quake/ktx/bots/maps/schloss.bot
quake/ktx/bots/maps/shifter.bot
quake/ktx/bots/maps/skull.bot
quake/ktx/bots/maps/spinev2.bot
+quake/ktx/bots/maps/steam.bot
+quake/ktx/bots/maps/stroggopolis.bot
quake/ktx/bots/maps/subterfuge.bot
quake/ktx/bots/maps/ukooldm2.bot
quake/ktx/bots/maps/ukooldm3.bot