VE Lua Documentation

Press F to search!

deflateTire

Definition


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

local function deflateTire(wheelid)
  local wheel = v.data.wheels[wheelid]
  M.lowpressure = true

  local brokenBeams = wheelBrokenBeams[wheelid] or 1
  local pressureGroupPressure = 200000
  if wheel.pressureGroup ~= nil then
    if v.data.pressureGroups[wheel.pressureGroup] ~= nil then
      pressureGroupPressure = obj:getGroupPressure(v.data.pressureGroups[wheel.pressureGroup])

      if brokenBeams > 4 then
        obj:deflatePressureGroup(v.data.pressureGroups[wheel.pressureGroup])
        obj:changePressureGroupDrag(v.data.pressureGroups[wheel.pressureGroup], 0)
      elseif brokenBeams == 1 then
        obj:setGroupPressure(v.data.pressureGroups[wheel.pressureGroup], (0.1 * 6894.757 + 101325))
      end
    end
  end

  if brokenBeams == 1 then
    if wheels.wheels[wheelid] then
      wheels.wheels[wheelid].isTireDeflated = true
    end
    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)

    local tireBurstVolume = linearScale(pressureGroupPressure, 0, 1000000, 0, 1)
    local tireBurstColor = wheels.wheels[wheelid] and linearScale(wheels.wheels[wheelid].tireVolume, 0, 1, 0, 5) or 0
    obj:playSFXOnceCT("event:>Vehicle>Failures>tire_burst", wheel.node1, tireBurstVolume, 1, tireBurstColor, 0)

    M.damageExt = M.damageExt + 1000
    if wheel.treadNodes ~= nil and wheel.treadBeams ~= nil then
      for _, nodecid in pairs(wheel.treadNodes) do
        local frictionCoef = v.data.nodes[nodecid].frictionCoef
        local slidingFrictionCoef = v.data.nodes[nodecid].slidingFrictionCoef
        if frictionCoef then
          local rnd1, rnd2 = math.random(50, 70), math.random(45, 80)
          obj:setNodeFrictionSlidingCoefs(nodecid, frictionCoef * rnd1 * 0.01, (slidingFrictionCoef or frictionCoef) * rnd2 * 0.01)
        end
      end

      for _, beamcid in pairs(wheel.treadBeams) do
        obj:setBeamSpringDamp(beamcid, v.data.beams[beamcid].beamSpring * 0.1, 2, -1, -1)
      end
    end

    if wheel.sideBeams ~= nil then
      for _, beamcid in pairs(wheel.sideBeams) do
        obj:setBeamSpringDamp(beamcid, 0, 10, -1, -1)
      end
    end

    if wheel.peripheryBeams ~= nil then
      for _, beamcid in pairs(wheel.peripheryBeams) do
        obj:setBeamSpringDamp(beamcid, v.data.beams[beamcid].beamSpring * 0.1, 2, -1, -1)
      end
    end

    if wheel.reinfBeams ~= nil then
      for _, beamcid in pairs(wheel.reinfBeams) do
        obj:setBeamSpringDamp(beamcid, 0, 0.7, 0, 0)
      end
    end

    if wheel.pressuredBeams ~= nil then
      for _, beamcid in pairs(wheel.pressuredBeams) do
        obj:setBeamPressureRel(beamcid, 0, math.huge, -1, -1)
      end
    end
  end

  wheelBrokenBeams[wheelid] = brokenBeams + 1
end

Callers

@/lua/vehicle/extensions/tech/techCore.lua
M.handleDeflateTire = function(request)
  beamstate.deflateTire(request['wheelId'])
  request:sendACK('CompletedDeflateTire')
@/lua/vehicle/wheels.lua
        wd.isPunctured = false
        beamstate.deflateTire(wd.cid)
      else
      if currentPressure <= minPressure then
        beamstate.deflateTire(wd.cid)
        wd.isPunctured = false
@/lua/vehicle/fire.lua
      local wheelData = wheelNodes[mycid]
      beamstate.deflateTire(wheelData.wheelID, 1)
      sounds.playSoundOnceFollowNode("event:>Vehicle>Fire>Fire_Ignition", mycid, 2)
@/lua/vehicle/beamstate.lua
    if beam.wheelID ~= nil then
      deflateTire(beam.wheelID)
    elseif beam.pressureGroupId then
  for i, _ in pairs(wheels.wheels) do
    deflateTire(i)
  end
  if not tableIsEmpty(inflatedTires) then
    deflateTire(inflatedTires[math.floor(math.random(tableSize(inflatedTires)))])
  end