Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
273 commits
Select commit Hold shift + click to select a range
5c56f42
Remove unused freeze implementation
themuffinator Nov 11, 2025
f8aaf0e
Merge pull request #66 from themuffinator/codex/locate-10-bugs-or-saf…
themuffinator Nov 11, 2025
13067b4
Fix broadcast filters and stabilize string helpers
themuffinator Nov 11, 2025
7b36f8b
Merge pull request #67 from themuffinator/codex/find-and-resolve-10-bugs
themuffinator Nov 11, 2025
6db605b
plasmabeam knockback fix for muffmode ruleset
themuffinator Nov 11, 2025
24061a3
Make fmt header-only in release
themuffinator Nov 11, 2025
e51338e
Merge pull request #68 from themuffinator/codex/find-method-to-reduce…
themuffinator Nov 11, 2025
f9e610f
Harden ExitLevel intermission screenshot handling
themuffinator Nov 13, 2025
e78b90f
Merge pull request #69 from themuffinator/codex/analyze-and-improve-e…
themuffinator Nov 13, 2025
02e556a
Fix map list shuffle format usage
themuffinator Nov 13, 2025
4735073
Merge pull request #70 from themuffinator/codex/fix-constant-evaluati…
themuffinator Nov 13, 2025
c8b4115
Fix screenshot command format strings
themuffinator Nov 13, 2025
b87bd2d
Merge pull request #71 from themuffinator/codex/fix-constexpr-evaluat…
themuffinator Nov 13, 2025
f93ddf6
couple safety checks, version to 0.21.01
themuffinator Nov 13, 2025
882dbc6
Ensure override checks see updated map name
themuffinator Nov 19, 2025
2ba37a2
Merge pull request #72 from themuffinator/codex/reorder-mapname-assig…
themuffinator Nov 19, 2025
4a9f027
Reset num_entities after clearing entity array
themuffinator Nov 19, 2025
b0fae34
Merge pull request #73 from themuffinator/codex/update-entity-allocat…
themuffinator Nov 19, 2025
c459cde
Fix server loading flag handling
themuffinator Nov 19, 2025
f68e390
Merge branch 'main' into codex/update-spawnentities-to-manage-server_…
themuffinator Nov 19, 2025
0989656
Merge pull request #74 from themuffinator/codex/update-spawnentities-…
themuffinator Nov 19, 2025
104bd5c
Reset level state without memset
themuffinator Nov 19, 2025
02b93ba
Merge branch 'main' into codex/replace-memset-with-value-initializati…
themuffinator Nov 19, 2025
94198ac
Merge pull request #75 from themuffinator/codex/replace-memset-with-v…
themuffinator Nov 19, 2025
895a5fc
Preserve level entity string
themuffinator Nov 19, 2025
d939e1c
Refactor SpawnEntities entity parsing
themuffinator Nov 19, 2025
430a622
Merge branch 'main' into codex/refactor-spawnentities-for-code-reuse
themuffinator Nov 19, 2025
080fc24
Merge pull request #77 from themuffinator/codex/refactor-spawnentitie…
themuffinator Nov 19, 2025
00e6370
Merge branch 'main' into codex/fix-level.entstring-population-after-r…
themuffinator Nov 19, 2025
2e961f2
Merge pull request #76 from themuffinator/codex/fix-level.entstring-p…
themuffinator Nov 19, 2025
e41cb45
Fix intermission angles
themuffinator Nov 19, 2025
628b919
Merge pull request #78 from themuffinator/codex/refactor-angle-vector…
themuffinator Nov 19, 2025
5f3694d
Guard intermission pitch hacks when spawn missing
themuffinator Nov 19, 2025
782a9a2
Merge branch 'main' into codex/add-null-checks-for-ent-in-pitch-adjus…
themuffinator Nov 19, 2025
3beb636
Merge pull request #79 from themuffinator/codex/add-null-checks-for-e…
themuffinator Nov 19, 2025
ee56ee2
Clamp maxclients to safe bounds
themuffinator Nov 19, 2025
6b486ce
Merge pull request #80 from themuffinator/codex/clamp-maxclients-in-i…
themuffinator Nov 19, 2025
f81be4e
Fix TagMalloc tags in load paths
themuffinator Nov 19, 2025
5edb1d9
Merge branch 'main' into codex/update-gi.tagmalloc-calls-in-load/save…
themuffinator Nov 19, 2025
766bb42
Merge pull request #81 from themuffinator/codex/update-gi.tagmalloc-c…
themuffinator Nov 19, 2025
3691b9a
Fix team balancing loop guard
themuffinator Nov 19, 2025
52729f4
Merge pull request #82 from themuffinator/codex/new-task
themuffinator Nov 19, 2025
68ef679
Ensure map restart resets world state
themuffinator Nov 19, 2025
6a6f4e2
Merge pull request #83 from themuffinator/codex/implement-map-restart…
themuffinator Nov 19, 2025
6ffc27a
Improve map list validation in setmap command
themuffinator Nov 19, 2025
bc5547b
Merge pull request #84 from themuffinator/codex/refine-map-validation…
themuffinator Nov 19, 2025
8d69ec5
Defer team balance during rounds
themuffinator Nov 19, 2025
f52f38f
Merge pull request #85 from themuffinator/codex/update-cmd_balancetea…
themuffinator Nov 19, 2025
23def0c
Handle duplicate save registry entries
themuffinator Nov 19, 2025
854c010
Merge pull request #86 from themuffinator/codex/detect-and-handle-dup…
themuffinator Nov 19, 2025
796cfe8
Handle null trigger activators safely
themuffinator Nov 19, 2025
1a950b4
Merge pull request #87 from themuffinator/codex/add-null-checks-for-a…
themuffinator Nov 19, 2025
e3110ce
Use dynamic choice list for target selection
themuffinator Nov 19, 2025
2c57744
Merge pull request #88 from themuffinator/codex/replace-fixed-size-ch…
themuffinator Nov 19, 2025
064342c
Fix JSON stack pop handling
themuffinator Nov 19, 2025
95fc1b9
Merge branch 'main' into codex/adjust-json_pop_stack-for-last-segment
themuffinator Nov 19, 2025
e7f7413
Merge pull request #89 from themuffinator/codex/adjust-json_pop_stack…
themuffinator Nov 19, 2025
c5b2ab0
Handle invalid save data lookups
themuffinator Nov 19, 2025
112b89a
Merge branch 'main' into codex/update-save_data_list_t-fetch-error-ha…
themuffinator Nov 19, 2025
80277e5
Merge pull request #90 from themuffinator/codex/update-save_data_list…
themuffinator Nov 19, 2025
e328057
Add doppelganger pickup limits
themuffinator Nov 19, 2025
a379468
Merge pull request #92 from themuffinator/codex/implement-max-check-i…
themuffinator Nov 19, 2025
114b77c
Fix stuck object sorting range and add harness
themuffinator Nov 19, 2025
5fd46de
Merge pull request #93 from themuffinator/codex/update-sort-call-to-u…
themuffinator Nov 19, 2025
25fae1a
Add CTF spawn initialization and checks
themuffinator Nov 19, 2025
fb74322
Merge pull request #94 from themuffinator/codex/implement-red/blue-sp…
themuffinator Nov 19, 2025
32455f3
Preserve intermission scoreboard visibility
themuffinator Nov 19, 2025
49be904
Merge pull request #95 from themuffinator/codex/remove-conflicting-sh…
themuffinator Nov 19, 2025
f316a62
Implement victor string builder and HUD tests
themuffinator Nov 19, 2025
c05af22
Merge pull request #96 from themuffinator/codex/implement-victor-stri…
themuffinator Nov 19, 2025
c60a5c6
Handle COM_ParseEx buffer edge cases
themuffinator Nov 19, 2025
d227644
Merge pull request #97 from themuffinator/codex/add-guard-for-zero-le…
themuffinator Nov 19, 2025
01adf28
Make pain animation cycle per-client
themuffinator Nov 19, 2025
77de9e8
Merge pull request #98 from themuffinator/codex/move-pain-animation-i…
themuffinator Nov 19, 2025
08016f0
Guard Cmd_Give_f argc usage
themuffinator Nov 19, 2025
fc5b341
Merge pull request #99 from themuffinator/codex/add-argc-check-in-cmd…
themuffinator Nov 19, 2025
c1801e7
Preserve custom gravity during pushes
themuffinator Nov 19, 2025
7bdb1f4
Merge pull request #100 from themuffinator/codex/capture-and-restore-…
themuffinator Nov 19, 2025
8a16685
Avoid duplicate trigger touches during pushes
themuffinator Nov 19, 2025
1e7f2bb
Merge pull request #101 from themuffinator/codex/enhance-trigger-touc…
themuffinator Nov 19, 2025
a222987
Handle null think fallback
themuffinator Nov 19, 2025
aeba59a
Merge pull request #102 from themuffinator/codex/detect-null-think-fu…
themuffinator Nov 19, 2025
27f1167
Validate ground entity traces
themuffinator Nov 19, 2025
6a4248a
Merge pull request #103 from themuffinator/codex/add-null-check-for-g…
themuffinator Nov 19, 2025
9573bcf
Use canonical classname constants in saves
themuffinator Nov 19, 2025
73b9037
Merge pull request #104 from themuffinator/codex/refactor-save/load-f…
themuffinator Nov 19, 2025
bb24ffa
Cache hint path chains for monsters
themuffinator Nov 19, 2025
71f4894
Merge pull request #105 from themuffinator/codex/add-persistent-hint-…
themuffinator Nov 19, 2025
d8cced5
Sync chase camera visual effects
themuffinator Nov 19, 2025
e52acf0
Merge pull request #106 from themuffinator/codex/copy-shell-parameter…
themuffinator Nov 19, 2025
3ba631a
Improve water splash handling for piercing shots
themuffinator Nov 19, 2025
bb4d8c8
Merge pull request #107 from themuffinator/codex/revise-water-hit-log…
themuffinator Nov 19, 2025
b95991a
Handle gravity-aware bottom checks
themuffinator Nov 19, 2025
a22a238
Merge pull request #108 from themuffinator/codex/refactor-m_checkbott…
themuffinator Nov 19, 2025
1aeaa9f
Adjust grenade explosion origin
themuffinator Nov 19, 2025
c5acdad
Merge pull request #109 from themuffinator/codex/adjust-grenade-explo…
themuffinator Nov 19, 2025
7476245
Align stationary trigger spawn cleanup
themuffinator Nov 19, 2025
428271b
Merge pull request #110 from themuffinator/codex/update-stationary-mo…
themuffinator Nov 19, 2025
191840c
Add level steam effect id tracking
themuffinator Nov 19, 2025
678bbcb
Merge pull request #111 from themuffinator/codex/add-level-scoped-cou…
themuffinator Nov 19, 2025
781bcd2
Guard BroadcastFriendlyMessage when message is missing
themuffinator Nov 19, 2025
27d44fa
Merge pull request #113 from themuffinator/codex/add-null-check-for-m…
themuffinator Nov 19, 2025
ec38fb2
Add configurable doppelganger pickup limit
themuffinator Nov 19, 2025
8145f1d
Merge pull request #115 from themuffinator/codex/add-max-limit-for-do…
themuffinator Nov 19, 2025
95b4f15
Handle spawn checks with gravity vectors
themuffinator Nov 19, 2025
2f155a2
Merge pull request #116 from themuffinator/codex/modify-spawn-point-f…
themuffinator Nov 19, 2025
7a50398
Fix Windows build errors
themuffinator Nov 20, 2025
5aa565e
Merge pull request #117 from themuffinator/codex/fix-compilation-erro…
themuffinator Nov 20, 2025
9eac6a8
cleaning up
themuffinator Nov 20, 2025
ebdf9cb
Fix save data duplicate message formatting
themuffinator Nov 20, 2025
90140cc
Merge pull request #118 from themuffinator/codex/fix-undefined-struct…
themuffinator Nov 20, 2025
30d00da
Handle empty target selection choices
themuffinator Nov 20, 2025
b68de8d
Merge pull request #119 from themuffinator/codex/add-runtime-check-fo…
themuffinator Nov 20, 2025
dac8802
Refactor AI_GetSightClient allocation
themuffinator Nov 20, 2025
f151701
Merge pull request #120 from themuffinator/codex/replace-alloca-with-…
themuffinator Nov 20, 2025
dc7f696
Refactor killtarget iteration safety
themuffinator Nov 20, 2025
11687a6
Merge pull request #121 from themuffinator/codex/refactor-killtarget-…
themuffinator Nov 20, 2025
e257ecb
Copy delayed target strings
themuffinator Nov 20, 2025
f182207
Merge pull request #122 from themuffinator/codex/fix-delayed-use-help…
themuffinator Nov 20, 2025
9b3d0d5
Handle missing save link asserts
themuffinator Nov 20, 2025
56c9ebb
Merge pull request #123 from themuffinator/codex/refactor-save_data_l…
themuffinator Nov 20, 2025
90cb640
Add guard for notify expiration
themuffinator Nov 20, 2025
7355079
Merge pull request #124 from themuffinator/codex/add-maximum-iteratio…
themuffinator Nov 20, 2025
a3ce0a8
Refine packet filter byte packing
themuffinator Nov 20, 2025
9235bda
Merge pull request #125 from themuffinator/codex/refactor-stringtofil…
themuffinator Nov 20, 2025
8fa7559
Define save data constructor and add HUD victor build
themuffinator Nov 21, 2025
28b6901
Merge pull request #126 from themuffinator/codex/fix-unresolved-exter…
themuffinator Nov 21, 2025
456f01c
Create muffmode.png
themuffinator Nov 21, 2025
04bd5b1
Revise README formatting and content
themuffinator Nov 21, 2025
998a223
Update project name from 'Remastered' to 'Rerelease'
themuffinator Nov 21, 2025
7b19e75
Refresh README styling
themuffinator Nov 21, 2025
6e13561
Merge pull request #127 from themuffinator/codex/update-readme.md-wit…
themuffinator Nov 21, 2025
15d47cb
Clamp random target selection index
themuffinator Nov 22, 2025
aea1aea
Merge pull request #128 from themuffinator/codex/update-g_selectrando…
themuffinator Nov 22, 2025
4fc5780
Prevent ground spawns over water
themuffinator Nov 22, 2025
044b13c
Merge pull request #129 from themuffinator/codex/extend-checkgroundsp…
themuffinator Nov 22, 2025
0689275
Add client guard to CopyToBodyQue
themuffinator Nov 22, 2025
7a29c25
Merge pull request #130 from themuffinator/codex/add-guard-for-client…
themuffinator Nov 22, 2025
2d48fb1
Clamp shadow light setup to maximum
themuffinator Nov 22, 2025
ca0571c
Merge pull request #131 from themuffinator/codex/cap-iteration-and-co…
themuffinator Nov 22, 2025
8f383b2
Handle missing targets without asserting
themuffinator Nov 22, 2025
7c908f7
Merge pull request #132 from themuffinator/codex/modify-g_picktarget-…
themuffinator Nov 22, 2025
082cba2
Require Autodoc for regen
themuffinator Nov 22, 2025
8b8a95a
Merge pull request #133 from themuffinator/codex/update-tech_hasregen…
themuffinator Nov 22, 2025
a700f1a
Respect spawn height when checking ground
themuffinator Nov 22, 2025
5c7b0be
Merge pull request #134 from themuffinator/codex/implement-height-par…
themuffinator Nov 22, 2025
19f3084
Improve spawn clearance tracing
themuffinator Nov 22, 2025
f6ca571
Merge pull request #135 from themuffinator/codex/modify-checkspawnpoi…
themuffinator Nov 22, 2025
8c70f02
Add client null check when closing menu
themuffinator Nov 22, 2025
9f8ff3c
Merge pull request #136 from themuffinator/codex/add-null-check-for-e…
themuffinator Nov 22, 2025
36e5207
Fix menu text copy bounds and add coverage
themuffinator Nov 22, 2025
6bdf7fd
Merge pull request #137 from themuffinator/codex/update-q_strlcpy-usa…
themuffinator Nov 22, 2025
0d33861
Improve README header styling
themuffinator Nov 22, 2025
85a5e35
Merge pull request #138 from themuffinator/codex/center-align-readme-…
themuffinator Nov 22, 2025
9fa2ea9
Initialize activation message plan
themuffinator Nov 22, 2025
053e21c
Merge pull request #139 from themuffinator/codex/initialize-activatio…
themuffinator Nov 22, 2025
a1df643
Handle failed monster spawns in ground creation tests
themuffinator Nov 22, 2025
893263d
Merge pull request #140 from themuffinator/codex/handle-null-return-i…
themuffinator Nov 22, 2025
4a3194b
Clear spawnpoint on failed stuck resolution
themuffinator Nov 22, 2025
cabed84
Merge pull request #141 from themuffinator/codex/zero-spawnpoint-befo…
themuffinator Nov 22, 2025
78733d2
Make menu argument ownership explicit
themuffinator Nov 22, 2025
243986a
Merge pull request #142 from themuffinator/codex/refactor-p_menu_open…
themuffinator Nov 22, 2025
96e9858
Improve friendly message validation
themuffinator Nov 22, 2025
152ed4e
Merge pull request #143 from themuffinator/codex/update-friendlymessa…
themuffinator Nov 22, 2025
6f7c91a
Handle invalid random target indices
themuffinator Nov 22, 2025
107ceb8
Merge pull request #144 from themuffinator/codex/replace-clamping-wit…
themuffinator Nov 22, 2025
ac21893
Refine activation message test assertions
themuffinator Nov 22, 2025
12864d6
Merge pull request #145 from themuffinator/codex/refactor-activation-…
themuffinator Nov 22, 2025
b34452e
Fix gravity trace projection for spawn checks
themuffinator Nov 22, 2025
a04fb28
Merge pull request #146 from themuffinator/codex/fix-trace-volume-pro…
themuffinator Nov 22, 2025
958ad92
Update scoreboard footer separators
themuffinator Nov 22, 2025
07dca5a
Merge pull request #148 from themuffinator/codex/add-centrally-aligne…
themuffinator Nov 22, 2025
ab7551d
Handle failed CreateMonster in fly spawn
themuffinator Nov 22, 2025
bdf5f04
Merge pull request #149 from themuffinator/codex/check-createmonster-…
themuffinator Nov 22, 2025
f1c8b8f
Center README header cell content
themuffinator Nov 22, 2025
f3c4fa5
Update g_monster_spawn.cpp
themuffinator Nov 22, 2025
fa72747
Add bounds-checked menu layout builder
themuffinator Nov 22, 2025
bc848e4
Merge pull request #152 from themuffinator/codex/audit-p_menu_do_upda…
themuffinator Nov 22, 2025
aa9c755
Fix monster spawn vector helpers
themuffinator Nov 22, 2025
73c4c6a
Merge pull request #153 from themuffinator/codex/fix-compilation-erro…
themuffinator Nov 22, 2025
e377a4d
Center align README header content
themuffinator Nov 22, 2025
9f4a626
Merge pull request #151 from themuffinator/codex/centrally-align-tabl…
themuffinator Nov 22, 2025
5c15534
Fix vec3 abs constexpr
themuffinator Nov 22, 2025
fbbf769
Merge pull request #154 from themuffinator/codex/fix-constexpr-functi…
themuffinator Nov 22, 2025
90bed43
Fix CTF CTF spawn check and link status bar source
themuffinator Nov 22, 2025
74b5103
Merge pull request #155 from themuffinator/codex/fix-unresolved-exter…
themuffinator Nov 22, 2025
eccf54a
Add null data guard in COM_ParseEx
themuffinator Nov 23, 2025
30e354c
Merge pull request #156 from themuffinator/codex/add-null-check-in-co…
themuffinator Nov 23, 2025
f6a51da
Add null check to COM_IsSeparator
themuffinator Nov 23, 2025
3ca6e48
Merge pull request #157 from themuffinator/codex/add-null-check-for-s…
themuffinator Nov 23, 2025
7e22ea3
Ensure save names are stored safely
themuffinator Nov 23, 2025
559e77b
Merge pull request #159 from themuffinator/codex/adjust-save-data-reg…
themuffinator Nov 23, 2025
8cc9406
Add null name validation
themuffinator Nov 23, 2025
8cadcfd
Merge pull request #160 from themuffinator/codex/add-validation-for-n…
themuffinator Nov 23, 2025
72d9b91
Add underwater bubble effects for assisted breathing
themuffinator Nov 23, 2025
e3210b9
Merge pull request #161 from themuffinator/codex/add-bubble-sounds-fo…
themuffinator Nov 23, 2025
594ceda
Propagate chase powerup effects
themuffinator Nov 23, 2025
f0873e9
Merge pull request #162 from themuffinator/codex/extend-chase-camera-…
themuffinator Nov 23, 2025
b3cb90f
Reduce shambler explosion damage
themuffinator Nov 23, 2025
0f3ac31
Merge pull request #163 from themuffinator/codex/adjust-shambler-dama…
themuffinator Nov 23, 2025
e0a4198
Handle monster spawning with arbitrary gravity
themuffinator Nov 23, 2025
5fdcfc4
Merge pull request #164 from themuffinator/codex/revise-spawn-point-l…
themuffinator Nov 23, 2025
1894c8d
Cache entity string for gametype reset
themuffinator Nov 23, 2025
bc3c036
Merge pull request #165 from themuffinator/codex/implement-lightweigh…
themuffinator Nov 23, 2025
f3b9862
Handle inverted spawn drops
themuffinator Nov 23, 2025
c31429d
Merge pull request #166 from themuffinator/codex/extend-findspawnpoin…
themuffinator Nov 23, 2025
3ca1c79
Load admin list for admin sessions
themuffinator Nov 23, 2025
a5f6328
Merge pull request #167 from themuffinator/codex/add-admin-parsing-at…
themuffinator Nov 23, 2025
30a0b18
Cache entity string for faster match resets
themuffinator Nov 23, 2025
cef3358
Merge branch 'main' into codex/store-current-map-entity-string-before…
themuffinator Nov 23, 2025
6b8611b
Merge pull request #168 from themuffinator/codex/store-current-map-en…
themuffinator Nov 23, 2025
1e6d1c5
Improve medic reinforcement selection fairness
themuffinator Nov 23, 2025
9921471
Merge pull request #169 from themuffinator/codex/refine-m_pickreinfor…
themuffinator Nov 23, 2025
a9d8993
Refactor findradius midpoint calculation
themuffinator Nov 23, 2025
e76b299
Merge pull request #170 from themuffinator/codex/refactor-findradius-…
themuffinator Nov 23, 2025
da8cd04
Add engine version metadata to game saves
themuffinator Nov 23, 2025
d29b6f5
Merge pull request #171 from themuffinator/codex/add-engine/version-f…
themuffinator Nov 23, 2025
04ffca3
Refactor stuck position selection
themuffinator Nov 23, 2025
f74d974
Merge pull request #172 from themuffinator/codex/refactor-good_positi…
themuffinator Nov 23, 2025
7c8eaae
Add Horde life tracking and limits
themuffinator Nov 23, 2025
95120b0
Merge pull request #173 from themuffinator/codex/add-life-tracking-to…
themuffinator Nov 23, 2025
ddcddfa
Track CTF flag objective states
themuffinator Nov 23, 2025
9a52eee
Merge pull request #174 from themuffinator/codex/enhance-item_updates…
themuffinator Nov 23, 2025
233dbb4
Refactor G_Find to use span
themuffinator Nov 23, 2025
aff9d7f
Merge pull request #175 from themuffinator/codex/introduce-std-span-f…
themuffinator Nov 23, 2025
27588fe
Refactor findradius center distance calculation
themuffinator Nov 23, 2025
5e25147
Merge pull request #176 from themuffinator/codex/refactor-findradius-…
themuffinator Nov 23, 2025
9dfb633
Handle MOTD buffer lifecycle
themuffinator Nov 25, 2025
0092fba
Merge pull request #177 from themuffinator/codex/add-logic-to-manage-…
themuffinator Nov 25, 2025
8e87c77
Handle empty Horde player lists
themuffinator Nov 25, 2025
f5a6061
Merge pull request #178 from themuffinator/codex/update-horde_nolives…
themuffinator Nov 25, 2025
b450ce0
Add null check for menu status bar entries
themuffinator Nov 25, 2025
09861e7
Merge pull request #179 from themuffinator/codex/add-null-check-for-h…
themuffinator Nov 25, 2025
4e17911
Adjust status bar caret alignment
themuffinator Nov 25, 2025
6ad832f
Merge pull request #180 from themuffinator/codex/adjust-caret-placeme…
themuffinator Nov 25, 2025
ce72d67
Restore writeip persistence
themuffinator Nov 25, 2025
81eba84
Merge pull request #181 from themuffinator/codex/re-enable-file-writi…
themuffinator Nov 25, 2025
ccab40b
Add RAII guard for JSON stack handling
themuffinator Nov 25, 2025
c63b966
Merge pull request #182 from themuffinator/codex/implement-raii-stack…
themuffinator Nov 25, 2025
c701058
Stop emitting warnings for fatal JSON errors
themuffinator Nov 25, 2025
d9c1fc5
Merge pull request #183 from themuffinator/codex/add-early-return-aft…
themuffinator Nov 25, 2025
1a8665d
Fix vampiric regen cap rounding and add regression test
themuffinator Nov 25, 2025
48e0db0
Merge pull request #184 from themuffinator/codex/cast-g_vampiric_heal…
themuffinator Nov 25, 2025
bf3d1b6
Handle empty horde rosters in life check
themuffinator Nov 25, 2025
b79426e
Merge pull request #185 from themuffinator/codex/fix-horde_nolivesrem…
themuffinator Nov 25, 2025
f08405e
Ensure spectators inherit team chat prefix
themuffinator Nov 25, 2025
4d8da4e
Merge pull request #186 from themuffinator/codex/update-broadcastfrie…
themuffinator Nov 25, 2025
b6f513b
Reset shared state between CTF flag tests
themuffinator Nov 25, 2025
073dffb
Merge pull request #187 from themuffinator/codex/add-explicit-resets-…
themuffinator Nov 25, 2025
a0dcc93
Harden player config handling
themuffinator Nov 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
586 changes: 159 additions & 427 deletions README.md

