This is an old revision of the document!
Prop, Magneto, and Movement ConVars
Quick reference for tuning prop interaction, magneto manipulation, held-prop collision, player movement physics, and related damage/debug behavior.
Server hosts, be wary when meddling with these and leaving your server running with the changes on. They are very capable of causing bugs and unexpected behavior.
Defaults below are the current game defaults and are subject to change.
| Tag | Owner | Purpose |
idle_prop | TerrorTownProp | Applied to loose/resting props. movement ignores this tag through physics collision rules so ordinary props do not constantly fight player helper bodies. |
held_prop | TerrorTownProp | Applied while a prop is actively held by the magneto. Held props are removed from idle_prop so they can physically collide with players while held. |
movement | player helper bodies | Applied to player physics helper/shadow objects and used by collision rules/traces. |
Player Movement / Collision
| ConVar | Default | What it does |
t.player_movement_held_props_not_stuck | true | If enabled, a held prop that starts inside the movement hull does not count as stuck for unstuck logic. |
t.player_physics_shove_clamp | false | Enables clamping of helper-body velocity before it is inherited into player movement. Disable for raw velocity inheritance. |
t.player_physics_shove_grounded_only | false | If shove clamp is enabled, applies it only while grounded. |
t.player_physics_shove_max_planar_speed | 90 | Max planar helper-body velocity accepted when shove clamp is enabled. |
t.player_physics_shove_max_vertical_speed | 90 | Max vertical helper-body velocity accepted when shove clamp is enabled. |
t.player_physics_prop_stuck_handoff_clamp | true | Enables clamping of the stuck helper-body position handoff when the blocker is a prop. |
t.player_physics_prop_stuck_handoff_held_only | true | Limits the prop stuck handoff clamp to held props only. |
t.player_physics_prop_stuck_handoff_max_planar_speed | 90 | Max planar speed-equivalent accepted from prop stuck handoff. |
t.player_physics_prop_stuck_handoff_max_vertical_speed | 90 | Max vertical speed-equivalent accepted from prop stuck handoff. |
t.move.unstuck_push_max | 160 | Max velocity added by generic unstuck nudges. |
t.move.unstuck_push_up_max | 90 | Max upward velocity added by generic unstuck nudges. |
debug_playermovement_unstick | false | Draws/debugs custom unstuck attempts. |
debug_playermovement | false | Draws/debugs player physics helper/shadow bodies. |
Magneto Hold / Pickup
| ConVar | Default | What it does |
t.magneto_pickup_owner_grace | 0.35 | Short grace window for ownership after requesting pickup. |
t.magneto_hold_break_distance | 190 | Drops the held prop if it strays this far from the holder's view origin for long enough. |
t.magneto_hold_break_grace | 0.15 | Grace period before breaking hold due to distance. |
t.magneto_corpse_hang_limit | 3 | Max corpses the magneto hang/rope behavior allows. |
t.magneto_debug_release_launch_speed | 0 | Debug-only forced release launch speed. 0 disables. |
ttt_magneto_debug | false | Legacy/general magneto debug toggle. |
t.db.magneto | false | Magneto debug logging toggle. |
Magneto Blocked-Hold Damping
These govern the softened hold-drive behavior when the held prop is blocked while trying to reach the crosshair target.
| ConVar | Default | What it does |
t.magneto_blocked_hold | true | Enables blocked-hold softening/damping. |
t.magneto_blocked_hold_error | 40 | Minimum prop-to-target distance before normal obstruction can count as blocked. Player obstruction bypasses this. |
t.magneto_blocked_hold_closing_speed | 20 | If the prop is already moving toward the target faster than this, it is not considered blocked. Player obstruction bypasses this. |
t.magneto_blocked_hold_grace | 0.12 | How long obstruction must persist before full blocked behavior applies. |
t.magneto_blocked_hold_recovery | 0.25 | Time to blend back from blocked behavior to normal hold behavior after obstruction clears. |
t.magneto_blocked_hold_trace_size | 2 | Radius/size of the hold obstruction trace from held prop to wanted position. |
t.magneto_blocked_hold_detect_players | true | Lets the obstruction trace treat other players as blockers. |
t.magneto_blocked_hold_detect_movement | false | Lets the obstruction trace include movement helper bodies. Usually off. |
t.magneto_blocked_hold_smooth_time | 0.42 | SmoothDamp time while blocked; higher feels softer/slower. |
t.magneto_blocked_hold_max_speed | 120 | Global planar speed cap while blocked. |
t.magneto_blocked_hold_speed_scale | 0.50 | Multiplier applied to the prop profile push/pull speed while blocked. |
t.magneto_blocked_hold_vertical_cap | 50 | Vertical velocity cap while blocked. |
t.magneto_blocked_hold_angular_damping | 0.55 | Angular velocity damping while blocked. Lower damps spin harder. |
Prop Carry / Launch Tuning
| ConVar | Default | What it does |
t.prop.pickup_limit | 3 | Highest pickup scale that can be fully held by the magneto. |
t.prop.push_pull_limit | 4 | Highest pickup scale that can still be manipulated by magneto push/pull. |
t.prop.lethality_level | 4 | Global intentional-launch lethality scale. Ambient loose physics still uses derived prop scale. |
t.prop.launch_impact_window | 1.2 | Time after intentional launch where prop impact can count for propkill damage. |
t.prop.launch_owner_grace | 0.2 | Self-protection window after launch so the thrower does not instantly hit themselves. |
t.prop.launch_peak_carryover | 1 | Keeps peak source speed around briefly so one bad physics frame does not erase a throw. |
t.prop.launch_live_speed_forgiveness | 1.25 | Allows stored launch speed to exceed current live speed during the launch window. |
t.prop.debug_profile | false | Shows derived profile/carry policy/bounds over props. |
t.prop.debug_manipulation | false | Logs held/launch manipulation debug snapshots. |
t.prop.debug_manipulation_interval | 0.20 | Console sample interval for manipulation debug. |
Prop Impact / Ownership
| ConVar | Default | What it does |
t.prop.impact_player_max_damage | 140 | Hard cap for prop impact damage against players after per-prop scaling. |
t.prop.impact_player_cooldown | 0.2 | Per-player cooldown so the same contact cannot deal damage every physics tick. |
t.prop.impact_player_spawn_grace | 0.75 | Spawn grace where prop impact damage against a player is blocked. |
t.prop.impact_player_standing_speed | 900 | Extra threshold when the target is standing on the prop, to avoid stomp/standing noise. |
t.prop.push_carry_min_speed | 70 | Minimum prop speed before push-carry responsibility is recorded on player contact. |
t.prop.owner_return_release_delay | 0.2 | Delay after release before host considers reclaiming prop ownership. |
t.prop.owner_return_timeout | 5 | Failsafe maximum time before stale owned props can return to host. |
t.prop.owner_return_linear_speed | 12 | Linear speed threshold for considering released prop settled enough for host ownership return. |
t.prop.owner_return_angular_speed | 25 | Angular speed threshold for ownership return. |
Player-Vs-Loose-Prop Nudge System
PlayerPropInteractionSystem is the host-side policy for ordinary player body contact nudging loose props.
| ConVar | Default | What it does |
t.prop.player_push_min_speed | 35 | Minimum player planar movement before body contact nudges a loose prop. |
t.prop.player_push_speed_scale | 0.16 | Converts player movement speed into loose-prop shove speed before profile caps. |
t.prop.player_push_max_speed | 120 | Global cap for player-body shove speed. Per-profile caps can be stricter. |
t.prop.player_push_vertical_cap | 35 | Caps vertical velocity injected into props by walking/body shoves. |
t.prop.player_push_angular_damping | 0.75 | Damps spin from player-body shoves. |
t.prop.player_push_trace_distance | 20 | Distance ahead of the player used to find a loose prop to nudge. |
Explosive Barrel / Prop Debug
| ConVar | Default | What it does |
t.barrel.reset_damage_grace | 0.5 | Grace after reset before barrel damage is accepted. |
t.barrel.renderer_cleanup_client_window | 2 | Client-side window for renderer cleanup after barrel transitions. |
t.barrel.renderer_cleanup_client_interval | 0.25 | Client-side interval for barrel renderer cleanup checks. |
t.barrel.spawn_registry.match_radius | 0.25 | Position tolerance for matching barrels to spawn registry records. |
t.db.barrel | false | Barrel debug logging. |
t.db.barrel.max_rows | 24 | Max rows for barrel debug output. |
t.db.barrel.client_autostart | false | Enables client autostart barrel probe/debug behavior. |
t.db.barrel.client_autostart.max_rows | 24 | Max rows for client autostart barrel probe output. |
t.db.barrel.spawn_registry | false | Barrel spawn registry debug logging. |
These are not prop controls directly, but they often matter while testing prop shove, stuck, teleport, and fall-damage edge cases.
| ConVar | Default | What it does |
t.fall.min_airborne_time | 0.08 | Minimum airborne time before fall damage can apply. |
t.fall.respawn_grace | 0.6 | Grace after respawn before fall damage applies. |
t.fall.min_drop_distance | 16 | Minimum drop distance before fall damage applies. |
t.fall.teleport_grace | 1.0 | Grace after teleport before fall damage applies. |
t.fall.unstuck_grace | 0.1 | Grace after unstuck nudge before fall damage applies, with exploit mitigation checks. |
t.fall.ladder_grace | 0.45 | Grace around ladder transitions before fall damage applies. |
t.fall.max_self_damage | 100 | Max fall damage applied to the falling player. |
t.fall.max_stomp_damage | 100 | Max stomp/fall impact damage applied to another player. |
t.void_kill_z | -16384 | Z position below which void kill behavior applies. |