| Both sides previous revisionPrevious revision | |
| props_magneto_stick_and_player_movement [2026/05/02 23:27] – frank_lee_smith | props_magneto_stick_and_player_movement [2026/05/03 01:46] (current) – frank_lee_smith |
|---|
| ====== Prop, Magneto, and Movement ConVars ====== | ====== Prop, Magneto, and Fall Damage Settings ====== |
| |
| Quick reference for tuning prop interaction, magneto manipulation, held-prop collision, player movement physics, and related damage/debug behavior. | These settings are for server hosts who want to tune prop interaction, magneto behavior, prop damage, and fall damage. |
| |
| ===== 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. ===== | Changing these values can affect balance and may cause unexpected physics behavior. Avoid changing many at once, and restart or reset your server if props or movement begin behaving strangely. |
| |
| **Defaults below are the current game defaults** and are subject to change. | **Defaults below are the current game defaults** and are subject to change. |
| |
| ===== Key Collision Tags ===== | ===== Magneto Carry Settings ===== |
| |
| ^ Tag ^ Owner ^ Purpose ^ | These settings control what the magneto can pick up or manipulate, and how easily held props are dropped. |
| | ''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 ^ | ^ 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.prop.pickup_limit'' | ''3'' | Highest pickup scale that can be fully held by the magneto. Lower values make fewer props directly carriable. Higher values allow larger props to be picked up. | |
| | ''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.prop.push_pull_limit'' | ''4'' | Highest pickup scale that can still be manipulated by magneto push/pull. Props above this scale cannot be meaningfully moved by the magneto. | |
| | ''t.player_physics_shove_grounded_only'' | ''false'' | If shove clamp is enabled, applies it only while grounded. | | | ''t.magneto_hold_break_distance'' | ''190'' | Drops the held prop if it gets this far away from the holder's view origin for long enough. Lower values make the hold easier to break. | |
| | ''t.player_physics_shove_max_planar_speed'' | ''90'' | Max planar helper-body velocity accepted when shove clamp is enabled. | | | ''t.magneto_hold_break_grace'' | ''0.15'' | Grace period before breaking magneto hold because of distance. Higher values make brief distance spikes more forgiving. | |
| | ''t.player_physics_shove_max_vertical_speed'' | ''90'' | Max vertical helper-body velocity accepted when shove clamp is enabled. | | | ''t.magneto_corpse_hang_limit'' | ''3'' | Maximum number of corpses the magneto hang/rope behavior allows. | |
| | ''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 ===== | ===== Thrown Prop Damage ===== |
| |
| ^ ConVar ^ Default ^ What it does ^ | These settings control how dangerous intentionally launched props are. |
| | ''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 ^ | ^ ConVar ^ Default ^ What it does ^ |
| | | ''t.prop.lethality_level'' | ''4'' | Global intentional-launch lethality scale. Higher values make thrown props more dangerous. | |
| | | ''t.prop.launch_impact_window'' | ''1.2'' | Time after an intentional launch where prop impact can count for propkill damage. Lower values make thrown-prop damage timing stricter. | |
| | | ''t.prop.launch_owner_grace'' | ''0.2'' | Self-protection window after launch so the thrower does not instantly hit themselves. Higher values make accidental self-hits less likely immediately after throwing. | |
| | ''t.prop.impact_player_max_damage'' | ''140'' | Hard cap for prop impact damage against players after per-prop scaling. | | | ''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_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_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.impact_player_standing_speed'' | ''900'' | Extra speed threshold when the target is standing on the prop, to avoid damage from ordinary standing/stomping contact. | |
| | ''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 ===== | ===== Player Bumping Loose Props ===== |
| |
| ''PlayerPropInteractionSystem'' is the host-side policy for ordinary player body contact nudging loose props. | These settings control how ordinary player body movement nudges loose props. |
| |
| ^ ConVar ^ Default ^ What it does ^ | ^ 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_min_speed'' | ''35'' | Minimum player movement speed before body contact nudges a loose prop. Higher values make light walking less likely to move props. | |
| | ''t.prop.player_push_speed_scale'' | ''0.16'' | Converts player movement speed into loose-prop shove speed before profile caps. | | | ''t.prop.player_push_speed_scale'' | ''0.16'' | Converts player movement speed into loose-prop shove speed. Higher values make players push props more strongly. | |
| | ''t.prop.player_push_max_speed'' | ''120'' | Global cap for player-body shove speed. Per-profile caps can be stricter. | | | ''t.prop.player_push_max_speed'' | ''120'' | Global cap for player-body shove speed. Higher values allow stronger prop nudges from player movement. | |
| | ''t.prop.player_push_vertical_cap'' | ''35'' | Caps vertical velocity injected into props by walking/body shoves. | | | ''t.prop.player_push_vertical_cap'' | ''35'' | Caps vertical velocity added to props by walking/body shoves. Lower values reduce upward popping. | |
| | ''t.prop.player_push_angular_damping'' | ''0.75'' | Damps spin from player-body shoves. | | | ''t.prop.player_push_angular_damping'' | ''0.75'' | Damps spin from player-body shoves. Lower values damp spin harder; higher values preserve more spin. | |
| | ''t.prop.player_push_trace_distance'' | ''20'' | Distance ahead of the player used to find a loose prop to nudge. | | | ''t.prop.player_push_trace_distance'' | ''20'' | Distance ahead of the player used to find a loose prop to nudge. Higher values can make prop nudging feel more eager or farther-reaching. | |
| |
| ===== Explosive Barrel / Prop Debug ===== | ===== Explosive Barrels ===== |
| |
| ^ ConVar ^ Default ^ What it does ^ | ^ ConVar ^ Default ^ What it does ^ |
| | ''t.barrel.reset_damage_grace'' | ''0.5'' | Grace after reset before barrel damage is accepted. | | | ''t.barrel.reset_damage_grace'' | ''0.5'' | Grace period after reset before barrel damage is accepted. This helps avoid immediate damage during map/reset transitions. | |
| | ''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. | | |
| |
| ===== Related Fall / Void Safeguards ===== | ===== Fall Damage ===== |
| |
| These are not prop controls directly, but they often matter while testing prop shove, stuck, teleport, and fall-damage edge cases. | These settings control fall damage timing, grace periods, and damage caps. |
| |
| ^ ConVar ^ Default ^ What it does ^ | ^ ConVar ^ Default ^ What it does ^ |
| | ''t.fall.min_drop_distance'' | ''16'' | Minimum drop distance 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.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.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.unstuck_grace'' | ''0.1'' | Grace after an unstuck nudge before fall damage applies. | |
| | ''t.fall.max_stomp_damage'' | ''100'' | Max stomp/fall impact damage applied to another player. | | | ''t.fall.max_self_damage'' | ''100'' | Maximum fall damage applied to the falling player. | |
| | ''t.void_kill_z'' | ''-16384'' | Z position below which void kill behavior applies. | | | ''t.fall.max_stomp_damage'' | ''100'' | Maximum stomp/fall impact damage applied to another player. | |
| | |
| | ===== Void / Out-of-Bounds ===== |
| | |
| | ^ ConVar ^ Default ^ What it does ^ |
| | | ''t.void_kill_z'' | ''-16384'' | Z position below which void kill behavior applies. Adjust only if a custom map has unusually low playable space. | |