- Underbarrel attachments work across IW4, IW5, T5 and T6, including
per-family impact FX, T5 flamethrower streams and T6 launcher fuses.
- Viewmodel notetrack sounds play in third person.
- Transport operations and queues are bounded; Quinn congestion control
returns to its default.
- Match publication, presentation context and prepared content semantics
are qualified and validated; cosmetic and entity occurrence lifecycles
are preserved.
- GPU skinning batches within supported device budgets.
- Immutable UI projections and correlated class replies are reconciled.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fullscreen covers the display, so Resolution did nothing there, and any
display setting change re-applied the windowed size and shrank the
fullscreen window into a corner. Fullscreen now leaves the window size
alone; a resolution shorter than the display renders the world camera
into an image of that many rows at the window's aspect, which a present
camera stretches over the window. The image's scale factor keeps the
camera's logical size equal to the window's, so HUD projections of world
points line up.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Prepare progression and loading through Bevy scheduling, preserve round HUD and bombsite props, restore grenade and T5 shadow presentation, and keep menus usable while classes load. Report update progress and continue startup after update failures.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Yes button of the pause menu's End Game popup is rewritten to
`disconnect` (03016c48). The host of a private match therefore quits
instead of ending the match: nobody sees the "Host ended game"
end-of-match flow, and the host lands on the main menu with the lobby
gone.
The button now sends the "endround" menu response to the game scripts,
which end the match as host-ended, run the end-of-game display and then
end the level, so the host returns to the private lobby. The hud still
turns that response into `disconnect` unless the local player hosts a
private lobby (ui_lobby_host set, ui_lobby_public not set), so public
lobbies and clients leave as they do today.
This reverses the end-game leave from 03016c48 for private hosts only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The soldier picture on the main menu and Find Lobbies (rect -427 -240
854 480, centre aligned) is exactly 16:9 wide. On a wider screen it
stops short of the edges: about 319 px per side at 2560x1080, 439 px at
3440x1440, and 87 pt per side on a 2.17:1 phone. Past its right edge
only the stretched background and glow show, with a faint vertical edge
where the art ends.
Add an opt-in MenuItem.cover flag. When a stretch item with cover set
is narrower than the screen, push_stretch scales it up uniformly about
its centre, keeping the top edge, until it fills the width. The factor
comes from the item's un-animated rect, so the open/close zoom still
plays. Set the flag on the soldier item of both menus. Nothing changes
at 16:9 or narrower, including the default 1280x720 window and 16:10
displays. On very wide screens the bottom of the art is cropped. The
clouds item starts at the left edge of the 16:9 area, so its edge still
shows on the left of a wider screen; it is left as it is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Controller and Game Folders pages are built from pc_options_video
and hide the Video rows they do not use one by one. The Camera view
selector (ui_third_person) on the Video page was not in either list, so
it stayed visible. On Controller it sat on the same row as ADS
Sensitivity (y=108), drawn over its label and slider and able to take
focus and clicks. On Game Folders it overlapped the Modern Warfare 3
row.
Hide video_third_person and its label on both pages, as Advanced Video
and Community Servers already do.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Constant Radar (Gameplay Options) keeps every player's radar constant
unless an EMP blocks it, and the compass shows every living enemy each
frame, Cold-Blooded or not. Enemy Bots (0-9) and Friendly Bots (0-8, team
modes only) under Team Options add that many bots when the match starts;
a sided bot waits for the local player's team, then answers the team menu
with it or the other one. Free-for-all ignores the friendly count.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Decode Black Ops audio natively and load Black Ops II worlds, faction
models, equipment, materials, lighting and weapon camouflage.
Rework capsule collision, solid recovery, penetration, recoil, effects
and sentry placement; synchronize late joins and player event delivery.
Keep local skill ratings and signed player accounts.
Show the selected community and master ping on the main menu. Add twenty
asset-filtered class presets across IW4, IW5, T5 and T6, plus fifty-two
unique player-style names shared by AI bots and dummies. Honor the chosen
dev descriptor in the two-client approved scenario and credit contributors
and weapon, map and attachment QA testers.
Validated with the approved gameplay lifecycle and two-client dev-master
scenarios, installed class-asset audit, bot-name uniqueness checks and
Linux IW4/IW5/T5/T6 gameplay smoke runs. Foreign-weapon match-stat schema
coverage remains incomplete.
A weapon's gunXModel / worldModel slots 1-8 are its camouflage models
(woodland ... orange_fall, numbered as mp/camoTable.csv). They are now
captured, aliased arrays included, and bound per weapon.
Classes carry a camouflage per weapon (classes.txt: two optional trailing
fields, written only when one is set; PersonalClass on the wire, protocol
103). MW2's _class.gsc reads it from customClasses...camo and gives the
weapon with its number; giveWeapon stores it as the slot's weaponModel in
weapon_data, which replicates. First person swaps the gun's materials for
the camouflage model's (it shares the gun's surfaces); third person draws
the camouflage world model.
Create-a-Class goes weapon, attachment, then camouflage, as MW2 does,
offering only the camouflage the weapon has, and MW2's panel shows it
behind the weapon. Console: give ... camo=<name|slot>, bot give ...
camo=<name>.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts kept both sides: Steam discovery next to Game Folders and
sibling titles, upstream's profile/account persistence next to the
folder picks and saved position, SAB/FLAC beside blake3, the T6
localize loader on the raw-bytes catalog (cache format 3), and our
tactical insertion equipment mapping with upstream's specialty_null.
The fire-delay fix takes upstream's form. Exit silencing now mutes the
new audio runtime instead of Bevy audio sinks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
T6 (Black Ops II) weapons load from the BO2 install beside MW2 and play
with their own models, materials, animations, sounds and icons, standing
in for an MW2 weapon row for gameplay.
- fastfile_t6: T6 zone walking and weapon views; IPak/SAB image and sound
sources in asset_transport.
- dxbc_sm5: DX11 shader bytecode lowered to WGSL, so T6 materials draw
with their own technique sets (t6_techset, dxbc_abi).
- Materials: borrowed draw states come from the stand-in's opaque body,
never a lens; colour-map alpha (the camo mask) reads as one on opaque
surfaces; specular and probe reflection scaled for IW4 lighting; maps
named by another kind's samplers fall back to the same-role map.
- Dual wield (`X_dw` + `X_lh`) through the shared secondary-gun viewmodel,
and the `dw` attachment from T6's attachment table.
- Melee: guns without their own melee clip (and pistols, whose clip is the
tactical knife's) borrow knife_mp's knife and swings; the hip ADS layer
returns after a melee.
- T6 clip names match case-insensitively.
- Game Folders option for BO1/MW3/BO2 installs, multi-game lookup fixes,
clean exit, crosshairs, save/load/loadspawn console commands.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scoped weapons hold breath with recovery feedback and sound. Riot shields
block and deflect bullets in hand and on the back; explosive crossbow bolts,
destructible map cars with round resets, and T5 map model collision work.
Remote players show last stand, weapon change, jump, mantle, landing,
ladder and stun animations, and server hitboxes follow the shared torso tree.
GSC gains spectator follow cameras, chat, kick, vehicle paths and flight
controls, physics spheres, slow motion, slide and mantle movers, damage
triggers, music, ambience, rumble and live audio fades over a shared mixer.
IW5 and T5 maps get sun shadows with per-stage sun selection; post-fx
pipelines compile before a vision blend needs them. The lobby browser keeps
focus and selection, and rooms can be password protected. Console supply
and give commands search every item category. Frames and replays decode
only the current wire protocol.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fine sensitivity slider reused the 1-10 setting, conflating console
preset numbers with a continuous speed control. Selecting a preset must
leave the player's custom slider value available for later use.
Store the selected preset and custom multiplier independently. Add Custom
and integer choices 1 through 10 to the Controller menu. Use the IW4x
pc_options_gamepad.menu preset table: 0.6, 1.0, 1.4, 1.8, 2.0, 2.2, 2.6,
3.0, 3.5 and 4.0. Custom uses the local controller slider's 0.1-5.0 multiplier
range with 0.1 steps. Editing the slider selects Custom; selecting a preset
never overwrites the saved custom value.
Resolve the active multiplier before applying controller aiming. Persist
both settings and migrate the previous pad_sensitivity value to Custom
using its old value/3 speed mapping, preserving existing effective speed.
The acceleration toggle remains independent.
Validation: play build, targeted formatting and diff checks passed.
Temporary probes verified all ten preset multipliers, custom-value retention,
settings save/reload and legacy migration, and menu inheritance/choices.
Aiming probes also passed for acceleration on/off and ADS/FOV scaling at
30, 60 and 144 Hz. Gameplay feel and visual layout were not retested.
The controller sensitivity slider advanced in steps of 0.5 and displayed
only whole numbers, hiding the selected fractional value.
Use 0.1 steps, matching the granularity of the earlier local controller
slider while retaining master's 1-10 sensitivity scale and speed mapping.
Add an optional decimal precision field to menu sliders and display one
decimal for controller look sensitivity. Other sliders retain their default
integer formatting; the renderer caps requested precision at six places.
Validation: the play build, targeted formatting and diff checks passed.
Temporary probes verified the controller menu's inherited slider definition,
its 1-10 bounds and 0.1 step, decimal precision, and preservation of fractional
sensitivity through settings sanitization. No permanent tests were added.
Controller aiming always ramped toward the requested turn rate, preventing
players from choosing an immediate response to right-stick input.
Add an Enabled/Disabled Look Acceleration control to the Controller menu
and persist it through settings load/save and native menu dvars. Forward
the setting to the aiming code: disabling it applies the requested angular
velocity immediately, including when switching off an active ramp.
Keep acceleration enabled by default for existing configurations. Preserve
response curves, sensitivity scaling, ADS blending and FOV scaling.
Validation: the play build and targeted formatting checks passed. Temporary
probes checked immediate turning, the existing acceleration ramp, switching
off mid-ramp, and ADS/FOV scaling at 30, 60 and 144 Hz. Menu inheritance and
the toggle choices were also checked. Physical-controller feel has not
been retested in game.
Controller buttons bind through the same table as keys: every command on
the controls page shows its key and its button, and either is rebound by
pressing a key or a button. The options gain a Controller page: button
layout (Default, Tactical, Lefty, Bumper Jumper, Bumper Jumper Tactical),
stick layout, look and aim-down-sight sensitivity, invert, response curve,
aim assist, vibration and deadzones, all kept in settings.cfg.
The look stick turns at rates that build up to full deflection, slower
down the sight and scaled by the zoom. Aim assist works over visible
enemies within each weapon's own aim assist ranges, read from the weapon
data: slowdown and lock-on, and on Full a pull onto a target when the
sight comes up. It applies only while aiming with the controller.
Menus take the D-pad or left stick, A and B, and Start opens them. Focus
moves by screen position rather than by menu file order, which jumped
around the options pages for arrow keys too; left and right on a button
cross columns. The Advanced Video page no longer draws the FOV slider
over Bloom.
The controller in use is the last one pressed or moved, so a virtual
joystick or an idle second pad stays out of the way; rumble follows it and
the vibration setting. Use/reload reloads when nothing usable is in reach.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Controls list Aim Down the Sight and Hold Aim Down the Sight; pressing hold
clears a toggle latch so release always leaves ADS. MWHEELUP and MWHEELDOWN
bind from the menu, the console and saved settings, and wheel scroll reaches
the game as discrete presses, so weapon cycling works on the wheel.
Closes#6Closes#7
- One common set per content profile, shared by every match and the loadout
menu; a restart over the same map keeps its images and static geometry.
- Weapons resolve as families: attachments are chosen from each game's own
tables, checked, and composed into prepared configurations with their
first-person skeleton assembled once.
- Sessions end through one teardown and one process exit; retired resources
are dropped on a worker, not the frame.
- Sound is captured by the walks that already read each zone.
- A loading screen that reports what the load is doing.
- Tests live only in crates/approved_tests (heavy_gameplay_lifecycle);
publish-check refuses them anywhere else.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Destructibles walk their stage staircase on the host: each stage carries
its model, the parts it throws off, the effects it fires on the way out
and the health it bleeds afterwards, and the loops a prop is speaking are
published as sound aliases the client resolves through the configstring.
The scoreboard, overhead names and the compass draw against the live
roster -- team identity survives player-supplied color escapes, ranks and
prestige come out of the menu tables, and the final snapshot is kept when
it lands ahead of the next scores command.
Film vision presets load from the map and common fastfiles; visionSetNaked
and visionReset transition between them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Host bots bake a navigation graph off the clip map and walk it — drop and
break-glass edges, routes that resume across ticks under a shared per-tick
query budget, firing positions chosen from baked supports rather than a ring
around the bot. They pick a weapon, reload or switch when the magazine runs
out, and plant, defuse and claim flags on their own.
A broken pane now builds a planar crack graph and emits shards carrying their
holes and open cracks, so tessellation and repeated hits read the stored
geometry instead of assuming a convex fan from vertex zero.
Sun cascades are clipped to the view. Class select and the options menu match
the layout players expect. Weapon definitions load from IW5 and T5 fastfiles.
The test suite is removed: it had grown into scaffolding for the dig rather
than a description of the runtime, and new tests will be written against the
behaviour that stayed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>