Storage Containers update (after Sandbox V2): volume storages, tag snappers, bullet/mag/gun #34

Closed
opened 2026-11-08 16:48:29 +00:00 by muse-lantern · 2 comments
Member

Sequencing

AFTER Sandbox V2 (PR #32). The bullet / mag / gun system belongs to this update, not to Sandbox V2.

Scope (Zach, 2026-11-08)

  • 3D volume collider-based storages.
  • Basic geometry mockups work first.
  • Tag-based snapper systems and parenting.
  • Bullets as separate items: insert bullets into a mag and see them in it, then insert that mag into a gun.
  • Caliber check: if the caliber of the bullet lines up with what the gun supports, it fires.
## Sequencing AFTER Sandbox V2 (PR #32). The bullet / mag / gun system belongs to this update, not to Sandbox V2. ## Scope (Zach, 2026-11-08) - 3D volume collider-based storages. - Basic geometry mockups work first. - Tag-based snapper systems and parenting. - Bullets as separate items: insert bullets into a mag and see them in it, then insert that mag into a gun. - Caliber check: if the caliber of the bullet lines up with what the gun supports, it fires.
Author
Member

Stat ownership for the bullet/mag/gun system (Zach, 2026-11-08) — damage values split into a tier list:

  • Weapon defines the stats of the weapon, and what mags and calibers it takes.
  • Mag is a container: defines what calibers it can hold and how many. It preserves load order and provides the next bullet to the gun. Mags are First In Last Out (last loaded = first out). Containers generally can use type and tag checks to permit only specific items in (e.g. an ammo box for 9x18 tracer rounds only).
  • Bullet is typed by caliber (e.g. 9x18) with tags (e.g. subsonic, armor-piercing, tracer) that affect the projectile stats.
  • Example: a mag typed for the PM holds 8 bullets of 9x18. The gun receives the mag and chambers the first bullet available (last loaded into the mag). On firing, the projectile receives stats from the bullet, modified by the gun: muzzle velocity, sound modifiers (silencers), general damage buffs/debuffs based on gun condition, etc.

Current state, for the implementer: damage today lives on the gun (weapon.damage, test_gun 25.0) and the ammo item carries only ammo.damage_mult (1.0) with no caliber type or effect tags; the mag carries magazine.capacity (15) + magazine.accepts (a tag, ammo.pistol). So the build moves damage authorship from gun to bullet, with the gun applying modifiers.

Related follow-up: spawn_loaded is currently a sibling properties.spawn_loaded table (read by _apply_spawn_loaded); it should probably live under the weapon properties scope instead.

Stat ownership for the bullet/mag/gun system (Zach, 2026-11-08) — damage values split into a tier list: - **Weapon** defines the stats of the *weapon*, and what mags and calibers it takes. - **Mag** is a container: defines what calibers it can hold and how many. It preserves load order and provides the next bullet to the gun. Mags are First In Last Out (last loaded = first out). Containers generally can use type and tag checks to permit only specific items in (e.g. an ammo box for 9x18 tracer rounds only). - **Bullet** is typed by caliber (e.g. 9x18) with tags (e.g. subsonic, armor-piercing, tracer) that affect the projectile stats. - Example: a mag typed for the PM holds 8 bullets of 9x18. The gun receives the mag and chambers the first bullet available (last loaded into the mag). On firing, the projectile receives stats from the bullet, modified by the gun: muzzle velocity, sound modifiers (silencers), general damage buffs/debuffs based on gun condition, etc. Current state, for the implementer: damage today lives on the gun (`weapon.damage`, test_gun 25.0) and the ammo item carries only `ammo.damage_mult` (1.0) with no caliber type or effect tags; the mag carries `magazine.capacity` (15) + `magazine.accepts` (a tag, `ammo.pistol`). So the build moves damage authorship from gun to bullet, with the gun applying modifiers. Related follow-up: `spawn_loaded` is currently a sibling `properties.spawn_loaded` table (read by `_apply_spawn_loaded`); it should probably live under the `weapon` properties scope instead.
Author
Member

Closing: the storage-containers scope tracked here is built and on main via PR #36 (merge commit 1a008dd) — volume storages, tag snappers, bullet / mag / gun tier model, FILO mag interaction, Phase 0 dead sweep.

Closing: the storage-containers scope tracked here is built and on main via PR #36 (merge commit `1a008dd`) — volume storages, tag snappers, bullet / mag / gun tier model, FILO mag interaction, Phase 0 dead sweep.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
dead-air/engine#34
No description provided.