Skip to content

Pack API surface

Everything a KSArmory weapon pack binds to, read out of Sim/PackReader.cs and the entry point by tools/pack-api.py. Generated - do not edit.

This is the checklist for changing KSArmory without breaking somebody else's mod: anything here that changes shape is a breaking change for every pack, and anything not here cannot be. A diff against this file is the only warning there is -- a pack lives in another repository, never builds in CI, and an attribute this build stops knowing is refused by name rather than ignored.

docs/WEAPON-PACKS.md is the same surface written for the author, with the reasons attached.

Definition schema 1. 8 elements, 171 attributes, 15 entry-point lines.

Entry point

What a pack calls. It takes text rather than profiles so that a pack needs no KSA assemblies to build; widening it to take a profile type would put that back.

KSArmory.Armoury

  • static int Schema { get; }
  • static bool IsOpen { get; }
  • static PackResult Register(string definitions, string source)

KSArmory.PackResult

  • string Source
  • int Registered
  • IReadOnlyList<PackFault> Faults
  • bool Complete { get; }

KSArmory.PackFault

  • string Source
  • string Element
  • string Name
  • string Reason
  • override string ToString()

Definition format

<Munition> - how a round flies, and what it does on arrival

Attribute Reads Default
Name text, required required
DisplayName text, required required
BodyMarker text none
BodyModel text none
BurstEffect text none
PlumeEffect text none
FinMarker text none
BodyLength number 3.10
TracerEvery whole number 0
TracerBurnSeconds number 3
FinDeploySeconds number 0.18
FinDeflectionDeg number 0
FinHingeStation number 0
FinsPerRound whole number 0
FinStowedScale number 0.06
LaunchSpeed number 45
BoostSeconds number 2.4
BoostAccel number 520
MaxFlightSeconds number 30
MaxFaithfulStepSeconds number the flight model's own
PreferredStepSeconds number 0
SubStepSeconds number 0
MinRange number 0
MaxRange number 20000
NavConstant number 4
MaxLateralG number 35
Guidance one of Seeker, AntiRadiation, CommandLink, Inertial, None CommandLink
SeekerFovDeg number 55
SeekerBand one of Radar, Infrared, None Radar
CountermeasureResistance number 0
ReacquiresAfterDecoy true or false true
DopplerGateMps number 0
SeparationSeconds number 0
GravityCompensation number 1
NeutralDensityRatio number 0
MassKg number 0
CalibreMm number 0
DragCoefficient number 0
DragK number 3.0e-5
FuseRadius number 15
TimedFuse true or false false
FuseArmSeconds number 0.6
ChargeKg number 20
MaxChargeKg number 0
HitsTerrain true or false false
BurstHeightMetres number 0
ChuteSinkMetresPerSecond number 0
ChuteOpensSeconds number 1.5

<Sensor> - what a launcher can see

Attribute Reads Default
Name text, required required
DisplayName text, required required
Range number 36000
ConeDeg number 90
BoresightSource one of LocalUp, PartForward, TurretAxis, MountNormal LocalUp
Scope one of None, Search, Emitters None
ThreatRadius number 8000
ThreatHorizonSeconds number 40
LockSeconds number 1.5
MinTargetSpeed number 15
Emits true or false false
ReferenceCrossSectionM2 number 0
NotchSpeed number 0
ChaffNotchMps number 0
ChaffReacquireSeconds number 3
OpticalBackup true or false false
ClutterFloorMetres number 0
HorizonMasking true or false true
TerrainMarginMetres number 0
TerrainSamples whole number 0
TerrainClearanceMetres number 30
CuedOnly true or false false
Infrared true or false false
IrThresholdWPerM2 number 6.0e-7
LookDownPenalty number 1

<Launcher> - the part, and what it does with the round

Attribute Reads Default
PartId text, required required
FiresBeam true or false false
DisplayName text, required required
Munition text required
BeamArmamentLabel text Laser
Sensor name, required required
TubeArmamentLabel text Missiles
GunArmamentLabel text Cannon
TurretMarker text none
PodsMarker text none
RadarMarker text none
GunsMarker text none
OpticBaseMarker text none
GunBarrelMarker text none
GunCylinderMarker text none
GunRodMarker text none
GunFeedMarker text none
GunRotorMarker text none
TurretPivot three numbers 0, 0, 0
PodPivotFromTurret three numbers 0, 0, 0
RadarPivotFromTurret three numbers 0, 0, 0
OpticBaseFromTurret three numbers 0, 0, 0
GunPivotFromTurret three numbers 0, 0, 0
GunCylinderPinFromTurret three numbers 0, 0, 0
GunRodPinFromTurret three numbers 0, 0, 0
GunFeedPivotFromTurret three numbers 0, 0, 0
GunFeedRatio number 0.0
GunRotorPivotFromTurret three numbers 0, 0, 0
GunReferenceElevationDeg degrees 0.0
PodReferenceElevationDeg degrees 0.0
MuzzleForwardOffset number 0.0
TubeRingRadius number 0.0
GunMunition name none
SlewRateDeg number 70
ElevationRateDeg number 45
SettleSeconds number 0.35
SearchRadarRpm number 20
SearchRadarFaces whole number 1
MinElevationDeg number 0
MaxElevationDeg number 82
ForwardMinElevationDeg number 15
ForwardArcDeg number 80
ForwardPlateauDeg number 62
RestElevationDeg number the modelled pose
TraverseLimitDeg number 180
MagazineDepth whole number 0
SalvoSpacing number 0.45
ReloadSeconds number 0
LaunchAlongTube true or false true
LaunchLoft number 0.35
EjectAwayFromMount number 0
MuzzleOffset number 8
GunAmmo whole number 480
StoreMassKg number 0
GunRoundMassKg number 0
GunRoundsPerMinute number 2500
GunBurstRounds whole number 12
GunBurstGapSeconds number 0.55
GunReloadSeconds number 0
GunRecoilMetres number 0
GunRecoilSeconds number 0.08
GunReturnSeconds number 0.6
GunRotorSpinUpSeconds number 0.2
GunRotorSpinDownSeconds number 1.0
GunSoundId text none
GunshotSoundId text none
MuzzleFlashEffect text none
TrimAccelerationMetresPerSecond2 number double.NaN
TrimWorstAxisExhaustVelocity number double.NaN
HopEngineThrustNewtons number double.NaN
HopEngineExhaustVelocity number double.NaN
HopEngineAccelerationMetresPerSecond2 number double.NaN
FireControlLabel text none
MintRows true or false true

<Optic> - a sighting head, needing no weapon on the craft

Attribute Reads Default
PartId text, required required
DisplayName text, required required
Sensor name, required required
Gimbal one of Mast, RollNod Mast
BaseMarker text, required required
HeadMarker text, required required
RollMarker text none
HeadPivot three numbers 0, 0, 0
EyeForward number 0.30
SlewRateDeg number 90
MinElevationDeg number -20
MaxElevationDeg number 85
MaxOffBoresightDeg number 135
KeyholeDeg number 4
MaxMagnification number 16
HasLaser true or false false
LaserRangeMetres number 20000

<Tube> - child of <Launcher>

Attribute Reads Default
Position three numbers required
Direction three numbers 0, 0, 0

<Muzzle> - child of <Launcher>

Attribute Reads Default
At three numbers required

<Stage> - child of <Munition>

Attribute Reads Default
Seconds number required
Accel number 0

<Provides> - child of <Launcher>

Attribute Reads Default
Role one of FireControl, Launcher, Sensor, Camera, Gun, Guidance, Countermeasures Sensor
DisplayName text, required required