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