VE Lua Documentation

Press F to search!

getPartCondition

Definition


-- @/lua/vehicle/beamstate.lua:103

local function getPartCondition(partId, partTypeData)
  local canProvideCondition = false
  local partCondition = {integrityValue = 1, integrityState = {}, visualValue = 1, visualState = {}}

  if partTypeData then
    local breakGroupCount = 0
    local brokenBreakGroupCount = 0
    local hasFlexbodies = false
    local hasDamageableBeams = false
    local damageableBeams = {}
    for _, partType in ipairs(partTypeData) do
      local split = split(partType, ":")
      if split[1] == "jbeam" then
        if split[2] == "breakGroup" then
          local breakGroupName = split[3]
          breakGroupCount = breakGroupCount + 1
          if brokenBreakGroups[breakGroupName] then
            brokenBreakGroupCount = brokenBreakGroupCount + 1
          end
        end
        if split[2] == "flexbody" then
          hasFlexbodies = true
        end
        if split[2] == "beamDamage" then
          table.insert(damageableBeams, tonumber(split[3]))
          hasDamageableBeams = true
        end
      end
    end
    if hasFlexbodies and (breakGroupCount > 0 or hasDamageableBeams) then
      local brokenBeamCount = 0
      local deformedBeamCount = 0
      for _, beamCid in ipairs(damageableBeams) do
        local beamDamage = beamDamageTracker[beamCid] or 0
        if beamDamage >= 0.01 then
          deformedBeamCount = deformedBeamCount + 1
        end
        if beamDamage >= 0.9 then
          brokenBeamCount = brokenBeamCount + 1
        end
      end
      --thresholds for when a part is considered too broken and needs replacements
      local tooMuchBeamDamage = deformedBeamCount > (#damageableBeams * 0.01)
      local tooManyBrokenBeams = brokenBeamCount > 2
      local tooManyBreakGroupsBroken = breakGroupCount > 0 and (brokenBreakGroupCount > 1 or (brokenBreakGroupCount == breakGroupCount))
      --print(string.format("%q: Breakgroups: %s, broken beams: %s/%s, deformed beams: %s/%s", partId, brokenBreakGroupCount, brokenBeamCount, #damageableBeams, deformedBeamCount, #damageableBeams))

      if tooManyBreakGroupsBroken or tooMuchBeamDamage or tooManyBrokenBeams then
        partCondition.visualState.needsReplacement = true
        partCondition.integrityValue = 0
        canProvideCondition = true
      end
    end
  end

  return partCondition, canProvideCondition
end

Callers

@/lua/vehicle/energyStorage/fuelTank.lua

local function getPartCondition(storage)
  local integrityState = {
@/lua/vehicle/powertrain/hydraulicPump.lua

local function getPartCondition(device)
  local integrityState = {isBroken = device.isBroken}
@/lua/vehicle/powertrain/turbocharger.lua

local function getPartCondition()
  local integrityState = {
@/lua/vehicle/energyStorage/n2oTank.lua

local function getPartCondition(storage)
  local integrityState = {
@/lua/vehicle/powertrain/cvtGearbox.lua

local function getPartCondition(device)
  local integrityState = {damageFrictionCoef = device.damageFrictionCoef, isBroken = device.isBroken}
@/lua/vehicle/energyStorage.lua

local function getPartCondition(partTypeData)
  local relevantStorages = getPartRelevantStorages(partTypeData)
    if storage and storage.getPartCondition then
      local storageIntegrityValue, storageIntegrityState = storage:getPartCondition()
      energyStorageCondition.integrityState[relevantStorage] = storageIntegrityState
@/lua/vehicle/powertrain/differential.lua

local function getPartCondition(device)
  local integrityState = {
@/lua/vehicle/powertrain/compressor.lua

local function getPartCondition(device)
  local integrityState = {isBroken = device.isBroken}
@/lua/vehicle/powertrain/rangeBox.lua

local function getPartCondition(device)
  local integrityState = {damageFrictionCoef = device.damageFrictionCoef, isBroken = device.isBroken}
@/lua/vehicle/powertrain.lua

local function getPartCondition(partTypeData)
  local canProvideIntegrityCondition = false
    if device and device.getPartCondition then
      local deviceIntegrityValue, deviceIntegrityState = device:getPartCondition(deviceData.subSystem)
      powertrainCondition.integrityState[deviceData.device] = deviceIntegrityState
@/lua/vehicle/powertrain/splitShaft.lua

local function getPartCondition(device)
  local integrityState = {
@/lua/vehicle/energyStorage/pressureTank.lua

local function getPartCondition(storage)
  local integrityState = {
@/lua/vehicle/powertrain/sequentialGearbox.lua

local function getPartCondition(device)
  local integrityState = {damageFrictionCoef = device.damageFrictionCoef, isBroken = device.isBroken}
@/lua/vehicle/partCondition.lua

  local powertrainCondition, canProvidePowertrainIntegrityCondition, canProvidePowertrainVisualCondition = powertrain.getPartCondition(partData)
  local energyStorageCondition, canProvideEnergyStorageIntegrityCondition, canProvideEnergyStorageVisualCondition = energyStorage.getPartCondition(partData)
  local powertrainCondition, canProvidePowertrainIntegrityCondition, canProvidePowertrainVisualCondition = powertrain.getPartCondition(partData)
  local energyStorageCondition, canProvideEnergyStorageIntegrityCondition, canProvideEnergyStorageVisualCondition = energyStorage.getPartCondition(partData)
  local jbeamCondition, canProvideBeamstateCondition = beamstate.getPartCondition(partId, partData)
  local energyStorageCondition, canProvideEnergyStorageIntegrityCondition, canProvideEnergyStorageVisualCondition = energyStorage.getPartCondition(partData)
  local jbeamCondition, canProvideBeamstateCondition = beamstate.getPartCondition(partId, partData)
  local paintCondition, canProvidePaintCondition = getPaintCondition(partId, partData)
@/lua/vehicle/powertrain/dctGearbox.lua

local function getPartCondition(device)
  local integrityState = {
@/lua/vehicle/powertrain/automaticGearbox.lua

local function getPartCondition(device)
  local integrityState = {
@/lua/vehicle/powertrain/torqueConverter.lua

local function getPartCondition(device)
  local integrityState = {damageLockupClutchTorqueCoef = device.damageLockupClutchTorqueCoef}
@/lua/vehicle/energyStorage/electricBattery.lua

local function getPartCondition(storage)
  local integrityState = {
@/lua/vehicle/powertrain/supercharger.lua

local function getPartCondition()
  local integrityState = {
@/lua/vehicle/powertrain/linearActuator.lua

local function getPartCondition(device)
  local integrityState = {damageFrictionCoef = device.damageFrictionCoef, isBroken = device.isBroken}
@/lua/vehicle/powertrain/centrifugalClutch.lua

local function getPartCondition(device)
  local integrityState = {
@/lua/vehicle/powertrain/hydraulicAccumulator.lua

local function getPartCondition(device)
  local integrityState = {isBroken = device.isBroken}
@/lua/vehicle/powertrain/shaft.lua

local function getPartCondition(device)
  local integrityState = {damageFrictionCoef = device.damageFrictionCoef, isBroken = device.isBroken}
@/lua/vehicle/powertrain/manualGearbox.lua

local function getPartCondition(device)
  local integrityState = {
@/lua/vehicle/powertrain/frictionClutch.lua

local function getPartCondition(device)
  local integrityState = {
@/lua/vehicle/powertrain/combustionEngine.lua

local function getPartCondition(device, subSystem)
  if not subSystem then
  elseif subSystem == "turbocharger" then
    local integrityValue, integrityState = device.turbocharger.getPartCondition()
    return integrityValue, integrityState
  -- elseif subSystem == "supercharger" then
  --   local integrityValue, integrityState = device.supercharger.getPartCondition()
  --   return integrityValue, integrityState
@/lua/vehicle/powertrain/electricWinch.lua

local function getPartCondition(device)
  local integrityState = {damageFrictionCoef = device.damageFrictionCoef, isBroken = device.isBroken}
@/lua/vehicle/controller/gauges/genericGauges.lua

local function getPartCondition(storage)
  local integrityState = {