Weapon handedness: one-handed vs two-handed grip modifiers #33
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Design (Zach, 2026-11-08, confirmed — no build yet)
Weapons split into two categories, with grip modifiers on recoil and bullet deviation:
Both multipliers are fine-tunable per weapon in the weapon spec struct (0.5 / 2.0 are the defaults). The category flag already exists in the spec (
"two_handed"in the weapon table; the pistol carriesfalse).A sidearm's dual grip (palming — support hand onto the primary grip) is the one-handed case where the second grip point sits on the primary grip. If anyone wants different numbers, they can mod it — the tuning lives in the spec.
Notes on the model
recoil_recovery). So a single shotgun shell goes straight anyway (x2 of ~0 base deviation is still ~0), and the recoil penalty shows on back-to-back shots before the muzzle settles.Open
spread_degcurrently does double duty as both pellet cone and aim deviation. If the x2 is meant to touch only the deviation and not the cone, those need to be two separate terms in the spec — or one-handed shotgun blasts also open up the cone.Revision — confirmed by Zach 2026-11-08. Resolves the open questions in the filing above, and corrects two points from the earlier discussion: the midpoint pivot for separated grips is replaced, and the two-handed/two-handed multiplier is 1x, not 0.5x.
Pivot (weapons): origin stays at the primary grip. The secondary hand steers pitch/yaw relative to the primary hand only — it does not rotate the weapon by a point-to-point calculation. Primary grip is master control, secondary grip is facing control. This replaces the midpoint rule for weapons; the pistol/palm case is unchanged (same grip point, wrist pivot).
Prefabs — deviation multipliers by hold:
weapon: 1x one-handed, 1x two-handedweapon_one_handed: 1x / 0.5xweapon_two_handed: 2x / 1xPer-item overrides live in the item struct. Declaration is by type-table key:
weapon_one_handed/weapon_two_handedextendweapon(weapon + prefab_cfg); plainweaponis generic. Build note:is_type("weapon")is an exact key match today, so the loader/lookup must resolve the extension for a handed table to still count as a weapon.Field names so far:
one_handed_deviation/two_handed_deviation, in prefab_cfg (deviation only).spawn_loaded: post-merge cleanup — move under the weapon properties scope. Today it is a sibling
properties.spawn_loadedtable read by_apply_spawn_loaded. Not a #32 change.Tier model: bullet/mag/gun tiering now lives in #34 — weapon owns stats + mags/calibers, mag is a FILO container preserving load order, bullet typed by caliber with effect tags.
Still open:
one_handed_recoil/two_handed_recoil) or does recoil keep the global pair?two_handedboolean inside the weapon table subsumed by the type key?spread_degstaying the pellet cone?No build yet — design only until Zach says go. Reference gun systems: Zach will bring examples later.
Correction to comment 885 — key names: the type-table keys are
weapon_one_handandweapon_two_hand, notweapon_one_handed/weapon_two_handed. Plainweaponstays the generic class (1x/1x, gains none of the handedness quirks — intended opt-out). The prefab table in 885 is otherwise unchanged:weapon_one_hand1x/0.5x,weapon_two_hand2x/1x deviation.Settled since 885:
two_handedboolean inside the weapon table is subsumed by the type key.spawn_loaded: current implementation stays as-is; its future direction is a spawn flag / code trigger so loot-table pools can be built around it (metadata injection for later).Still open: recoil prefab fields, cone vs deviation.