VE Lua Documentation

Press F to search!

setDamage

Definition


-- @/lua/vehicle/damageTracker.lua:46

local function setDamage(group, name, value, notifyUI)
  if damageData[group] == nil then
    damageData[group] = {}
  end
  if damageData[group][name] == value then
    return
  end
  damageData[group][name] = value

  damageDataDelta[group] = damageDataDelta[group] or {}
  damageDataDelta[group][name] = value

  --make sure to remove any timeouts on this group,name pair if it exists
  if temporaryDamageTimeoutTracker[group] and temporaryDamageTimeoutTracker[group][name] then
    temporaryDamageTimeoutTracker[group][name] = nil
  end

  if notifyUI then
    local notifyKey = string.format("vehicle.%s.%s.%s", group, name, value)
    guihooks.message(notifyKey, 5, notifyKey)
  end

  M.updateGFX = updateGFXDirty
end

Callers

@/lua/vehicle/beamstate.lua
    guihooks.message({txt = "vehicle.beamstate.tireDeflated", context = {wheelName = wheel.name}}, 5, "vehicle.damage.deflated." .. wheel.name)
    damageTracker.setDamage("wheels", "tire" .. wheel.name, true)
    extensions.hook("onTireDeflated", wheelid)
    if damage > 0.001 then
      damageTracker.setDamage("body", bodyPart, damage)
    end
    invBodyPartBeamCount[k] = 1 / v
    damageTracker.setDamage("body", k, 0)
  end
    if damage > 0.001 then
      damageTracker.setDamage("body", bodyPart, damage)
    end
