diff --git a/games/ktx/Makefile b/games/ktx/Makefile index 59957e436ad3..a6702499975e 100644 --- a/games/ktx/Makefile +++ b/games/ktx/Makefile @@ -1,64 +1,74 @@ 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/ 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} EXTRACT_AFTER_ARGS= --exclude ${PKGNAME}/.git* \ --exclude ${PKGNAME}/build_cmake.sh \ --exclude ${PKGNAME}/resources/example-configs/id1/"copy PAK0 and PAK1 here" \ --exclude ${PKGNAME}/tools/cross-cmake \ --exclude ${PKGNAME}/tools/vs \ --no-same-owner --no-same-permissions QWDIR= ${PREFIX}/quake SUB_LIST= QWDIR=${QWDIR} QWUSER=${USERS} USERS= qw GROUPS= qw PLIST_SUB= QWGROUP=${GROUPS} PORTDATA= * .include "${.CURDIR}/../quake-data/Makefile.include" .include do-install: ${REINPLACE_CMD} -e 's|^set k_defmap|// set k_defmap|' \ ${WRKSRC}/resources/example-configs/ktx/ktx.cfg ${MKDIR} ${STAGEDIR}${DATADIR} \ ${STAGEDIR}${QWDIR}/ktx/demos \ ${STAGEDIR}${QWDIR}/qw cd ${WRKSRC}/resources && \ ${COPYTREE_SHARE} 'extralog logo' ${STAGEDIR}${DATADIR} cd ${WRKSRC}/resources/example-configs && \ ${COPYTREE_SHARE} . ${STAGEDIR}${QWDIR} ${MV} ${STAGEDIR}${QWDIR}/id1/maps ${STAGEDIR}${QWDIR}/qw ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/qwprogs.so \ ${STAGEDIR}${DATADIR} ${LN} -s ${DATADIR}/qwprogs.so ${STAGEDIR}${QWDIR}/ktx/ ${LN} -s ${Q1DIR}/id1/pak0.pak ${STAGEDIR}${QWDIR}/id1/ ${LN} -s ${Q1DIR}/id1/pak1.pak ${STAGEDIR}${QWDIR}/id1/ ${LN} -s ${Q1DIR}/id1/maps ${STAGEDIR}${QWDIR}/id1/ (cd ${STAGEDIR}${QWDIR} && \ for f in port1 port2 port3 portffa servers; do \ ${MV} $${f} $${f}.sample; done && \ cd ktx && \ for f in ktx.cfg listip.cfg matchless.cfg mvdfinish.qws \ mvdsv.cfg port1.cfg port2.cfg port3.cfg problem.cfg \ pwd.cfg server.cfg vip_ip.cfg; do \ ${MV} $${f} $${f}.sample; done) .include 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 -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 @@ -1,282 +1,290 @@ quake/id1/maps quake/id1/pak0.pak quake/id1/pak1.pak 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 quake/ktx/bots/maps/cmt4.bot quake/ktx/bots/maps/dm2dmm4.bot quake/ktx/bots/maps/dm3.bot quake/ktx/bots/maps/dm3hill.bot quake/ktx/bots/maps/dm4.bot quake/ktx/bots/maps/dm6.bot 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 quake/ktx/bots/maps/ukooldm6.bot quake/ktx/bots/maps/ukooldm8.bot quake/ktx/bots/maps/ukpak2.bot quake/ktx/bots/maps/ultrav.bot quake/ktx/bots/maps/ztndm1.bot quake/ktx/bots/maps/ztndm2.bot quake/ktx/bots/maps/ztndm3.bot quake/ktx/bots/maps/ztndm4.bot quake/ktx/bots/maps/ztndm5.bot quake/ktx/bots/maps/ztndm6.bot quake/ktx/configs/reset.cfg quake/ktx/configs/usermodes/10on10/default.cfg quake/ktx/configs/usermodes/1on1/default.cfg quake/ktx/configs/usermodes/1on1/ra/default.cfg quake/ktx/configs/usermodes/2on2/aerowalk.cfg quake/ktx/configs/usermodes/2on2/default.cfg quake/ktx/configs/usermodes/2on2/dm4.cfg quake/ktx/configs/usermodes/2on2/dm6.cfg quake/ktx/configs/usermodes/2on2on2/default.cfg quake/ktx/configs/usermodes/3on3/default.cfg quake/ktx/configs/usermodes/3on3on3/default.cfg quake/ktx/configs/usermodes/4on4/default.cfg quake/ktx/configs/usermodes/4on4on4/default.cfg quake/ktx/configs/usermodes/XonX/default.cfg quake/ktx/configs/usermodes/amphi.cfg quake/ktx/configs/usermodes/amphi2.cfg quake/ktx/configs/usermodes/aqui.cfg quake/ktx/configs/usermodes/arena3.cfg quake/ktx/configs/usermodes/ca/default.cfg quake/ktx/configs/usermodes/ctf/default.cfg quake/ktx/configs/usermodes/ctf/qwq3wcp9.cfg quake/ktx/configs/usermodes/default.cfg quake/ktx/configs/usermodes/dm2dmm4.cfg quake/ktx/configs/usermodes/dm2dmm4_2.cfg quake/ktx/configs/usermodes/dmm4_1.cfg quake/ktx/configs/usermodes/dmm4_2.cfg quake/ktx/configs/usermodes/dmm4_3.cfg quake/ktx/configs/usermodes/dmm4_4.cfg quake/ktx/configs/usermodes/dmm4_5.cfg quake/ktx/configs/usermodes/dmm4_6.cfg quake/ktx/configs/usermodes/dmm4_7.cfg quake/ktx/configs/usermodes/dmm4_8.cfg quake/ktx/configs/usermodes/dmm4_9.cfg quake/ktx/configs/usermodes/end.cfg quake/ktx/configs/usermodes/end2.cfg quake/ktx/configs/usermodes/endif.cfg quake/ktx/configs/usermodes/ffa/default.cfg quake/ktx/configs/usermodes/hammer.cfg quake/ktx/configs/usermodes/hammerv2.cfg quake/ktx/configs/usermodes/hammerv3.cfg quake/ktx/configs/usermodes/matchless/arena3.cfg quake/ktx/configs/usermodes/matchless/arena5.cfg quake/ktx/configs/usermodes/matchless/barrel.cfg quake/ktx/configs/usermodes/matchless/bloodfest.cfg quake/ktx/configs/usermodes/matchless/ctf.cfg quake/ktx/configs/usermodes/matchless/default.cfg quake/ktx/configs/usermodes/matchless/dm4ish.cfg quake/ktx/configs/usermodes/matchless/e1m7.cfg quake/ktx/configs/usermodes/matchless/genocide.cfg quake/ktx/configs/usermodes/matchless/hohoho.cfg quake/ktx/configs/usermodes/matchless/kenya.cfg quake/ktx/configs/usermodes/matchless/q1dm17.cfg quake/ktx/configs/usermodes/matchless/slaug.cfg quake/ktx/configs/usermodes/nacmidair.cfg quake/ktx/configs/usermodes/noentry.cfg quake/ktx/configs/usermodes/oldcrat.cfg quake/ktx/configs/usermodes/outpost.cfg quake/ktx/configs/usermodes/povdmm4.cfg quake/ktx/configs/usermodes/povdmm4a.cfg quake/ktx/configs/usermodes/povdmm4b.cfg quake/ktx/configs/usermodes/pushdmm4.cfg quake/ktx/configs/usermodes/schlossdmm4.cfg quake/ktx/configs/usermodes/sewer.cfg quake/ktx/configs/usermodes/tearena.cfg quake/ktx/configs/usermodes/tot/dm4.cfg quake/ktx/configs/usermodes/tot/e1m2.cfg quake/ktx/configs/usermodes/tot/schloss.cfg @dir(,%%QWGROUP%%,0775) quake/ktx/demos @sample quake/ktx/ktx.cfg.sample @sample quake/ktx/listip.cfg.sample @sample quake/ktx/matchless.cfg.sample @sample quake/ktx/mvdfinish.qws.sample @sample quake/ktx/mvdsv.cfg.sample @sample quake/ktx/port1.cfg.sample @sample quake/ktx/port2.cfg.sample @sample quake/ktx/port3.cfg.sample @sample quake/ktx/problem.cfg.sample quake/ktx/progs/bit.mdl quake/ktx/progs/check.mdl quake/ktx/progs/finish.mdl quake/ktx/progs/flag.mdl quake/ktx/progs/spawn.mdl quake/ktx/progs/star.mdl quake/ktx/progs/start.mdl quake/ktx/progs/v_coil.mdl quake/ktx/progs/v_star.mdl quake/ktx/progs/vwplayer.mdl quake/ktx/progs/w_axe.mdl quake/ktx/progs/w_coil.mdl quake/ktx/progs/w_light.mdl quake/ktx/progs/w_nail.mdl quake/ktx/progs/w_nail2.mdl quake/ktx/progs/w_rock.mdl quake/ktx/progs/w_rock2.mdl quake/ktx/progs/w_shot.mdl quake/ktx/progs/w_shot2.mdl @sample(,%%QWGROUP%%,0640) quake/ktx/pwd.cfg.sample quake/ktx/qwprogs.so @dir(,%%QWGROUP%%,0775) quake/ktx/race quake/ktx/race/routes/2bfree.route quake/ktx/race/routes/aerowalk.route quake/ktx/race/routes/bravado.route quake/ktx/race/routes/catalyst.route quake/ktx/race/routes/cmt3.route quake/ktx/race/routes/dm1.route quake/ktx/race/routes/dm2.route quake/ktx/race/routes/dm3.route quake/ktx/race/routes/dm4.route quake/ktx/race/routes/dm5.route quake/ktx/race/routes/dm6.route quake/ktx/race/routes/dungeonsurf.route quake/ktx/race/routes/e1m2.route quake/ktx/race/routes/escape2a.route quake/ktx/race/routes/hoppa2.route quake/ktx/race/routes/jqdf1.route quake/ktx/race/routes/jqdf3.route quake/ktx/race/routes/monsoon.route quake/ktx/race/routes/mvdsv-kg.route quake/ktx/race/routes/q1q3toxicity.route quake/ktx/race/routes/race1.route quake/ktx/race/routes/race10.route quake/ktx/race/routes/race2.route quake/ktx/race/routes/race3.route quake/ktx/race/routes/race4.route quake/ktx/race/routes/race5.route quake/ktx/race/routes/race6.route quake/ktx/race/routes/race7.route quake/ktx/race/routes/race8.route quake/ktx/race/routes/race9.route quake/ktx/race/routes/rampcity.route quake/ktx/race/routes/rawspeed.route quake/ktx/race/routes/rj3.route quake/ktx/race/routes/shifter.route quake/ktx/race/routes/slide1.route quake/ktx/race/routes/slide2.route quake/ktx/race/routes/slide3.route quake/ktx/race/routes/slide4.route quake/ktx/race/routes/slide5.route quake/ktx/race/routes/slide6.route quake/ktx/race/routes/slide7.route quake/ktx/race/routes/slide8.route quake/ktx/race/routes/slide9.route quake/ktx/race/routes/slidefox.route quake/ktx/race/routes/slstart.route quake/ktx/race/routes/speedrush.route quake/ktx/race/routes/subslide.route quake/ktx/race/routes/toxicity_ql.route quake/ktx/race/routes/toxicity_test.route quake/ktx/race/routes/toxicity_test2.route quake/ktx/race/routes/zjumps.route quake/ktx/race/routes/ztndm3.route quake/ktx/race/routes/ztricks.route quake/ktx/race/routes/ztricks2.route @sample quake/ktx/server.cfg.sample quake/ktx/sound/misc/flagcap.wav quake/ktx/sound/misc/flagtk.wav quake/ktx/sound/ra/1.wav quake/ktx/sound/ra/2.wav quake/ktx/sound/ra/3.wav quake/ktx/sound/ra/excelent.wav quake/ktx/sound/ra/fight.wav quake/ktx/sound/ra/flawless.wav quake/ktx/sound/rune/rune1.wav quake/ktx/sound/rune/rune2.wav quake/ktx/sound/rune/rune22.wav quake/ktx/sound/rune/rune3.wav quake/ktx/sound/rune/rune4.wav quake/ktx/sound/weapons/bounce2.wav quake/ktx/sound/weapons/chain1.wav quake/ktx/sound/weapons/chain2.wav quake/ktx/sound/weapons/chain3.wav quake/ktx/sound/weapons/coilgun.wav @sample quake/ktx/vip_ip.cfg.sample @sample quake/port1.sample @sample quake/port2.sample @sample quake/port3.sample @sample quake/portffa.sample @sample quake/servers.sample quake/qw/maps/arena3.ent quake/qw/maps/arena5.ent quake/qw/maps/barrel.ent quake/qw/maps/bloodfest.ent quake/qw/maps/ctf/dm1.ent quake/qw/maps/ctf/dm2.ent quake/qw/maps/ctf/dm3.ent quake/qw/maps/ctf/dm4.ent quake/qw/maps/ctf/dm5.ent quake/qw/maps/ctf/dm6.ent quake/qw/maps/ctf/e1m1.ent quake/qw/maps/ctf/e1m2.ent quake/qw/maps/ctf/e1m3.ent quake/qw/maps/ctf/e1m4.ent quake/qw/maps/ctf/e1m5.ent quake/qw/maps/ctf/e1m6.ent quake/qw/maps/ctf/e1m7.ent quake/qw/maps/ctf/e1m8.ent quake/qw/maps/ctf/e2m1.ent quake/qw/maps/ctf/e2m2.ent quake/qw/maps/ctf/e2m3.ent quake/qw/maps/ctf/e2m4.ent quake/qw/maps/ctf/e2m5.ent quake/qw/maps/ctf/e2m6.ent quake/qw/maps/ctf/e2m7.ent quake/qw/maps/ctf/e3m1.ent quake/qw/maps/ctf/e3m2.ent quake/qw/maps/ctf/e3m3.ent quake/qw/maps/ctf/e3m4.ent quake/qw/maps/ctf/e3m5.ent quake/qw/maps/ctf/e3m6.ent quake/qw/maps/ctf/e3m7.ent quake/qw/maps/ctf/e4m1.ent quake/qw/maps/ctf/e4m2.ent quake/qw/maps/ctf/e4m3.ent quake/qw/maps/ctf/e4m4.ent quake/qw/maps/ctf/e4m5.ent quake/qw/maps/ctf/e4m6.ent quake/qw/maps/ctf/e4m7.ent quake/qw/maps/ctf/e4m8.ent quake/qw/maps/ctf/fcast.ent quake/qw/maps/death6.ent quake/qw/maps/dm4ish.ent quake/qw/maps/e1m7.ent quake/qw/maps/fragyard.ent quake/qw/maps/genocide.ent quake/qw/maps/hohoho.ent quake/qw/maps/kenya.ent quake/qw/maps/pillar.ent quake/qw/maps/q1dm17.ent quake/qw/maps/rz1pondb.ent quake/qw/maps/slaug.ent