Large diffs are not rendered by default.

Binary file added assets/img/muffmode.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions docs/custom_gravity_tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Custom Gravity Push Coverage

A manual check to ensure custom gravity values survive push interactions:

1. Spawn a movable entity (e.g., a crate) and set its `gravity` to a non-default value such as `0.5`.
2. Position the entity on top of a moving platform so it will be pushed during the simulation.
3. Run a push movement tick and confirm the entity's `gravity` remains `0.5` after the push completes.
4. Verify triggers along the movement path still fire for the pushed entity.
17 changes: 17 additions & 0 deletions docs/intermission_flow_test.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Intermission Flow Test: Scoreboard Persistence

## Objective
Confirm that deathmatch players remain on the scoreboard view throughout intermission instead of being forced back to other HUD layouts.

## Preconditions
- Start a multiplayer deathmatch session with at least one human or bot participant.
- Reach a state where fraglimit or timelimit is close to completion so intermission can be triggered quickly.

## Steps
1. Play until the match ends naturally (or use an admin command to end the match) to enter intermission.
2. Observe the client HUD as intermission begins.
3. Remain idle during the entire intermission countdown without pressing the score key or toggling menus.

## Expected Result
- The scoreboard remains visible for the entire intermission without reverting to another HUD state.
- Player input is not required to keep the scoreboard displayed during intermission.
12 changes: 12 additions & 0 deletions docs/regression_tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Regression Tests