@/ui/modules/apps/DamageAppVehicleSimple/app.js

          function setDamage(component, color, anim) {
            hu(component.svgId, svg).css({
                    $timeout.cancel(damageTimeout)
                    setDamage(damagedComponent, redColor, 'flashAnim')
                  } else if (damagedComponent.priority === 0) {
                    $timeout.cancel(damageTimeout)
                    setDamage(damagedComponent, orangeColor, 'flashAnim')
                  } else if (damagedComponent.priority === 2 ) {
                    var bodyColor = `rgba(${150+damageAmount}, ${150-damageAmount}, 0, 0.6)`
                    setDamage(damagedComponent, bodyColor, '')
                  }
                if (data[type][component] === true || data[type][component] > 0) {
                  setDamage(damagedComponent, orangeColor, 'flashAnim')
                }
                  permanentDamagedParts -= 1
                  setDamage(damagedComponent, noDataColor, '')
                }
@/lua/vehicle/powertrain.lua

      damageTracker.setDamage("powertrain", device.name, device.isBroken or false)
    end
    device:reset(deviceJbeamData[device.name])
    damageTracker.setDamage("powertrain", device.name, device.isBroken or false)
  end
  guihooks.message({txt = "vehicle.powertrain.deviceBroken", context = {deviceName = device.uiName}}, 10, "vehicle.damage.device." .. device.uiName)
  damageTracker.setDamage("powertrain", device.name, true)
end
@/lua/vehicle/powertrain/frictionClutch.lua
    messageTime = 3
    damageTracker.setDamage("powertrain", device.name, true)
  end
@/lua/vehicle/wheels.lua
      obj:setWheelTorqueAndBrakeTorque(wd.cid, 0, 0)
      damageTracker.setDamage("wheels", wd.name, true)
      -- Brake damage
      -- Brake damage
      damageTracker.setDamage("wheels", "brake" .. wd.name, true)
      if wd.rotatorType == "wheel" then
      if updateDamage then
        damageTracker.setDamage("wheels", "brakeOverHeat" .. wd.name, (slopeSwitchBit < 1 and thermalEfficiency < 0.85) and wd.brakeThermalEfficiency or 0)
        if wd.isBrakeMolten then
        if wd.isBrakeMolten then
          damageTracker.setDamage("wheels", "brake" .. wd.name, wd.isBrakeMolten)
        end
        -- Reset brake damage values
        damageTracker.setDamage("wheels", "brake" .. wd.name, false)
        -- Reset brake overheating values
        -- Reset brake overheating values
        damageTracker.setDamage("wheels", "brakeOverHeat" .. wd.name, 0)
      end
      -- Initialising brake damage values
      damageTracker.setDamage("wheels", "brake" .. wd.name, false)
      -- Initialising brake overheating values
      -- Initialising brake overheating values
      damageTracker.setDamage("wheels", "brakeOverHeat" .. wd.name, 0)
    end
    local wd = M.wheels[i]
    damageTracker.setDamage("wheels", wd.name, false)
    damageTracker.setDamage("wheels", "tire" .. wd.name, false)
    damageTracker.setDamage("wheels", wd.name, false)
    damageTracker.setDamage("wheels", "tire" .. wd.name, false)
  end

    damageTracker.setDamage("wheels", wd.name, false)
    damageTracker.setDamage("wheels", "tire" .. wd.name, false)
    damageTracker.setDamage("wheels", wd.name, false)
    damageTracker.setDamage("wheels", "tire" .. wd.name, false)
  end
@/lua/vehicle/powertrain/centrifugalClutch.lua
    messageTime = 3
    damageTracker.setDamage("powertrain", device.name, true)
  end
@/lua/vehicle/damageTracker.lua
      if data.timeout <= 0 then
        M.setDamage(group, name, data.timeoutValue, false)
      else
local function setDamageTemporary(group, name, value, timeoutValue, timeout, notifyUI)
  setDamage(group, name, value, notifyUI)
  temporaryDamageTimeoutTracker[group] = temporaryDamageTimeoutTracker[group] or {}
@/lua/vehicle/powertrain/manualGearbox.lua

  damageTracker.setDamage("gearbox", "synchroWear", false)
@/lua/vehicle/powertrain/combustionEngineThermals.lua
  fluidLeakRates.oil.oilpan = min(fluidLeakRates.oil.oilpan + damageAmount * 10, 1) --kg/s
  damageTracker.setDamage("engine", "oilpanLeak", true, true)
end
  fluidLeakRates.oil.radiator = min(fluidLeakRates.oil.radiator + damageAmount * 0.1, 0.1) --kg/s
  damageTracker.setDamage("engine", "oilRadiatorLeak", true, true)
end
local function headGasketBlown()
  damageTracker.setDamage("engine", "headGasketDamaged", true, true)
  M.headGasketBlown = true
local function pistonRingsDamaged()
  damageTracker.setDamage("engine", "pistonRingsDamaged", true, true)
  M.pistonRingsDamaged = true
local function connectingRodBearingsDamaged()
  damageTracker.setDamage("engine", "rodBearingsDamaged", true, true)
  M.connectingRodBearingsDamaged = true
  M.engineBlockMelted = true
  damageTracker.setDamage("engine", "blockMelted", true, true)
end
  M.cylinderWallsMelted = true
  damageTracker.setDamage("engine", "cylinderWallsMelted", true, true)
end

    damageTracker.setDamage("engine", "oilOverheating", true, true)
  elseif damageTracker.getDamage("engine", "oilOverheating", true) then
  elseif damageTracker.getDamage("engine", "oilOverheating", true) then
    damageTracker.setDamage("engine", "oilOverheating", false)
  end
    if adjustedRadiatorDamage > 0 and not damageTracker.getDamage("engine", "radiatorLeak") then
      damageTracker.setDamage("engine", "radiatorLeak", true, true)
    end

    damageTracker.setDamage("engine", "coolantOverheating", true, true)
  elseif damageTracker.getDamage("engine", "coolantOverheating") then
    fluidLeakRates.coolant.overpressure = 0
    damageTracker.setDamage("engine", "coolantOverheating", false)
  end

    damageTracker.setDamage("engine", "oilOverheating", true, true)
  elseif damageTracker.getDamage("engine", "oilOverheating", true) then
  elseif damageTracker.getDamage("engine", "oilOverheating", true) then
    damageTracker.setDamage("engine", "oilOverheating", false)
  end
    if not damageTracker.getDamage("engine", "oilLevelCritical") then
      damageTracker.setDamage("engine", "oilLevelCritical", true, true)
    end
  elseif damageTracker.getDamage("engine", "oilLevelCritical") then
    damageTracker.setDamage("engine", "oilLevelCritical", false)
  end
    if not damageTracker.getDamage("engine", "starvedOfOil") then
      damageTracker.setDamage("engine", "starvedOfOil", true, true)
    end
  elseif damageTracker.getDamage("engine", "starvedOfOil") then
    damageTracker.setDamage("engine", "starvedOfOil", false, false)
  end
    if not damageTracker.getDamage("engine", "oilLevelTooHigh") then
      damageTracker.setDamage("engine", "oilLevelTooHigh", true, true)
    end
  elseif damageTracker.getDamage("engine", "oilLevelTooHigh") then
    damageTracker.setDamage("engine", "oilLevelTooHigh", false)
  end
    if not damageTracker.getDamage("engine", "exhaustBroken") then
      damageTracker.setDamage("engine", "exhaustBroken", true)
      guihooks.message("vehicle.combustionEngine.exhaustDamaged", 4, "vehicle.damage.exhaust")
  if hasCoolantRadiator then
    damageTracker.setDamage("engine", "radiatorLeak", false)
  end
  end
  damageTracker.setDamage("engine", "coolantOverheating", false)
  damageTracker.setDamage("engine", "oilOverheating", false)
  damageTracker.setDamage("engine", "coolantOverheating", false)
  damageTracker.setDamage("engine", "oilOverheating", false)
  damageTracker.setDamage("engine", "oilRadiatorLeak", false)
  damageTracker.setDamage("engine", "oilOverheating", false)
  damageTracker.setDamage("engine", "oilRadiatorLeak", false)
  damageTracker.setDamage("engine", "oilpanLeak", false)
  damageTracker.setDamage("engine", "oilRadiatorLeak", false)
  damageTracker.setDamage("engine", "oilpanLeak", false)
  damageTracker.setDamage("engine", "headGasketDamaged", M.headGasketBlown)
  damageTracker.setDamage("engine", "oilpanLeak", false)
  damageTracker.setDamage("engine", "headGasketDamaged", M.headGasketBlown)
  damageTracker.setDamage("engine", "rodBearingsDamaged", M.connectingRodBearingsDamaged)
  damageTracker.setDamage("engine", "headGasketDamaged", M.headGasketBlown)
  damageTracker.setDamage("engine", "rodBearingsDamaged", M.connectingRodBearingsDamaged)
  damageTracker.setDamage("engine", "pistonRingsDamaged", M.pistonRingsDamaged)
  damageTracker.setDamage("engine", "rodBearingsDamaged", M.connectingRodBearingsDamaged)
  damageTracker.setDamage("engine", "pistonRingsDamaged", M.pistonRingsDamaged)
  damageTracker.setDamage("engine", "cylinderWallsMelted", false)
  damageTracker.setDamage("engine", "pistonRingsDamaged", M.pistonRingsDamaged)
  damageTracker.setDamage("engine", "cylinderWallsMelted", false)
  damageTracker.setDamage("engine", "blockMelted", false)
  damageTracker.setDamage("engine", "cylinderWallsMelted", false)
  damageTracker.setDamage("engine", "blockMelted", false)
  damageTracker.setDamage("engine", "starvedOfOil", false)
  damageTracker.setDamage("engine", "blockMelted", false)
  damageTracker.setDamage("engine", "starvedOfOil", false)
  damageTracker.setDamage("engine", "oilLevelCritical", false)
  damageTracker.setDamage("engine", "starvedOfOil", false)
  damageTracker.setDamage("engine", "oilLevelCritical", false)
  damageTracker.setDamage("engine", "oilLevelTooHigh", false)
  damageTracker.setDamage("engine", "oilLevelCritical", false)
  damageTracker.setDamage("engine", "oilLevelTooHigh", false)
  damageTracker.setDamage("engine", "exhaustBroken", false)
  damageTracker.setDamage("engine", "oilLevelTooHigh", false)
  damageTracker.setDamage("engine", "exhaustBroken", false)
end
  if hasCoolantRadiator then
    damageTracker.setDamage("engine", "radiatorLeak", false)
  end
  end
  damageTracker.setDamage("engine", "coolantOverheating", false)
  damageTracker.setDamage("engine", "oilOverheating", false)
  damageTracker.setDamage("engine", "coolantOverheating", false)
  damageTracker.setDamage("engine", "oilOverheating", false)
  damageTracker.setDamage("engine", "oilRadiatorLeak", false)
  damageTracker.setDamage("engine", "oilOverheating", false)
  damageTracker.setDamage("engine", "oilRadiatorLeak", false)
  damageTracker.setDamage("engine", "oilpanLeak", false)
  damageTracker.setDamage("engine", "oilRadiatorLeak", false)
  damageTracker.setDamage("engine", "oilpanLeak", false)
  damageTracker.setDamage("engine", "headGasketDamaged", M.headGasketBlown)
  damageTracker.setDamage("engine", "oilpanLeak", false)
  damageTracker.setDamage("engine", "headGasketDamaged", M.headGasketBlown)
  damageTracker.setDamage("engine", "rodBearingsDamaged", M.connectingRodBearingsDamaged)
  damageTracker.setDamage("engine", "headGasketDamaged", M.headGasketBlown)
  damageTracker.setDamage("engine", "rodBearingsDamaged", M.connectingRodBearingsDamaged)
  damageTracker.setDamage("engine", "pistonRingsDamaged", M.pistonRingsDamaged)
  damageTracker.setDamage("engine", "rodBearingsDamaged", M.connectingRodBearingsDamaged)
  damageTracker.setDamage("engine", "pistonRingsDamaged", M.pistonRingsDamaged)
  damageTracker.setDamage("engine", "cylinderWallsMelted", false)
  damageTracker.setDamage("engine", "pistonRingsDamaged", M.pistonRingsDamaged)
  damageTracker.setDamage("engine", "cylinderWallsMelted", false)
  damageTracker.setDamage("engine", "blockMelted", false)
  damageTracker.setDamage("engine", "cylinderWallsMelted", false)
  damageTracker.setDamage("engine", "blockMelted", false)
  damageTracker.setDamage("engine", "starvedOfOil", false)
  damageTracker.setDamage("engine", "blockMelted", false)
  damageTracker.setDamage("engine", "starvedOfOil", false)
  damageTracker.setDamage("engine", "oilLevelCritical", false)
  damageTracker.setDamage("engine", "starvedOfOil", false)
  damageTracker.setDamage("engine", "oilLevelCritical", false)
  damageTracker.setDamage("engine", "oilLevelTooHigh", false)
  damageTracker.setDamage("engine", "oilLevelCritical", false)
  damageTracker.setDamage("engine", "oilLevelTooHigh", false)
  damageTracker.setDamage("engine", "exhaustBroken", false)
  damageTracker.setDamage("engine", "oilLevelTooHigh", false)
  damageTracker.setDamage("engine", "exhaustBroken", false)
@/lua/vehicle/powertrain/combustionEngine.lua
  device.outputTorqueState = max(device.outputTorqueState * state, min(maxReduction or 0, device.outputTorqueState))
  damageTracker.setDamage("engine", "engineReducedTorque", device.outputTorqueState < 1)
end

  damageTracker.setDamage("engine", "engineDisabled", true)
end

  damageTracker.setDamage("engine", "engineDisabled", false)
end
  end
  damageTracker.setDamage("powertrain", device.name, true)
  damageTracker.setDamage("engine", "engineLockedUp", true)
  damageTracker.setDamage("powertrain", device.name, true)
  damageTracker.setDamage("engine", "engineLockedUp", true)
end

  damageTracker.setDamage("engine", "engineIsHydrolocking", isFlooding)
  if device.floodLevel > hydrolockThreshold then
    damageTracker.setDamage("engine", "engineHydrolocked", true)
    -- avoid piston movement, simulate broken connecting rods
  local rpmTooHigh = abs(device.outputAV1) > device.maxPhysicalAV
  damageTracker.setDamage("engine", "overRevDanger", rpmTooHigh)
  if rpmTooHigh then
      device:lockUp()
      damageTracker.setDamage("engine", "catastrophicOverrevDamage", true)
      guihooks.message({txt = "vehicle.combustionEngine.engineCatastrophicOverrevDamage", context = {}}, 4, "vehicle.damage.catastrophicOverrev")
      device:scaleOutputTorque(0.98, 0.2)
      damageTracker.setDamage("engine", "mildOverrevDamage", true)
      guihooks.message({txt = "vehicle.combustionEngine.engineMildOverrevDamage", context = {}}, 4, "vehicle.damage.mildOverrev")
  if device.maxTorqueRating > 0 then
    damageTracker.setDamage("engine", "overTorqueDanger", device.combustionTorque > device.maxTorqueRating)
    if device.combustionTorque > device.maxTorqueRating then
        device:lockUp()
        damageTracker.setDamage("engine", "catastrophicOverTorqueDamage", true)
        guihooks.message({txt = "vehicle.combustionEngine.engineCatastrophicOverTorqueDamage", context = {}}, 4, "vehicle.damage.catastrophicOverTorque")
    device.slowIgnitionErrorChance = min(device.slowIgnitionErrorChance + linearScale(damageAmount, 0, 0.01, 0, 0.05))
    damageTracker.setDamage("engine", "impactDamage", true, true)
  elseif groupType == "radiator" and device.thermals.applyDeformGroupDamageRadiator then

  damageTracker.setDamage("engine", "engineDisabled", false)
  damageTracker.setDamage("engine", "engineLockedUp", false)
  damageTracker.setDamage("engine", "engineDisabled", false)
  damageTracker.setDamage("engine", "engineLockedUp", false)
  damageTracker.setDamage("engine", "engineReducedTorque", false)
  damageTracker.setDamage("engine", "engineLockedUp", false)
  damageTracker.setDamage("engine", "engineReducedTorque", false)
  damageTracker.setDamage("engine", "catastrophicOverrevDamage", false)
  damageTracker.setDamage("engine", "engineReducedTorque", false)
  damageTracker.setDamage("engine", "catastrophicOverrevDamage", false)
  damageTracker.setDamage("engine", "mildOverrevDamage", false)
  damageTracker.setDamage("engine", "catastrophicOverrevDamage", false)
  damageTracker.setDamage("engine", "mildOverrevDamage", false)
  damageTracker.setDamage("engine", "overRevDanger", false)
  damageTracker.setDamage("engine", "mildOverrevDamage", false)
  damageTracker.setDamage("engine", "overRevDanger", false)
  damageTracker.setDamage("engine", "catastrophicOverTorqueDamage", false)
  damageTracker.setDamage("engine", "overRevDanger", false)
  damageTracker.setDamage("engine", "catastrophicOverTorqueDamage", false)
  damageTracker.setDamage("engine", "overTorqueDanger", false)
  damageTracker.setDamage("engine", "catastrophicOverTorqueDamage", false)
  damageTracker.setDamage("engine", "overTorqueDanger", false)
  damageTracker.setDamage("engine", "engineHydrolocked", false)
  damageTracker.setDamage("engine", "overTorqueDanger", false)
  damageTracker.setDamage("engine", "engineHydrolocked", false)
  damageTracker.setDamage("engine", "engineIsHydrolocking", false)
  damageTracker.setDamage("engine", "engineHydrolocked", false)
  damageTracker.setDamage("engine", "engineIsHydrolocking", false)
  damageTracker.setDamage("engine", "impactDamage", false)
  damageTracker.setDamage("engine", "engineIsHydrolocking", false)
  damageTracker.setDamage("engine", "impactDamage", false)

  damageTracker.setDamage("engine", "engineDisabled", false)
  damageTracker.setDamage("engine", "engineLockedUp", false)
  damageTracker.setDamage("engine", "engineDisabled", false)
  damageTracker.setDamage("engine", "engineLockedUp", false)
  damageTracker.setDamage("engine", "engineReducedTorque", false)
  damageTracker.setDamage("engine", "engineLockedUp", false)
  damageTracker.setDamage("engine", "engineReducedTorque", false)
  damageTracker.setDamage("engine", "catastrophicOverrevDamage", false)
  damageTracker.setDamage("engine", "engineReducedTorque", false)
  damageTracker.setDamage("engine", "catastrophicOverrevDamage", false)
  damageTracker.setDamage("engine", "mildOverrevDamage", false)
  damageTracker.setDamage("engine", "catastrophicOverrevDamage", false)
  damageTracker.setDamage("engine", "mildOverrevDamage", false)
  damageTracker.setDamage("engine", "catastrophicOverTorqueDamage", false)
  damageTracker.setDamage("engine", "mildOverrevDamage", false)
  damageTracker.setDamage("engine", "catastrophicOverTorqueDamage", false)
  damageTracker.setDamage("engine", "mildOverTorqueDamage", false)
  damageTracker.setDamage("engine", "catastrophicOverTorqueDamage", false)
  damageTracker.setDamage("engine", "mildOverTorqueDamage", false)
  damageTracker.setDamage("engine", "engineHydrolocked", false)
  damageTracker.setDamage("engine", "mildOverTorqueDamage", false)
  damageTracker.setDamage("engine", "engineHydrolocked", false)
  damageTracker.setDamage("engine", "engineIsHydrolocking", false)
  damageTracker.setDamage("engine", "engineHydrolocked", false)
  damageTracker.setDamage("engine", "engineIsHydrolocking", false)
  damageTracker.setDamage("engine", "impactDamage", false)
  damageTracker.setDamage("engine", "engineIsHydrolocking", false)
  damageTracker.setDamage("engine", "impactDamage", false)
@/lua/vehicle/powertrain/turbocharger.lua
  damageExhaustPowerCoef = max(damageExhaustPowerCoef - linearScale(damageAmount, 0, 0.01, 0, 0.1), 0)
  damageTracker.setDamage("engine", "inductionSystemDamaged", true, true)
end
    damageFrictionCoef = damageFrictionCoef * (1 + (turboTemp - turboDamageThresholdTemperature) * 0.001 * dt)
    damageTracker.setDamage("engine", "turbochargerHot", true)
  else
  else
    damageTracker.setDamage("engine", "turbochargerHot", false)
  end

  damageTracker.setDamage("engine", "turbochargerHot", false)
  damageTracker.setDamage("engine", "turbochargerDamaged", false)
  damageTracker.setDamage("engine", "turbochargerHot", false)
  damageTracker.setDamage("engine", "turbochargerDamaged", false)
end

  damageTracker.setDamage("engine", "turbochargerHot", false)
  damageTracker.setDamage("engine", "turbochargerDamaged", false)
  damageTracker.setDamage("engine", "turbochargerHot", false)
  damageTracker.setDamage("engine", "turbochargerDamaged", false)
@/lua/vehicle/powertrain/supercharger.lua
  damagePressureCoef = clamp(damagePressureCoef - linearScale(damageAmount, 0, 0.01, 0, 1), -0.1, 1)
  damageTracker.setDamage("engine", "inductionSystemDamaged", true, true)
end
  wearPressureCoef = 1
  damageTracker.setDamage("engine", "superchargerDamaged", false)
end

  damageTracker.setDamage("engine", "superchargerDamaged", false)
@/lua/vehicle/energyStorage.lua
    end
    damageTracker.setDamage("energyStorage", storage.name, false)
  end
    end
    damageTracker.setDamage("energyStorage", v.name, false)
  end

  damageTracker.setDamage("energyStorage", storage.name, true)
end
@/lua/vehicle/energyStorage/pressureTank.lua
    storage.previousLeakRate = storage.currentLeakRate
    damageTracker.setDamage("pressureTank", "deformationLeak", true, true)
  end
  storage.currentLeakRate = storage.maxLeakRate
  damageTracker.setDamage("pressureTank", "breakLeak", true, true)
end

  damageTracker.setDamage("pressureTank", "breakLeak", false, false)
  damageTracker.setDamage("pressureTank", "deformationLeak", false, false)
  damageTracker.setDamage("pressureTank", "breakLeak", false, false)
  damageTracker.setDamage("pressureTank", "deformationLeak", false, false)
end

  damageTracker.setDamage("pressureTank", "breakLeak", false, false)
  damageTracker.setDamage("pressureTank", "deformationLeak", false, false)
  damageTracker.setDamage("pressureTank", "breakLeak", false, false)
  damageTracker.setDamage("pressureTank", "deformationLeak", false, false)