Lua WeaponDefs: Difference between revisions

From Spring
Jump to navigationJump to search
Jk (talk | contribs)
mNo edit summary
Gajop (talk | contribs)
No edit summary
 
(6 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Engine_Development|Development]] < [[Lua_Scripting|Lua Scripting]] < {{FULLPAGENAME}}
[[Engine_Development|Development]] < [[Lua_Scripting|Lua Scripting]] < {{FULLPAGENAME}}


<font style="font-size:125%" color="#55ee99">The WeaponDefs[] table holds all information about the weapons used in a mod.
The '''WeaponDefs[]''' table holds all information about the weapons used in a game.
Note: Its entries are metatables, so you can't use the pairs() iterator on them, use this instead:</font>
 
<font style="font-size:110%" color="lightblue">
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:
<pre>
   for id,weaponDef in pairs(WeaponDefs) do
   for id,weaponDef in pairs(WeaponDefs) do
     for name,param in weaponDef:pairs() do
     for name,param in weaponDef:pairs() do
Line 9: Line 12:
     end
     end
   end
   end
</font>
</pre>
<font style="font-size:125%" color="#55ee99">Here an example of a weapon table:</font>
 
==Naming==
If a unit named "tank" has a weapon named "gun", the resulting <code>name</code> will be "tank_gun" and you can get this weaponDefID like:
 
