Skip to content

Commit 8161b4d

Browse files
committed
Add tournament and gameplay docs, update commands and cvars
Added new documentation for gameplay balance, gametypes/modifiers, monsters, spawn points, and tournaments. Updated command and cvar references for new tournament and practice features, clarified map system fields, and improved documentation structure and terminology throughout. Code and menu changes support new tournament logic, forfeit voting, and expanded admin tools.
1 parent c6e8182 commit 8161b4d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+35665
-28712
lines changed

README.md

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ It dramatically extends entity and gameplay support, integrates modern competiti
2828
**WORR** transforms QUAKE II’s multiplayer into a flexible, competitive, and feature-rich platform.
2929

3030
#### Gametypes
31-
- **18 competitive gametypes plus Practice Mode**, including:
31+
- **18 competitive gametypes plus a practice format**, including:
3232
- *Duel, Domination, Head Hunters, Clan Arena, Freeze Tag* and more
33-
- *Practice Mode* for no-score warmups with self-damage disabled
33+
- *Practice format* for no-score warmups
3434

3535
#### Game Modifiers
3636
- Unique match modifiers such as:
@@ -53,14 +53,9 @@ It dramatically extends entity and gameplay support, integrates modern competiti
5353
- Dynamic **match announcer** for event feedback
5454
- **QUAKE** and **QUAKE III: ARENA-style rulesets** that auto-apply during compatible maps
5555

