Siege machines
CombatCatapult explicit included item names win before attachment/type/excluded-item gates; loading consumes min(stack,maxLoadStack). Default projectile uses default-ammo damage, selected item projectile uses loaded-item damage, subject to included-only damage rules. Launch velocity is unnormalized force-point displacement times default-ammo velocity and random variation. Siege engine needs active smelter and matching wagon attachment mode; moving parts charge sequentially then fire with strict hit-delay checks.