<code>local gunID = WeaponDefNames["tank_gun"].id</code>


  '''WeaponDefs['''3''']["customParams"] = {
==Example==
      ...
For a more detailed overview of tag definitions look at
    }
[[Gamedev:WeaponDefs]] or look directly at the source at
  '''WeaponDefs['''3''']["accuracy"]''' = 0,
https://github.com/spring/spring/blob/5f08624585852b8c8dfd1a16d020ae530269dc09/rts/Sim/Weapons/WeaponLoader.cpp
  '''WeaponDefs['''3''']["areaOfEffect"]''' = 128,
  '''WeaponDefs['''3''']["avoidFriendly"]''' = false,
  '''WeaponDefs['''3''']["avoidFeature"]''' = false,
  '''WeaponDefs['''3''']["avoidNeutral"]''' = false,
  '''WeaponDefs['''3''']["beamburst"]''' = false,
  '''WeaponDefs['''3''']["beamTTL"]''' = 1,
  '''WeaponDefs['''3''']["bouncerebound"]''' = 1,
  '''WeaponDefs['''3''']["cameraShake"]''' = 1.5,
  '''WeaponDefs['''3''']["canAttackGround"]''' = true,
  '''WeaponDefs['''3''']["cegTag"]''' = "",
  '''WeaponDefs['''3''']["collisionSize"]''' = 0.050000000745058,
  '''WeaponDefs['''3''']["coreThickness"]''' = 0.25,
  '''WeaponDefs['''3''']["coverageRange"]''' = 0,
  '''WeaponDefs['''3''']["cylinderTargetting"]''' = 0,
  '''WeaponDefs['''3''']["damages"]''' = {
      '''[1]''' = 420,
      '''[2]''' = 420,
      '''[3]''' = 420,
      '''[4]''' = 420,
      ...
      -> '''[ [[Lua_ConstGame#Categories|armorType]] ]''' = number damage,


      '''["paralyzeDamageTime"]''' = 0,
In key = value format, where WeaponDefs[weaponDefID].key==value, with subtables at the end.
      '''["impulseBoost"]''' = 0.12300000339746,
<pre>
      '''["impulseFactor"]''' = 0.12300000339746,
    accuracy = 0,
      '''["craterBoost"]''' = 0,
     avoidFeature = false,
      '''["craterMult"]''' = 0,
    avoidFriendly = true,
     }
    avoidNeutral = false,
  '''WeaponDefs['''3''']["dance"]''' = 0,
    beamTTL = 0,
  '''WeaponDefs['''3''']["description"]''' = "CruiserDepthCharge",
    beamburst = false,
  '''WeaponDefs['''3''']["dropped"]''' = false,
    beamtime = 0.10000000149012,
  '''WeaponDefs['''3''']["duration"]''' = 0.050000000745058,
    bouncerebound = 1,
  '''WeaponDefs['''3''']["edgeEffectiveness"]''' = 0.80000001192093,
    canAttackGround = true,
  '''WeaponDefs['''3''']["energyCost"]''' = 0,
    cegTag = "",
  '''WeaponDefs['''3''']["explosionSpeed"]''' = 3.233583688736,
    collisionSize = 0.050000000745058,
  '''WeaponDefs['''3''']["exteriorShield"]''' = false,
    coverageRange = 0,
  '''WeaponDefs['''3''']["filename"]''' = "TorpedoLauncher",
     craterAreaOfEffect = 0,
  '''WeaponDefs['''3''']["fireSound"]''' = {
    cylinderTargeting = 1,
      '''[1]''' = {
    cylinderTargetting = 1,
        '''["id"]''' = 8,
    damageAreaOfEffect = 6,
        '''["name"]''' = "torpedo1.wav",
    dance = 0,
        '''["volume"]''' = 14.491376876831,
    description = "J7Laser",
      }
    duration = 0.050000000745058,
     }
    dynDamageExp = 0,
  '''WeaponDefs['''3''']["fireStarter"]''' = 0,
     dynDamageInverted = false,
  '''WeaponDefs['''3''']["graphicsType"]''' = -16777216,
    dynDamageMin = 0,
  '''WeaponDefs['''3''']["gravityAffected"]''' = false,
    dynDamageRange = 0,
  '''WeaponDefs['''3''']["groundbounce"]''' = true,
    edgeEffectiveness = 0.99000000953674,
  '''WeaponDefs['''3''']["groundslip"]''' = 1,
    energyCost = 0,
  '''WeaponDefs['''3''']["heightBoostFactor"]''' = -1,
    explosionSpeed = 3.233583688736,
  '''WeaponDefs['''3''']["heightMod"]''' = 0.20000000298023,
    exteriorShield = false,
  '''WeaponDefs['''3''']["highTrajectory"]''' = 1,
    fireStarter = 0.69999998807907,
  '''WeaponDefs['''3''']["hitSound"]''' = {
    flightTime = 0,
      '''[1]''' = {
    gravityAffected = false,
        '''["id"]''' = 9,
    groundbounce = false,
        '''["name"]''' = "xplodep2.wav",
    groundslip = 1,
        '''["volume"]''' = 28.982753753662,
    heightBoostFactor = -1,
      }
    heightMod = 1,
     }
    highTrajectory = 2,
  '''WeaponDefs['''3''']["id"]''' = 3,
    id = 220,
  '''WeaponDefs['''3''']["impactOnly"]''' = false,
    impactOnly = true,
  '''WeaponDefs['''3''']["intensity"]''' = 0.89999997615814,
    intensity = 0.89999997615814,
  '''WeaponDefs['''3''']["interceptedByShieldType"]''' = 0,
    interceptSolo = true,
  '''WeaponDefs['''3''']["interceptor"]''' = 0,
    interceptedByShieldType = 2,
  '''WeaponDefs['''3''']["isShield"]''' = false,
    interceptor = 0,
  '''WeaponDefs['''3''']["largeBeamLaser"]''' = false,
    isShield = false,
  '''WeaponDefs['''3''']["laserFlareSize"]''' = 15,
    largeBeamLaser = false,
  '''WeaponDefs['''3''']["leadLimit"]''' = 1,
    laserHardStop = false,
  '''WeaponDefs['''3''']["leadBonus"]''' = 1,
    leadBonus = 0,
  '''WeaponDefs['''3''']["manualFire"]''' = false,
    leadLimit = -1,
  '''WeaponDefs['''3''']["maxAngle"]''' = 180,
    manualFire = false,
  '''WeaponDefs['''3''']["maxVelocity"]''' = 200,
    maxAngle = 0.95873802900314,
  '''WeaponDefs['''3''']["metalCost"]''' = 0,
    metalCost = 0,
  '''WeaponDefs['''3''']["minIntensity"]''' = 0,
    minIntensity = 0,
  '''WeaponDefs['''3''']["movingAccuracy"]''' = 0,
    movingAccuracy = 0,
  '''WeaponDefs['''3''']["name"]''' = "advdepthcharge",
    myGravity = 0,
  '''WeaponDefs['''3''']["noAutoTarget"]''' = false,
    name = "corcom_armcomlaser",
  '''WeaponDefs['''3''']["noExplode"]''' = false,
    noAutoTarget = false,
  '''WeaponDefs['''3''']["noFeatureCollide"]''' = false,
    noEnemyCollide = false,
  '''WeaponDefs['''3''']["noFriendlyCollide"]''' = true,
    noExplode = false,
  '''WeaponDefs['''3''']["noNeutralCollide"]''' = false,
    noFeatureCollide = false,
  '''WeaponDefs['''3''']["noSelfDamage"]''' = true,
    noFriendlyCollide = false,
  '''WeaponDefs['''3''']["numbounce"]''' = 1,
    noGroundCollide = false,
  '''WeaponDefs['''3''']["onlyForward"]''' = true,
    noNeutralCollide = false,
  '''WeaponDefs['''3''']["onlyTargetCategories"]''' = {
    noSelfDamage = true,
      '''["antiflame"]''' = false,
    numbounce = -1,
      '''["vtol"]''' = false,
    onlyForward = false,
      '''["notland"]''' = false,
     paralyzer = false,
      '''["fort"]''' = false,
    predictBoost = 0,
      '''["special"]''' = false,
    projectiles = 1,
      '''["notair"]''' = false,
    projectilespeed = 30.000001907349,
      '''["kbot"]''' = false,
    proximityPriority = 1,
      '''["antiemg"]''' = false,
    range = 300,
      '''["commander"]''' = false,
    reload = 0.40000000596046,
      '''["jam"]''' = false,
    salvoDelay = 0.10000000149012,
      '''["tport"]''' = false,
    salvoSize = 1,
      '''["constr"]''' = false,
    selfExplode = false,
      '''["strategic"]''' = false,
    shieldAlpha = 0.20000000298023,
      '''["kamikaze"]''' = false,
    shieldBadColorB = 0.5,
      '''["minelayer"]''' = false,
    shieldBadColorG = 0.5,
      '''["hover"]''' = false,
    shieldBadColorR = 1,
      '''["noweapon"]''' = false,
    shieldEnergyUse = 0,
      '''["plant"]''' = false,
    shieldForce = 0,
      '''["ship"]''' = false,
    shieldGoodColorB = 1,
      '''["antilaser"]''' = false,
    shieldGoodColorG = 0.5,
      '''["phib"]''' = false,
    shieldGoodColorR = 0.5,
      '''["mine"]''' = false,
    shieldInterceptType = 0,
      '''["notstructure"]''' = false,
    shieldMaxSpeed = 0,
      '''["tank"]''' = false,
    shieldPower = 0,
      '''["mobile"]''' = false,
    shieldPowerRegen = 0,
      '''["underwater"]''' = false,
    shieldPowerRegenEnergy = 0,
      '''["antigator"]''' = false,
    shieldRadius = 0,
      '''["notship"]''' = false,
    shieldRechargeDelay = 0,
      '''["all"]''' = false,
    shieldRepulser = false,
      '''["notsub"]''' = false,
    size = 2.1875,
      '''["weapon"]''' = false,
    sizeGrowth = 0.5,
     }
    smartShield = false,
  '''WeaponDefs['''3''']["paralyzer"]''' = false,
    soundTrigger = true,
  '''WeaponDefs['''3''']["predictBoost"]''' = 1,
    sprayAngle = 0,
  '''WeaponDefs['''3''']["projectiles"]''' = 1,
    startvelocity = 0.0099999997764826,
  '''WeaponDefs['''3''']["projectilespeed"]''' = 6.6666665077209,
    stockpile = false,
  '''WeaponDefs['''3''']["proximityPriority"]''' = 1.0,
    stockpileTime = 30,
  '''WeaponDefs['''3''']["range"]''' = 500,
    sweepFire = false,
  '''WeaponDefs['''3''']["reload"]''' = 6,
    targetBorder = 0,
  '''WeaponDefs['''3''']["restTime"]''' = 0,
    targetMoveError = 0.050000000745058,
  '''WeaponDefs['''3''']["salvoDelay"]''' = 0.10000000149012,
    targetable = 0,
  '''WeaponDefs['''3''']["salvoSize"]''' = 1,
    tdfId = 0,
  '''WeaponDefs['''3''']["selfExplode"]''' = true,
    tracks = false,
  '''WeaponDefs['''3''']["shieldAlpha"]''' = 0.20000000298023,
    trajectoryHeight = 0,
  '''WeaponDefs['''3''']["shieldBadColorB"]''' = 0.5,
    turnRate = 0,
  '''WeaponDefs['''3''']["shieldBadColorG"]''' = 0.5,
    turret = true,
  '''WeaponDefs['''3''']["shieldBadColorR"]''' = 1,
    type = "BeamLaser",
  '''WeaponDefs['''3''']["shieldEnergyUse"]''' = 0,
    uptime = 0,
  '''WeaponDefs['''3''']["shieldForce"]''' = 0,
    visibleShield = false,
  '''WeaponDefs['''3''']["shieldGoodColorB"]''' = 1,
    visibleShieldHitFrames = 0,
  '''WeaponDefs['''3''']["shieldGoodColorG"]''' = 0.5,
    visibleShieldRepulse = false,
  '''WeaponDefs['''3''']["shieldGoodColorR"]''' = 0.5,
    waterWeapon = false,
  '''WeaponDefs['''3''']["shieldInterceptType"]''' = 0,
    waterbounce = false,
  '''WeaponDefs['''3''']["shieldMaxSpeed"]''' = 0,
    weaponAcceleration = 0,
  '''WeaponDefs['''3''']["shieldPower"]''' = 0,
    wobble = 0,
  '''WeaponDefs['''3''']["shieldPowerRegen"]''' = 0,
    customParams = {},
  '''WeaponDefs['''3''']["shieldPowerRegenEnergy"]''' = 0,
    damages = {
  '''WeaponDefs['''3''']["shieldRadius"]''' = 0,
        craterBoost = 0,
  '''WeaponDefs['''3''']["shieldRechargeDelay"]''' = 0,
        ...
  '''WeaponDefs['''3''']["shieldRepulser"]''' = false,
    },
  '''WeaponDefs['''3''']["size"]''' = 3.0499999523163,
    fireSound = {
  '''WeaponDefs['''3''']["sizeGrowth"]''' = 0.20000000298023,
        [1] = {
  '''WeaponDefs['''3''']["smartShield"]''' = false,
            id = 36,
  '''WeaponDefs['''3''']["soundTrigger"]''' = false,
            name = "lasrfir1",
  '''WeaponDefs['''3''']["sprayAngle"]''' = 0,
            volume = 6.1237244606018,
  '''WeaponDefs['''3''']["startvelocity"]''' = 3.6666667461395,
        },
  '''WeaponDefs['''3''']["stockpile"]''' = false,
        ...
  '''WeaponDefs['''3''']["stockpileTime"]''' = 0,
    },
  '''WeaponDefs['''3''']["supplyCost"]''' = 0,
    hitSound = {
  '''WeaponDefs['''3''']["sweepFire"]''' = false,
        [1] = {
  '''WeaponDefs['''3''']["targetBorder"]''' = 0,
            id = -1,
  '''WeaponDefs['''3''']["targetMoveError"]''' = 0,
            name = "",
  '''WeaponDefs['''3''']["targetable"]''' = 0,
            volume = 6.1237244606018,
  '''WeaponDefs['''3''']["tdfId"]''' = 0,
        },
  '''WeaponDefs['''3''']["thickness"]''' = 2,
        ...
  '''WeaponDefs['''3''']["tracks"]''' = true,
    },
  '''WeaponDefs['''3''']["trajectoryHeight"]''' = 0,
    visuals = {
  '''WeaponDefs['''3''']["turnRate"]''' = 0.031319729983807,
        alphaDecay = 1,
  '''WeaponDefs['''3''']["turret"]''' = false,
        alwaysVisible = false,
  '''WeaponDefs['''3''']["type"]''' = "TorpedoLauncher",
        beamDecay = 1,
  '''WeaponDefs['''3''']["uptime"]''' = 10,
        beamWeapon = false,
  '''WeaponDefs['''3''']["visibleShield"]''' = false,
        color2B = 1,
  '''WeaponDefs['''3''']["visibleShieldHitFrames"]''' = 0,
        color2G = 1,
  '''WeaponDefs['''3''']["visibleShieldRepulse"]''' = false,
        color2R = 1,
  '''WeaponDefs['''3''']["visuals"]''' = {
        colorB = 0,
      '''["alphaDecay"]''' = 1,
        colorG = 0,
      '''["alwaysVisible"]''' = false,
        colorR = 1,
      '''["beamWeapon"]''' = false,
        coreThickness = 0.10000000149012,
      '''["beamtime"]''' = 1,
        laserFlareSize = 7,
      '''["beamDecay"]''' = 1,
        modelName = "",
      '''["colorR"]''' = 1,
        noGap = true,
      '''["colorB"]''' = 0,
        pulseSpeed = 1,
      '''["colorG"]''' = 0,
        scrollSpeed = 5,
      '''["color2R"]''' = 1,
        separation = 1,
      '''["color2B"]''' = 1,
        sizeDecay = 0,
      '''["color2G"]''' = 1,
        smokeTrail = false,
      '''["hardStop"]''' = false,
        stages = 5,
      '''["modelName"]''' = "DEPTHCHARGE",
        thickness = 2,
      '''["noGap"]''' = 1,
        tileLength = 200,
      '''["pulseSpeed"]''' = 1,
     },
      '''["scrollSpeed"]''' = 5,
</pre>
      '''["separation"]''' = 1,
      '''["sizeDecay"]''' = 0,
      '''["smokeTrail"]''' = false,
      '''["stages"]''' = 5,
      '''["tileLength"]''' = 200,
     }
  '''WeaponDefs['''3''']["waterbounce"]''' = true,
  '''WeaponDefs['''3''']["waterWeapon"]''' = true,
  '''WeaponDefs['''3''']["weaponAcceleration"]''' = 0.016666667535901,
  '''WeaponDefs['''3''']["wobble"]''' = 0,


[[category: Lua]]
[[category: Lua]]

Latest revision as of 18:51, 10 November 2018

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,
    },