Lua WeaponDefs
Development < Lua Scripting < Lua WeaponDefs
The WeaponDefs[] table holds all information about the weapons used in a game.
Works the same way as Lua_UnitDefs except the tables are called WeaponDefs[] and WeaponDefNames[]
Note: Its entries are metatables, so you can't use the pairs() iterator on them, use this instead:
for id,weaponDef in pairs(WeaponDefs) do for name,param in weaponDef:pairs() do Spring.Echo(name,param) end end
Naming
If a unit named "tank" has a weapon named "gun", the resulting name
will be "tank_gun" and you can get this weaponDefID like:
local gunID = WeaponDefNames["tank_gun"].id
Example
For a more detailed overview of tag definitions look at Gamedev:WeaponDefs or look directly at the source at https://github.com/spring/spring/blob/5f08624585852b8c8dfd1a16d020ae530269dc09/rts/Sim/Weapons/WeaponLoader.cpp
In key = value format, where WeaponDefs[weaponDefID].key==value, with subtables at the end.
accuracy = 0, avoidFeature = false, avoidFriendly = true, avoidNeutral = false, beamTTL = 0, beamburst = false, beamtime = 0.10000000149012, bouncerebound = 1, canAttackGround = true, cegTag = "", collisionSize = 0.050000000745058, coverageRange = 0, craterAreaOfEffect = 0, cylinderTargeting = 1, cylinderTargetting = 1, damageAreaOfEffect = 6, dance = 0, description = "J7Laser", duration = 0.050000000745058, dynDamageExp = 0, dynDamageInverted = false, dynDamageMin = 0, dynDamageRange = 0, edgeEffectiveness = 0.99000000953674, energyCost = 0, explosionSpeed = 3.233583688736, exteriorShield = false, fireStarter = 0.69999998807907, flightTime = 0, gravityAffected = false, groundbounce = false, groundslip = 1, heightBoostFactor = -1, heightMod = 1, highTrajectory = 2, id = 220, impactOnly = true, intensity = 0.89999997615814, interceptSolo = true, interceptedByShieldType = 2, interceptor = 0, isShield = false, largeBeamLaser = false, laserHardStop = false, leadBonus = 0, leadLimit = -1, manualFire = false, maxAngle = 0.95873802900314, metalCost = 0, minIntensity = 0, movingAccuracy = 0, myGravity = 0, name = "corcom_armcomlaser", noAutoTarget = false, noEnemyCollide = false, noExplode = false, noFeatureCollide = false, noFriendlyCollide = false, noGroundCollide = false, noNeutralCollide = false, noSelfDamage = true, numbounce = -1, onlyForward = false, paralyzer = false, predictBoost = 0, projectiles = 1, projectilespeed = 30.000001907349, proximityPriority = 1, range = 300, reload = 0.40000000596046, salvoDelay = 0.10000000149012, salvoSize = 1, selfExplode = false, shieldAlpha = 0.20000000298023, shieldBadColorB = 0.5, shieldBadColorG = 0.5, shieldBadColorR = 1, shieldEnergyUse = 0, shieldForce = 0, shieldGoodColorB = 1, shieldGoodColorG = 0.5, shieldGoodColorR = 0.5, shieldInterceptType = 0, shieldMaxSpeed = 0, shieldPower = 0, shieldPowerRegen = 0, shieldPowerRegenEnergy = 0, shieldRadius = 0, shieldRechargeDelay = 0, shieldRepulser = false, size = 2.1875, sizeGrowth = 0.5, smartShield = false, soundTrigger = true, sprayAngle = 0, startvelocity = 0.0099999997764826, stockpile = false, stockpileTime = 30, sweepFire = false, targetBorder = 0, targetMoveError = 0.050000000745058, targetable = 0, tdfId = 0, tracks = false, trajectoryHeight = 0, turnRate = 0, turret = true, type = "BeamLaser", uptime = 0, visibleShield = false, visibleShieldHitFrames = 0, visibleShieldRepulse = false, waterWeapon = false, waterbounce = false, weaponAcceleration = 0, wobble = 0, customParams = {}, damages = { craterBoost = 0, ... }, fireSound = { [1] = { id = 36, name = "lasrfir1", volume = 6.1237244606018, }, ... }, hitSound = { [1] = { id = -1, name = "", volume = 6.1237244606018, }, ... }, visuals = { alphaDecay = 1, alwaysVisible = false, beamDecay = 1, beamWeapon = false, color2B = 1, color2G = 1, color2R = 1, colorB = 0, colorG = 0, colorR = 1, coreThickness = 0.10000000149012, laserFlareSize = 7, modelName = "", noGap = true, pulseSpeed = 1, scrollSpeed = 5, separation = 1, sizeDecay = 0, smokeTrail = false, stages = 5, thickness = 2, tileLength = 200, },