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 = {