56-
## Documentation & Wiki
57-
- Browse the [WORR Knowledge Base](https://github.com/themuffinator/WORR-kex/wiki) for persona guides, cvar/command references, and feature overviews tailored to hosts, players, designers, and programmers. See [wiki/Home.md](wiki/Home.md) for the source file.
58-
- Markdown sources for the live wiki live in the repository's [wiki/](wiki/) folder so documentation changes can travel alongside code updates.
59-
60-
---
61-
6256
## Documentation
63-
- **[WORR Wiki](docs/wiki/index.md)** - Persona-focused guides for server hosts, players, level designers, and programmers, plus links to broader reference material.
57+
- **[WORR Knowledge Base](docs/wiki/index.md)** - Persona-focused guides for server hosts, players, level designers, and programmers, plus links to broader reference material.
58+
- **GitHub Wiki** - Published copy of the knowledge base for quick browsing: https://github.com/themuffinator/WORR-kex/wiki (mirrors `docs/wiki/` via `wiki/`).
6459
- Additional technical references live throughout the [`docs/`](docs/) directory, including changelog comparisons and versioning policy.
6560

6661
> WORR does not currently ship a standalone web UI. To browse the wiki, open the Markdown files directly in your editor or render them with your preferred static site tooling.

docs/g_vote_flags.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# `g_vote_flags` Reference
22

33
The `g_vote_flags` cvar controls which vote types players can initiate. By
4-
default the server enables every vote (`g_vote_flags 8191`) so the Call Vote menu
4+
default the server enables every vote (`g_vote_flags 16383`) so the Call Vote menu
55
lists all available actions. You can override this by setting the cvar to the
66
bitwise OR of the options you want to allow.
77

@@ -20,5 +20,6 @@ bitwise OR of the options you want to allow.
2020
| 10 | 1024 | `balance` | Balance teams without a shuffle. |
2121
| 11 | 2048 | `ruleset` | Change the active ruleset. |
2222
| 12 | 4096 | `arena` | Switch to another arena in Arena/RA2 modes. |
23+
| 13 | 8192 | `forfeit` | End the current match by vote. |
2324

2425
Enable the flags that match the entries you want to appear in the Call Vote menu.

docs/headhunters.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Head Hunters is a WORR multiplayer mode that rewards risk management and map awa
66

77
- **Heads on death.** Each player drops every head they were holding when eliminated. The server spawns physical skull pickups that can be scooped up by anyone in play.
88
- **Carry limit.** Players may hold up to 20 heads at a time; attempting to grab more while at the cap ignores the pickup.
9-
- **Deposit to score.** Touching a receptacle while carrying heads awards triangular scoring`1 + 2 + + n`so bigger runs pay off exponentially (e.g., 3 heads = 6 points, 5 heads = 15). The deposit also resets the carriers held heads and triggers the receptacle spike display.
9+
- **Deposit to score.** Touching a receptacle while carrying heads awards triangular scoring-`1 + 2 + ... + n`-so bigger runs pay off exponentially (e.g., 3 heads = 6 points, 5 heads = 15). The deposit also resets the carrier's held heads and triggers the receptacle spike display.
1010
- **HUD feedback.** While Head Hunters is active, the HUD exposes the number of heads you currently hold so you know when it is safe to bank or keep hunting.
1111

1212
## Map Setup

docs/mapsystem.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ <h3>Schema</h3>
7070
<tr>
7171
<td><code>gametype</code></td>
7272
<td>integer</td>
73-
<td>Default gametype index loaded when the map boots (`0` is Practice Mode for no-score warmups with self-damage disabled).</td>
73+
<td>Default gametype index loaded when the map boots (omit or use <code>0</code> for no override).</td>
7474
<td><strong>Gates auto-rotation.</strong> Used when a cycle entry omits overrides.</td>
7575
</tr>
7676
<tr>
@@ -80,7 +80,7 @@ <h3>Schema</h3>
8080
<td><strong>Gates rotation.</strong> Selector avoids mismatched rulesets for the current playlist.</td>
8181
</tr>
8282
<tr>
83-
<td><code>scorelimit</code>, <code>timelimit</code></td>
83+
<td><code>scorelimit</code>, <code>timeLimit</code></td>
8484
<td>integer</td>
8585
<td>Per-map overrides for match objectives.</td>
8686
<td>Applied on load; does not affect selection.</td>
@@ -109,7 +109,7 @@ <h3>Example Entry</h3>
109109
"gametype": 1,
110110
"ruleset": 0,
111111
"scorelimit": 30,
112-
"timelimit": 15,
112+
"timeLimit": 15,
113113
"popular": true
114114
},
115115
{

docs/wiki/commands.md

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,14 @@ These flags appear in each `RegisterCommand` call alongside the handler function
5656
- *Syntax:* `end_match`
5757
- *Permissions:* Admin-only; usable while spectating or during intermission.
5858
- *Example:* `\end_match`
59-
- **`reset_match`** Restarts the live match after confirming it has begun and is not already at intermission.
59+
- **`reset_match`** - Restarts the live match after confirming it has begun and is not already at intermission.
6060
- *Syntax:* `reset_match`
6161
- *Permissions:* Admin-only; usable while spectating or during intermission.
6262
- *Example:* `\reset_match`
63+
- **`replay`** - Replays a specific tournament game in the current match set (confirmation required).
64+
- *Syntax:* `replay <game#> [confirm]`
65+
- *Permissions:* Admin-only; usable while spectating or during intermission.
66+
- *Example:* `\replay 2 confirm`
6367
- **`map_restart`** — Issues a `gamemap` reload for the current BSP, effectively soft-restarting the server session.
6468
- *Syntax:* `map_restart`
6569
- *Permissions:* Admin-only; usable while spectating or during intermission.
@@ -103,10 +107,10 @@ These flags appear in each `RegisterCommand` call alongside the handler function
103107
- *Syntax:* `arena [number]`
104108
- *Permissions:* Admin-only; callable while spectating (intermission restricted).
105109
- *Example:* `\arena 3`
106-
- **`gametype`** Lists available gametypes on `?` and switches modes when supplied a valid identifier; use `practice` for no-score warmups with self-damage disabled.
110+
- **`gametype`** - Lists available gametypes on `?` and switches modes when supplied a valid identifier; `none` sets a no-score ruleset (also disables self-damage). For persistent warmup sessions, set `g_practice 1`.
107111
- *Syntax:* `gametype <name>`
108112
- *Permissions:* Admin-only; usable while spectating or during intermission.
109-
- *Example:* `\gametype practice`
113+
- *Example:* `\gametype duel`
110114
- **`ruleset`** — Shows the active ruleset and applies a new one by identifier, updating the `g_ruleset` cvar.
111115
- *Syntax:* `ruleset <q1|q2|q3a>`
112116
- *Permissions:* Admin-only; usable while spectating or during intermission.
@@ -142,19 +146,35 @@ These flags appear in each `RegisterCommand` call alongside the handler function
142146
- *Syntax:* `forfeit`
143147
- *Permissions:* Usable while dead; flood-exempt.
144148
- *Example:* `\forfeit`
145-
- **`timeout`** / **`timein`** Starts a timeout (respecting per-player limits) or ends one if called by the owner or an admin.
149+
- **`timeout`** / **`timein`** - Starts a timeout (respecting per-player limits) or ends one if called by the owner or an admin.
146150
- *Syntax:* `timeout` / `timein`
147151
- *Permissions:* Usable while dead or spectating.
148152
- *Example:* `\timeout`
149-
- **`timer`** Toggles the HUD match timer widget for the caller.
153+
- **`timer`** - Toggles the HUD match timer widget for the caller.
150154
- *Syntax:* `timer`
151155
- *Permissions:* Usable while dead or spectating.
152156
- *Example:* `\timer`
153-
- **`putaway`** Closes active menus, scoreboards, and help screens, restoring the regular HUD.
157+
- **`putaway`** - Closes active menus, scoreboards, and help screens, restoring the regular HUD.
154158
- *Syntax:* `putaway`
155159
- *Permissions:* Usable while spectating.
156160
- *Example:* `\putaway`
157161

162+
### Tournament veto tools
163+
164+
- Tournament vetoes are menu-driven; captains (or the home/away players in FFA) can still use the commands below when needed.
165+
- **`tourney_pick`** - Selects a map for the tournament series during the veto phase (captain only).
166+
- *Syntax:* `tourney_pick <mapname>`
167+
- *Permissions:* Usable while dead or spectating.
168+
- *Example:* `\tourney_pick q2dm1`
169+
- **`tourney_ban`** - Bans a map from the tournament series during the veto phase (captain only).
170+
- *Syntax:* `tourney_ban <mapname>`
171+
- *Permissions:* Usable while dead or spectating.
172+
- *Example:* `\tourney_ban q2dm2`
173+
- **`tourney_status`** - Prints the current tournament pool, picks, bans, and whose turn is next.
174+
- *Syntax:* `tourney_status`
175+
- *Permissions:* Usable while dead or spectating.
176+
- *Example:* `\tourney_status`
177+
158178
### Spectating and camera tools
159179

160180
- **`follow`** — As a spectator, lock the camera onto a named or numbered player after validating they are active.

docs/wiki/cvars.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,32 @@ This reference consolidates the gameplay-facing console variables (cvars) that W
2424
| `roundtimelimit` | `2` | Serverinfo | Minutes allotted per round before sudden-death logic kicks in. |
2525
| `mercylimit` | `0` | Live | Ends lopsided matches early when a team exceeds the margin. |
2626
| `noplayerstime` | `10` | Live | Seconds the map stays active without human players before resetting. |
27-
| `marathon` | `0` | Serverinfo | Enables Marathon leg chaining; consult timers below. |
28-
| `g_marathon_timelimit` | `0` | Live | Overrides leg duration when Marathon mode is active. |
29-
| `g_marathon_scorelimit` | `0` | Live | Score cap per leg in Marathon runs. |
27+
| `marathon` | `0` | Serverinfo | Explicit Marathon toggle; non-zero leg limits also enable chaining. |
28+
| `g_marathon_timelimit` | `0` | Live | Minutes per leg; setting this enables Marathon advancement. |
29+
| `g_marathon_scorelimit` | `0` | Live | Score delta per leg; setting this enables Marathon advancement. |
3030
| `match_start_no_humans` | `1` | Live | Defers countdown until a human joins the lobby. |
3131
| `match_auto_join` | `1` | Live | Auto-slots players onto teams as they connect. |
3232
| `match_force_join` | `0` | Live | Forces ready players into teams when the match starts. |
3333
| `match_do_force_respawn` | `1` | Live | Re-spawns eliminated players after `match_force_respawn_time`. |
3434
| `match_force_respawn_time` | `2.4` | Live | Seconds before a forced respawn occurs. |
3535
| `match_do_overtime` | `120` | Live | Adds the listed seconds of overtime to 1v1 matches that tie at regulation. |
36+
| `g_allow_duel_queue` | `1` | Live | Enables duel/gauntlet queueing; tournaments always disable this and clear the queue. |
3637
| `match_timeout_length` | `120` | Live | Duration (seconds) of player-called timeouts; `0` disables the feature. |
3738
| `warmup_enabled` | `1` | Live | Enables the warmup lobby cycle after map load. |
3839
| `warmup_do_ready_up` | `0` | Live | Requires players to ready-up before the countdown starts. |
3940
| `g_warmup_countdown` | `10` | Live | Seconds the start timer runs once ready-up conditions are satisfied. |
4041
| `g_warmup_ready_percentage` | `0.51f` | Live | Fraction of ready players required when ready-up is enabled. |
42+
| `g_practice` | `0` | Serverinfo | Keeps the lobby in warmup (no scoring) for practice sessions. |
43+
| `match_setup_length` | `standard` | Live | Stores match setup length preset (short/standard/long/endurance). |
44+
| `match_setup_type` | `standard` | Live | Stores match setup type preset (casual/standard/competitive/tournament). |
45+
| `match_setup_bestof` | `bo1` | Live | Stores match setup series length (BO1/BO3/BO5/BO7/BO9). |
46+
| `g_tourney_cfg` | `tourney.json` | Live | Tournament config filename resolved in the active gamedir or `baseq2`. |
4147

4248
### Player lifecycle & loadouts
4349

4450
| Cvar | Default | Scope | Usage |
4551
| --- | --- | --- | --- |
46-
| `match_crosshair_ids` | `1` | Live | Shows friendly names when aiming at teammates. |
52+
| `match_crosshair_ids` | `1` | Live | Shows player names when aiming at other players. |
4753
| `match_holdable_adrenaline` | `1` | Live | Allows adrenaline holdable pickup outside duel presets. |
4854
| `match_instant_items` | `1` | Live | Grants items immediately on pickup (no use delay). |
4955
| `match_items_respawn_rate` | `1.0` | Live | Global multiplier on item respawn timers. |
@@ -54,6 +60,7 @@ This reference consolidates the gameplay-facing console variables (cvars) that W
5460
| `match_allow_teleporter_pads` | `1` | Live | Keeps teleporter pads available for spawn logic. |
5561
| `match_weapons_stay` | `0` | Live | When set, weapon pickups persist after being claimed. |
5662
| `match_drop_cmd_flags` | `7` | Live | Bitmask of inventory types dropped with the `drop` command. |
63+
| `g_ghost_min_play_time` | `60` | Live | Seconds of live play required before reconnect ghost data is persisted. |
5764
| `g_start_items` | `` | Live | Seed inventory items granted on spawn. |
5865
| `g_starting_health` | `100` | Live | Base health on spawn before bonuses apply. |
5966
| `g_starting_health_bonus` | `25` | Live | Temporary bonus health that decays to the base value. |
@@ -75,7 +82,7 @@ This reference consolidates the gameplay-facing console variables (cvars) that W
7582
| `g_allow_vote_mid_game` | `0` | Live | Blocks new votes once a match is underway when `0`. |
7683
| `g_allow_spec_vote` | `0` | Live | Lets spectators initiate votes when enabled. |
7784
| `g_allow_forfeit` | `1` | Live | Unlocks the `forfeit` vote/command path. |
78-
| `g_vote_flags` | `8191` | Live | Bitmask of vote commands available to players; see [Voting Flags](../g_vote_flags.md). |
85+
| `g_vote_flags` | `16383` | Live | Bitmask of vote commands available to players (includes `forfeit`); see [Voting Flags](../g_vote_flags.md). |
7986
| `g_vote_limit` | `3` | Live | Number of failed votes before a player is throttled. |
8087
| `g_allow_mymap` | `1` | Live | Enables per-player MyMap queue submissions. |
8188
| `g_allow_custom_skins` | `1` | Live | Lets clients stream custom skin assets when permitted by policy. |
@@ -97,14 +104,14 @@ This reference consolidates the gameplay-facing console variables (cvars) that W
97104
| `g_maps_allow_custom_sounds` | `1` | Live | Same as above for audio packages. |
98105
| `match_maps_list` | `` | Live | Inline rotation fallback processed when the pool is empty. |
99106
| `match_maps_list_shuffle` | `1` | Live | Shuffles the inline rotation once it loops, avoiding repeats. |
100-
| `g_mapspawn_no_bfg` | `0` | Live | Strips BFG spawns from maps that include them. |
101-
| `g_mapspawn_no_plasmabeam` | `0` | Live | Removes Plasma Beam spawns when toggled. |
107+
| `g_mapspawn_no_bfg` | `0` | Live | Strips BFG spawns from maps with BFG-less options. |
108+
| `g_mapspawn_no_plasmabeam` | `0` | Live | Strips Plasma Beam spawns from maps with Beam-less options. |
102109

103110
### Gametype & ruleset management
104111

105112
| Cvar | Default | Scope | Usage |
106113
| --- | --- | --- | --- |
107-
| `g_gametype` | `1` (`ffa`) | Serverinfo | Primary gametype switch; `0` is Practice Mode (no-score, no self-damage). |
114+
| `g_gametype` | `1` (`ffa`) | Serverinfo | Primary gametype switch; `0` is `none` (no-score ruleset that also disables self-damage). |
108115
| `g_ruleset` | `RS_Q2` | Serverinfo | Applies predefined gameplay rule bundles; auto-corrected via `CheckRuleset`. |
109116
| `g_level_rulesets` | `0` | Live | Lets maps override the active ruleset when set. |
110117
| `deathmatch` | `1` | Latch | Baseline deathmatch toggle; enforced when team modes require it. |
@@ -122,6 +129,7 @@ This reference consolidates the gameplay-facing console variables (cvars) that W
122129
| `g_quadhog` | `0` | Serverinfo + Latch | Restricts Quad distribution to a single player at a time. |
123130
| `g_nadeFest` | `0` | Serverinfo + Latch | Forces grenade-focused loadouts in supported modes. |
124131
| `g_frenzy` | `0` | Serverinfo + Latch | Activates Frenzy rules for high-velocity matches. |
132+
| `g_gravity_lotto` | `0` | Live | Enables Gravity Lotto modifier presets. |
125133
| `g_domination_*` | `see defaults` | Live | Tunes Domination tick cadence, capture speeds, and bonuses. |
126134
| `g_coop_*` | `see defaults` | Latch | Coop campaign toggles for collision, lives, and instanced items. |
127135
| `g_lms_num_lives` | `4` | Latch | Starting lives for LMS/LTS variants. |
@@ -241,9 +249,6 @@ This reference consolidates the gameplay-facing console variables (cvars) that W
241249
| `g_dm_random_items` | `0` | Live | Enables item randomizer for DM playlists. |
242250
| `g_dm_strong_mines` | `0` | Live | Buffs mines in DM playlists. |
243251
| `g_frag_messages` | `1` | Live | Broadcasts frag strings to clients. |
244-
| `g_owner_push_scores` | `1` | Live | Keeps lobby owners syncing scoreboard data. |
245-
| `g_matchstats` | `0` | Live | Controls per-match stat dumps (see Analytics). |
246-
| `g_auto_screenshot_tool` | `0` | Live | Signals screenshot automation (see Analytics). |
247252

248253
## Related persona guides
249254

0 commit comments

Comments
 (0)