## Mover collision resolution
- **Purpose:** Prevent movers from disappearing when collision traces reference freed or invalid entities during ground detection.
- **Setup:**
- Create a simple map with a platform mover intersecting with another entity that can be removed mid-move.
- Instrument the mover so that a collision resolution pass occurs immediately after the other entity is freed.
- **Steps:**
1. Trigger the mover so it begins translating through the space occupied by the soon-to-be-removed entity.
2. Remove the obstructing entity during the mover's travel to force a collision trace against an invalid reference.
3. Allow the mover to complete its motion.
- **Expected result:** The mover finishes its path without being unlinked or lost from the world after the collision trace references an invalid entity.
File renamed without changes.
37 changes: 36 additions & 1 deletion src/bots/bot_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ static void Player_UpdateState(gentity_t *player) {
const client_persistant_t &persistant = player->client->pers;

player->sv.ent_flags = SVFL_NONE;
player->sv.objective_state = objective_state_t::None;
if (player->groundentity != nullptr || (player->flags & FL_PARTIALGROUND) != 0) {
player->sv.ent_flags |= SVFL_ONGROUND;
} else {
Expand Down Expand Up @@ -171,6 +172,7 @@ Monster_UpdateState
*/
static void Monster_UpdateState(gentity_t *monster) {
monster->sv.ent_flags = SVFL_NONE;
monster->sv.objective_state = objective_state_t::None;
if (monster->groundentity != nullptr) {
monster->sv.ent_flags |= SVFL_ONGROUND;
}
Expand Down Expand Up @@ -229,6 +231,7 @@ Item_UpdateState
static void Item_UpdateState(gentity_t *item) {
item->sv.ent_flags = SVFL_IS_ITEM;
item->sv.respawntime = 0;
item->sv.objective_state = objective_state_t::None;

if (item->team != nullptr) {
item->sv.ent_flags |= SVFL_IN_TEAM;
Expand All @@ -251,7 +254,37 @@ static void Item_UpdateState(gentity_t *item) {
const item_id_t itemID = item->item->id;
if (itemID == IT_FLAG_RED || itemID == IT_FLAG_BLUE) {
item->sv.ent_flags |= SVFL_IS_OBJECTIVE;
// TODO: figure out if the objective is dropped/carried/home...
item->sv.team = (itemID == IT_FLAG_RED) ? TEAM_RED : TEAM_BLUE;

if (!item->sv.init) {
item->sv.start_origin = item->s.origin;
}

item->sv.end_origin = item->s.origin;

const bool isDroppedFlag = item->spawnflags.has(SPAWNFLAG_ITEM_DROPPED) || item->owner != nullptr;
const bool isHiddenFlag = (item->solid == SOLID_NOT) || ((item->svflags & SVF_NOCLIENT) != 0);
const bool isRespawning = ((item->svflags & SVF_RESPAWNING) != 0) || ((item->flags & FL_RESPAWN) != 0);

if (isDroppedFlag) {
item->sv.ent_flags |= SVFL_OBJECTIVE_DROPPED;
item->sv.objective_state = objective_state_t::Dropped;

if (item->nextthink.milliseconds() > 0) {
const gtime_t pendingRespawnTime = (item->nextthink - level.time);
item->sv.respawntime = static_cast<int32_t>(pendingRespawnTime.milliseconds());
}
} else if (isHiddenFlag && isRespawning) {
item->sv.ent_flags |= SVFL_OBJECTIVE_CARRIED;
item->sv.objective_state = objective_state_t::Carried;

if (item->sv.respawntime == 0) {
item->sv.respawntime = Item_UnknownRespawnTime;
}
} else {
item->sv.ent_flags |= SVFL_OBJECTIVE_AT_BASE;
item->sv.objective_state = objective_state_t::AtBase;
}
}

// always need to update these for items, since random item spawning
Expand All @@ -275,6 +308,7 @@ Trap_UpdateState
static void Trap_UpdateState(gentity_t *danger) {
danger->sv.ent_flags = SVFL_TRAP_DANGER;
danger->sv.velocity = danger->velocity;
danger->sv.objective_state = objective_state_t::None;

if (danger->owner != nullptr && danger->owner->client != nullptr) {
player_skinnum_t pl_skinnum;
Expand Down Expand Up @@ -314,6 +348,7 @@ Mover_UpdateState
static void Mover_UpdateState(gentity_t *entity) {
entity->sv.ent_flags = SVFL_NONE;
entity->sv.health = entity->health;
entity->sv.objective_state = objective_state_t::None;

if (entity->takedamage) {
entity->sv.ent_flags |= SVFL_TAKES_DAMAGE;
Expand Down
30 changes: 25 additions & 5 deletions src/cg_screen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,29 @@ void CG_ClearNotify(int32_t isplit) {

// if the top one is expired, cycle the ones ahead backwards (since
// the times are always increasing)
/*
=============
CG_Notify_CheckExpire

Expire stale notify entries with bounded swapping to prevent corrupted times
from triggering excessive iterations.
=============
*/
static void CG_Notify_CheckExpire(hud_data_t &data) {
while (data.notify[0].is_active && data.notify[0].time < cgi.CL_ClientTime()) {
size_t iterations = 0;

while (data.notify[0].is_active && data.notify[0].time < cgi.CL_ClientTime() && iterations < MAX_NOTIFY) {
data.notify[0].is_active = false;

for (size_t i = 1; i < MAX_NOTIFY; i++)
if (data.notify[i].is_active)
std::swap(data.notify[i], data.notify[i - 1]);

iterations++;
}

if (iterations >= MAX_NOTIFY && data.notify[0].is_active && data.notify[0].time < cgi.CL_ClientTime())
data.notify[0].is_active = false;
}

// add notify to list
Expand Down Expand Up @@ -694,11 +709,14 @@ static void CG_DrawTable(int x, int y, uint32_t width, uint32_t height, int32_t
}

/*
=================
=============
CG_TimeStringMs
=================

Format a client-visible timer string with millisecond precision.
=============
*/
static const char *CG_TimeStringMs(const int msec) {
static char buffer[32];
int hours, mins, seconds, ms = msec;

seconds = ms / 1000;
Expand All @@ -709,10 +727,12 @@ static const char *CG_TimeStringMs(const int msec) {
mins -= hours * 60;

if (hours > 0) {
return G_Fmt("{}:{:02}:{:02}.{}", hours, mins, seconds, ms).data();
G_FmtTo(buffer, "{}:{:02}:{:02}.{}", hours, mins, seconds, ms);
} else {
return G_Fmt("{:02}:{:02}.{}", mins, seconds, ms).data();
G_FmtTo(buffer, "{:02}:{:02}.{}", mins, seconds, ms);
}

return buffer;
}

/*
Expand Down
Loading