diff --git a/resources/MAXINGspeedlimiter/config.lua b/resources/MAXINGspeedlimiter/config.lua index 46d573007..1f2639ca5 100644 --- a/resources/MAXINGspeedlimiter/config.lua +++ b/resources/MAXINGspeedlimiter/config.lua @@ -5,39 +5,39 @@ Config.kmh = false -- Set Config.maxSpeed to false if you want to use same speed for all vehicles -- Set the max speed for all vehicles on Config.maxSpeed Config.useCategories = true -Config.maxSpeed = 190 +Config.maxSpeed = 180 Config.Categories = { -- COMPACTS - {category = 0, maxSpeed = 195}, + {category = 0, maxSpeed = 165}, -- SEDANS - {category = 1, maxSpeed = 195}, + {category = 1, maxSpeed = 165}, -- SUV'S - {category = 2, maxSpeed = 195}, + {category = 2, maxSpeed = 165}, -- COUPES - {category = 3, maxSpeed = 195}, + {category = 3, maxSpeed = 165}, -- MUSCLE - {category = 4, maxSpeed = 195}, + {category = 4, maxSpeed = 165}, -- SPORT CLASSIC - {category = 5, maxSpeed = 130}, + {category = 5, maxSpeed = 160}, -- SPORT - {category = 6, maxSpeed = 195}, + {category = 6, maxSpeed = 165}, -- SUPER - {category = 7, maxSpeed = 195}, + {category = 7, maxSpeed = 165}, -- MOTORCYCLES - {category = 8, maxSpeed = 136}, + {category = 8, maxSpeed = 130}, -- OFFROAD - {category = 9, maxSpeed = 186}, + {category = 9, maxSpeed = 165}, -- INDUSTRIAL - {category = 10, maxSpeed = 187}, + {category = 10, maxSpeed = 125}, -- UTILITY - {category = 11, maxSpeed = 176}, + {category = 11, maxSpeed = 125}, -- VANS - {category = 12, maxSpeed = 189}, + {category = 12, maxSpeed = 165}, -- BICYCLES - {category = 13, maxSpeed = 110}, + {category = 13, maxSpeed = 85}, -- BOATS - {category = 14, maxSpeed = 84}, + {category = 14, maxSpeed = 125}, --#region PLANES AND HELIS -- YOU MUST NOT LOCK THIS ONES OR YOU WON'T BE ABLE TO FLY THEM!!! @@ -46,11 +46,11 @@ Config.Categories = { --#endregion -- SERVICE - {category = 17, maxSpeed = 180}, + {category = 17, maxSpeed = 165}, -- EMERGENCY - {category = 18, maxSpeed = 580}, + {category = 18, maxSpeed = 550}, -- MILITARY - {category = 19, maxSpeed = 369} + {category = 19, maxSpeed = 168} } -- DO NOT MODIFY diff --git a/resources/[ERS]/SmartFiresLite/.fxap b/resources/SmartFiresLite/.fxap similarity index 100% rename from resources/[ERS]/SmartFiresLite/.fxap rename to resources/SmartFiresLite/.fxap diff --git a/resources/[ERS]/SmartFiresLite/cl_smartfires.lua b/resources/SmartFiresLite/cl_smartfires.lua similarity index 100% rename from resources/[ERS]/SmartFiresLite/cl_smartfires.lua rename to resources/SmartFiresLite/cl_smartfires.lua diff --git a/resources/[ERS]/SmartFiresLite/fxmanifest.lua b/resources/SmartFiresLite/fxmanifest.lua similarity index 100% rename from resources/[ERS]/SmartFiresLite/fxmanifest.lua rename to resources/SmartFiresLite/fxmanifest.lua diff --git a/resources/[ERS]/SmartFiresLite/shared.lua b/resources/SmartFiresLite/shared.lua similarity index 100% rename from resources/[ERS]/SmartFiresLite/shared.lua rename to resources/SmartFiresLite/shared.lua diff --git a/resources/[ERS]/SmartFiresLite/sv_smartfires.lua b/resources/SmartFiresLite/sv_smartfires.lua similarity index 100% rename from resources/[ERS]/SmartFiresLite/sv_smartfires.lua rename to resources/SmartFiresLite/sv_smartfires.lua diff --git a/resources/SmartHose/.fxap b/resources/SmartHose/.fxap index 324148e3f..cf20cec01 100644 Binary files a/resources/SmartHose/.fxap and b/resources/SmartHose/.fxap differ diff --git a/resources/SmartHose/cl_smarthose.lua b/resources/SmartHose/cl_smarthose.lua index 0e3f70e2f..1fb6a1ed9 100644 Binary files a/resources/SmartHose/cl_smarthose.lua and b/resources/SmartHose/cl_smarthose.lua differ diff --git a/resources/SmartHose/cl_utils.lua b/resources/SmartHose/cl_utils.lua index 98a890362..0a26577ca 100644 --- a/resources/SmartHose/cl_utils.lua +++ b/resources/SmartHose/cl_utils.lua @@ -12,73 +12,103 @@ if ConfigHose.Notifications.Enabled and ConfigHose.Notifications.Framework.ESX t end if ConfigHose.EnablePositioningCommand then - TriggerEvent('chat:addSuggestion', '/'.."findhosepositioning", "Find positioning of the hose/supply line on your fire truck") + TriggerEvent('chat:addSuggestion', '/'.."findhosepositioning", "Find rope spawn point with rotation", { + { name="type", help="hose or hand" } + }) - RegisterCommand("findhosepositioning", function(source, args) - + RegisterCommand("findhosepositioning", function(source, args) + local ropeLabel = (args[1] or "hose"):lower() local ped = PlayerPedId() + + local ropeType = 4 + if RopeManager.RopeTypes and RopeManager.RopeTypes[ropeLabel] then + ropeType = RopeManager.RopeTypes[ropeLabel] + end + local targetVehicle = GetVehiclePedIsIn(ped, false) - - if targetVehicle == nil or targetVehicle == 0 then - Notify("No vehicle found!") - else - local model = `p_ld_soc_ball_01` - SetEntityAlpha(targetVehicle, 150, false) - RequestModel(model) - while not HasModelLoaded(model) do Wait(0) end - local ballProp = CreateObject(model, coords, false, false, false) + if targetVehicle == 0 then targetVehicle = GetClosestVehicle(GetEntityCoords(ped)) end + if targetVehicle == 0 then return Notify("No vehicle found!") end - while not DoesEntityExist(ballProp) do Wait(0) end + RopeLoadTextures() + local vehPos = GetEntityCoords(targetVehicle) + local previewRope = AddRope(vehPos.x, vehPos.y, vehPos.z, 0.0, 0.0, 0.0, 20.0, ropeType, 20.0, 0.5, 1.0, false, false, false, 5.0, false, 0) + + local offSet = {x = 0.0, y = 0.0, z = 0.0} + local rotation = {x = 0.0, y = 0.0, z = 0.0} + local depth = 0.2 + local mode = "MOVE" + local editing = true - SetModelAsNoLongerNeeded(model) - local offSet = {0.0, 0.0, 0.0} - local rotation = {0.0, 0.0, 0.0} - local offSetComplete = false - while not offSetComplete do - if targetVehicle ~= nil and targetVehicle ~= 0 then - DetachEntity(ballProp, true, false) - AttachEntityToEntity(ballProp, targetVehicle, -1, offSet[1], offSet[2], offSet[3], rotation[1], rotation[2], rotation[3], true, false, true, false, 1, true) - if not IsControlReleased(0, 207) then --page down - offSet = {offSet[1], offSet[2], offSet[3] - 0.01} - end + Notify("~b~POSITIONING MODE~w~\n[TAB] Toggle Move/Rotate\n[Arrows] Adjust\n[INSERT/DELETE] Depth\n[ENTER] Save") - if not IsControlReleased(0, 208) then --page up - offSet = {offSet[1], offSet[2], offSet[3] + 0.01} - end + SetEntityAlpha(targetVehicle, 150, false) - if not IsControlReleased(0, 173) then --arrow down - offSet = {offSet[1], offSet[2] - 0.01, offSet[3]} - end - - if not IsControlReleased(0, 172) then --arrow up - offSet = {offSet[1], offSet[2] + 0.01, offSet[3]} - end - - if not IsControlReleased(0, 174) then --arrow left - offSet = {offSet[1] - 0.01, offSet[2], offSet[3]} - end - - if not IsControlReleased(0, 175) then --arrow right - offSet = {offSet[1] + 0.01, offSet[2], offSet[3]} - end - - if IsControlJustPressed(0, 191) then -- enter - finish - offSetComplete = true - end - end - - Wait(0) + while editing do + Wait(0) + local speed = IsControlPressed(0, 21) and 0.05 or 0.005 + + if IsControlJustPressed(0, 192) then + mode = (mode == "MOVE") and "ROTATE" or "MOVE" + Notify("Mode: ~y~" .. mode) end - Notify("OffSet Values are now printed in your console") - print("OffSet: {"..offSet[1]..", "..offSet[2]..", "..offSet[3].."}") - DeleteEntity(ballProp) - ResetEntityAlpha(targetVehicle) - end - - end, false) -end + if IsControlPressed(0, 121) then depth = depth + 0.005 end + if IsControlPressed(0, 178) then depth = depth - 0.005 end + local up = IsControlPressed(0, ConfigHose.PositioningControls.up) + local down = IsControlPressed(0, ConfigHose.PositioningControls.down) + local forward = IsControlPressed(0, ConfigHose.PositioningControls.forwards) + local backward = IsControlPressed(0, ConfigHose.PositioningControls.backwards) + local left = IsControlPressed(0, ConfigHose.PositioningControls.left) + local right = IsControlPressed(0, ConfigHose.PositioningControls.right) + + if mode == "MOVE" then + if up then offSet.z = offSet.z + speed end + if down then offSet.z = offSet.z - speed end + if forward then offSet.y = offSet.y + speed end + if backward then offSet.y = offSet.y - speed end + if left then offSet.x = offSet.x - speed end + if right then offSet.x = offSet.x + speed end + else + local rSpeed = speed * 50.0 + if up then rotation.x = rotation.x + rSpeed end + if down then rotation.x = rotation.x - rSpeed end + if left then rotation.z = rotation.z + rSpeed end + if right then rotation.z = rotation.z - rSpeed end + end + + local forwardVec = RotationToDirection(rotation) + local localPortPos = vector3(offSet.x, offSet.y, offSet.z) + local localBendPosA = localPortPos - (forwardVec * depth) + local localBendPosB = localPortPos - (forwardVec * (depth * 0.5)) + + local worldPointC = GetOffsetFromEntityInWorldCoords(targetVehicle, localPortPos.x, localPortPos.y, localPortPos.z) + local worldPointA = GetOffsetFromEntityInWorldCoords(targetVehicle, localBendPosA.x, localBendPosA.y, localBendPosA.z) + local worldPointB = GetOffsetFromEntityInWorldCoords(targetVehicle, localBendPosB.x, localBendPosB.y, localBendPosB.z) + local handPos = GetWorldPositionOfEntityBone(ped, GetPedBoneIndex(ped, 6286)) + local vertexCount = GetRopeVertexCount(previewRope) + + PinRopeVertex(previewRope, 0, handPos.x, handPos.y, handPos.z) + PinRopeVertex(previewRope, vertexCount - 1, worldPointA.x, worldPointA.y, worldPointA.z) + PinRopeVertex(previewRope, vertexCount - 2, worldPointB.x, worldPointB.y, worldPointB.z) + PinRopeVertex(previewRope, vertexCount - 3, worldPointC.x, worldPointC.y, worldPointC.z) + + if IsControlJustPressed(0, ConfigHose.PositioningControls.enter) then editing = false end + end + + ResetEntityAlpha(targetVehicle) + + print(string.format("^2--- %s RESULT ---^7", ropeLabel:upper())) + if ropeLabel == "hose" then + print(string.format('{ x = %.3f, y = %.3f, z = %.3f, rx = %.3f, ry = %.3f, rz = %.3f, depth = %.3f, type = "%s", portId = "attack1" },', offSet.x, offSet.y, offSet.z, rotation.x, rotation.y, rotation.z, depth, ropeLabel)) + else + print(string.format('{ x = %.3f, y = %.3f, z = %.3f, rx = %.3f, ry = %.3f, rz = %.3f, depth = %.3f, type = "%s" },', offSet.x, offSet.y, offSet.z, rotation.x, rotation.y, rotation.z, depth, ropeLabel)) + end + + DeleteRope(previewRope) + Notify("Data printed to F8 console.") + end, false) +end function Notify(text) @@ -110,7 +140,7 @@ function showBaseNotification(message) DrawNotification(0,1) end --- General Functions @GeneralFunctions +-- @GeneralFunctions function DisplayHelpText(text) SetTextComponentFormat("STRING") AddTextComponentString(text) @@ -127,272 +157,242 @@ function drawInstructionalText(msg, coords) end function IsFireHoseEnabled() - return (HoseManager.nozzle and not HoseManager.nozzleDropped) + return (HoseManager.hasFireHose and not HoseManager.nozzleDropped) end - exports("IsFireHoseEnabled", IsFireHoseEnabled) function IsFireHoseShooting() return HoseManager.pressed end - exports("IsFireHoseShooting", IsFireHoseShooting) function IsFireHoseShootingWater() return ParticleManager.isWaterDecal end - exports("IsFireHoseShootingWater", IsFireHoseShootingWater) +function IsVehicleUsingWater(vehicleNetID) + local settings = HoseManager.vehicleSettings[vehicleNetID] + if not settings then return true end + return settings.decalType +end +exports("IsVehicleUsingWater", IsVehicleUsingWater) + function GetCurrentDecalCoords() return ParticleManager.CurrentDecalCoords end - exports("GetCurrentDecalCoords", GetCurrentDecalCoords) function GetCurrentHosePressure() return ParticleManager.particleScale end - exports("GetCurrentHosePressure", GetCurrentHosePressure) -local vehicleModels = getVehicleModelsFromCapacities() -local interactionId = "menuId" -if ConfigHose.InteractType.TruckInteraction.Drawtext or ConfigHose.InteractType.TruckInteraction.ScreenPrompt then +if ConfigHose.InteractType.TruckInteraction.Custom then + local function _toNetId(ent) + if ent and DoesEntityExist(ent) then return ToNetId(ent) end + return nil + end + + local function _neighborsFor(netId) + local list = {} + if not netId then return list end + local RM = RopeManager or {} + local cv = RM.connectedVehicles and RM.connectedVehicles[netId] + if type(cv) == 'number' then list[#list+1] = cv + elseif type(cv) == 'table' then for nid,_ in pairs(cv) do list[#list+1] = tonumber(nid) or nid end end + local ic = RM.incomingConnections and RM.incomingConnections[netId] + if type(ic) == 'number' then list[#list+1] = ic + elseif type(ic) == 'table' then for nid,_ in pairs(ic) do list[#list+1] = tonumber(nid) or nid end end + return list + end + + local function _buildCtx(vehicle) + local ped = PlayerPedId() + local pos = GetEntityCoords(ped) + + local model = GetEntityModel(vehicle) + local vs = (ConfigHose.Rope.VehicleSettings[model] or {}) + local useBone = vs.useBone or false + local bones = vs.bones or {} + local offsets = vs.offsets or { { x = 0.0, y = 0.0, z = 0.0 } } + local pts = getAttachmentPoints(vehicle, useBone, bones, offsets) + if type(pts) ~= 'table' or #pts == 0 then pts = { GetEntityCoords(vehicle) } end + + local closest = pts[1] + local minDist = #(pos - closest) + for i = 2, #pts do + local p = pts[i] + local d = #(pos - p) + if d < minDist then closest, minDist = p, d end + end + + local meId = GetPlayerServerId(PlayerId()) + local vehNet = _toNetId(vehicle) + local neigh = _neighborsFor(vehNet) + + return { + ped = ped, + playerServerId = meId, + + vehicle = vehicle, + vehNet = vehNet, + vehModel = model, + promptCoords = closest, + vehicleDistance = minDist, + neighbors = neigh, + + nozzle = HoseManager.nozzle, + nozzleDropped = HoseManager.nozzleDropped, + currentVehicle = HoseManager.currentVehicle, + handLineActive = HoseManager.handLine[meId] and true or false, + currentVehicleRelay = HoseManager.currentVehicleRelay, + supplyEnabled = IsSupplyLineEnabled(), + } + end + + -- Actions you can call from your custom interactions + HoseCustomActions = { + GrabHose = function(ctx) + HoseManager.currentVehicle = ctx.vehicle + InitializeFireHose() + AttachRopeToProp() + end, + StoreHose = function(ctx) + if HoseManager.nozzle and HoseManager.currentVehicle == ctx.vehicle and not HoseManager.nozzleDropped then + UnequipFireHose() + else + Notify(ConfigHose.Translations.cannotStoreHoseWhileOnGround) + end + end, + GrabRelay = function(ctx) + HoseManager.currentVehicleRelay = ctx.vehicle + InitializeHandLine() + AttachRopeToHand() + end, + StoreRelay = function(_ctx) + DeinitializeHandLine() + end, + ConnectRelayHere = function(ctx) + DeinitializeHandLine() + ConnectRelayToVehicle(ctx.vehicle) + end, + QuickDisconnectNearest = function(ctx) + if not ctx.vehNet or #ctx.neighbors == 0 then return end + local best, bestD, myPos = nil, 1e9, GetEntityCoords(PlayerPedId()) + for _, n in ipairs(ctx.neighbors) do + local ent = NetEnt(n) + if ent and DoesEntityExist(ent) then + local d = #(myPos - GetEntityCoords(ent)) + if d < bestD then best, bestD = n, d end + elseif not best then + best = n + end + end + if best then + local sId, tId = canonicalPair(ctx.vehNet, best) + DisconnectRelayLine(sId, tId, ctx.vehNet) + end + end, + OpenPanel = function(_ctx) + OpenControlPanel() + end + } + + -- ctx = _buildCtx(vehicle) (state for the vehicle/player) + -- A = HoseCustomActions (ready actions) + -- Draw helpers available: drawInstructionalText() / DisplayHelpText() from this file. + -- Example below mirrors the original E/G/Z flow aka ConfigHose.TruckInteraction.InteractType.Drawtext. + if not CustomInteractThink then + -- CustomInteractThink = function(ctx, A) + -- local lines = {} + + -- if ctx.nozzle then + -- if ctx.currentVehicle == ctx.vehicle and not ctx.nozzleDropped then + -- lines[#lines+1] = ConfigHose.Translations.storeHoseMessage + -- if IsControlJustReleased(0, ConfigHose.Keys.Interact) then A.StoreHose(ctx) end + -- else + -- lines[#lines+1] = ConfigHose.Translations.cannotStoreHoseWhileOnGround + -- end + + -- elseif ctx.handLineActive then + -- if ctx.supplyEnabled then + -- if ctx.currentVehicleRelay == ctx.vehicle then + -- if #ctx.neighbors > 0 then lines[#lines+1] = ConfigHose.Translations.disconnectLine end + -- lines[#lines+1] = ConfigHose.Translations.storeSupplyLine + -- if IsControlJustReleased(0, ConfigHose.Keys.GrabLine) then + -- if #ctx.neighbors > 0 then A.QuickDisconnectNearest(ctx) else A.StoreRelay(ctx) end + -- end + -- else + -- if #ctx.neighbors > 0 then + -- lines[#lines+1] = ConfigHose.Translations.disconnectLine + -- if IsControlJustReleased(0, ConfigHose.Keys.GrabLine) then A.QuickDisconnectNearest(ctx) end + -- else + -- lines[#lines+1] = ConfigHose.Translations.connectRelayLineMessage + -- if IsControlJustReleased(0, ConfigHose.Keys.GrabLine) then A.ConnectRelayHere(ctx) end + -- end + -- end + -- end + + -- else + -- if ctx.supplyEnabled then + -- if #ctx.neighbors > 0 then + -- lines[#lines+1] = ConfigHose.Translations.grabHoseMessage + -- lines[#lines+1] = ConfigHose.Translations.disconnectLine + -- else + -- lines[#lines+1] = ConfigHose.Translations.grabHoseMessage + -- lines[#lines+1] = ConfigHose.Translations.SupplyLine + -- end + -- else + -- lines[#lines+1] = ConfigHose.Translations.grabHoseMessage + -- end + + -- if IsControlJustReleased(0, ConfigHose.Keys.Interact) then A.GrabHose(ctx) end + -- if ctx.supplyEnabled and IsControlJustReleased(0, ConfigHose.Keys.GrabLine) then A.GrabRelay(ctx) end + -- end + + -- -- SHS Panel + -- if not ctx.nozzle and ctx.supplyEnabled then + -- local showPanelHint = (ctx.handLineActive and ctx.currentVehicleRelay == ctx.vehicle) or (not ctx.nozzle and not ctx.handLineActive) + -- if showPanelHint then + -- lines[#lines+1] = ConfigHose.Translations.interactDisplay + -- if IsControlJustReleased(0, ConfigHose.Keys.OpenDisplayPrompt) then A.OpenPanel(ctx) end + -- end + -- end + + -- if #lines > 0 then drawInstructionalText(table.concat(lines, "\n"), ctx.promptCoords) end + -- end + + CustomInteractThink = function(ctx, A) + -- Write logic here + -- ctx = live state for the closest fire vehicle + -- A = actions you can call + end + end + CreateThread(function() while true do Wait(1) - local pos = GetEntityCoords(PlayerPedId()) - local vehicle = GetClosestVehicle(pos) - local inRange = false - if vehicle and DoesEntityExist(vehicle) and IsVehicleDriveable(vehicle, false) then - local vehicleModel = GetEntityModel(vehicle) - local vehicleSettings = ConfigHose.Rope.VehicleSettings[vehicleModel] or {} - local useBone = vehicleSettings.useBone or false - local bones = vehicleSettings.bones or {} - local offsets = vehicleSettings.offsets or {{x = 0.0, y = 0.0, z = 0.0}} - - local attachmentPoints = {} - - if useBone then - for _, boneName in ipairs(bones) do - local boneIndex = GetEntityBoneIndexByName(vehicle, boneName) - if boneIndex ~= -1 then - local bonePos = GetWorldPositionOfEntityBone(vehicle, boneIndex) - table.insert(attachmentPoints, bonePos) - else - print("Bone " .. boneName .. " not found in vehicle model.") - end - end - else - for _, offset in ipairs(offsets) do - local offsetWorldPos = GetOffsetFromEntityInWorldCoords(vehicle, offset.x, offset.y, offset.z) - table.insert(attachmentPoints, offsetWorldPos) - end - end - - local closestPoint = attachmentPoints[1] - local minDistance = #(pos - closestPoint) - - for _, point in ipairs(attachmentPoints) do - local distance = #(pos - point) - if distance < minDistance then - closestPoint = point - minDistance = distance - end - end - - local promptCoords = closestPoint - local vehicleDistance = #(pos - promptCoords) - - if not IsPedInAnyVehicle(PlayerPedId(), false) and vehicleDistance < 3.0 then - inRange = true - local text = HoseManager.nozzle and ConfigHose.Translations.storeHoseMessage or ConfigHose.Translations.grabHoseMessage - - if ConfigHose.InteractType.TruckInteraction.Drawtext then - drawInstructionalText(text, promptCoords) - elseif ConfigHose.InteractType.TruckInteraction.ScreenPrompt then - DisplayHelpText(text) - end - - if IsControlJustReleased(0, ConfigHose.Keys.Interact) then - if not HoseManager.nozzle and isPermissionAllowed() then - InitializeFireHose() - AttachRopeToProp() - else - UnequipFireHose() - end - end - end - end - if not inRange then - Wait(2500) - end - end - end) -elseif ConfigHose.InteractType.TruckInteraction.ThirdEye.enabled then - if ConfigHose.InteractType.TruckInteraction.ThirdEye.oxTarget then - local VehicleOptions = { - { - label = ConfigHose.Translations.thirdEyeMessage, - icon = "fa-solid fa-water", - onSelect = function() - if not HoseManager.nozzle and isPermissionAllowed() then - InitializeFireHose() - AttachRopeToProp() - else - UnequipFireHose() - end - end, - } - } - exports.ox_target:addModel(vehicleModels, VehicleOptions) - end - - if ConfigHose.InteractType.TruckInteraction.ThirdEye.qbTarget then - exports['qb-target']:AddTargetModel(vehicleModels, { - options = { - { - label = ConfigHose.Translations.thirdEyeMessage, - icon = "fa-solid fa-water", - action = function() - if not HoseManager.nozzle and isPermissionAllowed() then - InitializeFireHose() - AttachRopeToProp() - else - UnequipFireHose() - end - end, - }, - }, - distance = 3.0 - }) - end -elseif ConfigHose.InteractType.TruckInteraction.WorldInteraction then - CreateThread(function() - local interactionActive = false - local idleWait = 1000 - - while true do - Wait(idleWait) - - if IsPedInAnyVehicle(PlayerPedId(), false) then - if interactionActive then - for _, model in ipairs(vehicleModels) do - exports.interact:RemoveModelInteraction(model, interactionId) - end - interactionActive = false - end - idleWait = 1500 + local ped = PlayerPedId() + if IsPedInAnyVehicle(ped, false) then + Wait(500) else - local pos = GetEntityCoords(PlayerPedId()) + local pos = GetEntityCoords(ped) local vehicle = GetClosestVehicle(pos) - if vehicle and DoesEntityExist(vehicle) then - local vehicleModel = GetEntityModel(vehicle) - - local isAllowedModel = false - for _, model in ipairs(vehicleModels) do - if model == vehicleModel then - isAllowedModel = true - break - end - end - - if isAllowedModel then - local vehicleSettings = ConfigHose.Rope.VehicleSettings[vehicleModel] or {} - local useBone = vehicleSettings.useBone or false - local bones = vehicleSettings.bones or {} - local offsets = vehicleSettings.offsets or {{x = 0.0, y = 0.0, z = 0.0}} - - local attachmentPoints = {} - - if useBone then - for _, boneName in ipairs(bones) do - local boneIndex = GetEntityBoneIndexByName(vehicle, boneName) - if boneIndex ~= -1 then - local bonePos = GetWorldPositionOfEntityBone(vehicle, boneIndex) - table.insert(attachmentPoints, bonePos) - else - print("Bone " .. boneName .. " not found in vehicle model.") - end - end - else - for _, offset in ipairs(offsets) do - local offsetWorldPos = GetOffsetFromEntityInWorldCoords(vehicle, offset.x, offset.y, offset.z) - table.insert(attachmentPoints, offsetWorldPos) - end - end - - local closestPoint = attachmentPoints[1] - local minDistance = #(pos - closestPoint) - - for _, point in ipairs(attachmentPoints) do - local distance = #(pos - point) - if distance < minDistance then - closestPoint = point - minDistance = distance - end - end - - local promptCoords = closestPoint - local vehicleDistance = #(pos - promptCoords) - - if vehicleDistance < 4.0 then - if not interactionActive then - exports.interact:AddModelInteraction({ - model = vehicleModel, - offset = promptCoords - GetEntityCoords(vehicle), - name = 'Menu', - id = interactionId, - distance = 8.0, - interactDst = 2.5, - ignoreLos = true, - bone = 'bodyshell', - options = { - { - label = ConfigHose.Translations.grabHoseWorldInteraction, - action = function() - if not HoseManager.nozzle then - InitializeFireHose() - AttachRopeToProp() - else - UnequipFireHose() - end - end, - }, - } - }) - interactionActive = true - end - idleWait = 0 - else - if interactionActive then - exports.interact:RemoveModelInteraction(vehicleModel, interactionId) - interactionActive = false - end - idleWait = 500 - end + if vehicle and DoesEntityExist(vehicle) and IsVehicleDriveable(vehicle, false) and HasWaterTank(vehicle) then + local ctx = _buildCtx(vehicle) + if ctx.vehicleDistance < 3.0 then + local ok, err = pcall(CustomInteractThink, ctx, HoseCustomActions) + if not ok then print("^1[CustomInteract] error:^0", err) end else - if interactionActive then - exports.interact:RemoveModelInteraction(vehicleModel, interactionId) - interactionActive = false - end - idleWait = 1000 + Wait(250) end else - if interactionActive then - for _, model in ipairs(vehicleModels) do - exports.interact:RemoveModelInteraction(model, interactionId) - end - interactionActive = false - end - idleWait = 1500 + Wait(750) end end end end) -else - warn('Invalid interaction configuration') end \ No newline at end of file diff --git a/resources/SmartHose/config.lua b/resources/SmartHose/config.lua index dd2c9f168..a5f8374cc 100644 --- a/resources/SmartHose/config.lua +++ b/resources/SmartHose/config.lua @@ -2,17 +2,33 @@ ConfigHose = { -- @ https://docs.fivem.net/docs/game-references/controls/#controls Keys = { Interact = 38, -- E + GrabFireExtinguisher = 38, -- E SwitchDecalTypeKey = 47,-- G ShootHose = 24, -- INPUT_ATTACK DropHose = 38, -- E + GrabLine = 20, -- Z PickupHose = 47, -- G + OpenDisplayPrompt = 47, -- G IncreasePressure = 172, -- Arrow Up DecreasePressure = 173, -- Arrow Down }, HoseModel = `WEAPON_HOSE`, + PanelLocale = 'en', + refreshRopeCacheCommand = "refreshallropes", -- Command to refresh the rope cache for all players, useful for testing rope colour changes + Debug = false, - EnablePositioningCommand = false, + EnablePositioningCommand = true, + + PositioningControls = { + down = 207, -- Page Up + up = 208, -- Page Down + backwards = 173, -- Arrow Down + forwards = 172, -- Arrow Up + left = 174, -- Arrow Left + right = 175, -- Arrow Right + enter = 191, -- Enter Key + }, -- This enables the /findhosepositioning command to help you find the right vehicle offsets for either -- the hose connection or the supply line connection point. See our documentation for more info. @@ -67,8 +83,13 @@ ConfigHose = { Translations = { storeHoseMessage = "Press E to store hose", cannotStoreHoseMessage = "You can only store the hose in the vehicle you grabbed it from.", + cannotStoreHoseWhileOnGround = "You cant store the hose while its on the floor!.", vehicleUnavailableMessage = "The vehicle you grabbed the hose from is no longer available.", grabHoseMessage = "Press E to grab hose", + SupplyLine = "Press Z to grab line", + storeSupplyLine = "Press Z to store line", + connectRelayLineMessage = "Press Z to connect line", + disconnectLine = "Press Z to disconnect line", thirdEyeMessage = "Grab/Store Hose", grabHoseWorldInteraction = "Grab Hose", tankIsEmpty = "Tank is empty! Cannot shoot water!", @@ -79,7 +100,13 @@ ConfigHose = { maximumPressure = "Maximum pressure reached!", minimumPressure = "Minimum pressure reached!", noPermission = "You do not have access to use the hose.", - pickupHoseMessage = "Press G to pick up the hose" + pickupHoseMessage = "Press G to pick up the hose", + interactDisplay = "Press G to open display", + pumpNotEngaged = "Pump is not engaged!", + attacklineValve = "Attack line discharge is not open.", + grabfireExtinguisher = "Press ~INPUT_PICKUP~ to grab extinguisher", + storefireExtinguisher = "Press ~INPUT_PICKUP~ to store extinguisher", + relayDirection = "This relay is oriented upstream. Start transfer from the other truck." }, Notifications = { @@ -104,532 +131,493 @@ ConfigHose = { enabled = false, qbTarget = false, oxTarget = false, - } + }, + + Custom = false, }, }, Rope = { Hose = { + HoseModelTimeout = 2500, -- Timeout for the hose model to be loaded HoseropeInitialLength = 32.5, -- Initial rope length (recommended) - HoseropeLength = 10000.0, -- Rope Max length (recommended) - DrawMarker = true, -- Draw marker on the floor when the hose is dropped. - GrabAnimationDict = 'anim@scripted@freemode@tunprep_ig_grab_midd@male@', - GrabAnimationName = 'tunprep_ig_grab_midd', + RopeColour = { r = 117, g = 29, b = 36 }, + HoseropeLength = 100.0, -- Rope Max length (recommended) + DrawMarker = false, -- Draw marker on the floor when the hose is dropped. + GrabAnimationDict = 'anim@amb@nightclub@mini@drinking@drinking_shots@ped_d@normal', + GrabAnimationName = 'pickup', PickupAnimationDict = 'veh@common@bicycle@ds', PickupAnimationName = 'pickup', }, -- if useBone = true, "offsets" field will be ignored; otherwise custom offsets are enabled. VehicleSettings = { + [`firetruk`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`lafdxt6700`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`engine`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`lafdengine`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`lacofdeng`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`lacofdt3`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`EnforcerEng`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`enforcer`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`enforcerta`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`enforcerf`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, [`brush`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, offsets = { - { x = -0.90, y = -0.02, z = -0.050 }, - { x = 0.87, y = -0.1050, z = 0.0140 }, - {x = -0.57, y = -3.68, z = 0.0}, + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, }, maxRopes = 2, }, [`brushram`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, offsets = { - { x = -0.90, y = -0.02, z = -0.050 }, - { x = 0.87, y = -0.1050, z = 0.0140 }, - {x = -0.57, y = -3.68, z = 0.0}, + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, + }, + [`firef350`] = { + useBone = false, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack + }, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, }, maxRopes = 2, }, [`bulldog`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack }, - maxRopes = 1, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, }, - [`enforcer`] = { + [`ftanker`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack }, - maxRopes = 1, - }, - [`EnforcerEng`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, }, - maxRopes = 1, - }, - [`enforcerf`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`enforcerta`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`engine`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`firef350`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`firetruk13`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`hazf350tec`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`ladder6a`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`rescue6`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`rescue6a`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`rescue9e`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`tender6`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`tender9b`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`tower6`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`mmladder`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`prescue`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`rescue1`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`walkinarrow`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`16ramcsquad`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`20Maxfdramsquad`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`20ramcsquad`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`23sierrafire`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`24rampumper`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, + maxRopes = 2, }, [`heavypump`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack }, - maxRopes = 1, - }, - [`heavyrescue`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, }, - maxRopes = 1, + maxRopes = 2, }, [`heavytank`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack }, - maxRopes = 1, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, }, [`heavywild`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack }, - maxRopes = 1, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, }, - [`f550csquad`] = { + [`panther`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack }, - maxRopes = 1, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, }, - [`f550super6`] = { + [`t3engine1`] = { useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, + driveWhilePumping = true, -- Allows driving while pump is engaged to spray water from the deck gun. + bones = { + {name = "discharge_1", portId = "attack1" }, -- left attack + {name = "discharge_2", portId = "attack2" }, -- right attack }, - maxRopes = 1, + offsets = { + -- Attack Lines (Hoses) + { x = -1.170, y = 0.010, z = -0.155, rx = -162.500, ry = 0.000, rz = 90.000, depth = 0.760, portId = "attack1", type = "hose" }, + { x = 1.250, y = 0.170, z = -0.095, rx = -8.750, ry = 0.000, rz = -85.500, depth = 2.260, portId = "attack2", type = "hose" }, + -- Supply / Intake (Hand Lines & Relays) + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525, type = "hand" }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525, type = "hand" }, + }, + maxRopes = 2, }, - [`lacod6`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdbug`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofddztrk`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdeng`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdfoam`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdpat`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdrs`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdsup`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdt3`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdtrlr`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdusartrk`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdusartrlr`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lacofdutil`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lafdengine`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lafdcab`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`lafdtiller`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`redf350brush21`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`tanker_water`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`velocity`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`x3bearcat`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, - [`x3bearcat2`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.14, y = 0.92, z = -0.1 }, - { x = 1.11, y = 0.93, z = -0.09 }, - }, - maxRopes = 1, - }, [`enladder`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -0.98, y = 2.4, z = -0.09 }, - { x = 0.98, y = 2.41, z = -0.07 }, + { x = -1.420, y = 0.500, z = -0.020, rx = -25.500, ry = 0.000, rz = 98.250, depth = 0.420, portId = "attack1", type = "hose" }, -- left attack + { x = 1.340, y = -0.205, z = 0.000, rx = -39.000, ry = 0.000, rz = -94.750, depth = 0.335, type = "hand"}, }, maxRopes = 2, }, - [`fdgator`] = { + [`britishladder`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -0.98, y = 2.4, z = -0.09 }, - { x = 0.98, y = 2.41, z = -0.07 }, + { x = -1.420, y = 0.500, z = -0.020, rx = -25.500, ry = 0.000, rz = 98.250, depth = 0.420, portId = "attack1", type = "hose" }, -- left attack + { x = 1.340, y = -0.205, z = 0.000, rx = -39.000, ry = 0.000, rz = -94.750, depth = 0.335, type = "hand"}, }, maxRopes = 2, }, + [`britishladderels`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.420, y = 0.500, z = -0.020, rx = -25.500, ry = 0.000, rz = 98.250, depth = 0.420, portId = "attack1", type = "hose" }, -- left attack + { x = 1.340, y = -0.205, z = 0.000, rx = -39.000, ry = 0.000, rz = -94.750, depth = 0.335, type = "hand"}, + }, + maxRopes = 2, + }, + [`rearmount`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + {x = -1.365, y = 0.895, z = -0.165, rx = -11.750, ry = 0.000, rz = 97.500, depth = 0.735, portId = "attack1", type = "hose" }, + {x = -1.345, y = 1.095, z = -0.440, rx = -24.750, ry = 0.000, rz = 72.000, depth = 0.670, type = "hand" }, + }, + maxRopes = 1, + }, + [`rearmountels`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + {x = -1.365, y = 0.895, z = -0.165, rx = -11.750, ry = 0.000, rz = 97.500, depth = 0.735, portId = "attack1", type = "hose" }, + {x = -1.345, y = 1.095, z = -0.440, rx = -24.750, ry = 0.000, rz = 72.000, depth = 0.670, type = "hand" }, + }, + maxRopes = 1, + }, + [`ldfoam`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.285, y = 1.195, z = 0.000, rx = -38.000, ry = 0.000, rz = 92.250, depth = 0.480, portId = "attack1", type = "hose" }, + { x = 1.375, y = 1.160, z = 0.000, rx = -20.500, ry = 0.000, rz = -91.000, depth = 0.550, type = "hand" }, + }, + maxRopes = 2, + }, + [`ldfoamels`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.285, y = 1.195, z = 0.000, rx = -38.000, ry = 0.000, rz = 92.250, depth = 0.480, portId = "attack1", type = "hose" }, + { x = 1.375, y = 1.160, z = 0.000, rx = -20.500, ry = 0.000, rz = -91.000, depth = 0.550,type = "hand" }, + }, + maxRopes = 2, + }, + [`tillertrailer`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.270, y = 0.445, z = 0.170, rx = -29.750, ry = 0.000, rz = 85.500, depth = 0.660, portId = "attack1", type = "hose" }, + { x = 1.395, y = 0.445, z = 0.175, rx = -22.750, ry = 0.000, rz = -83.750, depth = 0.895, type = "hand" }, + }, + maxRopes = 1, + }, + [`tillertrailerels`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.270, y = 0.445, z = 0.170, rx = -29.750, ry = 0.000, rz = 85.500, depth = 0.660, portId = "attack1", type = "hose" }, + { x = 1.395, y = 0.445, z = 0.175, rx = -22.750, ry = 0.000, rz = -83.750, depth = 0.895, type = "hand" }, + }, + maxRopes = 1, + }, + [`firerobot`] = { + useBone = false, + carryHoses = false, -- Disables grabbing hoses from this vehicle. + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 0.225, y = -1.590, z = 0.510, rx = -11.500, ry = 0.000, rz = 183.500, depth = 0.645, type = "hand"}, + }, + }, + [`midmount`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.235, y = 1.230, z = -0.390, rx = -22.000, ry = 0.000, rz = 89.500, depth = 1.125, portId = "attack1", type = "hose" }, + { x = -1.320, y = 1.370, z = -0.595, rx = -24.250, ry = 0.000, rz = 77.500, depth = 0.860, type = "hand" }, + }, + maxRopes = 1, + }, + [`midmountels`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = -1.235, y = 1.230, z = -0.390, rx = -22.000, ry = 0.000, rz = 89.500, depth = 1.125, portId = "attack1", type = "hose" }, + { x = -1.320, y = 1.370, z = -0.595, rx = -24.250, ry = 0.000, rz = 77.500, depth = 0.860, type = "hand" }, + }, + maxRopes = 1, + }, + + }, }, + FireExtinguisher = { + PickupRadius = 1.2, -- Radius to pickup the extinguisher + StoreRadius = 1.0, -- Radius to store the extinguisher + DecalLife = 300.0, -- How long the decals stay on the floor. + + Models = { + -875057463, + -171327159, + -1980225301, + -666581633, + -1610165324 + } + }, + Decals = { InitialPressure = 0.5, -- Starting Pressure MaxPressure = 1.5, -- Maximum Pressure Possible @@ -642,33 +630,38 @@ ConfigHose = { minWaterLevel = 1, -- Minimum water level to shoot water waterDepletionRate = 1, -- Water depletion rate per second when shooting MaxwaterDepletionRate = 10, -- Maximum water depletion rate -> Highest Pressure Possible will always remove this amount of water - fillRate = 150, + fillRate = 100, -- Rate at which the tank fills up p/second + foamPercentage = 20, -- Reserves foam percentage of the tank capacity + + AutoDischarge = { + Enabled = true, -- master switch + WaterRate = 8.0, -- units/sec drained from WATER tank + FoamRate = 8.0, -- units/sec drained from FOAM tank + TickMs = 250, -- drain/FX tick + SyncThreshold = 250.0, -- send sync when changed by >= this amount + SyncMaxAgeMs = 15000, -- or at least every N ms + }, -- Vehicles that you can interact with should go here along with the capacity and if they can carry foam. -- Example: [`firetruk`] = { capacity = 7000, carryFoam = true|false, fullTank = true|false }, VehicleWaterCapacities = { - [`britishladder`] = { capacity = 7000, carryFoam = true, fullTank = false }, - [`britishladderels`] = { capacity = 7000, carryFoam = true, fullTank = false }, - [`rearmount`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`rearmountels`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`lacofdrs`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`lacofdsup`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`x3bearcat`] = { capacity = 7000, carryFoam = true, fullTank = false }, - [`hazf350tec`] = { capacity = 7000, carryFoam = true, fullTank = false }, - [`ldfoam`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`tower6`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`tender9b`] = { capacity = 7000, carryFoam = true, fullTank = false }, - [`24rampumper`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`f550super6`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`heavyrescue`] = { capacity = 5000, carryFoam = false, fullTank = false }, - [`velocity`] = { capacity = 5000, carryFoam = false, fullTank = false }, - - - + [`firetruk`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`lafdxt6700`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`engine`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`lacofdeng`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`lafdengine`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`lacofdfoam`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`fireboat`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`enforcerf`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`enforcereng`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`enforcer`] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`heavytank `] = { capacity = 7000, carryFoam = true, fullTank = false }, + [`firerobot`] = { capacity = 2000, carryFoam = true, fullTank = false }, } }, experimentalFeature = { + showAdvancedUI = true, waterPhysics = false, } -} +} \ No newline at end of file diff --git a/resources/SmartHose/fxmanifest.lua b/resources/SmartHose/fxmanifest.lua index ddd308abe..5c7e5f222 100644 --- a/resources/SmartHose/fxmanifest.lua +++ b/resources/SmartHose/fxmanifest.lua @@ -7,10 +7,12 @@ lua54 'yes' author 'London Studios' description 'Smart Hose' -version 'Alpha' +version '2.2' shared_script 'config.lua' +ui_page 'html/index.html' + client_scripts { 'cl_smarthose.lua', 'cl_utils.lua' @@ -21,6 +23,10 @@ files { 'data/weaponarchetypes.meta', 'data/weapons.meta', 'data/weaponanimations.meta', + 'html/index.html', + 'html/assets/*.js', + 'html/assets/*.css', + 'locales/*.json' } server_scripts { @@ -34,6 +40,7 @@ escrow_ignore { 'sv_utils.lua', 'stream/rope.ytd', 'cl_utils.lua', + 'locales/*.json' } data_file 'WEAPONINFO_FILE' 'data/weapons.meta' diff --git a/resources/SmartHose/html/assets/index-4963c99a.css b/resources/SmartHose/html/assets/index-4963c99a.css new file mode 100644 index 000000000..c2c98151c --- /dev/null +++ b/resources/SmartHose/html/assets/index-4963c99a.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-y-0{top:0;bottom:0}.-bottom-3{bottom:-.75rem}.bottom-4{bottom:1rem}.left-0{left:0}.left-1\/2{left:50%}.right-4{right:1rem}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-2\.5{height:.625rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[760px\]{height:760px}.h-\[8px\]{height:8px}.h-full{height:100%}.min-h-\[88px\]{min-height:88px}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-\[92px\]{width:92px}.w-full{width:100%}.max-w-5xl{max-width:64rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-90{--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-600{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.border-yellow-500{--tw-border-opacity: 1;border-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.border-yellow-700{--tw-border-opacity: 1;border-color:rgb(161 98 7 / var(--tw-border-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/40{background-color:#1e3a8a66}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-600\/40{background-color:#4b556366}.bg-gray-600\/80{background-color:#4b5563cc}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-700\/80{background-color:#374151cc}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-800\/90{background-color:#1f2937e6}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-gray-900\/70{background-color:#111827b3}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600\/30{background-color:#16a34a4d}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-600\/80{background-color:#dc2626cc}.bg-red-900{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity, 1))}.bg-yellow-600{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity, 1))}.bg-yellow-900{--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-\[8px\]{padding:8px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pr-2{padding-right:.5rem}.text-center{text-align:center}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.leading-4{line-height:1rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-wider{letter-spacing:.05em}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-blue-500\/50{--tw-shadow-color: rgb(59 130 246 / .5);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-500\/50{--tw-shadow-color: rgb(239 68 68 / .5);--tw-shadow: var(--tw-shadow-colored)}.shadow-yellow-500\/50{--tw-shadow-color: rgb(234 179 8 / .5);--tw-shadow: var(--tw-shadow-colored)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-white\/10{--tw-ring-color: rgb(255 255 255 / .1)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}body{margin:0;padding:0;overflow:hidden}#root{width:100vw;height:100vh}.hover\:bg-gray-600:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-red-800:hover{--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity, 1))}.hover\:bg-yellow-800:hover{--tw-bg-opacity: 1;background-color:rgb(133 77 14 / var(--tw-bg-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width: 768px){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}} diff --git a/resources/SmartHose/html/assets/index-e63cb1c0.js b/resources/SmartHose/html/assets/index-e63cb1c0.js new file mode 100644 index 000000000..0f3f7c44b --- /dev/null +++ b/resources/SmartHose/html/assets/index-e63cb1c0.js @@ -0,0 +1,41 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const i of l)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(l){const i={};return l.integrity&&(i.integrity=l.integrity),l.referrerPolicy&&(i.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?i.credentials="include":l.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(l){if(l.ep)return;l.ep=!0;const i=n(l);fetch(l.href,i)}})();function Lc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ms={exports:{}},kl={},hs={exports:{}},D={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hr=Symbol.for("react.element"),zc=Symbol.for("react.portal"),Tc=Symbol.for("react.fragment"),Mc=Symbol.for("react.strict_mode"),Rc=Symbol.for("react.profiler"),Ic=Symbol.for("react.provider"),Dc=Symbol.for("react.context"),Fc=Symbol.for("react.forward_ref"),Oc=Symbol.for("react.suspense"),$c=Symbol.for("react.memo"),Uc=Symbol.for("react.lazy"),lu=Symbol.iterator;function Vc(e){return e===null||typeof e!="object"?null:(e=lu&&e[lu]||e["@@iterator"],typeof e=="function"?e:null)}var vs={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},gs=Object.assign,ys={};function Cn(e,t,n){this.props=e,this.context=t,this.refs=ys,this.updater=n||vs}Cn.prototype.isReactComponent={};Cn.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};Cn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function ws(){}ws.prototype=Cn.prototype;function uo(e,t,n){this.props=e,this.context=t,this.refs=ys,this.updater=n||vs}var so=uo.prototype=new ws;so.constructor=uo;gs(so,Cn.prototype);so.isPureReactComponent=!0;var iu=Array.isArray,xs=Object.prototype.hasOwnProperty,ao={current:null},ks={key:!0,ref:!0,__self:!0,__source:!0};function Ss(e,t,n){var r,l={},i=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(i=""+t.key),t)xs.call(t,r)&&!ks.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,ee=E[K];if(0>>1;Kl(zn,T))Ml(L,zn)?(E[K]=L,E[M]=T,K=M):(E[K]=zn,E[qe]=T,K=qe);else if(Ml(L,T))E[K]=L,E[M]=T,K=M;else break e}}return z}function l(E,z){var T=E.sortIndex-z.sortIndex;return T!==0?T:E.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var o=Date,u=o.now();e.unstable_now=function(){return o.now()-u}}var s=[],c=[],v=1,h=null,p=3,w=!1,g=!1,k=!1,O=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(E){for(var z=n(c);z!==null;){if(z.callback===null)r(c);else if(z.startTime<=E)r(c),z.sortIndex=z.expirationTime,t(s,z);else break;z=n(c)}}function y(E){if(k=!1,d(E),!g)if(n(s)!==null)g=!0,Ln(S);else{var z=n(c);z!==null&&Xt(y,z.startTime-E)}}function S(E,z){g=!1,k&&(k=!1,f(j),j=-1),w=!0;var T=p;try{for(d(z),h=n(s);h!==null&&(!(h.expirationTime>z)||E&&!xe());){var K=h.callback;if(typeof K=="function"){h.callback=null,p=h.priorityLevel;var ee=K(h.expirationTime<=z);z=e.unstable_now(),typeof ee=="function"?h.callback=ee:h===n(s)&&r(s),d(z)}else r(s);h=n(s)}if(h!==null)var Zt=!0;else{var qe=n(c);qe!==null&&Xt(y,qe.startTime-z),Zt=!1}return Zt}finally{h=null,p=T,w=!1}}var _=!1,P=null,j=-1,U=5,I=-1;function xe(){return!(e.unstable_now()-IE||125K?(E.sortIndex=T,t(c,E),n(s)===null&&E===n(c)&&(k?(f(j),j=-1):k=!0,Xt(y,T-K))):(E.sortIndex=ee,t(s,E),g||w||(g=!0,Ln(S))),E},e.unstable_shouldYield=xe,e.unstable_wrapCallback=function(E){var z=p;return function(){var T=p;p=z;try{return E.apply(this,arguments)}finally{p=T}}}})(_s);Ps.exports=_s;var qc=Ps.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var bc=R,Le=qc;function x(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),pi=Object.prototype.hasOwnProperty,ef=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,uu={},su={};function tf(e){return pi.call(su,e)?!0:pi.call(uu,e)?!1:ef.test(e)?su[e]=!0:(uu[e]=!0,!1)}function nf(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function rf(e,t,n,r){if(t===null||typeof t>"u"||nf(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function we(e,t,n,r,l,i,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=o}var ce={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ce[e]=new we(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ce[t]=new we(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ce[e]=new we(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ce[e]=new we(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ce[e]=new we(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ce[e]=new we(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ce[e]=new we(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ce[e]=new we(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ce[e]=new we(e,5,!1,e.toLowerCase(),null,!1,!1)});var fo=/[\-:]([a-z])/g;function po(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(fo,po);ce[t]=new we(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(fo,po);ce[t]=new we(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(fo,po);ce[t]=new we(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ce[e]=new we(e,1,!1,e.toLowerCase(),null,!1,!1)});ce.xlinkHref=new we("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ce[e]=new we(e,1,!1,e.toLowerCase(),null,!0,!0)});function mo(e,t,n,r){var l=ce.hasOwnProperty(t)?ce[t]:null;(l!==null?l.type!==0:r||!(2u||l[o]!==i[u]){var s=` +`+l[o].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=o&&0<=u);break}}}finally{Al=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Un(e):""}function lf(e){switch(e.tag){case 5:return Un(e.type);case 16:return Un("Lazy");case 13:return Un("Suspense");case 19:return Un("SuspenseList");case 0:case 2:case 15:return e=Bl(e.type,!1),e;case 11:return e=Bl(e.type.render,!1),e;case 1:return e=Bl(e.type,!0),e;default:return""}}function gi(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case bt:return"Fragment";case qt:return"Portal";case mi:return"Profiler";case ho:return"StrictMode";case hi:return"Suspense";case vi:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case zs:return(e.displayName||"Context")+".Consumer";case Ls:return(e._context.displayName||"Context")+".Provider";case vo:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case go:return t=e.displayName||null,t!==null?t:gi(e.type)||"Memo";case dt:t=e._payload,e=e._init;try{return gi(e(t))}catch{}}return null}function of(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return gi(t);case 8:return t===ho?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Pt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ms(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function uf(e){var t=Ms(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(o){r=""+o,i.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Sr(e){e._valueTracker||(e._valueTracker=uf(e))}function Rs(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Ms(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Jr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function yi(e,t){var n=t.checked;return J({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function cu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Pt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Is(e,t){t=t.checked,t!=null&&mo(e,"checked",t,!1)}function wi(e,t){Is(e,t);var n=Pt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?xi(e,t.type,n):t.hasOwnProperty("defaultValue")&&xi(e,t.type,Pt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function fu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function xi(e,t,n){(t!=="number"||Jr(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Vn=Array.isArray;function dn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=Er.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function bn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Hn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},sf=["Webkit","ms","Moz","O"];Object.keys(Hn).forEach(function(e){sf.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Hn[t]=Hn[e]})});function $s(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Hn.hasOwnProperty(e)&&Hn[e]?(""+t).trim():t+"px"}function Us(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=$s(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var af=J({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ei(e,t){if(t){if(af[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(x(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(x(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(x(61))}if(t.style!=null&&typeof t.style!="object")throw Error(x(62))}}function Ni(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ci=null;function yo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Pi=null,pn=null,mn=null;function mu(e){if(e=yr(e)){if(typeof Pi!="function")throw Error(x(280));var t=e.stateNode;t&&(t=Pl(t),Pi(e.stateNode,e.type,t))}}function Vs(e){pn?mn?mn.push(e):mn=[e]:pn=e}function As(){if(pn){var e=pn,t=mn;if(mn=pn=null,mu(e),t)for(e=0;e>>=0,e===0?32:31-(xf(e)/kf|0)|0}var Nr=64,Cr=4194304;function An(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function tl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,i=e.pingedLanes,o=n&268435455;if(o!==0){var u=o&~l;u!==0?r=An(u):(i&=o,i!==0&&(r=An(i)))}else o=n&~l,o!==0?r=An(o):i!==0&&(r=An(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,i=t&-t,l>=i||l===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function vr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-We(t),e[t]=n}function Cf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Qn),Eu=String.fromCharCode(32),Nu=!1;function ua(e,t){switch(e){case"keyup":return bf.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function sa(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var en=!1;function td(e,t){switch(e){case"compositionend":return sa(t);case"keypress":return t.which!==32?null:(Nu=!0,Eu);case"textInput":return e=t.data,e===Eu&&Nu?null:e;default:return null}}function nd(e,t){if(en)return e==="compositionend"||!Po&&ua(e,t)?(e=ia(),Br=Eo=vt=null,en=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=ju(n)}}function da(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?da(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function pa(){for(var e=window,t=Jr();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Jr(e.document)}return t}function _o(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function fd(e){var t=pa(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&da(n.ownerDocument.documentElement,n)){if(r!==null&&_o(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,i=Math.min(r.start,l);r=r.end===void 0?i:Math.min(r.end,l),!e.extend&&i>r&&(l=r,r=i,i=l),l=Lu(n,i);var o=Lu(n,r);l&&o&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,tn=null,Mi=null,Yn=null,Ri=!1;function zu(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ri||tn==null||tn!==Jr(r)||(r=tn,"selectionStart"in r&&_o(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Yn&&ir(Yn,r)||(Yn=r,r=ll(Mi,"onSelect"),0ln||(e.current=Ui[ln],Ui[ln]=null,ln--)}function A(e,t){ln++,Ui[ln]=e.current,e.current=t}var _t={},me=Lt(_t),Ee=Lt(!1),Bt=_t;function wn(e,t){var n=e.type.contextTypes;if(!n)return _t;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},i;for(i in n)l[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function Ne(e){return e=e.childContextTypes,e!=null}function ol(){W(Ee),W(me)}function Ou(e,t,n){if(me.current!==_t)throw Error(x(168));A(me,t),A(Ee,n)}function Sa(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(x(108,of(e)||"Unknown",l));return J({},n,r)}function ul(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||_t,Bt=me.current,A(me,e),A(Ee,Ee.current),!0}function $u(e,t,n){var r=e.stateNode;if(!r)throw Error(x(169));n?(e=Sa(e,t,Bt),r.__reactInternalMemoizedMergedChildContext=e,W(Ee),W(me),A(me,e)):W(Ee),A(Ee,n)}var tt=null,_l=!1,ni=!1;function Ea(e){tt===null?tt=[e]:tt.push(e)}function Ed(e){_l=!0,Ea(e)}function zt(){if(!ni&&tt!==null){ni=!0;var e=0,t=$;try{var n=tt;for($=1;e>=o,l-=o,nt=1<<32-We(t)+l|n<j?(U=P,P=null):U=P.sibling;var I=p(f,P,d[j],y);if(I===null){P===null&&(P=U);break}e&&P&&I.alternate===null&&t(f,P),a=i(I,a,j),_===null?S=I:_.sibling=I,_=I,P=U}if(j===d.length)return n(f,P),Q&&Dt(f,j),S;if(P===null){for(;jj?(U=P,P=null):U=P.sibling;var xe=p(f,P,I.value,y);if(xe===null){P===null&&(P=U);break}e&&P&&xe.alternate===null&&t(f,P),a=i(xe,a,j),_===null?S=xe:_.sibling=xe,_=xe,P=U}if(I.done)return n(f,P),Q&&Dt(f,j),S;if(P===null){for(;!I.done;j++,I=d.next())I=h(f,I.value,y),I!==null&&(a=i(I,a,j),_===null?S=I:_.sibling=I,_=I);return Q&&Dt(f,j),S}for(P=r(f,P);!I.done;j++,I=d.next())I=w(P,f,j,I.value,y),I!==null&&(e&&I.alternate!==null&&P.delete(I.key===null?j:I.key),a=i(I,a,j),_===null?S=I:_.sibling=I,_=I);return e&&P.forEach(function(Mt){return t(f,Mt)}),Q&&Dt(f,j),S}function O(f,a,d,y){if(typeof d=="object"&&d!==null&&d.type===bt&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case kr:e:{for(var S=d.key,_=a;_!==null;){if(_.key===S){if(S=d.type,S===bt){if(_.tag===7){n(f,_.sibling),a=l(_,d.props.children),a.return=f,f=a;break e}}else if(_.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===dt&&Au(S)===_.type){n(f,_.sibling),a=l(_,d.props),a.ref=Fn(f,_,d),a.return=f,f=a;break e}n(f,_);break}else t(f,_);_=_.sibling}d.type===bt?(a=At(d.props.children,f.mode,y,d.key),a.return=f,f=a):(y=Zr(d.type,d.key,d.props,null,f.mode,y),y.ref=Fn(f,a,d),y.return=f,f=y)}return o(f);case qt:e:{for(_=d.key;a!==null;){if(a.key===_)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){n(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{n(f,a);break}else t(f,a);a=a.sibling}a=ci(d,f.mode,y),a.return=f,f=a}return o(f);case dt:return _=d._init,O(f,a,_(d._payload),y)}if(Vn(d))return g(f,a,d,y);if(Tn(d))return k(f,a,d,y);Mr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(n(f,a.sibling),a=l(a,d),a.return=f,f=a):(n(f,a),a=ai(d,f.mode,y),a.return=f,f=a),o(f)):n(f,a)}return O}var kn=_a(!0),ja=_a(!1),cl=Lt(null),fl=null,sn=null,To=null;function Mo(){To=sn=fl=null}function Ro(e){var t=cl.current;W(cl),e._currentValue=t}function Bi(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function vn(e,t){fl=e,To=sn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Se=!0),e.firstContext=null)}function Fe(e){var t=e._currentValue;if(To!==e)if(e={context:e,memoizedValue:t,next:null},sn===null){if(fl===null)throw Error(x(308));sn=e,fl.dependencies={lanes:0,firstContext:e}}else sn=sn.next=e;return t}var $t=null;function Io(e){$t===null?$t=[e]:$t.push(e)}function La(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Io(t)):(n.next=l.next,l.next=n),t.interleaved=n,ut(e,r)}function ut(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var pt=!1;function Do(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function za(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function lt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function St(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,F&2){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,ut(e,n)}return l=r.interleaved,l===null?(t.next=t,Io(r)):(t.next=l.next,l.next=t),r.interleaved=t,ut(e,n)}function Wr(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,xo(e,n)}}function Bu(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?l=i=o:i=i.next=o,n=n.next}while(n!==null);i===null?l=i=t:i=i.next=t}else l=i=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function dl(e,t,n,r){var l=e.updateQueue;pt=!1;var i=l.firstBaseUpdate,o=l.lastBaseUpdate,u=l.shared.pending;if(u!==null){l.shared.pending=null;var s=u,c=s.next;s.next=null,o===null?i=c:o.next=c,o=s;var v=e.alternate;v!==null&&(v=v.updateQueue,u=v.lastBaseUpdate,u!==o&&(u===null?v.firstBaseUpdate=c:u.next=c,v.lastBaseUpdate=s))}if(i!==null){var h=l.baseState;o=0,v=c=s=null,u=i;do{var p=u.lane,w=u.eventTime;if((r&p)===p){v!==null&&(v=v.next={eventTime:w,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var g=e,k=u;switch(p=t,w=n,k.tag){case 1:if(g=k.payload,typeof g=="function"){h=g.call(w,h,p);break e}h=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=k.payload,p=typeof g=="function"?g.call(w,h,p):g,p==null)break e;h=J({},h,p);break e;case 2:pt=!0}}u.callback!==null&&u.lane!==0&&(e.flags|=64,p=l.effects,p===null?l.effects=[u]:p.push(u))}else w={eventTime:w,lane:p,tag:u.tag,payload:u.payload,callback:u.callback,next:null},v===null?(c=v=w,s=h):v=v.next=w,o|=p;if(u=u.next,u===null){if(u=l.shared.pending,u===null)break;p=u,u=p.next,p.next=null,l.lastBaseUpdate=p,l.shared.pending=null}}while(1);if(v===null&&(s=h),l.baseState=s,l.firstBaseUpdate=c,l.lastBaseUpdate=v,t=l.shared.interleaved,t!==null){l=t;do o|=l.lane,l=l.next;while(l!==t)}else i===null&&(l.shared.lanes=0);Qt|=o,e.lanes=o,e.memoizedState=h}}function Hu(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=li.transition;li.transition={};try{e(!1),t()}finally{$=n,li.transition=r}}function Ya(){return Oe().memoizedState}function _d(e,t,n){var r=Nt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ga(e))Xa(t,n);else if(n=La(e,t,n,r),n!==null){var l=ge();Qe(n,e,r,l),Za(n,t,r)}}function jd(e,t,n){var r=Nt(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ga(e))Xa(t,l);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var o=t.lastRenderedState,u=i(o,n);if(l.hasEagerState=!0,l.eagerState=u,Ke(u,o)){var s=t.interleaved;s===null?(l.next=l,Io(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=La(e,t,l,r),n!==null&&(l=ge(),Qe(n,e,r,l),Za(n,t,r))}}function Ga(e){var t=e.alternate;return e===Z||t!==null&&t===Z}function Xa(e,t){Gn=ml=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Za(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,xo(e,n)}}var hl={readContext:Fe,useCallback:fe,useContext:fe,useEffect:fe,useImperativeHandle:fe,useInsertionEffect:fe,useLayoutEffect:fe,useMemo:fe,useReducer:fe,useRef:fe,useState:fe,useDebugValue:fe,useDeferredValue:fe,useTransition:fe,useMutableSource:fe,useSyncExternalStore:fe,useId:fe,unstable_isNewReconciler:!1},Ld={readContext:Fe,useCallback:function(e,t){return Ge().memoizedState=[e,t===void 0?null:t],e},useContext:Fe,useEffect:Qu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Kr(4194308,4,Ba.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Kr(4194308,4,e,t)},useInsertionEffect:function(e,t){return Kr(4,2,e,t)},useMemo:function(e,t){var n=Ge();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ge();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=_d.bind(null,Z,e),[r.memoizedState,e]},useRef:function(e){var t=Ge();return e={current:e},t.memoizedState=e},useState:Wu,useDebugValue:Ho,useDeferredValue:function(e){return Ge().memoizedState=e},useTransition:function(){var e=Wu(!1),t=e[0];return e=Pd.bind(null,e[1]),Ge().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Z,l=Ge();if(Q){if(n===void 0)throw Error(x(407));n=n()}else{if(n=t(),ue===null)throw Error(x(349));Wt&30||Ia(r,t,n)}l.memoizedState=n;var i={value:n,getSnapshot:t};return l.queue=i,Qu(Fa.bind(null,r,i,e),[e]),r.flags|=2048,pr(9,Da.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ge(),t=ue.identifierPrefix;if(Q){var n=rt,r=nt;n=(r&~(1<<32-We(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=fr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[Xe]=t,e[sr]=r,oc(e,t,!1,!1),t.stateNode=e;e:{switch(o=Ni(n,r),n){case"dialog":H("cancel",e),H("close",e),l=r;break;case"iframe":case"object":case"embed":H("load",e),l=r;break;case"video":case"audio":for(l=0;lNn&&(t.flags|=128,r=!0,On(i,!1),t.lanes=4194304)}else{if(!r)if(e=pl(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),On(i,!0),i.tail===null&&i.tailMode==="hidden"&&!o.alternate&&!Q)return de(t),null}else 2*b()-i.renderingStartTime>Nn&&n!==1073741824&&(t.flags|=128,r=!0,On(i,!1),t.lanes=4194304);i.isBackwards?(o.sibling=t.child,t.child=o):(n=i.last,n!==null?n.sibling=o:t.child=o,i.last=o)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=b(),t.sibling=null,n=X.current,A(X,r?n&1|2:n&1),t):(de(t),null);case 22:case 23:return Xo(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Pe&1073741824&&(de(t),t.subtreeFlags&6&&(t.flags|=8192)):de(t),null;case 24:return null;case 25:return null}throw Error(x(156,t.tag))}function Od(e,t){switch(Lo(t),t.tag){case 1:return Ne(t.type)&&ol(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Sn(),W(Ee),W(me),$o(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Oo(t),null;case 13:if(W(X),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(x(340));xn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return W(X),null;case 4:return Sn(),null;case 10:return Ro(t.type._context),null;case 22:case 23:return Xo(),null;case 24:return null;default:return null}}var Ir=!1,pe=!1,$d=typeof WeakSet=="function"?WeakSet:Set,N=null;function an(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){q(e,t,r)}else n.current=null}function Ji(e,t,n){try{n()}catch(r){q(e,t,r)}}var ns=!1;function Ud(e,t){if(Ii=nl,e=pa(),_o(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var o=0,u=-1,s=-1,c=0,v=0,h=e,p=null;t:for(;;){for(var w;h!==n||l!==0&&h.nodeType!==3||(u=o+l),h!==i||r!==0&&h.nodeType!==3||(s=o+r),h.nodeType===3&&(o+=h.nodeValue.length),(w=h.firstChild)!==null;)p=h,h=w;for(;;){if(h===e)break t;if(p===n&&++c===l&&(u=o),p===i&&++v===r&&(s=o),(w=h.nextSibling)!==null)break;h=p,p=h.parentNode}h=w}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Di={focusedElem:e,selectionRange:n},nl=!1,N=t;N!==null;)if(t=N,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,N=e;else for(;N!==null;){t=N;try{var g=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var k=g.memoizedProps,O=g.memoizedState,f=t.stateNode,a=f.getSnapshotBeforeUpdate(t.elementType===t.type?k:Ve(t.type,k),O);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=t.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(x(163))}}catch(y){q(t,t.return,y)}if(e=t.sibling,e!==null){e.return=t.return,N=e;break}N=t.return}return g=ns,ns=!1,g}function Xn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var i=l.destroy;l.destroy=void 0,i!==void 0&&Ji(t,n,i)}l=l.next}while(l!==r)}}function zl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function qi(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function ac(e){var t=e.alternate;t!==null&&(e.alternate=null,ac(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Xe],delete t[sr],delete t[$i],delete t[kd],delete t[Sd])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function cc(e){return e.tag===5||e.tag===3||e.tag===4}function rs(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||cc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function bi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=il));else if(r!==4&&(e=e.child,e!==null))for(bi(e,t,n),e=e.sibling;e!==null;)bi(e,t,n),e=e.sibling}function eo(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(eo(e,t,n),e=e.sibling;e!==null;)eo(e,t,n),e=e.sibling}var se=null,Ae=!1;function ft(e,t,n){for(n=n.child;n!==null;)fc(e,t,n),n=n.sibling}function fc(e,t,n){if(Ze&&typeof Ze.onCommitFiberUnmount=="function")try{Ze.onCommitFiberUnmount(Sl,n)}catch{}switch(n.tag){case 5:pe||an(n,t);case 6:var r=se,l=Ae;se=null,ft(e,t,n),se=r,Ae=l,se!==null&&(Ae?(e=se,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):se.removeChild(n.stateNode));break;case 18:se!==null&&(Ae?(e=se,n=n.stateNode,e.nodeType===8?ti(e.parentNode,n):e.nodeType===1&&ti(e,n),rr(e)):ti(se,n.stateNode));break;case 4:r=se,l=Ae,se=n.stateNode.containerInfo,Ae=!0,ft(e,t,n),se=r,Ae=l;break;case 0:case 11:case 14:case 15:if(!pe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var i=l,o=i.destroy;i=i.tag,o!==void 0&&(i&2||i&4)&&Ji(n,t,o),l=l.next}while(l!==r)}ft(e,t,n);break;case 1:if(!pe&&(an(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){q(n,t,u)}ft(e,t,n);break;case 21:ft(e,t,n);break;case 22:n.mode&1?(pe=(r=pe)||n.memoizedState!==null,ft(e,t,n),pe=r):ft(e,t,n);break;default:ft(e,t,n)}}function ls(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new $d),t.forEach(function(r){var l=Gd.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Ue(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=o),r&=~i}if(r=l,r=b()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ad(r/1960))-r,10e?16:e,gt===null)var r=!1;else{if(e=gt,gt=null,yl=0,F&6)throw Error(x(331));var l=F;for(F|=4,N=e.current;N!==null;){var i=N,o=i.child;if(N.flags&16){var u=i.deletions;if(u!==null){for(var s=0;sb()-Yo?Vt(e,0):Ko|=n),Ce(e,t)}function wc(e,t){t===0&&(e.mode&1?(t=Cr,Cr<<=1,!(Cr&130023424)&&(Cr=4194304)):t=1);var n=ge();e=ut(e,t),e!==null&&(vr(e,t,n),Ce(e,n))}function Yd(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),wc(e,n)}function Gd(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(x(314))}r!==null&&r.delete(t),wc(e,n)}var xc;xc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ee.current)Se=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Se=!1,Dd(e,t,n);Se=!!(e.flags&131072)}else Se=!1,Q&&t.flags&1048576&&Na(t,al,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Yr(e,t),e=t.pendingProps;var l=wn(t,me.current);vn(t,n),l=Vo(null,t,r,e,l,n);var i=Ao();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ne(r)?(i=!0,ul(t)):i=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Do(t),l.updater=Ll,t.stateNode=l,l._reactInternals=t,Wi(t,r,e,n),t=Yi(null,t,r,!0,i,n)):(t.tag=0,Q&&i&&jo(t),ve(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Yr(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=Zd(r),e=Ve(r,e),l){case 0:t=Ki(null,t,r,e,n);break e;case 1:t=bu(null,t,r,e,n);break e;case 11:t=Ju(null,t,r,e,n);break e;case 14:t=qu(null,t,r,Ve(r.type,e),n);break e}throw Error(x(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ve(r,l),Ki(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ve(r,l),bu(e,t,r,l,n);case 3:e:{if(rc(t),e===null)throw Error(x(387));r=t.pendingProps,i=t.memoizedState,l=i.element,za(e,t),dl(t,r,null,n);var o=t.memoizedState;if(r=o.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){l=En(Error(x(423)),t),t=es(e,t,r,n,l);break e}else if(r!==l){l=En(Error(x(424)),t),t=es(e,t,r,n,l);break e}else for(_e=kt(t.stateNode.containerInfo.firstChild),je=t,Q=!0,He=null,n=ja(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(xn(),r===l){t=st(e,t,n);break e}ve(e,t,r,n)}t=t.child}return t;case 5:return Ta(t),e===null&&Ai(t),r=t.type,l=t.pendingProps,i=e!==null?e.memoizedProps:null,o=l.children,Fi(r,l)?o=null:i!==null&&Fi(r,i)&&(t.flags|=32),nc(e,t),ve(e,t,o,n),t.child;case 6:return e===null&&Ai(t),null;case 13:return lc(e,t,n);case 4:return Fo(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=kn(t,null,r,n):ve(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ve(r,l),Ju(e,t,r,l,n);case 7:return ve(e,t,t.pendingProps,n),t.child;case 8:return ve(e,t,t.pendingProps.children,n),t.child;case 12:return ve(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,i=t.memoizedProps,o=l.value,A(cl,r._currentValue),r._currentValue=o,i!==null)if(Ke(i.value,o)){if(i.children===l.children&&!Ee.current){t=st(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var u=i.dependencies;if(u!==null){o=i.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=lt(-1,n&-n),s.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var v=c.pending;v===null?s.next=s:(s.next=v.next,v.next=s),c.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Bi(i.return,n,t),u.lanes|=n;break}s=s.next}}else if(i.tag===10)o=i.type===t.type?null:i.child;else if(i.tag===18){if(o=i.return,o===null)throw Error(x(341));o.lanes|=n,u=o.alternate,u!==null&&(u.lanes|=n),Bi(o,n,t),o=i.sibling}else o=i.child;if(o!==null)o.return=i;else for(o=i;o!==null;){if(o===t){o=null;break}if(i=o.sibling,i!==null){i.return=o.return,o=i;break}o=o.return}i=o}ve(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,vn(t,n),l=Fe(l),r=r(l),t.flags|=1,ve(e,t,r,n),t.child;case 14:return r=t.type,l=Ve(r,t.pendingProps),l=Ve(r.type,l),qu(e,t,r,l,n);case 15:return ec(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Ve(r,l),Yr(e,t),t.tag=1,Ne(r)?(e=!0,ul(t)):e=!1,vn(t,n),Ja(t,r,l),Wi(t,r,l,n),Yi(null,t,r,!0,e,n);case 19:return ic(e,t,n);case 22:return tc(e,t,n)}throw Error(x(156,t.tag))};function kc(e,t){return Gs(e,t)}function Xd(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ie(e,t,n,r){return new Xd(e,t,n,r)}function Jo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Zd(e){if(typeof e=="function")return Jo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===vo)return 11;if(e===go)return 14}return 2}function Ct(e,t){var n=e.alternate;return n===null?(n=Ie(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Zr(e,t,n,r,l,i){var o=2;if(r=e,typeof e=="function")Jo(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case bt:return At(n.children,l,i,t);case ho:o=8,l|=8;break;case mi:return e=Ie(12,n,t,l|2),e.elementType=mi,e.lanes=i,e;case hi:return e=Ie(13,n,t,l),e.elementType=hi,e.lanes=i,e;case vi:return e=Ie(19,n,t,l),e.elementType=vi,e.lanes=i,e;case Ts:return Ml(n,l,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ls:o=10;break e;case zs:o=9;break e;case vo:o=11;break e;case go:o=14;break e;case dt:o=16,r=null;break e}throw Error(x(130,e==null?e:typeof e,""))}return t=Ie(o,n,t,l),t.elementType=e,t.type=r,t.lanes=i,t}function At(e,t,n,r){return e=Ie(7,e,r,t),e.lanes=n,e}function Ml(e,t,n,r){return e=Ie(22,e,r,t),e.elementType=Ts,e.lanes=n,e.stateNode={isHidden:!1},e}function ai(e,t,n){return e=Ie(6,e,null,t),e.lanes=n,e}function ci(e,t,n){return t=Ie(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Jd(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Wl(0),this.expirationTimes=Wl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function qo(e,t,n,r,l,i,o,u,s){return e=new Jd(e,t,n,u,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Ie(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Do(i),e}function qd(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Cc)}catch(e){console.error(e)}}Cc(),Cs.exports=ze;var rp=Cs.exports,ds=rp;di.createRoot=ds.createRoot,di.hydrateRoot=ds.hydrateRoot;var lp={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const ip=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),op=(e,t)=>{const n=R.forwardRef(({color:r="currentColor",size:l=24,strokeWidth:i=2,absoluteStrokeWidth:o,children:u,...s},c)=>R.createElement("svg",{ref:c,...lp,width:l,height:l,stroke:r,strokeWidth:o?Number(i)*24/Number(l):i,className:`lucide lucide-${ip(e)}`,...s},[...t.map(([v,h])=>R.createElement(v,h)),...(Array.isArray(u)?u:[u])||[]]));return n.displayName=`${e}`,n};var Tt=op;const up=Tt("AlertTriangle",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),Pc=Tt("Droplets",[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]]),sp=Tt("Link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]),ap=Tt("Power",[["path",{d:"M18.36 6.64a9 9 0 1 1-12.73 0",key:"phirl6"}],["line",{x1:"12",x2:"12",y1:"2",y2:"12",key:"aemgbe"}]]),cp=Tt("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),fp=Tt("Volume2",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07",key:"ltjumu"}],["path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14",key:"1kegas"}]]),dp=Tt("VolumeX",[["polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5",key:"16drj5"}],["line",{x1:"22",x2:"16",y1:"9",y2:"15",key:"1ewh16"}],["line",{x1:"16",x2:"22",y1:"9",y2:"15",key:"5ykzw1"}]]),pp=Tt("Zap",[["polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2",key:"45s27k"}]]);let nu="en";const io={},oo=new Set;function _c(){oo.forEach(e=>e())}function mp(e,t){typeof e!="string"||!e||t&&typeof t=="object"&&(io[e]=t,_c())}function hp(e){typeof e!="string"||!e||(nu=e,_c())}function C(e,t){const n=io[nu]||io.en||{},r=e.split(".").reduce((i,o)=>i&&i[o]!=null?i[o]:void 0,n);let l=typeof r=="string"?r:e;if(t)for(const i in t)l=l.split(`{${i}}`).join(String(t[i]));return l}function vp(){const[,e]=R.useReducer(t=>t+1,0);return R.useEffect(()=>{const t=()=>e();return oo.add(t),()=>{oo.delete(t)}},[]),{lang:nu,t:C}}const gp=({model:e,linkedTo:t,soundEnabled:n,onToggleSound:r,onClose:l})=>m.jsxs("div",{className:"flex items-center justify-between mb-4",children:[m.jsxs("div",{className:"flex items-center gap-4",children:[m.jsx(Pc,{className:"w-8 h-8 text-blue-400"}),m.jsx("div",{className:"flex items-center gap-2 flex-wrap",children:m.jsxs("div",{children:[m.jsx("h1",{className:"text-xl font-bold leading-tight",children:C("app.title")}),m.jsxs("div",{className:"flex items-center gap-2",children:[e&&m.jsx("div",{className:"text-sm text-gray-400 leading-tight",children:e}),t&&m.jsxs("span",{className:"inline-flex items-center gap-1 text-xs text-blue-300 bg-blue-900/40 rounded px-2 py-0.5",children:[m.jsx(sp,{className:"w-3.5 h-3.5"}),C("app.linkedTo",{model:t})]})]})]})})]}),m.jsxs("div",{className:"flex items-center gap-4",children:[m.jsx("button",{onClick:l,className:"px-3 py-1 text-sm bg-red-600 hover:bg-red-700 rounded text-white",children:C("app.closeEsc")}),m.jsx("button",{onClick:r,className:"p-2 text-gray-400 hover:text-white",children:n?m.jsx(fp,{}):m.jsx(dp,{})}),m.jsx("div",{className:"text-sm text-gray-400",children:new Date().toLocaleTimeString()})]})]}),yp=({alerts:e})=>!e||e.length===0?null:m.jsx("div",{className:"bg-red-900 border border-red-600 rounded-lg p-3 mb-4",children:m.jsxs("div",{className:"flex items-center gap-2 text-red-200",children:[m.jsx(up,{className:"w-5 h-5"}),m.jsx("span",{className:"font-semibold",children:C("ui.alertsTitle")}),m.jsx("span",{children:e.join(" • ")})]})}),Or=({value:e,max:t,label:n,unit:r,danger:l=.9,warning:i=.7})=>{const o=Math.min(e/t,1),u=o>=l?"#ef4444":o>=i?"#f59e0b":"#10b981";return m.jsxs("div",{className:"relative w-24 h-24 mx-auto",children:[m.jsxs("svg",{className:"w-full h-full transform -rotate-90",viewBox:"0 0 100 100",children:[m.jsx("circle",{cx:"50",cy:"50",r:"40",stroke:"#374151",strokeWidth:"8",fill:"none"}),m.jsx("circle",{cx:"50",cy:"50",r:"40",stroke:u,strokeWidth:"6",fill:"none",strokeDasharray:`${o*251.33} 251.33`,className:"transition-all duration-500"})]}),m.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center text-white",children:[m.jsx("div",{className:"text-lg font-bold",children:Math.round(e)}),m.jsx("div",{className:"text-xs opacity-75",children:r})]}),m.jsx("div",{className:"absolute -bottom-3 left-1/2 -translate-x-1/2 w-full",children:m.jsx("div",{className:"text-xs text-gray-400 text-center",children:n})})]})},wp=({tankPct:e,foamUnits:t,maxCapacity:n})=>{const r=Math.max(0,(n||0)*((e||0)/100)),l=Math.max(0,Math.min(r,t||0)),i=Math.max(0,r-l),o=n>0?Math.min(100,i/n*100):0,u=n>0?Math.min(100,l/n*100):0,s=R.useRef(o),[c,v]=R.useState(!1);R.useEffect(()=>{if(Math.abs(s.current-o)>.1){v(!0);const k=setTimeout(()=>v(!1),900);return s.current=o,()=>clearTimeout(k)}s.current=o},[o]);const h=` + @keyframes waveScroll { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } }`,p=2,w=14,g=o>0&&u>0;return m.jsxs("div",{className:"relative w-full h-3 rounded-full overflow-hidden bg-gray-700/80",children:[m.jsx("style",{children:h}),o>0&&m.jsx("div",{className:"absolute inset-y-0 left-0 rounded-full",style:{width:`${o}%`,background:"linear-gradient(180deg, rgba(59,130,246,0.95), rgba(59,130,246,0.86)),repeating-linear-gradient(120deg, rgba(255,255,255,0.18) 0 8px, rgba(255,255,255,0.06) 8px 16px)",backgroundSize:"auto, 220% 100%",animation:`waveScroll ${c?"2.0s":"3.8s"} linear infinite`,boxShadow:"inset 0 0 6px rgba(0,0,0,0.25)",transition:"width 420ms cubic-bezier(.22,.61,.36,1)",willChange:"width"}}),u>0&&m.jsx("div",{className:"absolute inset-y-0 rounded-full",style:{left:`calc(${o}% - ${p}px)`,width:`calc(${u}% + ${p}px)`,background:"linear-gradient(180deg, #FFFFFF, #F5F7FB),repeating-linear-gradient(120deg, rgba(0,0,0,0.035) 0 8px, rgba(0,0,0,0.02) 8px 16px)",backgroundSize:"auto, 200% 100%",animation:"waveScroll 7s linear infinite",boxShadow:"inset 0 0 4px rgba(0,0,0,0.12)",transition:"left 420ms cubic-bezier(.22,.61,.36,1), width 420ms cubic-bezier(.22,.61,.36,1)",willChange:"left, width"}}),g&&m.jsx("div",{className:"absolute inset-y-0 pointer-events-none",style:{left:`calc(${o}% - ${w/2}px)`,width:`${w}px`,zIndex:2,background:"linear-gradient(90deg,rgba(59,130,246,0) 0%,rgba(59,130,246,0.55) 35%,rgba(255,255,255,0.85) 65%,rgba(255,255,255,0) 100%)"}}),m.jsx("div",{className:"absolute inset-0 pointer-events-none ring-1 ring-white/10 rounded-full"})]})},xp=({tankPct:e,intake:t,discharge:n,rpm:r,flow:l,waterCapPct:i,foamUnits:o=0,maxCapacity:u=0})=>{const s=Math.max(0,Math.min(100,e));return m.jsxs("div",{className:"bg-gray-800 rounded-lg p-4",children:[m.jsx("h2",{className:"text-lg font-semibold mb-3 text-center",children:C("ui.systemStatus")}),m.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[m.jsx(Or,{value:t,max:200,label:C("gauge.intake"),unit:C("gauge.unitPSI")}),m.jsx(Or,{value:n,max:250,label:C("gauge.discharge"),unit:C("gauge.unitPSI")}),m.jsx(Or,{value:r,max:2e3,label:C("gauge.rpm"),unit:C("gauge.unitRPM")}),m.jsx(Or,{value:l,max:1500,label:C("gauge.flow"),unit:C("gauge.unitGPM")})]}),m.jsxs("div",{className:"mt-6 space-y-3",children:[m.jsxs("div",{className:"flex items-center justify-between text-sm",children:[m.jsx("span",{children:C("gauge.tankCapacity")}),m.jsxs("span",{className:`font-semibold ${s<=0?"text-red-400":s<20?"text-yellow-400":"text-green-400"}`,children:[s,"%"]})]}),m.jsx(wp,{tankPct:s,foamUnits:o||0,maxCapacity:u||0})]})]})},fn=({active:e,onClick:t,children:n,variant:r="normal",size:l="md"})=>{const i=r==="danger"?e?"bg-red-600 border-red-500 shadow-red-500/50":"bg-red-900 border-red-700 hover:bg-red-800":r==="warning"?e?"bg-yellow-600 border-yellow-500 shadow-yellow-500/50":"bg-yellow-900 border-yellow-700 hover:bg-yellow-800":e?"bg-blue-600 border-blue-500 shadow-blue-500/50":"bg-gray-700 border-gray-600 hover:bg-gray-600",o=l==="sm"?"px-3 py-2 text-sm":l==="lg"?"px-6 py-4 text-lg":"px-4 py-3 text-base";return m.jsx("button",{onClick:t,className:`${i} ${o} border-2 rounded-lg font-semibold text-white transition-all duration-200 transform active:scale-95 ${e?"shadow-lg":"shadow-md"} flex items-center justify-center gap-2 w-full`,children:n})},$r=({icon:e,text:t})=>m.jsxs("span",{className:"w-full inline-flex items-center gap-2",children:[m.jsx("span",{className:"w-6 h-6 grid place-items-center shrink-0",children:e}),m.jsx("span",{className:"leading-none",children:t})]}),kp=({mainPump:e,masterValve:t,emergency:n,makingFoam:r,onTogglePump:l,onToggleValve:i,onMakeFoam:o,onEStop:u,onResetEStop:s})=>m.jsxs("div",{className:"bg-gray-800 rounded-lg p-4",children:[m.jsx("h2",{className:"text-lg font-semibold mb-3 text-center",children:C("ui.masterControls")}),m.jsxs("div",{className:"space-y-3",children:[m.jsx(fn,{active:e,onClick:l,size:"lg",children:m.jsx($r,{icon:m.jsx(ap,{className:"w-5 h-5"}),text:m.jsx(m.Fragment,{children:C(e?"controls.mainPumpOn":"controls.mainPumpOff")})})}),m.jsx(fn,{active:t,onClick:i,variant:"warning",size:"lg",children:m.jsx($r,{icon:m.jsx(cp,{className:"w-5 h-5"}),text:m.jsx(m.Fragment,{children:C(t?"controls.masterValveOpen":"controls.masterValveClosed")})})}),m.jsx(fn,{active:r,onClick:o,size:"lg",children:m.jsx($r,{icon:m.jsx(Pc,{className:"w-5 h-5"}),text:C(r?"controls.makingFoam":"controls.makeFoam")})}),m.jsx(fn,{active:n,onClick:n?s:u,variant:"danger",size:"lg",children:m.jsx($r,{icon:m.jsx(pp,{className:"w-5 h-5"}),text:C(n?"controls.resetEStop":"controls.emergencyStop")})})]})]}),Sp=({ports:e,transferAvailable:t,transferBusy:n,transferActive:r=!1,onTransfer:l})=>m.jsxs("div",{className:"bg-gray-800 rounded-lg p-4",children:[m.jsx("h2",{className:"text-lg font-semibold mb-3 text-center",children:C("ui.intakeSources")}),m.jsx("div",{className:"space-y-2",children:e.map(i=>{const o=i.id==="transfer",u=o?C(r?"status.transferring":t?"status.available":"status.notAvailable"):i.connected?`${i.pressure} ${C("gauge.unitPSI")}`:C("status.notConnected"),s=o?r?"bg-yellow-400":t?"bg-green-500":"bg-red-500":i.connected?"bg-green-500":"bg-red-500",c=C(n?r?"transfer.stopping":"transfer.starting":r?"transfer.stop":"transfer.start"),v=r||t,h=`intake.${String(i.id)}`,p=C(h),w=typeof i.name=="string"?i.name:String(i.name),g=C(w),k=p!==h?p:g!==w?g:w;return m.jsxs("div",{className:"flex items-center justify-between p-3 bg-gray-700 rounded-lg",children:[m.jsxs("div",{children:[m.jsx("div",{className:"font-semibold",children:k}),m.jsx("div",{className:"text-sm text-gray-400",children:u})]}),m.jsxs("div",{className:"flex items-center gap-2",children:[m.jsx("div",{className:`w-3 h-3 rounded-full ${s}`}),o?v?m.jsx(fn,{active:r,onClick:n?()=>{}:l,size:"sm",children:c}):m.jsx("span",{className:"px-2 py-1 text-xs rounded bg-gray-600/40 text-gray-300",children:C("ui.unavailable")}):m.jsx("span",{className:`px-2 py-1 text-xs rounded font-semibold ${i.active?"bg-green-600/30 text-green-300":"bg-gray-600/40 text-gray-300"}`,children:i.active?C("ui.active"):C("ui.standby")})]})]},i.id)})})]}),Ep=({ports:e,onToggle:t})=>m.jsxs("div",{className:"mt-4 bg-gray-800 rounded-lg p-4",children:[m.jsx("h2",{className:"text-lg font-semibold mb-3 text-center",children:C("ui.dischargeOutlets")}),m.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-2 auto-rows-fr",children:e.map(n=>{const r=n.type==="foam"||typeof n.id=="string"&&n.id.toLowerCase()==="foam"||typeof n.name=="string"&&n.name.toLowerCase()==="foam",l=`discharge.${String(n.id)}.name`,i=`discharge.${String(n.id)}.desc`,o=typeof n.name=="string"?n.name:String(n.name),u=n.description??n.type??"",s=C(l),c=C(i),v=s!==l?s:C(o)!==o?C(o):o,h=c!==i?c:u?C(u)!==u?C(u):u:"",p=r&&n.open?e.filter(g=>{const k=String(g.id).toLowerCase(),O=(g.type||"").toLowerCase(),f=(typeof g.name=="string"?g.name:"").toLowerCase(),a=k==="foam"||O==="foam"||f==="foam"||f.includes("foam"),d=k==="supply"||O==="supply"||f.includes("supply");return g.open&&!a&&!d}):[],w=g=>{const k=`discharge.${String(g.id)}.name`,O=C(k);if(O!==k)return O;const f=g.name&&typeof g.name=="string"?g.name:String(g.id);return C(f)!==f?C(f):f.replace(/[_-]+/g," ").replace(/\b\w/g,a=>a.toUpperCase())};return m.jsxs("div",{className:"bg-gray-700 rounded-lg p-3 h-full flex flex-col",children:[m.jsxs("div",{className:"text-center mb-2",children:[m.jsx("div",{className:"font-semibold text-xs",children:v}),m.jsx("div",{className:"text-xs text-gray-400 capitalize",children:h})]}),m.jsxs("div",{className:"relative mb-2 min-h-[88px]",children:[r&&m.jsx("div",{className:"absolute inset-0 flex items-center justify-center px-2",children:n.open?p.length?m.jsx("div",{className:"flex flex-wrap justify-center gap-1",children:p.map(g=>m.jsx("span",{className:"px-2 py-0.5 rounded-full bg-gray-600/80 text-gray-100 text-[11px] leading-4",children:w(g)},String(g.id)))}):m.jsx("div",{className:"text-[11px] text-gray-400",children:C("ui.noDischarges")}):m.jsx("div",{className:"text-[11px] text-gray-400",children:C("ui.noDischarges")})}),m.jsxs("div",{className:r?"invisible text-center space-y-1":"text-center space-y-1",children:[m.jsx("div",{className:"text-xs text-gray-400",children:C("gauge.pressure")}),m.jsxs("div",{className:"text-sm font-bold text-blue-400",children:[Math.round(n.pressure)," ",C("gauge.unitPSI")]}),m.jsx("div",{className:"text-xs text-gray-400",children:C("gauge.flow")}),m.jsxs("div",{className:"text-xs text-green-400",children:[Math.round(n.flowRate)," ",C("gauge.unitGPM")]})]})]}),m.jsxs("div",{className:"mt-auto",children:[m.jsx("div",{className:"flex justify-center",children:m.jsx(fn,{active:n.open,onClick:()=>t(n.id),variant:r?"warning":"normal",size:"sm",children:n.open?C("controls.open"):C("controls.closed")})}),m.jsx("div",{className:"mt-2 flex justify-center",children:m.jsx("div",{className:`w-2.5 h-2.5 rounded-full ${n.open?"bg-green-500":"bg-gray-500"}`})})]})]},n.id)})})]}),Np=({visible:e,waterPct:t,foamPct:n})=>{if(!e)return null;const r=o=>Math.min(8,Math.max(0,Math.round(o/100*8))),l=r(t),i=r(n);return m.jsxs("div",{className:"fixed bottom-4 right-4 z-40 pointer-events-none select-none",children:[m.jsxs("div",{className:"bg-gray-800/90 border border-gray-700 rounded-xl px-3 py-2 w-[92px] shadow-lg flex flex-col items-center",children:[m.jsx("div",{className:"w-full text-center text-[10px] font-extrabold tracking-wider text-gray-200 mb-1",children:C("hud.water")}),m.jsx("div",{className:"w-full rounded-md bg-gray-900/70 p-1 mb-2 flex flex-col-reverse gap-1",children:Array.from({length:8}).map((o,u)=>m.jsx("div",{className:`h-[8px] rounded-sm ${um.jsx("div",{className:`h-[8px] rounded-sm ${u{R.useEffect(()=>(window.addEventListener("message",e),()=>window.removeEventListener("message",e)),t)},Be=(e,t)=>{const n=window.GetParentResourceName?window.GetParentResourceName():"fire-truck-panel";return fetch(`https://${n}/${e}`,{method:"POST",headers:{"Content-Type":"application/json; charset=UTF-8"},body:JSON.stringify(t??{})})},Cp=(e,t,n)=>{R.useEffect(()=>{if(!e||!t)return;const r=setInterval(async()=>{try{const[l,i]=await Promise.all([Be("getVehicleWaterLevels",{vehicleNetID:t}),Be("getSystemGauges",{vehicleNetID:t})]),o=await l.json();if(o?.status==="success"){const s=Number(o.maxWaterLevel)||0,c=Number(o.waterLevel)||0,v=Number(o.foamLevel)||0,h=c+v;let p=s>0?Math.round(h/s*100):0;p<0&&(p=0),p>100&&(p=100),n(w=>({...w,tankLevel:p,foamLevel:v,maxTankCapacity:s}))}const u=await i.json();if(u?.status==="success"){const s=Number(u.intakePressure)||0,c=Number(u.pumpRPM)||0;n(v=>({...v,intakePressure:s,pumpRPM:c}))}}catch{}},800);return()=>clearInterval(r)},[e,t,n])},Pp=(e,t,n)=>{R.useEffect(()=>{if(!e||!t)return;const r=setInterval(async()=>{try{const i=await(await Be("getVehicleWaterLevels",{vehicleNetID:t})).json();if(i?.status==="success"){const o=Number(i.totalCapacity??i.maxWaterLevel)||0,u=Number(i.waterLevel)||0,s=Number(i.foamLevel)||0,c=typeof i.foamPercentage=="number"?Math.max(0,Math.min(100,Number(i.foamPercentage))):0,v=s>0,h=v?Math.round(o*(c/100)):0,p=v?Math.max(0,o-h):o;let w=p>0?u/p*100:0,g=h>0?s/h*100:0;w=Math.min(100,Math.max(0,Math.round(w))),g=Math.min(100,Math.max(0,Math.round(g))),n({waterPct:w,foamPct:g})}}catch{}},1e3);return()=>clearInterval(r)},[e,t,n])},_p=(e,t,n)=>{R.useEffect(()=>{if(!e||!t)return;const r=setInterval(async()=>{try{const i=await(await Be("getRelayStatus",{vehicleId:t})).json();n(i&&i.connected?{connected:!0,fromModel:i.fromModel,toModel:i.toModel}:{connected:!1})}catch{}},1e3);return()=>clearInterval(r)},[e,t,n])};function jp(e,t,n,r){const l=R.useRef(!1),i=R.useRef(new Map);return R.useEffect(()=>{l.current=!1,i.current.clear()},[e]),jc(o=>{const u=o.data;if(u){if(u.type==="openTablet"){l.current=!1,i.current.clear();return}if(e&&!(typeof u.vehicleID=="number"&&u.vehicleID!==e)){if(u.type==="updateDischargeMetrics"){if(u.vehicleID!==e)return;const s=String(u.portId||""),c=Math.max(0,Math.round(Number(u.pressure)||0)),v=Math.max(0,Math.round(Number(u.flowRate)||0)),h=!!u.spraying,p=w=>w===s||s==="supply"&&w==="supplyline";n(w=>w.map(g=>p(g.id)?{...g,pressure:c,flowRate:v}:g)),r&&typeof u.spraying=="boolean"&&r(h);return}if(u.type==="updateSystemGauges"){l.current=!0,t(s=>({...s,intakePressure:typeof u.intakePressure=="number"?Math.round(u.intakePressure):s.intakePressure,pumpRPM:typeof u.pumpRPM=="number"?Math.round(u.pumpRPM):s.pumpRPM})),r&&typeof u.spraying=="boolean"&&r(!!u.spraying);return}}}},[e]),{hasTelemetry:()=>l.current}}const Lp=(e,t,n,r)=>{R.useEffect(()=>{const l=i=>{const o=i.data||{};if(o.type==="updateDischarges"){if(o.vehicleID!==e)return;r(u=>{const s=o.discharges??[],c=new Map(s.map(v=>[String(v.id??v.portId??""),v]));return u.map(v=>{const h=c.get(v.id);return{...v,open:!!h,pressure:typeof h?.pressure=="number"?h.pressure:0,flowRate:typeof h?.flowRate=="number"?h.flowRate:0}})});return}if(o.type==="updateIntakeConnection"){if(o.vehicleID&&o.vehicleID!==e)return;n(u=>u.map(s=>o.intakeId!==s.id?s:{...s,connected:typeof o.connected=="boolean"?o.connected:s.connected,pressure:typeof o.pressure=="number"?o.pressure:s.pressure,active:typeof o.active=="boolean"?o.active:s.active}));return}if(o.type==="updateSystem"){if(o.vehicleID!==e)return;typeof o.masterValve=="boolean"&&t(u=>({...u,masterValve:o.masterValve})),typeof o.pumpOn=="boolean"&&t(u=>({...u,mainPumpEngaged:o.pumpOn}));return}if(o.type==="updatePumpState"){if(o.vehicleID&&o.vehicleID!==e)return;typeof o.engaged=="boolean"&&t(u=>({...u,mainPumpEngaged:o.engaged}));return}};return window.addEventListener("message",l),()=>window.removeEventListener("message",l)},[e,t,n,r])},fi={mainPumpEngaged:!1,tankLevel:0,foamLevel:0,maxTankCapacity:0,foamReservedPercentage:0,intakePressure:0,dischargePressure:0,pumpRPM:0,flowRate:0,emergencyStop:!1,masterValve:!1},ps=[{id:"attack1",name:"Attack Line 1",open:!1,pressure:0,flowRate:0,type:"attack",description:"Front Left"},{id:"attack2",name:"Attack Line 2",open:!1,pressure:0,flowRate:0,type:"attack",description:"Front Right"},{id:"supply",name:"Supply Line",open:!1,pressure:0,flowRate:0,type:"supply",description:"Monitor / Transfer"},{id:"ladder",name:"Ladder Pipe",open:!1,pressure:0,flowRate:0,type:"ladder",description:"Deck Guns"},{id:"foam",name:"Foam Line",open:!1,pressure:0,flowRate:0,type:"foam",description:"Foam Line"}];function zp(){const[e,t]=R.useState(!1),[n,r]=R.useState({}),[l,i]=R.useState(fi),[o,u]=R.useState([{id:"hydrant",name:C("intake.hydrant"),connected:!1,pressure:0,active:!1},{id:"draft",name:C("intake.draft"),connected:!1,pressure:0,active:!1},{id:"tank",name:C("intake.tank"),connected:!1,pressure:65,active:fi.mainPumpEngaged&&fi.masterValve},{id:"transfer",name:C("intake.transfer"),connected:!1,pressure:0,active:!1}]),[s,c]=R.useState(ps),[v,h]=R.useState([]),[p,w]=R.useState(!0),[g,k]=R.useState(!1),[O,f]=R.useState(!1),[a,d]=R.useState(null),[y,S]=R.useState(!1),[_,P]=R.useState(!1),[j,U]=R.useState(null),[I,xe]=R.useState(!1),[Mt,ct]=R.useState(void 0),[jn,Ol]=R.useState({waterPct:0,foamPct:0});R.useState(100);const{lang:Ln}=vp();R.useEffect(()=>{const M=L=>{L.key==="Escape"&&e&&Xt()};return window.addEventListener("keydown",M),()=>window.removeEventListener("keydown",M)},[e]),jc(M=>{const L=M,{type:Y,supplyLineEnabled:Rt,vehicleId:B,vehicleModel:It,vehicleNetID:ru}=L.data||{},$l=n.vehicleId===B;if(Y==="setLocaleDict"&&L.data.locale&&L.data.dict&&mp(L.data.locale,L.data.dict),Y==="setLocale"&&typeof L.data.locale=="string"){hp(L.data.locale);return}if(Y==="openTablet"&&B!==void 0){t(!0),i(G=>({...G,mainPumpEngaged:$l?G.mainPumpEngaged:!1,masterValve:$l?G.masterValve:!1,intakePressure:0,pumpRPM:0,dischargePressure:0,flowRate:0})),S(!1),P(!1),r({vehicleId:B,vehicleModel:It,supplyLineEnabled:Rt}),$l||c(ps.map(G=>({...G,open:!1,pressure:0,flowRate:0}))),u(G=>G.map(V=>V.id==="tank"?{...V,connected:!0,active:!1,pressure:0}:{...V,connected:!1,active:!1,pressure:0}));const $e=L.data.intakeKind;if($e){const G=!!L.data.intakeConnected,V=typeof L.data.intakePressure=="number"?L.data.intakePressure:G?65:0;u(ne=>ne.map(re=>{if(re.id==="hydrant"||re.id==="draft"){const be=re.id===$e;return{...re,connected:be?G:!1,active:be?G:!1,pressure:be?V:0}}return re}))}else if(typeof L.data.hydrantConnected=="boolean"){const G=L.data.hydrantConnected,V=typeof L.data.hydrantPressure=="number"?L.data.hydrantPressure:G?65:0;u(ne=>ne.map(re=>re.id==="hydrant"?{...re,connected:G,pressure:V,active:G}:re))}(async()=>{try{const V=await(await Be("getTransferState",{vehicleId:B})).json();if(V?.active){S(!0);const ne=typeof V?.supply?.pressure=="number"?V.supply.pressure:typeof V?.psi=="number"?V.psi:void 0,re=typeof V?.supply?.flowRate=="number"?V.supply.flowRate:typeof V?.gpm=="number"?V.gpm:void 0;V.role==="source"?(c(be=>be.map(he=>he.id==="supply"||he.id==="supplyline"?{...he,connected:!0,pressure:typeof ne=="number"?ne:he.pressure,flowRate:typeof re=="number"?re:he.flowRate}:he)),u(be=>be.map(he=>he.id==="transfer"?{...he,active:!0}:he))):V.role==="target"&&u(be=>be.map(he=>he.id==="transfer"?{...he,connected:!0,active:!0,pressure:typeof ne=="number"?ne:he.pressure}:he))}}catch{}})();return}if(Y==="closeTablet"){t(!1),S(!1),P(!1);return}if(Y==="showHudIndicators"){ct(typeof ru=="number"?ru:n.vehicleId),xe(!0);return}if(Y==="hideHudIndicators"){xe(!1),ct(void 0);return}if(Y==="transferStatus"){const $e=L.data.vehicleID;if(typeof $e=="number"&&$e===n.vehicleId){const G=!!L.data.active;S(G),u(V=>V.map(ne=>ne.id==="transfer"?{...ne,active:G}:ne)),G||c(V=>V.map(ne=>ne.id==="supply"||ne.id==="supplyline"?{...ne,connected:!1,pressure:0,flowRate:0}:ne))}return}if(Y==="transferSupplyTelemetry"){const{psi:$e,gpm:G,vehicleID:V}=L.data||{};if(typeof V=="number"&&V!==n.vehicleId)return;c(ne=>ne.map(re=>re.id==="supply"||re.id==="supplyline"?{...re,connected:!0,pressure:typeof $e=="number"?Math.max(0,Math.round($e)):re.pressure,flowRate:typeof G=="number"?Math.max(0,Math.round(G)):re.flowRate}:re));return}if(Y==="transferError"){const $e=L.data.message;$e&&(U(String($e)),setTimeout(()=>U(null),2500));return}},[l.mainPumpEngaged,l.masterValve,l.tankLevel,n.vehicleId]),Lp(n.vehicleId,i,u,c),jp(n.vehicleId,i,c,f),Cp(e&&!!n.vehicleId,n.vehicleId,i),Pp(I,Mt,Ol),_p(e&&!!n.vehicleId,n.vehicleId,d),R.useEffect(()=>{i(M=>{const L=B=>B.id!=="supply"&&B.id!=="supplyline"&&B.open||(B.id==="supply"||B.id==="supplyline")&&((Number(B.pressure)||0)>0||(Number(B.flowRate)||0)>0),Y=s.reduce((B,It)=>L(It)?B+(Number(It.pressure)||0):B,0),Rt=s.reduce((B,It)=>L(It)?B+(Number(It.flowRate)||0):B,0);return M.dischargePressure===Y&&M.flowRate===Rt?M:{...M,dischargePressure:Y,flowRate:Rt}})},[s]),R.useEffect(()=>{const M=[];l.dischargePressure>200&&M.push(C("alerts.highPressure")),l.emergencyStop&&M.push(C("alerts.emergencyStop")),y&&M.push(C("alerts.transferring")),h(M)},[l,a,y,Ln]);const Xt=()=>{t(!1),Be("closeUI")},E=async()=>{if(n.vehicleId)try{(await(await Be("engagePump",{vehicleId:n.vehicleId})).json())?.status==="success"&&i(Y=>({...Y,mainPumpEngaged:!Y.mainPumpEngaged}))}catch{}},z=async()=>{if(n.vehicleId)try{(await(await Be("toggleMasterValve",{vehicleId:n.vehicleId,open:!l.masterValve})).json())?.status==="success"&&i(Y=>({...Y,masterValve:!Y.masterValve}))}catch{}},T=async()=>{if(!(!n.vehicleId||g)&&!(!l.mainPumpEngaged||!l.masterValve))try{k(!0);const L=await(await Be("makeFoam",{vehicleId:n.vehicleId})).json();L?.status==="success"&&typeof L.foamLevel=="number"&&i(Y=>({...Y,foamLevel:L.foamLevel}))}catch{}finally{k(!1)}},K=()=>{i(M=>({...M,emergencyStop:!0,mainPumpEngaged:!1,masterValve:!1})),c(M=>M.map(L=>({...L,open:!1})))},ee=()=>i(M=>({...M,emergencyStop:!1})),Zt=M=>{n.vehicleId&&c(L=>{const Y=L.map(B=>B.id===M?{...B,open:!B.open}:B),Rt=Y.find(B=>B.id===M);return Rt&&Be("toggleDischargePort",{portId:M,open:Rt.open,vehicleId:n.vehicleId}),Y})},qe=async()=>{if(!(!n.vehicleId||_))try{P(!0);const L=await(await Be(y?"stoptransfer":"transferwater",{vehicleId:n.vehicleId})).json();L?.status==="error"&&L?.message&&(U(String(L.message)),setTimeout(()=>U(null),2500))}catch{U("Transfer failed."),setTimeout(()=>U(null),2500)}finally{P(!1)}},zn=v.length>0||!!a?.connected||_;return R.useEffect(()=>{u(M=>M.map(L=>L.id==="tank"?{...L,connected:!0,active:l.mainPumpEngaged&&l.masterValve,pressure:l.tankLevel>0?65:0}:L))},[l.mainPumpEngaged,l.masterValve,l.tankLevel]),m.jsxs(m.Fragment,{children:[e&&m.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:m.jsx("div",{className:"relative p-[8px] rounded-3xl bg-black shadow-2xl max-w-5xl w-full overflow-hidden",children:m.jsx("div",{className:"rounded-2xl bg-black",children:m.jsxs("div",{className:"bg-gray-900 text-white rounded-2xl p-4 h-[760px] flex flex-col relative",children:[m.jsx(gp,{model:n.vehicleModel,linkedTo:a?.connected?a?.fromModel||a?.toModel?[a?.fromModel,a?.toModel].filter(Boolean).join(" → "):a?.peerModel:void 0,soundEnabled:p,onToggleSound:()=>w(M=>!M),onClose:Xt}),m.jsx(yp,{alerts:v}),j&&m.jsx("div",{className:"mb-2 px-3 py-2 rounded-md bg-red-600/80 text-white text-sm shadow",children:j}),m.jsxs("div",{className:`flex-1 ${zn?"overflow-y-auto pr-2 custom-scroll":""}`,children:[m.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4",children:[m.jsx(xp,{tankPct:l.tankLevel,intake:l.intakePressure,discharge:l.dischargePressure,rpm:l.pumpRPM,flow:l.flowRate,foamUnits:l.foamLevel??0,maxCapacity:l.maxTankCapacity??0}),m.jsx(kp,{mainPump:l.mainPumpEngaged,masterValve:l.masterValve,emergency:l.emergencyStop,makingFoam:g,onTogglePump:E,onToggleValve:z,onMakeFoam:T,onEStop:K,onResetEStop:ee}),m.jsx(Sp,{ports:o,transferAvailable:!!a?.connected,transferBusy:_,transferActive:y,onTransfer:qe})]}),m.jsx(Ep,{ports:s,onToggle:Zt})]})]})})})}),m.jsx(Np,{visible:I,waterPct:jn.waterPct,foamPct:jn.foamPct})]})}di.createRoot(document.getElementById("root")).render(m.jsx(Qc.StrictMode,{children:m.jsx(zp,{})})); diff --git a/resources/SmartHose/html/index.html b/resources/SmartHose/html/index.html new file mode 100644 index 000000000..53d74f4e6 --- /dev/null +++ b/resources/SmartHose/html/index.html @@ -0,0 +1,15 @@ + + + + + + + SHS Control Panel + + + + +
+ + + \ No newline at end of file diff --git a/resources/SmartHose/locales/en.json b/resources/SmartHose/locales/en.json new file mode 100644 index 000000000..f02030254 --- /dev/null +++ b/resources/SmartHose/locales/en.json @@ -0,0 +1,94 @@ +{ + "app": { + "title": "SHS Panel", + "closeEsc": "Close (ESC)", + "linkedTo": "Linked to {model}" + }, + "ui": { + "alertsTitle": "ALERTS:", + "intakeSources": "Intake Sources", + "dischargeOutlets": "Discharge Outlets", + "masterControls": "Master Controls", + "systemStatus": "System Status", + "unavailable": "UNAVAILABLE", + "active": "ACTIVE", + "standby": "STANDBY", + "outlet": "Outlet", + "noDischarges": "No discharges open" + }, + "intake": { + "hydrant": "Hydrant", + "draft": "Draft", + "tank": "Tank", + "transfer": "Water Transfer" + }, + "discharge": { + "attack1": { + "name": "Attack Line 1", + "desc": "Front Left" + }, + "attack2": { + "name": "Attack Line 2", + "desc": "Front Right" + }, + "supply": { + "name": "Supply Line", + "desc": "Monitor / Transfer" + }, + "ladder": { + "name": "Ladder Pipe", + "desc": "Deck Guns" + }, + "foam": { + "name": "Foam Line", + "desc": "Foam Line" + } + }, + "status": { + "transferring": "Transferring…", + "available": "Available", + "notAvailable": "Not Available", + "notConnected": "Not Connected" + }, + "controls": { + "mainPumpOn": "Main Pump ON", + "mainPumpOff": "Main Pump OFF", + "masterValveOpen": "Master Valve OPEN", + "masterValveClosed": "Master Valve CLOSED", + "makeFoam": "MAKE FOAM", + "makingFoam": "MAKING FOAM…", + "emergencyStop": "EMERGENCY STOP", + "resetEStop": "RESET E-STOP", + "open": "OPEN", + "closed": "CLOSED" + }, + "gauge": { + "intake": "Intake", + "discharge": "Discharge", + "rpm": "Pump RPM", + "flow": "Flow Rate", + "pressure": "Pressure", + "unitPSI": "PSI", + "unitRPM": "RPM", + "unitGPM": "GPM", + "tankCapacity": "Tank Capacity:" + }, + "hud": { + "water": "WATER", + "foam": "FOAM" + }, + "alerts": { + "highPressure": "HIGH PRESSURE", + "emergencyStop": "EMERGENCY STOP ACTIVE", + "transferring": "TRANSFERRING WATER…" + }, + "messages": { + "transferFailed": "Transfer failed." + }, + "transfer": { + "start": "TRANSFER", + "stop": "STOP", + "starting": "STARTING…", + "stopping": "STOPPING…" + } +} \ No newline at end of file diff --git a/resources/SmartHose/locales/pt.json b/resources/SmartHose/locales/pt.json new file mode 100644 index 000000000..6f48dab8e --- /dev/null +++ b/resources/SmartHose/locales/pt.json @@ -0,0 +1,79 @@ +{ + "app": { + "title": "Painel SHS", + "closeEsc": "Fechar (ESC)", + "linkedTo": "Conectado a {model}" + }, + "ui": { + "alertsTitle": "AVISOS:", + "intakeSources": "Fontes de Captação", + "dischargeOutlets": "Saídas de Descarga", + "masterControls": "Controlo Principal", + "systemStatus": "Estado do Sistema", + "unavailable": "INDISPONÍVEL", + "active": "ATIVO", + "standby": "ESPERA", + "outlet": "Saída", + "noDischarges": "Sem descargas ativas" + }, + "intake": { + "hydrant": "Hidrante", + "draft": "Aspiração", + "tank": "Depósito", + "transfer": "Transferência" + }, + "discharge": { + "attack1": { "name": "Linha de Ataque 1", "desc": "Frente Esquerda" }, + "attack2": { "name": "Linha de Ataque 2", "desc": "Frente Direita" }, + "supply": { "name": "Linha de Abastecimento", "desc": "Monitor / Transferência" }, + "ladder": { "name": "Canhão de Escada", "desc": "Canhões de Convés" }, + "foam": { "name": "Linha de Espuma", "desc": "Linha de Espuma" } + }, + "status": { + "transferring": "A transferir…", + "available": "Disponível", + "notAvailable": "Indisponível", + "notConnected": "Não ligado" + }, + "controls": { + "mainPumpOn": "Bomba LIGADA", + "mainPumpOff": "Bomba DESLIGADA", + "masterValveOpen": "Válvula ABERTA", + "masterValveClosed": "Válvula FECHADA", + "makeFoam": "FAZER ESPUMA", + "makingFoam": "A FAZER ESPUMA…", + "emergencyStop": "PARAGEM DE EMERGÊNCIA", + "resetEStop": "REPOR PARAGEM", + "open": "ABERTA", + "closed": "FECHADA" + }, + "gauge": { + "intake": "Entrada", + "discharge": "Saída", + "rpm": "RPM da Bomba", + "flow": "Caudal", + "pressure": "Pressão", + "unitPSI": "PSI", + "unitRPM": "RPM", + "unitGPM": "GPM", + "tankCapacity": "Capacidade do Depósito:" + }, + "hud": { + "water": "ÁGUA", + "foam": "ESPUMA" + }, + "alerts": { + "highPressure": "PRESSÃO ELEVADA", + "emergencyStop": "PARAGEM DE EMERGÊNCIA ATIVA", + "transferring": "A TRANSFERIR ÁGUA…" + }, + "messages": { + "transferFailed": "Falha na transferência." + }, + "transfer": { + "start": "TRANSFERIR", + "stop": "PARAR", + "starting": "A INICIAR…", + "stopping": "A PARAR…" + } +} diff --git a/resources/SmartHose/stream/rope.ytd b/resources/SmartHose/stream/rope.ytd index 0af0ad7c4..6f1f29269 100644 --- a/resources/SmartHose/stream/rope.ytd +++ b/resources/SmartHose/stream/rope.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48c62986e7e716c1e47dc64ba06c436c595ae3103c612bf115a2a4838b820d19 -size 346 +oid sha256:1d786939d3d03c72a23d90dbd8c80cf63ff067d7e9c0f485da9b173dc0b58e4b +size 38353 diff --git a/resources/SmartHose/stream/w_am_hose.ydr b/resources/SmartHose/stream/w_am_hose.ydr index 7c9e38175..1d6862415 100644 --- a/resources/SmartHose/stream/w_am_hose.ydr +++ b/resources/SmartHose/stream/w_am_hose.ydr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2358ea4d1e3dbad4476ec77b645849607f9577aeda32712e177c5f4df52eae5c -size 234995 +oid sha256:9a35020ad702dd604e1775920835da0cf14213d02b2e2ae86a9fd21c366511f2 +size 382853 diff --git a/resources/SmartHose/sv_smarthose.lua b/resources/SmartHose/sv_smarthose.lua index 3b925ebfa..fb1328598 100644 Binary files a/resources/SmartHose/sv_smarthose.lua and b/resources/SmartHose/sv_smarthose.lua differ diff --git a/resources/Supply-Line/.fxap b/resources/Supply-Line/.fxap index a7097b1a2..f2cee13f6 100644 Binary files a/resources/Supply-Line/.fxap and b/resources/Supply-Line/.fxap differ diff --git a/resources/Supply-Line/cl_supplyline.lua b/resources/Supply-Line/cl_supplyline.lua index 88fd5c406..3734818ff 100644 Binary files a/resources/Supply-Line/cl_supplyline.lua and b/resources/Supply-Line/cl_supplyline.lua differ diff --git a/resources/Supply-Line/cl_utils.lua b/resources/Supply-Line/cl_utils.lua index ec1a9ec7a..ca3de8379 100644 --- a/resources/Supply-Line/cl_utils.lua +++ b/resources/Supply-Line/cl_utils.lua @@ -11,72 +11,129 @@ if Config.Notifications.Enabled and Config.Notifications.Framework.ESX then ESX = exports["es_extended"]:getSharedObject() end +if Config.PlaceGeneratorCommand.Inventory.quasarInventory or Config.PlaceGeneratorCommand.Inventory.coreInventory then + function inventorySetupGenerator() + TriggerEvent("SupplyLine:Client:EquipPortableGenerator") + end + + exports("inventorySetupGenerator", inventorySetupGenerator) +end + if Config.EnablePositioningCommand then - TriggerEvent('chat:addSuggestion', '/'.."findhosepositioning", "Find positioning of the hose/supply line on your fire truck") + TriggerEvent('chat:addSuggestion', '/'.."findhydrantpositioning", "Find rope spawn point and rotation for a hydrant", { + { name="type", help="supplyLine or lppLine" } + }) - RegisterCommand("findhosepositioning", function(source, args) - + RegisterCommand("findhydrantpositioning", function(source, args) + local ropeLabel = args[1] or "supplyLine" local ped = PlayerPedId() - local targetVehicle = GetVehiclePedIsIn(ped, false) - - if targetVehicle == nil or targetVehicle == 0 then - Notify("No vehicle found!") - else - local model = `p_ld_soc_ball_01` - SetEntityAlpha(targetVehicle, 150, false) - RequestModel(model) - while not HasModelLoaded(model) do Wait(0) end - local ballProp = CreateObject(model, coords, false, false, false) + local pedCoords = GetEntityCoords(ped) + local targetHydrant = 0 - while not DoesEntityExist(ballProp) do Wait(0) end + local ropeType = 4 + if HydrantRopes and HydrantRopes.RopeTypes and HydrantRopes.RopeTypes[ropeLabel] then + ropeType = HydrantRopes.RopeTypes[ropeLabel] + end + + -- Add your server's custom hydrant models to this list if you have them! + local hydrantModels = { + `prop_fire_hydrant_1`, + `prop_fire_hydrant_2`, + `prop_fire_hydrant_4`, + `bv_water_pump` + } + + for _, model in ipairs(hydrantModels) do + local obj = GetClosestObjectOfType(pedCoords.x, pedCoords.y, pedCoords.z, 5.0, model, false, false, false) + if obj ~= 0 then + targetHydrant = obj + break + end + end - SetModelAsNoLongerNeeded(model) - local offSet = {0.0, 0.0, 0.0} - local rotation = {0.0, 0.0, 0.0} - local offSetComplete = false - while not offSetComplete do - if targetVehicle ~= nil and targetVehicle ~= 0 then - DetachEntity(ballProp, true, false) - AttachEntityToEntity(ballProp, targetVehicle, -1, offSet[1], offSet[2], offSet[3], rotation[1], rotation[2], rotation[3], true, false, true, false, 1, true) - if not IsControlReleased(0, 207) then --page down - offSet = {offSet[1], offSet[2], offSet[3] - 0.01} - end + if targetHydrant == 0 then return Notify("No hydrant found nearby! Stand closer.") end - if not IsControlReleased(0, 208) then --page up - offSet = {offSet[1], offSet[2], offSet[3] + 0.01} - end + RopeLoadTextures() + local hydPos = GetEntityCoords(targetHydrant) + + local previewRope = AddRope(hydPos.x, hydPos.y, hydPos.z, 0.0, 0.0, 0.0, 20.0, ropeType, 20.0, 0.5, 1.0, false, false, false, 5.0, false, 0) + local offSet = {x = 0.0, y = 0.0, z = 0.0} + local rotation = {x = 0.0, y = 0.0, z = 0.0} + local depth = 0.2 + local mode = "MOVE" + local editing = true - if not IsControlReleased(0, 173) then --arrow down - offSet = {offSet[1], offSet[2] - 0.01, offSet[3]} - end + Notify("~b~POSITIONING MODE~w~\n[TAB] Toggle Move/Rotate\n[Arrows] Adjust\n[INSERT/DELETE] Depth\n[ENTER] Save") + + SetEntityAlpha(targetHydrant, 150, false) + local function RotationToDirection(rot) + local radZ = math.rad(rot.z) + local radX = math.rad(rot.x) + local num = math.abs(math.cos(radX)) + return vector3(-math.sin(radZ) * num, math.cos(radZ) * num, math.sin(radX)) + end - if not IsControlReleased(0, 172) then --arrow up - offSet = {offSet[1], offSet[2] + 0.01, offSet[3]} - end - - if not IsControlReleased(0, 174) then --arrow left - offSet = {offSet[1] - 0.01, offSet[2], offSet[3]} - end - - if not IsControlReleased(0, 175) then --arrow right - offSet = {offSet[1] + 0.01, offSet[2], offSet[3]} - end - - if IsControlJustPressed(0, 191) then -- enter - finish - offSetComplete = true - end - end - - Wait(0) + while editing do + Wait(0) + local speed = IsControlPressed(0, 21) and 0.05 or 0.005 + + if IsControlJustPressed(0, 192) then + mode = (mode == "MOVE") and "ROTATE" or "MOVE" + Notify("Mode: ~y~" .. mode) end - Notify("OffSet Values are now printed in your console") - print("OffSet: {"..offSet[1]..", "..offSet[2]..", "..offSet[3].."}") - DeleteEntity(ballProp) - ResetEntityAlpha(targetVehicle) + if IsControlPressed(0, 121) then depth = depth + 0.005 end + if IsControlPressed(0, 178) then depth = depth - 0.005 end + + local up = IsControlPressed(0, Config.PositioningControls.up) + local down = IsControlPressed(0, Config.PositioningControls.down) + local forward = IsControlPressed(0, Config.PositioningControls.forwards) + local backward = IsControlPressed(0, Config.PositioningControls.backwards) + local left = IsControlPressed(0, Config.PositioningControls.left) + local right = IsControlPressed(0, Config.PositioningControls.right) + + if mode == "MOVE" then + if up then offSet.z = offSet.z + speed end + if down then offSet.z = offSet.z - speed end + if forward then offSet.y = offSet.y + speed end + if backward then offSet.y = offSet.y - speed end + if left then offSet.x = offSet.x - speed end + if right then offSet.x = offSet.x + speed end + else + local rSpeed = speed * 50.0 + if up then rotation.x = rotation.x + rSpeed end + if down then rotation.x = rotation.x - rSpeed end + if left then rotation.z = rotation.z + rSpeed end + if right then rotation.z = rotation.z - rSpeed end + end + + local forwardVec = RotationToDirection(rotation) + local localPortPos = vector3(offSet.x, offSet.y, offSet.z) + local localBendPosA = localPortPos - (forwardVec * depth) + local localBendPosB = localPortPos - (forwardVec * (depth * 0.5)) + + local worldPointC = GetOffsetFromEntityInWorldCoords(targetHydrant, localPortPos.x, localPortPos.y, localPortPos.z) + local worldPointA = GetOffsetFromEntityInWorldCoords(targetHydrant, localBendPosA.x, localBendPosA.y, localBendPosA.z) + local worldPointB = GetOffsetFromEntityInWorldCoords(targetHydrant, localBendPosB.x, localBendPosB.y, localBendPosB.z) + local handPos = GetWorldPositionOfEntityBone(ped, GetPedBoneIndex(ped, 6286)) + local vertexCount = GetRopeVertexCount(previewRope) + + PinRopeVertex(previewRope, 0, handPos.x, handPos.y, handPos.z) + PinRopeVertex(previewRope, vertexCount - 1, worldPointA.x, worldPointA.y, worldPointA.z) + PinRopeVertex(previewRope, vertexCount - 2, worldPointB.x, worldPointB.y, worldPointB.z) + PinRopeVertex(previewRope, vertexCount - 3, worldPointC.x, worldPointC.y, worldPointC.z) + + if IsControlJustPressed(0, Config.PositioningControls.enter) then editing = false end end - - end, false) + + ResetEntityAlpha(targetHydrant) + + print(string.format("^2--- %s OFFSET RESULT ---^7", ropeLabel:upper())) + print(string.format("{ x = %.3f, y = %.3f, z = %.3f, rx = %.3f, ry = %.3f, rz = %.3f, depth = %.3f },", offSet.x, offSet.y, offSet.z, rotation.x, rotation.y, rotation.z, depth)) + + DeleteRope(previewRope) + Notify("Data printed to F8 console.") + end, false) end function Notify(text) @@ -90,7 +147,7 @@ function Notify(text) ESX.ShowNotification(text) end elseif Config.Notifications.Framework.QBCore then - TriggerEvent('QBCore:Notify', text, 'info') + TriggerEvent('QBCore:Notify', text, 'primary') elseif Config.Notifications.Framework.QBX then exports.qbx_core:Notify(text, 'primary') elseif Config.Notifications.Framework.vRP then @@ -102,6 +159,10 @@ function Notify(text) end end +RegisterNetEvent('SupplyLine:Client:showNotification', function(message) + Notify(message) +end) + function showBaseNotification(message) -- Base game notifications SetNotificationTextEntry("STRING") @@ -139,4 +200,392 @@ function DrawTextOnScreen(text, x, y, scale, r, g, b, a, center) end AddTextComponentString(text) DrawText(x, y) +end + +local hydrantInteractionId = 'hydrantInteraction' +local hydrantInteractionActive = false +if Config.InteractType.HydrantInteraction.Drawtext or Config.InteractType.HydrantInteraction.ScreenPrompt then + StartHoseWaterLevelDisplayThread() + CreateThread(function() + while true do + local waitTime = 2500 + local player = GetPlayerPed(PlayerId()) + local playerPos = GetEntityCoords(player, false) + local fillingVehicle = nil + + if not IsPedInAnyVehicle(player, false) then + local closestHydrant = GetClosestHydrant(playerPos) + + if closestHydrant and DoesEntityExist(closestHydrant) then + if not NetworkGetEntityIsNetworked(closestHydrant) then + NetworkRegisterEntityAsNetworked(closestHydrant) + end + + local hydrantId = NetworkGetNetworkIdFromEntity(closestHydrant) + if NetworkDoesNetworkIdExist(hydrantId) then + local hydrantPos = GetEntityCoords(closestHydrant) + local rope = HydrantRopes.currentRopes[hydrantId] + fillingVehicle = HydrantManager.fillingVehicles[hydrantId] + + if rope then + if fillingVehicle then + if Config.InteractType.HydrantInteraction.Drawtext then + drawInstructionalText(Config.Translations.stopFilling, vec3(hydrantPos.x, hydrantPos.y, hydrantPos.z + 1.0)) + elseif Config.InteractType.HydrantInteraction.ScreenPrompt then + DisplayHelpText(Config.Translations.stopFilling) + end + else + if Config.InteractType.HydrantInteraction.Drawtext then + drawInstructionalText(Config.Translations.startFilling, vec3(hydrantPos.x, hydrantPos.y, hydrantPos.z + 1.0)) + elseif Config.InteractType.HydrantInteraction.ScreenPrompt then + DisplayHelpText(Config.Translations.startFilling) + end + end + else + if HoseBridge.isLineEquipped and Config.InteractType.HydrantInteraction.Drawtext then + drawInstructionalText(Config.Translations.connectLine, vec3(hydrantPos.x, hydrantPos.y, hydrantPos.z + 1.0)) + elseif Config.InteractType.HydrantInteraction.ScreenPrompt then + DisplayHelpText(Config.Translations.connectLine) + end + end + + waitTime = 1 + + if IsControlJustPressed(1, Config.SupplyLineKeys.ConnectHydrant) and isPermissionAllowed() then + HandleHydrantInteraction(hydrantId, hydrantPos) + TriggerEvent('SmartHose:Client:Bridge:DeleteHandRopeS') + end + + if IsControlJustPressed(1, Config.SupplyLineKeys.StartStopFilling) and rope and isPermissionAllowed() then + local fillingVehicle = HydrantManager.fillingVehicles[hydrantId] + if fillingVehicle then + HandleStartStopFilling(hydrantId, false) + else + HandleStartStopFilling(hydrantId, true) + end + end + end + end + end + Wait(waitTime) + end + end) +elseif Config.InteractType.HydrantInteraction.ThirdEye.enabled then + local hydrantModels = {} + for _, offset in ipairs(Config.HydrantOffsets) do + table.insert(hydrantModels, offset.model) + end + + StartHoseWaterLevelDisplayThread() + if Config.InteractType.HydrantInteraction.ThirdEye.oxTarget then + local jobGroups = GetAllowedJobGroups() + local HydrantOptions = { + { + name = 'connect_line', + label = Config.Translations.thirdEyeConnect, + icon = 'fa-solid fa-link', + groups = jobGroups, + canInteract = function(entity, distance, data) + if not HoseBridge.isLineEquipped then return false end + if HasObjectBeenBroken(entity) then return false end + + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + if not NetworkGetEntityIsNetworked(entity) then + return false + end + end + + local netId = NetworkGetNetworkIdFromEntity(entity) + local rope = HydrantRopes.currentRopes[netId] + if rope then return false end + + return true + end, + onSelect = function(data) + local hydrantEntity = data.entity + HandleHydrantInteractionEntity(hydrantEntity) + TriggerEvent('SmartHose:Client:Bridge:DeleteHandRopeS') + end, + }, + { + name = 'start_filling', + label = Config.Translations.thirdEyeStartFill, + icon = 'fa-solid fa-play', + groups = jobGroups, + canInteract = function(entity, distance, data) + if HasObjectBeenBroken(entity) then return false end + if not NetworkGetEntityIsNetworked(entity) then return false end + local hydrantId = NetworkGetNetworkIdFromEntity(entity) + local rope = HydrantRopes.currentRopes[hydrantId] + local fillingVehicle = HydrantManager.fillingVehicles[hydrantId] + return rope and not fillingVehicle + end, + onSelect = function(data) + local hydrantEntity = data.entity + HandleStartFillingEntity(hydrantEntity) + end, + }, + { + name = 'stop_filling', + label = Config.Translations.thirdEyeStopFill, + icon = 'fa-solid fa-stop', + groups = jobGroups, + canInteract = function(entity, distance, data) + if HasObjectBeenBroken(entity) then return false end + if not NetworkGetEntityIsNetworked(entity) then return false end + local fillingVehicle = HydrantManager.fillingVehicles[NetworkGetNetworkIdFromEntity(entity)] + return fillingVehicle ~= nil + end, + onSelect = function(data) + local hydrantEntity = data.entity + HandleStopFillingEntity(hydrantEntity) + end, + }, + { + name = 'disconnect_line', + label = Config.Translations.thirdEyeDisconnect, + icon = 'fa-solid fa-unlink', + groups = jobGroups, + canInteract = function(entity, distance, data) + if HasObjectBeenBroken(entity) then return false end + if not NetworkGetEntityIsNetworked(entity) then return false end + local rope = HydrantRopes.currentRopes[NetworkGetNetworkIdFromEntity(entity)] + return rope ~= nil + end, + onSelect = function(data) + local hydrantEntity = data.entity + HandleHydrantInteractionEntity(hydrantEntity) + end, + }, + } + exports.ox_target:addModel(hydrantModels, HydrantOptions) + elseif Config.InteractType.HydrantInteraction.ThirdEye.qbTarget then + local allowedJobs = GetAllowedJobGroups() + exports['qb-target']:AddTargetModel(hydrantModels, { + options = { + { + label = Config.Translations.thirdEyeConnect, + icon = 'fa-solid fa-link', + job = allowedJobs, + canInteract = function(entity) + if not HoseBridge.isLineEquipped then return false end + if HasObjectBeenBroken(entity) then + return false + end + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + local rope = HydrantRopes.currentRopes[NetworkGetNetworkIdFromEntity(entity)] + return not rope + end, + action = function(entity) + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + HandleHydrantInteractionEntity(entity) + TriggerEvent('SmartHose:Client:Bridge:DeleteHandRopeS') + end, + }, + { + label = Config.Translations.thirdEyeStartFill, + icon = 'fa-solid fa-play', + job = allowedJobs, + canInteract = function(entity) + if HasObjectBeenBroken(entity) then + return false + end + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + local hydrantId = NetworkGetNetworkIdFromEntity(entity) + local rope = HydrantRopes.currentRopes[hydrantId] + local fillingVehicle = HydrantManager.fillingVehicles[hydrantId] + return rope and not fillingVehicle + end, + action = function(entity) + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + HandleStartFillingEntity(entity) + end, + }, + { + label = Config.Translations.thirdEyeStopFill, + icon = 'fa-solid fa-stop', + job = allowedJobs, + canInteract = function(entity) + if HasObjectBeenBroken(entity) then + return false + end + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + local fillingVehicle = HydrantManager.fillingVehicles[NetworkGetNetworkIdFromEntity(entity)] + return fillingVehicle ~= nil + end, + action = function(entity) + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + HandleStopFillingEntity(entity) + end, + }, + { + label = Config.Translations.thirdEyeDisconnect, + icon = 'fa-solid fa-unlink', + job = allowedJobs, + canInteract = function(entity) + if HasObjectBeenBroken(entity) then + return false + end + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + local rope = HydrantRopes.currentRopes[NetworkGetNetworkIdFromEntity(entity)] + return rope ~= nil + end, + action = function(entity) + if not NetworkGetEntityIsNetworked(entity) then + NetworkRegisterEntityAsNetworked(entity) + Wait(0) + end + HandleHydrantInteractionEntity(entity) + end, + }, + }, + distance = 2.5, + }) + end +elseif Config.InteractType.HydrantInteraction.WorldInteraction then + CreateThread(function() + local idleWait = 1000 + local playerPed = PlayerPedId() + local playerPos = GetEntityCoords(playerPed) + + while true do + Wait(idleWait) + + playerPed = PlayerPedId() + playerPos = GetEntityCoords(playerPed) + + if IsPedInAnyVehicle(playerPed, false) then + if hydrantInteractionActive then + for _, hydrantConfig in ipairs(Config.HydrantOffsets) do + exports.interact:RemoveModelInteraction(hydrantConfig.model, hydrantInteractionId) + end + hydrantInteractionActive = false + end + idleWait = 1500 + else + local hydrant = GetClosestHydrant(playerPos) + if hydrant and DoesEntityExist(hydrant) and not HasObjectBeenBroken(hydrant) then + local hydrantPos = GetEntityCoords(hydrant) + local distanceToHydrant = #(playerPos - hydrantPos) + + if distanceToHydrant < 4.0 then + if not hydrantInteractionActive then + for _, hydrantConfig in ipairs(Config.HydrantOffsets) do + exports.interact:AddModelInteraction({ + model = hydrantConfig.model, + offset = vec3(0.0, 0.0, 0.5), + name = 'Hydrant Interaction', + id = hydrantInteractionId, + distance = 5.0, + interactDst = 1.5, + ignoreLos = true, + options = { + { + label = Config.Translations.thirdEyeConnect, + action = function(entity) + HandleHydrantInteractionEntity(entity) + end, + canInteract = function(entity) + if not isPermissionAllowed() or HasObjectBeenBroken(entity) then + return false + end + local hydrantId = NetworkGetNetworkIdFromEntity(entity) + local rope = HydrantRopes.currentRopes[hydrantId] + return not rope + end, + }, + { + label = Config.Translations.thirdEyeStartFill, + action = function(entity) + HandleStartFillingEntity(entity) + end, + canInteract = function(entity) + if not isPermissionAllowed() or HasObjectBeenBroken(entity) then + return false + end + local hydrantId = NetworkGetNetworkIdFromEntity(entity) + local rope = HydrantRopes.currentRopes[hydrantId] + local fillingVehicle = HydrantManager.fillingVehicles[hydrantId] + return rope and not fillingVehicle + end, + }, + { + label = Config.Translations.thirdEyeStopFill, + action = function(entity) + HandleStopFillingEntity(entity) + end, + canInteract = function(entity) + if not isPermissionAllowed() or HasObjectBeenBroken(entity) then + return false + end + local hydrantId = NetworkGetNetworkIdFromEntity(entity) + local fillingVehicle = HydrantManager.fillingVehicles[hydrantId] + return fillingVehicle ~= nil + end, + }, + { + label = Config.Translations.thirdEyeDisconnect, + action = function(entity) + HandleHydrantInteractionEntity(entity) + end, + canInteract = function(entity) + if not isPermissionAllowed() or HasObjectBeenBroken(entity) then + return false + end + local hydrantId = NetworkGetNetworkIdFromEntity(entity) + local rope = HydrantRopes.currentRopes[hydrantId] + return rope ~= nil + end, + }, + } + }) + end + hydrantInteractionActive = true + end + idleWait = 0 + else + if hydrantInteractionActive then + for _, hydrantConfig in ipairs(Config.HydrantOffsets) do + exports.interact:RemoveModelInteraction(hydrantConfig.model, hydrantInteractionId) + end + hydrantInteractionActive = false + end + idleWait = 500 + end + else + if hydrantInteractionActive then + for _, hydrantConfig in ipairs(Config.HydrantOffsets) do + exports.interact:RemoveModelInteraction(hydrantConfig.model, hydrantInteractionId) + end + hydrantInteractionActive = false + end + idleWait = 1000 + end + end + end + end) +else + warn('Invalid interaction configuration') end \ No newline at end of file diff --git a/resources/Supply-Line/config.lua b/resources/Supply-Line/config.lua index 5d41485f2..0b066ccdb 100644 --- a/resources/Supply-Line/config.lua +++ b/resources/Supply-Line/config.lua @@ -4,492 +4,284 @@ Config = { StartStopFilling = 74, -- H }, + Debug = true, + KeepEngineOnAfterPumpOff = true, + -- if useBone = true, "offsets" field will be ignored; otherwise custom offsets are enabled. VehicleSettings = { - [`16ramcsquad`] = { + [`britishladder`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, + { x = 1.340, y = -0.205, z = 0.000, rx = -39.000, ry = 0.000, rz = -94.750, depth = 0.335}, }, }, - [`20Maxfdramsquad`] = { + [`lafdxt6700`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`20ramcsquad`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`23sierrafire`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`24rampumper`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`heavypump`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`heavyrescue`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`heavytank`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`heavywild`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`2025MAXcat`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`f550csquad`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`f550super6`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`ftanker`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lacofddztrk`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lacofdeng`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`lacofdfoam`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lacofdpat`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lacofdrs`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`lacofdsup`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lacofdt3`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lacofdusartrk`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`lacofdusartrlr`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lacofdutil`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lafdcab`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`lafdtiller`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`lafdengine`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`max12gladLASD`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [` `] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`mmech`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`redf350brush21`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`Staff-EGRPf350su`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`velocity`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`x3bearcat`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`23smallboatfd`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [` `] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`brush`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - [`brushram`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`bulldog`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`enforcer`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, - }, - }, - - [`EnforcerEng`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`enforcerf`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, - }, - }, - [`enforcerta`] = { - useBone = false, - bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" - offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, [`engine`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`enladder`] = { + [`lafdengine`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`fdgator`] = { + [`lacofdeng`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, + }, + }, + [`lacofdt3`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, + }, + }, + [`EnforcerEng`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, + }, + }, + [`enforcer`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, + }, + }, + [`enforcerta`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, + }, + }, + [`enforcerf`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, + }, + }, + [`brush`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, + }, + }, + [`brushram`] = { + useBone = false, + bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" + offsets = { + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, [`firef350`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`firetruk13`] = { + [`bulldog`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`foam1`] = { + [`ftanker`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`hazf350tec`] = { + [`heavypump`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`ladder6a`] = { + [`heavytank`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 0.8710, y = 0.1550, z = 0.0140 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`rescue6`] = { + [`heavywild`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`rescue6a`] = { + [`panther`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = -1.07, y = 0.9, z = -0.1 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`rescue9e`] = { + [`t3engine1`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`tender6`] = { + [`enladder`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`tender9b`] = { + [` `] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.045, y = -0.095, z = -0.060, rx = -19.000, ry = 0.000, rz = -88.500, depth = 0.525 }, + { x = -0.605, y = -4.155, z = -0.355, rx = -41.750, ry = 0.000, rz = -184.250, depth = 0.525 }, }, }, - [`tower6`] = { + [`britishladderels`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.340, y = -0.205, z = 0.000, rx = -39.000, ry = 0.000, rz = -94.750, depth = 0.335}, }, }, - [`mmladder`] = { + [`rearmount`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + {x = -1.345, y = 1.095, z = -0.440, rx = -24.750, ry = 0.000, rz = 72.000, depth = 0.670 }, }, }, - [`prescue`] = { + [`midmount`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = -1.320, y = 1.370, z = -0.595, rx = -24.250, ry = 0.000, rz = 77.500, depth = 0.860 }, }, }, - [`ram20pov`] = { + [`tillertrailer`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.395, y = 0.445, z = 0.175, rx = -22.750, ry = 0.000, rz = -83.750, depth = 0.895 } }, }, - [`rescue1`] = { + [`tillertrailerels`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.395, y = 0.445, z = 0.175, rx = -22.750, ry = 0.000, rz = -83.750, depth = 0.895 } }, }, - [`walkin`] = { + [`rearmountels`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + {x = -1.345, y = 1.095, z = -0.440, rx = -24.750, ry = 0.000, rz = 72.000, depth = 0.670 }, }, }, - [`walkinarrow`] = { + [`midmountels`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = -1.320, y = 1.370, z = -0.595, rx = -24.250, ry = 0.000, rz = 77.500, depth = 0.860 }, }, }, - [`fireboat`] = { + [`ldfoam`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.375, y = 1.160, z = 0.000, rx = -20.500, ry = 0.000, rz = -91.000, depth = 0.550 }, }, }, - [`GC21F250`] = { + [`ldfoamels`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 1.375, y = 1.160, z = 0.000, rx = -20.500, ry = 0.000, rz = -91.000, depth = 0.550 }, }, }, - [`Staff-Buggy`] = { + [`firerobot`] = { useBone = false, bones = {}, -- to add bones do "bone_name" you can have multiple by doing "bonename", "bonename_2" offsets = { - { x = 1.03, y = 0.1, z = -0.02 }, - { x = -0.93, y = 0.1, z = -0.52 }, + { x = 0.225, y = -1.590, z = 0.510, rx = -11.500, ry = 0.000, rz = 183.500, depth = 0.645, type = "hand"}, }, }, }, - EnablePositioningCommand = false, - -- This enables the /findhosepositioning command to help you find the right vehicle offsets for either - -- the hose connection or the supply line connection point. See our documentation for more info. + EnablePositioningCommand = true, + -- This enables the /findhydrantpositioning command to help you find the right hydrant offsets for either + -- the supply connection or the lpp line connection point. See our documentation for more info. + + PositioningControls = { + down = 207, -- Page Up + up = 208, -- Page Down + backwards = 173, -- Arrow Down + forwards = 172, -- Arrow Up + left = 174, -- Arrow Left + right = 175, -- Arrow Right + enter = 191, -- Enter Key + }, HydrantOffsets = { - { model = `prop_fire_hydrant_4`, offsets = {x = 0.0, y = -0.27, z = 0.58} }, - { model = `prop_fire_hydrant_2`, offsets = {x = 0.1, y = 0.0, z = 0.4} }, - { model = `prop_fire_hydrant_1`, offsets = {x = 0.05, y = 0.0, z = 0.6} }, + { model = `prop_fire_hydrant_4`, offsets = { x = 0.000, y = -0.410, z = 0.525, rx = 28.500, ry = 0.000, rz = 0.000, depth = -0.455 } }, + { model = `prop_fire_hydrant_2`, offsets = { x = 0.030, y = -0.585, z = 0.245, rx = -35.250, ry = 0.000, rz = -173.750, depth = 0.465 } }, + { model = `prop_fire_hydrant_1`, offsets = { x = 0.540, y = 0.015, z = 0.540, rx = -13.500, ry = 0.000, rz = -86.250, depth = 0.460 } }, + { model = `bv_water_pump`, offsets = { x = -0.435, y = -0.490, z = 0.145, rx = -17.250, ry = 0.000, rz = 177.250, depth = 0.215 } } }, Translations = { stopFilling = "Press Z to disconnect line\nPress H to stop filling", startFilling = "Press Z to disconnect line\nPress H to fill tank with water", + placeGenerator = "Press ~INPUT_FRONTEND_RDOWN~ to place the generator or ~INPUT_FRONTEND_RRIGHT~ to cancel.", + placePump = "Press ~INPUT_FRONTEND_RDOWN~ to place the pump or ~INPUT_FRONTEND_CANCEL~ to cancel.", thirdEyeConnect = "Connect line to vehicle", thirdEyeDisconnect ="Disconnect line from vehicle", thirdEyeStartFill = "Start filling up vehicle", @@ -499,11 +291,86 @@ Config = { noPermission = "You do not have access to use the supply line.", placeHydrantCommandHelp = "Place or remove a fire hydrant", placeHydrantCommandHelpArgument = "place/remove", + placeGeneratorCommandHelp = "Place or remove a LPP", + placeGeneratorCommandHelpArgument = "place/remove", placeHydrantCommandSuccess = "Hydrant placed successfully!", placeHydrantCommandCancel = "Placement cancelled!", removeHydrantCommandSuccess = "Hydrant removed!", + placeGeneratorCommandSuccess = "Hydrant placed successfully!", + placeGeneratorCommandCancel = "Placement cancelled!", + removeGeneratorCommandSuccess = "Hydrant removed!", noVehicleNearby = "No vehicle nearby found!", cantHoldWater = "This vehicle cannot hold water", + notInShallowWater = "You must be at the shoreline or shallow water to place the pump.", + lppEquipped = "You have equipped the portable generator. Place it near a water source.", + genAndPumpStored = "Generator and pump stored!", + noLppPlaced = "No generator is currently deployed!", + noItem = "You do not have the required item to use an LPP.", + }, + + PlaceGeneratorCommand = { + Enabled = true, + + Inventory = { + ItemName = "lpp", + oxInventory = false, + quasarInventory = false, + coreInventory = false, + ESX = false, + vRP = false, + qbCore = false, + }, + + CommandName = "lpp", + PlaceArgument = "place", + RemoveArgument = "remove", + Permissions = { + EnablePermissions = false, + AcePermissions = { + Enabled = false, + -- The permission name will be command.hydrant + }, + + ESX = { + Enabled = false, + CheckJob = { + Enabled = false, -- Enable this to use ESX job check + Jobs = {"fireman"} -- A user can have any of the following jobs, allowing you to add multiple + } + }, + -- We've added vRP integration. All you need to do is enable it below. Then, configure if you wish to check for groups or permissions, or even both + vRP = { + Enabled = false, + CheckGroup = { + Enabled = false, -- Enable this to use vRP group check + Groups = {"fireman"}, -- A user can have any of the following groups, meaning you can add different jobs + }, + CheckPermission = { + Enabled = false, -- Enable this to use vRP permission check + Permissions = {"fireman.usehose"} -- A user can have any of the following permissions, allowing you to add multiple + }, + }, + -- We've added QBCore integration. All you need to do is enable it below. Then, configure if you wish to check for jobs or permissions, or even both + QBCore = { + Enabled = false, + CheckJob = { + Enabled = false, -- Enable this to use QBCore job check + Jobs = {"fireman"}, -- A user can have any of the following jobs, meaning you can add different jobs + }, + CheckPermission = { + Enabled = false, -- Enable this to use QBCore permission check + permissions = {"fireman.usehose"}, -- A user can have any of the following permissions, allowing you to add multiple + }, + }, + -- We've added QBX integration. All you need to do is enable it below. Then, configure if you wish to check for jobs or permissions, or even both + QBX = { + Enabled = false, + CheckJob = { + Enabled = false, -- Enable this to use QBX job check + Jobs = {"fireman"}, -- A user can have any of the following jobs, meaning you can add different jobs + } + }, + }, }, PlaceHydrantCommand = { diff --git a/resources/Supply-Line/fxmanifest.lua b/resources/Supply-Line/fxmanifest.lua index eff576809..d08a15a9a 100644 --- a/resources/Supply-Line/fxmanifest.lua +++ b/resources/Supply-Line/fxmanifest.lua @@ -7,7 +7,11 @@ lua54 'yes' author 'London Studios' description 'Supply-Line' -version '1.0.0' +version '2.2' + +file { + 'stream/bv_waterpump.ytyp' +} shared_script 'config.lua' @@ -26,4 +30,6 @@ escrow_ignore { 'sv_utils.lua', 'cl_utils.lua', } + +data_file 'DLC_ITYP_REQUEST' 'stream/bv_waterpump.ytyp' dependency '/assetpacks' \ No newline at end of file diff --git a/resources/Supply-Line/stream/bv_water_pump.ydr b/resources/Supply-Line/stream/bv_water_pump.ydr index 0f97c9f61..8a33f3f93 100644 --- a/resources/Supply-Line/stream/bv_water_pump.ydr +++ b/resources/Supply-Line/stream/bv_water_pump.ydr @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:addecfce0dda25bc50b3accb5c783f87a938cec22f4393a29a18e7e352e6cd8d -size 1619955 +oid sha256:d254d250c1170d1af18225d17662809049117482801d164b7c22914876245c79 +size 1793478 diff --git a/resources/Supply-Line/sv_supplyline.lua b/resources/Supply-Line/sv_supplyline.lua index 452e57726..06c372eb8 100644 Binary files a/resources/Supply-Line/sv_supplyline.lua and b/resources/Supply-Line/sv_supplyline.lua differ diff --git a/resources/Supply-Line/sv_utils.lua b/resources/Supply-Line/sv_utils.lua index 614d2d636..62eeea69a 100644 --- a/resources/Supply-Line/sv_utils.lua +++ b/resources/Supply-Line/sv_utils.lua @@ -1,18 +1,66 @@ -if Config.JobCheck.ESX.Enabled then +if Config.JobCheck.ESX.Enabled or Config.PlaceGeneratorCommand.Permissions.ESX.Enabled then ESX = exports["es_extended"]:getSharedObject() end -if Config.JobCheck.vRP.Enabled then +if Config.JobCheck.vRP.Enabled or Config.PlaceGeneratorCommand.Permissions.vRP.Enabled then local Tunnel = module("vrp", "lib/Tunnel") local Proxy = module("vrp", "lib/Proxy") vRP = Proxy.getInterface("vRP") vRPclient = Tunnel.getInterface("vRP","vRP") end -if Config.JobCheck.QBCore.Enabled then +if Config.JobCheck.QBCore.Enabled or Config.PlaceGeneratorCommand.Inventory.qbCore or Config.PlaceGeneratorCommand.Permissions.QBCore.Enabled then QBCore = exports['qb-core']:GetCoreObject() end +local itemEnabled = Config.PlaceGeneratorCommand.Inventory.qbCore or Config.PlaceGeneratorCommand.Inventory.vRP or Config.PlaceGeneratorCommand.Inventory.ESX or Config.PlaceGeneratorCommand.Inventory.coreInventory or Config.PlaceGeneratorCommand.Inventory.oxInventory + +usedGenerator = {} + +if itemEnabled then + RegisterNetEvent("Server:GeneratorWithItem", function(src) + if HandleInventoryItems(src, Config.PlaceGeneratorCommand.Inventory.ItemName, false) then + usedGenerator[src] = true + TriggerClientEvent("SupplyLine:Client:EquipPortableGenerator", src) + else + TriggerClientEvent("SupplyLine:Client:showNotification", src, Config.Translations.noItem) + end + end) +end + +RegisterNetEvent("Server:ReturnGenerator", function() + local source = source + if usedGenerator[source] ~= nil and usedGenerator[source] ~= false then + HandleInventoryItems(source, Config.PlaceGeneratorCommand.Inventory.ItemName, true) + usedGenerator[source] = nil + end +end) + +if Config.PlaceGeneratorCommand.Inventory.qbCore then + CreateThread(function() + QBCore.Functions.CreateUseableItem(Config.PlaceGeneratorCommand.Inventory.ItemName, function(source, item) + TriggerEvent("Server:GeneratorWithItem", source) + end) + end) +end + +if Config.PlaceGeneratorCommand.Inventory.ESX then + CreateThread(function() + ESX.RegisterUsableItem(Config.PlaceGeneratorCommand.Inventory.ItemName, function(playerId) + TriggerEvent("Server:GeneratorWithItem", playerId) + end) + end) +end + +if Config.PlaceGeneratorCommand.Inventory.oxInventory then + exports('OxUseGenerator', function(event, item, inventory) + if event == 'usingItem' then + usedGenerator[inventory.player.source] = true + TriggerClientEvent("SupplyLine:Client:EquipPortableGenerator", inventory.player.source) + end + end) +end + function UserHasPermission(source, location) if not location.EnablePermissions then @@ -92,3 +140,69 @@ function UserHasPermission(source, location) return false end + +function HandleInventoryItems(source, itemName, give) + if Config.PlaceGeneratorCommand.Inventory.vRP then + local userID = vRP.getUserId({source}) + if give then + vRP.giveInventoryItem({userId, itemName, 1, false}) + else + if vRP.tryGetInventoryItem({userID, itemName, 1, false}) then + return true + else + return false + end + end + elseif Config.PlaceGeneratorCommand.Inventory.qbCore then + if give then + exports['qb-inventory']:AddItem(source, itemName, 1, false, false, GetCurrentResourceName()) + else + local successful = exports['qb-inventory']:RemoveItem(source, itemName, 1, false, GetCurrentResourceName()) + + return successful + end + elseif Config.PlaceGeneratorCommand.Inventory.ESX then + local xPlayer = ESX.GetPlayerFromId(source) + if give then + xPlayer.addInventoryItem(itemName, 1) + else + local returnedItem = xPlayer.getInventoryItem(itemName) + + if returnedItem.canRemove then + xPlayer.removeInventoryItem(itemName, 1) + return true + else + return false + end + end + elseif Config.PlaceGeneratorCommand.Inventory.oxInventory then + if give then + exports.ox_inventory:AddItem(source, itemName, 1) + else + local successful = exports.ox_inventory:RemoveItem(source, itemName, 1) + + return successful + end + elseif Config.PlaceGeneratorCommand.Inventory.quasarInventory then + if give then + exports['qs-inventory']:AddItem(source, itemName, 1) + else + local quantity = exports['qs-inventory']:GetItemTotalAmount(source, itemName) + if quantity > 0 then + exports['qs-inventory']:RemoveItem(source, itemName, 1) + + return true + else + return false + end + end + elseif Config.PlaceGeneratorCommand.Inventory.coreInventory then + if give then + exports.core_Inventory:addItem(source, itemName, 1) + else + local successful = exports.core_Inventory:removeItem(source, itemName, 1) + + return successful + end + end +end \ No newline at end of file diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/Templates/pengine_window.dds b/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/Templates/pengine_window.dds deleted file mode 100644 index 3b570d7fe..000000000 Binary files a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/Templates/pengine_window.dds and /dev/null differ diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/Templates/prescue_sign_1.dds b/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/Templates/prescue_sign_1.dds deleted file mode 100644 index 090fb12c4..000000000 Binary files a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/Templates/prescue_sign_1.dds and /dev/null differ diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/carcols.meta b/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/carcols.meta deleted file mode 100644 index 300a8f8d5..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/carcols.meta +++ /dev/null @@ -1,778 +0,0 @@ - - - - - - - - prescue - - - - - - - VehicleLight_sirenlight - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/carvariations.meta b/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/carvariations.meta deleted file mode 100644 index f8e5f0286..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/carvariations.meta +++ /dev/null @@ -1,276 +0,0 @@ - - - - - prescue - - - - 0 - 0 - 11 - 156 - 0 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - 0 - 134 - 156 - 0 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 75 - 0 - 157 - 156 - 0 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 - 0 - 134 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 34 - 0 - 45 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 0 - 2 - 0 - 0 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0_default_modkit - - - - - - Police guv plate - - - - - - - - - \ No newline at end of file diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/vehicles.meta b/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/vehicles.meta deleted file mode 100644 index 3f9b61796..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/data/prescue/vehicles.meta +++ /dev/null @@ -1,140 +0,0 @@ - - - vehshare - - - - prescue - prescue - riot2 - prescue - - null - null - null - null - - null - kc129powerstroke60 - LAYOUT_FIRETRUCK - SHERIFF_COVER_OFFSET_INFO - EXPLOSION_INFO_DEFAULT - - DEFAULT_FOLLOW_VEHICLE_CAMERA - DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA - VEHICLE_BONNET_CAMERA_MID_HIGH - DEFAULT_POV_CAMERA - - - - - - - - - - - - - - - - - - - - - - - - - - - - VFXVEHICLEINFO_CAR_GENERIC - - - - - - - - - - - - - - - - - - - - - - 100.000000 - 200.000000 - 300.000000 - 400.000000 - 500.000000 - 500.000000 - - - - - - - - - - - SWANKNESS_1 - - FLAG_HAS_LIVERY FLAG_EXTRAS_REQUIRE FLAG_EXTRAS_STRONG FLAG_LAW_ENFORCEMENT FLAG_EMERGENCY_SERVICE FLAG_NO_RESPRAY FLAG_DONT_SPAWN_IN_CARGEN FLAG_REPORT_CRIME_IF_STANDING_ON FLAG_HAS_INTERIOR_EXTRAS - VEHICLE_TYPE_CAR - VPT_FRONT_AND_BACK_PLATES - VDT_GENTAXI - VC_EMERGENCY - VWT_MUSCLE - - - - - S_M_Y_Sheriff_01 - - - - - - - - - - - REWARD_WEAPON_PUMPSHOTGUN - REWARD_AMMO_PUMPSHOTGUN_ENTER_VEHICLE - REWARD_STAT_WEAPON - - - WHEEL_FRONT_RIGHT_CAMERA - WHEEL_FRONT_LEFT_CAMERA - WHEEL_REAR_RIGHT_CAMERA - WHEEL_REAR_LEFT_CAMERA - - - - - - - STD_POLICE_FRONT_LEFT - STD_POLICE_FRONT_RIGHT - STD_POLICE_REAR_LEFT - STD_POLICE_REAR_RIGHT - - - - - - - \ No newline at end of file diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan+hi.ytd b/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan+hi.ytd deleted file mode 100644 index 40eea5b2d..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan+hi.ytd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df17ff05ce6e7499991796f5b1f2f7aff866705b975579ff15ca619d917b4d45 -size 2720849 diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan.yft b/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan.yft deleted file mode 100644 index 7323180f6..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan.yft +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c160ccca810dab2de545cd959fdd522b94c55879cb817fe15980de5650aaf9e2 -size 12800544 diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan.ytd b/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan.ytd deleted file mode 100644 index 933a13cf4..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan.ytd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6fe1fed6c18c371ddcf57cc681b6f23ce7a41192a484d9e19983c7ea81c3ec83 -size 13305431 diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan_hi.yft b/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan_hi.yft deleted file mode 100644 index 9f7f1c530..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/amrvan/amrvan_hi.yft +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b55d3fc83644c2491c75598125251eaa71ddd232809416cbebad837b806704e4 -size 12800470 diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue.yft b/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue.yft deleted file mode 100644 index f5dd868b7..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue.yft +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da9f41010de58e1625928c7e7d31ebd208800b8ea047dc371c317c7450f20faa -size 11661521 diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue.ytd b/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue.ytd deleted file mode 100644 index 0c452de9e..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue.ytd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b2c42f4f2e384e039ede6e087a2978cee3dccdba8ea015642ff766a9a51bdfcc -size 15092953 diff --git a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue_hi.yft b/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue_hi.yft deleted file mode 100644 index 867db0643..000000000 --- a/resources/[EGRP-CarPacks]/EGRP-Emergency/stream/prescue/prescue_hi.yft +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bb014572f026cd8147a97ad03fe5619f2a71e459a122ee479cc6a17decccd655 -size 11661344 diff --git a/resources/[EGRP-CarPacks]/EGRP-Extras/__resource.lua b/resources/[EGRP-CarPacks]/EGRP-Extras/__resource.lua index 06d74de07..d9d1b5d99 100644 --- a/resources/[EGRP-CarPacks]/EGRP-Extras/__resource.lua +++ b/resources/[EGRP-CarPacks]/EGRP-Extras/__resource.lua @@ -555,10 +555,50 @@ data_file 'CARCOLS_FILE' 'data/lasdchrg14/carcols.meta' data_file 'VEHICLE_VARIATION_FILE' 'data/lasdchrg14/carvariations.meta' data_file 'VEHICLE_LAYOUTS_FILE' 'data/lasdchrg14/dlctext.meta' + -- 2021chevy2500hd + files { + 'data/2021chevy2500hd/vehicles.meta', + 'data/2021chevy2500hd/carvariations.meta', + 'data/2021chevy2500hd/carcols.meta', + 'data/2021chevy2500hd/handling.meta', + 'data/2021chevy2500hd/vehiclelayouts.meta', +} +data_file 'HANDLING_FILE' 'data/2021chevy2500hd/handling.meta' +data_file 'VEHICLE_METADATA_FILE' 'data/2021chevy2500hd/vehicles.meta' +data_file 'CARCOLS_FILE' 'data/2021chevy2500hd/carcols.meta' +data_file 'VEHICLE_VARIATION_FILE' 'data/2021chevy2500hd/carvariations.meta' +data_file 'VEHICLE_LAYOUTS_FILE' 'data/2021chevy2500hd/dlctext.meta' + -- breakingbadrv + files { + 'data/breakingbadrv/vehicles.meta', + 'data/breakingbadrv/carvariations.meta', + 'data/breakingbadrv/carcols.meta', + 'data/breakingbadrv/handling.meta', + 'data/breakingbadrv/vehiclelayouts.meta', +} +data_file 'HANDLING_FILE' 'data/breakingbadrv/handling.meta' +data_file 'VEHICLE_METADATA_FILE' 'data/breakingbadrv/vehicles.meta' +data_file 'CARCOLS_FILE' 'data/breakingbadrv/carcols.meta' +data_file 'VEHICLE_VARIATION_FILE' 'data/breakingbadrv/carvariations.meta' +data_file 'VEHICLE_LAYOUTS_FILE' 'data/breakingbadrv/dlctext.meta' + -- GC21F250 + files { + 'data/GC21F250/vehicles.meta', + 'data/GC21F250/carvariations.meta', + 'data/GC21F250/carcols.meta', + 'data/GC21F250/handling.meta', + 'data/GC21F250/vehiclelayouts.meta', +} + +data_file 'HANDLING_FILE' 'data/GC21F250/handling.meta' +data_file 'VEHICLE_METADATA_FILE' 'data/GC21F250/vehicles.meta' +data_file 'CARCOLS_FILE' 'data/GC21F250/carcols.meta' +data_file 'VEHICLE_VARIATION_FILE' 'data/GC21F250/carvariations.meta' +data_file 'VEHICLE_LAYOUTS_FILE' 'data/GC21F250/dlctext.meta' client_script { diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/__resource.lua b/resources/[EGRP-Map-Addons]/int_mphouse01/__resource.lua deleted file mode 100644 index 10dc4b392..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/__resource.lua +++ /dev/null @@ -1,2 +0,0 @@ -resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' -this_is_a_map 'yes' \ No newline at end of file diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/_manifest.ymf b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/_manifest.ymf deleted file mode 100644 index 2861f825e..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/_manifest.ymf and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/int_mphouse01.ytyp b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/int_mphouse01.ytyp deleted file mode 100644 index 85b972332..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/int_mphouse01.ytyp and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/int_mphouse01_txt.ytd b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/int_mphouse01_txt.ytd deleted file mode 100644 index 30e0c2278..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/int_mphouse01_txt.ytd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f7f2cd57211e8df2e386d4ac2bf281821ab149b7db82908fbf9b663c87c6235a -size 1161476 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/hi@id2_21_0.ybn b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/hi@id2_21_0.ybn deleted file mode 100644 index cd32226b7..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/hi@id2_21_0.ybn and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_0.ybn b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_0.ybn deleted file mode 100644 index e34803de7..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_0.ybn and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_a_0.ybn b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_a_0.ybn deleted file mode 100644 index 4530d68d1..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_a_0.ybn and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_a_3.ybn b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_a_3.ybn deleted file mode 100644 index 4c9bf4c0c..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_a_3.ybn and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_d_0.ybn b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_d_0.ybn deleted file mode 100644 index 5bacef2ce..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_d_0.ybn and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_f_0.ybn b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_f_0.ybn deleted file mode 100644 index b63fdc48f..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/id2_21_f_0.ybn and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/int_mphouse01.ybn b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/int_mphouse01.ybn deleted file mode 100644 index 0fd773641..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ybn/int_mphouse01.ybn and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_backdoor01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_backdoor01.ydr deleted file mode 100644 index 606286d32..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_backdoor01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a61a6e9419f02013f3ef718f4b88c8e61c4bc9c0fe56d47dbdaa31fc6922e417 -size 109871 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_door03.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_door03.ydr deleted file mode 100644 index b06fbbe89..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_door03.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7ab7208b76325c34acde97feda9ad2c365f56e120340a216e7746f7141782cb0 -size 110033 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_frntdoor01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_frntdoor01.ydr deleted file mode 100644 index 72c8f04d4..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/bam_mphouse01_frntdoor01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11ff7fea5bc0ad1c53286fcd6103eb912deb9031db7b63fd5de6caf0f020cb9d -size 386872 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/id2_21_id2_emissive_res012.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/id2_21_id2_emissive_res012.ydr deleted file mode 100644 index cbc3ca908..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/id2_21_id2_emissive_res012.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:997e046bae52f8ecf9f768ccd920e16e7ffd8b7950f1981874adafad53b9c92a -size 534 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/id2_21_resgrndc.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/id2_21_resgrndc.ydr deleted file mode 100644 index 9f1a88985..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/id2_21_resgrndc.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7f8c793da7e8e6f6b91c3975832e262d77c7af9fa0b732d2883ec144ccbc2dcf -size 845350 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_artwall01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_artwall01.ydr deleted file mode 100644 index 0889c0ee6..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_artwall01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b48b94ef635d582282e7fab2a515e8db58861ff333f6addeef8fd7120164b16 -size 235789 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_bath01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_bath01.ydr deleted file mode 100644 index b49077c92..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_bath01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:21f3a43e0f14edeb5e135fe6b57d7eb62a901f94ec38ff2a81036668609a8afd -size 1049081 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_bedroom01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_bedroom01.ydr deleted file mode 100644 index fbebcfcaa..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_bedroom01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:88fa8b95f8cbf3bf0c3575b84f0348a1bcbe67dfca8054b862ecd45d6ef217fe -size 1490382 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_det01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_det01.ydr deleted file mode 100644 index 87410d926..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_det01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b78a50cbfaaaa3a85b425cd6c59a5acf251b87f5d673153709ce961b4323e004 -size 1920460 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_frames01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_frames01.ydr deleted file mode 100644 index a034dacca..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_frames01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18275d1e0f22bb6974b5b83c90973f723fb41ecaa0fb1c6228e92223efca2d7b -size 123459 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_gardet01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_gardet01.ydr deleted file mode 100644 index 271a27fff..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_gardet01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:93d9348747c88d9992f8f63fdb4ce91c0bf7ff0c8f22aa432e059402cc0fab4c -size 287987 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_gardoor01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_gardoor01.ydr deleted file mode 100644 index 16597613e..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_gardoor01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c9122aad3d69887bbcd937a9ef35ab3970795c445f3571b493b83afb40cece47 -size 216306 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_glasdoor01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_glasdoor01.ydr deleted file mode 100644 index d935088c0..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_glasdoor01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c69a28e37f6cc7174f5256f758efa7be8f0ec9d5aea2163de1f510e0cef1306d -size 211572 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_kitch01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_kitch01.ydr deleted file mode 100644 index 0a96a6e80..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_kitch01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5ec2e772e0fe5cb1131f11c0b99e958787190c5c2f5b74549661764390ddc068 -size 1361634 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_light01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_light01.ydr deleted file mode 100644 index 6c6f16eab..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_light01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e1e6199a8c7f290687802411941c62c051ab6ba21baddb6f80673d48debdf97 -size 26499 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_lights02.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_lights02.ydr deleted file mode 100644 index 3ab675243..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_lights02.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f16f7fcd9287ca59817de223f9bb3a3c8b4f4915226f13642c3c5427f9e4f70d -size 24786 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_mirror01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_mirror01.ydr deleted file mode 100644 index 494ae194b..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_mirror01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65f1047a5b4447fc16a0ed715219671a818f97ccef61dc398b10799c110b55fb -size 639 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_props.ytd b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_props.ytd deleted file mode 100644 index c6d32ad70..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_props.ytd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:acd7f8bb582c16a3b6de532c005a7c067e520659f6edea929862873ff6ce6c66 -size 4067100 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_shell.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_shell.ydr deleted file mode 100644 index 6ceb1c953..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_shell.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:90f4f206893680341613db349f0bd90dc5b46498a03954a63b9f223ae0caa209 -size 210933 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_study01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_study01.ydr deleted file mode 100644 index 8e601d5c7..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_study01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f279f37fb2fc67db643e692e3e577131b8847bb2000f11576e152963e753e36f -size 852484 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_window01.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_window01.ydr deleted file mode 100644 index cf652372d..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/int_mphouse01_window01.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dc1d399cbf06dde37f00fbee933901234d957b2bc4b4479445dbc5b218708403 -size 67098 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/lf_house_19_.ydr b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/lf_house_19_.ydr deleted file mode 100644 index b2433b516..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ydr/lf_house_19_.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:52c2ae6425610cb7b79e74629748953659459dbed7d9c1009d85c46ffe2bac7e -size 175584 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/_manifest.ymf b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/_manifest.ymf deleted file mode 100644 index 2861f825e..000000000 Binary files a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/_manifest.ymf and /dev/null differ diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_a_strm_0.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_a_strm_0.ymap deleted file mode 100644 index 6927808b9..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_a_strm_0.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fcccb2cbe50615ef844ddad722f80ced3f27f5c31eedc7398b46833278b9ecc3 -size 11431 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_d_strm_1.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_d_strm_1.ymap deleted file mode 100644 index 679d93f04..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_d_strm_1.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:efd552525b080800ea9604576767b603c4515b9297e0dda486ee02c6c721ac8c -size 13348 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_f_strm_0.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_f_strm_0.ymap deleted file mode 100644 index 98c7d4497..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_f_strm_0.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8b2e3cfc44c1b24255c5f79646c479f4d3ebd99382810eb08bc0df1af2e979f -size 17027 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_strm_0.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_strm_0.ymap deleted file mode 100644 index 09a1e69b3..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_21_strm_0.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:276aae529146734d73700ac6c9ee2e1c8efa2d31bbf06f0519e239f81f9200b8 -size 12997 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_occl_03.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_occl_03.ymap deleted file mode 100644 index a2f33bc06..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/hei_id2_occl_03.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ca8991c0f5d29b78e47265e1514d11df65b4a7b30829b082504f4875204f6d70 -size 21632 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo02_ .ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo02_ .ymap deleted file mode 100644 index d94c101e8..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo02_ .ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:881c44696b29645eaa7ec3388e27b1429b439fe6171ad3d506d57a8582aa7217 -size 1377 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo03_.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo03_.ymap deleted file mode 100644 index 586d51600..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo03_.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c4337ed6a8fc75f1eb900a8c543e92fd07cf2158a940978272faf6d8dd88bf0 -size 1374 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo04_.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo04_.ymap deleted file mode 100644 index 0237a9360..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo04_.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:853c113d395daed3fd2358bc31da8e7bf34e57ebc853086225665eacb60fd9ec -size 1379 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo05_.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo05_.ymap deleted file mode 100644 index e420abe89..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo05_.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f8b92b3ba46ff7f0e06ff69b1326e6a3d5d10adfef7732ce7085064ddb12de06 -size 1379 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo06_.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo06_.ymap deleted file mode 100644 index f2418536d..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo06_.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3b817328c2a21e20f5c5efff96d8bead79843206a548f3b450cb0171d33d3388 -size 1377 diff --git a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo_.ymap b/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo_.ymap deleted file mode 100644 index eb02f3ba0..000000000 --- a/resources/[EGRP-Map-Addons]/int_mphouse01/stream/ymap/int_mphouse01_milo_.ymap +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9de90dcc9b31888ee7f9cd9d2fbf6208a809cd1e90b0a0f0a3fff0ef7909bcb3 -size 1251 diff --git a/resources/[ERS]/SmartHoseLite/.fxap b/resources/[ERS]/SmartHoseLite/.fxap deleted file mode 100644 index affe7d6db..000000000 Binary files a/resources/[ERS]/SmartHoseLite/.fxap and /dev/null differ diff --git a/resources/[ERS]/SmartHoseLite/cl_hose.lua b/resources/[ERS]/SmartHoseLite/cl_hose.lua deleted file mode 100644 index 77300d92e..000000000 Binary files a/resources/[ERS]/SmartHoseLite/cl_hose.lua and /dev/null differ diff --git a/resources/[ERS]/SmartHoseLite/config.lua b/resources/[ERS]/SmartHoseLite/config.lua deleted file mode 100644 index 1b7035a11..000000000 --- a/resources/[ERS]/SmartHoseLite/config.lua +++ /dev/null @@ -1,83 +0,0 @@ --- Please read our documentation before configuring --- https://docs.londonstudios.net/ - -main = { - hoseCommand = { - enabled = true, -- This enables/disables the hose command - commandName = "hose", -- This is the command name for the hose - hoseModel = `weapon_hose`, -- This is the model for the hose. This must be wrapped in `` symbols - acePermissions = { - enabled = false, - -- This enables ace permissions on the hose command - }, - -- We've added ESX integration. All you need to do is enable it below and configure which jobs can use the command - ESX = { - enabled = false, - checkJob = { - enabled = true, -- Enable this to use ESX job check - jobs = {"fire", "firefighter"} -- A user can have any of the following jobs, allowing you to add multiple - } - }, - -- We've added vRP integration. All you need to do is enable it below. Then, configure if you wish to check for groups or permissions, or even both - vRP = { - enabled = false, - checkGroup = { - enabled = false, -- Enable this to use vRP group check - groups = {"fire", "admin"}, -- A user can have any of the following groups, meaning you can add different jobs - }, - checkPermission = { - enabled = false, -- Enable this to use vRP permission check - permissions = {"player.kick"} -- A user can have any of the following permissions, allowing you to add multiple - }, - }, - -- We've added QBCore integration. All you need to do is enable it below. Then, configure if you wish to check for jobs or permissions, or even both - QBCore = { - enabled = false, - checkJob = { - enabled = false, -- Enable this to use QBCore job check - jobs = {"fire"}, -- A user can have any of the following jobs, meaning you can add different jobs - }, - checkPermission = { - enabled = false, -- Enable this to use QBCore permission check - permissions = {"god"}, -- A user can have any of the following permissions, allowing you to add multiple - }, - }, - hoseCooldown = 2, -- This is the cooldown after spraying hose or foam, to prevent any glitches or particle issues - }, - - foamCommand = { - enabled = true, -- This enables or disables the foam command - commandName = "foam", -- This enables/disables the foam command - enableFoamEffectOnGround = true, -- This enables or disables the foam effect on the ground - foamEffectMaxDistance = 10.0, -- This is the maximum distance that the foam effect on the ground can spawn from the hose - }, -} - -translations = { - foamCommandHelpText = "Toggle foam mode on your fire hose", - hoseCommandHelpText = "Activate or deactivate your fire hose", - weaponName = "Hose", - hoseDisabled = "Fire hose is now ~r~disabled~w~.", - hoseEnabled = "Fire hose is now ~b~enabled~w~.", - foamModeDisabled = "Foam mode is now ~r~disabled~w~.", - foamModeEnabled = "Foam mode is now ~g~enabled~w~.", -} - -developer = { - foam = { - offSet = { - 0.0, -0.06, 0.6 - }, - rotation = { - 0.0, 60.0, 0.0 - }, - }, - hose = { - offSet = { - 0.0, -0.1, 0.65 - }, - rotation = { - -40.0, 0.0, 90.0 - }, - }, -} \ No newline at end of file diff --git a/resources/[ERS]/SmartHoseLite/fxmanifest.lua b/resources/[ERS]/SmartHoseLite/fxmanifest.lua deleted file mode 100644 index d29c24cb4..000000000 --- a/resources/[ERS]/SmartHoseLite/fxmanifest.lua +++ /dev/null @@ -1,44 +0,0 @@ -fx_version 'bodacious' - -games { 'gta5' } - -author 'London Studios' -description 'Create and fight realistic fires with a host of features' -version '1.0.0' -lua54 'yes' - -client_scripts { - 'config.lua', - 'cl_hose.lua', -} - -server_scripts { - -- "@vrp/lib/utils.lua", - 'config.lua', - 'sv_exports.lua', - 'sv_hose.lua', -} - -shared_script '@es_extended/imports.lua' - -escrow_ignore { - 'stream/*', - 'hose/*', - 'config.lua', -} - -files { - 'hose/pedpersonality.meta', - 'hose/weaponanimations.meta', - 'hose/weaponarchetypes.meta', - 'hose/weapons.meta', -} - -data_file 'WEAPONINFO_FILE' 'hose/weapons.meta' -data_file 'WEAPON_METADATA_FILE' 'hose/weaponarchetypes.meta' -data_file 'WEAPON_ANIMATIONS_FILE' 'hose/weaponanimations.meta' -data_file 'PED_PERSONALITY_FILE' 'hose/pedpersonality.meta' - --- HoseLS created by London Studios. --- Join our Discord server here: https://discord.gg/htyaZNaG -dependency '/assetpacks' \ No newline at end of file diff --git a/resources/[ERS]/SmartHoseLite/hose/dlctext.meta b/resources/[ERS]/SmartHoseLite/hose/dlctext.meta deleted file mode 100644 index 3871d7419..000000000 --- a/resources/[ERS]/SmartHoseLite/hose/dlctext.meta +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/resources/[ERS]/SmartHoseLite/hose/pedpersonality.meta b/resources/[ERS]/SmartHoseLite/hose/pedpersonality.meta deleted file mode 100644 index 917880165..000000000 --- a/resources/[ERS]/SmartHoseLite/hose/pedpersonality.meta +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - UNHOLSTER_UNARMED - - - - WEAPON_HOSE - - unarmed_holster_unarmed - - - - - UNHOLSTER_2H_MELEE - - - - WEAPON_HOSE - - 2h_melee_holster_unarmed - - - - - UNHOLSTER_1H - - - - WEAPON_HOSE - - 1h_holster_unarmed - - - - - UNHOLSTER_2H - - - - WEAPON_HOSE - - 2h_holster_unarmed - - - - - UNHOLSTER_MINIGUN - - - - WEAPON_HOSE - - mini_holster_2h_unarmed - - - - - UNHOLSTER_UNARMED_STEALTH - - - - WEAPON_HOSE - - unarmed_holster_unarmed - - - - - UNHOLSTER_2H_MELEE_STEALTH - - - - WEAPON_HOSE - - unarmed_holster_unarmed - - - - - UNHOLSTER_1H_STEALTH - - - - WEAPON_HOSE - - 1h_holster_unarmed - - - - - UNHOLSTER_2H_STEALTH - - - - WEAPON_HOSE - - 2h_holster_unarmed - - - - - - - DEFAULT_ACTION - - - - - WEAPON_HOSE - - - - move_action@p_m_zero@unarmed@core - - - - - - - - - MOVE_ACTION@GENERIC@TRANS@UNARMED - - MOVE_ACTION@P_M_ZERO@HOLSTER - UNHOLSTER_UNARMED - - - - - - - - WEAPON_HOSE - - - - move_stealth@p_m_zero@unarmed@core - weapons@melee_stealth_1h - UpperbodyAndIk_filter - - - - - - - move_stealth@generic@trans@unarmed - - move_stealth@p_m_zero@holster - UNHOLSTER_UNARMED_STEALTH - - - - - - - - MP_FEMALE_ACTION - - - - - WEAPON_HOSE - - - - MOVE_ACTION@MP_FEMALE@UNARMED@CORE - - - - - - - - - MOVE_ACTION@MP_FEMALE@UNARMED@TRANS@ - - MOVE_ACTION@P_M_ZERO@HOLSTER - UNHOLSTER_UNARMED - - - - - - - - WEAPON_HOSE - - - - move_stealth@p_m_zero@unarmed@core - weapons@melee_stealth_1h - UpperbodyAndIk_filter - - - - - - - MOVE_STEALTH@MP_FEMALE@UNARMED@TRANS - - move_stealth@p_m_zero@holster - UNHOLSTER_UNARMED_STEALTH - - - - - - - - MICHAEL_ACTION - - - - - WEAPON_HOSE - - - - move_action@p_m_zero@unarmed@core - - - - - - - - - MOVE_ACTION@P_M_ZERO@UNARMED@TRANS@A - - MOVE_ACTION@P_M_ZERO@HOLSTER - UNHOLSTER_UNARMED - - - - - - - - WEAPON_HOSE - - - - move_stealth@p_m_zero@unarmed@core - weapons@melee_stealth_1h - UpperbodyAndIk_filter - - - - - - - move_stealth@p_m_zero@unarmed@trans@a - - move_stealth@p_m_zero@holster - UNHOLSTER_UNARMED_STEALTH - - - - - - - - FRANKLIN_ACTION - - - - - WEAPON_HOSE - - - - move_action@p_m_one@unarmed@core - - - - - - - - - MOVE_ACTION@P_M_ONE@UNARMED@TRANS@A - - MOVE_ACTION@P_M_ONE@HOLSTER - UNHOLSTER_UNARMED - - - - - - - - WEAPON_HOSE - - - - move_stealth@p_m_one@unarmed@core - weapons@melee_stealth_1h@p_m_one - UpperbodyAndIk_filter - - - - - - - move_stealth@p_m_one@unarmed@trans@a - - MOVE_STEALTH@P_M_ONE@HOLSTER - UNHOLSTER_UNARMED_STEALTH - - - - - - - - TREVOR_ACTION - - - - - WEAPON_HOSE - - - - move_action@p_m_two@unarmed@core - - - - - - - - - MOVE_ACTION@P_M_TWO@UNARMED@TRANS@A - - MOVE_ACTION@P_M_TWO@HOLSTER - UNHOLSTER_UNARMED - - - - - - - - WEAPON_HOSE - - - - move_stealth@p_m_two@unarmed@core - weapons@melee_stealth_1h@p_m_two - UpperbodyAndIk_filter - - - - - - - move_stealth@p_m_two@unarmed@trans@a - - MOVE_STEALTH@P_M_TWO@HOLSTER - UNHOLSTER_UNARMED_STEALTH - - - - - - - - \ No newline at end of file diff --git a/resources/[ERS]/SmartHoseLite/hose/weaponanimations.meta b/resources/[ERS]/SmartHoseLite/hose/weaponanimations.meta deleted file mode 100644 index d1fe8186e..000000000 --- a/resources/[ERS]/SmartHoseLite/hose/weaponanimations.meta +++ /dev/null @@ -1,13012 +0,0 @@ - - - - - - Default - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_2h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ballistic_minigun - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_RifleAdvanced - weapons@submg@advanced_rifle - BothArms_filter - - - - - weapons@submg@advanced_rifle - weapons@submg@advanced_rifle_str - - weapons@submg@advanced_rifle@stealth - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - - - - - - - - CREATURES@ROTTWEILER@MELEE@BASE@ - - - - - - - - - - - - - CREATURES@ROTTWEILER@MELEE@STREAMED_CORE@ - - CREATURES@ROTTWEILER@MELEE@STREAMED_TAUNTS@ - - - - - - - - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_APPistol - weapons@pistol@ap_pistol - BothArms_filter - - - - - weapons@pistol@ap_pistol - weapons@pistol@ap_pistol_str - weapons@pistol@ap_pistol_injured - weapons@pistol@ap_pistol@stealth - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_RifleHi - weapons@rifle@hi@assault_rifle - BothArms_filter - - - - - weapons@rifle@hi@assault_rifle - weapons@rifle@hi@assault_rifle_str - - weapons@rifle@hi@assault_rifle@stealth - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_ShotgunAssault - weapons@rifle@lo@shotgun_assault - BothArms_filter - - - - - weapons@rifle@lo@shotgun_assault - weapons@rifle@lo@shotgun_assault_str - - weapons@rifle@lo@shotgun_assault@stealth - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_AssaultSMG - weapons@submg@assault_smg - BothArms_filter - - - - - weapons@submg@assault_smg - weapons@submg@assault_smg_str - - weapons@submg@assault_smg@stealth - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - Cover_Wpn_Thrown_Grenade - Wpn_Grenade_WeaponHolding - BothArms_filter - - - - - Wpn_Thrown_Grenade - Wpn_Thrown_Grenade_Str - - - - - - - - - - - - - - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@melee_2h - BothArms_filter - - move_strafe_melee_unarmed - move_ped_strafing_stealth - move_strafe@melee_large_weapon - melee@holster - - - - - - - - - - - - - melee@large_wpn@streamed_core - melee@large_wpn@streamed_variations - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@2H_MELEE - MOVE_FALL@WEAPONS@2H_MELEE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - move_ped_wpn_jerrycan_generic - BothArms_filter - - - - - Wpn_PetrolCan - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@JERRYCAN - MOVE_FALL@WEAPONS@JERRYCAN - - - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - move_ped_wpn_jerrycan_generic - BothArms_filter - - - - - Wpn_PetrolCan - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@JERRYCAN - MOVE_FALL@WEAPONS@JERRYCAN - - - - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_ShotgunBullpup - weapons@rifle@lo@shotgun_bullpup - BothArms_filter - - - - - weapons@rifle@lo@shotgun_bullpup - weapons@rifle@lo@shotgun_bullpup_str - - weapons@rifle@lo@shotgun_bullpup@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - Cover_Wpn_Thrown_Grenade - Wpn_Grenade_WeaponHolding - BothArms_filter - - - - - Wpn_Thrown_Grenade - Wpn_Thrown_Grenade_Str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_RifleLo - weapons@rifle@lo@carbine - BothArms_filter - - - - - weapons@rifle@lo@carbine - weapons@rifle@lo@carbine_str - - weapons@rifle@lo@carbine@stealth - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_CombatMG - weapons@machinegun@combat_mg - BothArms_filter - - - - - weapons@machinegun@combat_mg - weapons@machinegun@combat_mg_str - - weapons@machinegun@combat_mg@stealth - weapons@machinegun@combat_mg@hi - weapons@machinegun@combat_mg@hi - weapons@machinegun@combat_mg@hi - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_MG - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - weapons@pistol@ - BothArms_filter - - - - - weapons@pistol@combat_pistol - weapons@pistol@combat_pistol_str - Wpn_Pistol_Injured - weapons@pistol@combat_pistol@w_stealth - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - - - - - - - - CREATURES@COUGAR@MELEE@BASE@ - - - - - - - - - - - - - CREATURES@COUGAR@MELEE@STREAMED_CORE@ - - creatures@cougar@melee@ - - - - - - - - - - - - - - - - - - - - - - Cover_Wpn_Melee1h - weapons@melee_1h - BothArms_filter - - move_strafe_melee_unarmed - move_ped_strafing_stealth - move_strafe@melee_small_weapon - melee@holster - - - - - - - - - - - - - melee@small_wpn@streamed_core - melee@small_wpn@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - - cover@move@extra@1h - cover@move@ai@base@1h - Cover_Wpn_Pistol - weapons@melee_1h - BothArms_filter - - - - - weapons@misc@digi_scanner - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - move_ped_wpn_exting_generic - BothArms_filter - - - - - weapons@misc@fire_ext - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - move_ped_wpn_exting_generic - BothArms_filter - - - - - weapons@misc@fire_ext - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cover_Wpn_Thrown_Grenade - Wpn_Grenade_WeaponHolding - BothArms_filter - - - - - Wpn_Thrown_Grenade - Wpn_Thrown_Grenade_Str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - - - - - - weapons@melee_2h@golfclub - BothArms_filter - - move_strafe_melee_unarmed - move_ped_strafing_stealth - move_strafe@melee_large_weapon - melee@holster - - - - - - - - - - - - - melee@large_wpn@streamed_core - melee@large_wpn@streamed_variations - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@2H_MELEE - MOVE_FALL@WEAPONS@2H_MELEE - - - - - - - - - - - - - - - - - Cover_Wpn_Thrown_Grenade - Wpn_Grenade_WeaponHolding - BothArms_filter - - - - - Wpn_Thrown_Grenade - Wpn_Thrown_Grenade_Str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_GrnLch - weapons@rifle@ - BothArms_filter - - - - - weapons@heavy@grenade_launcher - weapons@heavy@grenade_launcher_str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_GrnLch - weapons@rifle@ - BothArms_filter - - - - - weapons@heavy@grenade_launcher - weapons@heavy@grenade_launcher_str - - weapons@heavy@grenade_launcher@stealth - - weapons@rifle@lo@ - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - - - - - - Cover_Wpn_Melee1h - weapons@melee_1h - BothArms_filter - - move_strafe_melee_unarmed - move_ped_strafing_stealth - move_strafe@melee_small_weapon - melee@holster - - - - - - - - - - - - - melee@small_wpn@streamed_core - melee@small_wpn@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_RifleSniperHeavy - weapons@rifle@lo@sniper_heavy - BothArms_filter - - - - - weapons@rifle@lo@sniper_heavy - weapons@rifle@lo@sniper_heavy_str - - weapons@rifle@lo@sniper_heavy@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cover_Wpn_Melee1h - weapons@melee_1h - BothArms_filter - - move_strafe_melee_unarmed - move_ped_strafing_stealth - move_strafe@knife - melee@holster - - - - - - - - - - - - - melee@knife@streamed_core - melee@knife@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_MachineGun - weapons@machinegun@mg - BothArms_filter - - - - - weapons@machinegun@mg - weapons@machinegun@mg_str - - weapons@machinegun@mg@stealth - weapons@machinegun@mg@hi - weapons@machinegun@mg@hi - weapons@machinegun@mg@hi - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_MG - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - cover@move@ai@base@1h - Cover_Wpn_MicroSMG - weapons@submg@micro_smg - BothArms_filter - - - - - weapons@submg@micro_smg - weapons@submg@micro_smg_str - - weapons@submg@micro_smg@stealth - weapons@submg@micro_smg@hi - weapons@submg@micro_smg@hi - weapons@submg@advanced_rifle@micro_w_fire - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - Wpn_Thrown_Grenade_Aiming_MG - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - weapons@heavy@minigun - BothArms_filter - - - - - weapons@heavy@minigun - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - - - - - - Cover_Wpn_Thrown_Grenade - Wpn_Molotov_WeaponHolding - BothArms_filter - - - - - Wpn_Thrown_Molotov - Wpn_Thrown_Grenade_Str - - - - - - - - - - - - - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - BothArms_filter - - - - - - - - - - - - - - Cover_Wpn_Melee1h - weapons@melee_1h - BothArms_filter - - move_strafe_melee_unarmed - move_ped_strafing_stealth - move_strafe@melee_small_weapon - melee@holster - - - - - - - - - - - - - melee@small_wpn@streamed_core - melee@small_wpn@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - cover@move@base@rpg - cover@move@extra@rpg - - Cover_Wpn_RPG - weapons@heavy@rpg - BothArms_filter - - - - - weapons@heavy@rpg - weapons@heavy@rpg_str - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RPG - MOVE_FALL@WEAPONS@RPG - weapons@rifle@ - - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - move_ped_wpn_jerrycan_generic - BothArms_filter - - - - - Wpn_PetrolCan - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@JERRYCAN - MOVE_FALL@WEAPONS@JERRYCAN - - RightArm_NoSpine_filter - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - weapons@pistol@pistol - BothArms_filter - - - - - weapons@pistol@pistol - weapons@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@pistol@pistol@stealth - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol50 - weapons@pistol@ - BothArms_filter - - - - - weapons@pistol@pistol_50 - weapons@pistol@pistol_50_str - weapons@pistol@pistol_injured - weapons@pistol@pistol_50@stealth - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_ShotgunLo - weapons@rifle@lo@pump - BothArms_filter - - - - - weapons@rifle@lo@pump - weapons@rifle@lo@pump_str - - weapons@rifle@lo@pump@stealth - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - - - - - - - - - - - - - - cover@move@base@rpg - cover@move@extra@rpg - - Cover_Wpn_RPG - weapons@heavy@rpg - BothArms_filter - - - - - weapons@heavy@rpg - weapons@heavy@rpg_str - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RPG - MOVE_FALL@WEAPONS@RPG - weapons@heavy@rpg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_ShotgunSawnoff - weapons@rifle@lo@sawnoff - BothArms_filter - - - - - weapons@rifle@lo@sawnoff - weapons@rifle@lo@sawnoff_str - - weapons@rifle@lo@sawnoff@stealth - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_RifleSMG - weapons@rifle@lo@smg - BothArms_filter - - - - - weapons@rifle@lo@smg - weapons@rifle@lo@smg_str - - weapons@rifle@lo@smg@stealth - - - - - - - - combat_aim_turns_rifle - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - Cover_Wpn_Thrown_Grenade - Wpn_Grenade_WeaponHolding - BothArms_filter - - - - - Wpn_Thrown_Grenade - Wpn_Thrown_Grenade_Str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - cover@move@base@2h - cover@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_RifleSniper - weapons@rifle@hi@sniper_rifle - BothArms_filter - - - - - weapons@rifle@hi@sniper_rifle - weapons@rifle@hi@sniper_rifle_str - - weapons@rifle@hi@sniper_rifle@stealth - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - - - - - - Cover_Wpn_Thrown_Grenade - Wpn_StickyBomb_WeaponHolding - BothArms_filter - - - - - Wpn_Thrown_Sticky_Bomb - Wpn_Thrown_Grenade_Str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - cover@move@base@rpg - cover@move@extra@rpg - - Cover_Wpn_RPG - weapons@heavy@rpg - BothArms_filter - - - - - weapons@heavy@rpg - weapons@heavy@rpg_str - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RPG - MOVE_FALL@WEAPONS@RPG - - - - - - - - - - - - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - weapon@w_pi_stungun - BothArms_filter - - - - - weapon@w_pi_stungun - weapons@pistol@pistol_str - weapon@w_pi_stungun_injured - weapon@w_pi_stungun@stealth - - - - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - Wpn_Thrown_Grenade_Aiming_Rifle - - - - - - - Cover_Wpn_Melee1h - - - - move_strafe_melee_unarmed - move_ped_strafing_stealth - - weapons@unarmed - - - - - - - - - - - - - melee@unarmed@base - melee@unarmed@streamed_core - melee@unarmed@streamed_variations - melee@unarmed@streamed_taunts - melee@unarmed@streamed_background - melee@unarmed@streamed_stealth - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - LegsOnly_filter - - - - - - - - - - - - - - - - - - - - - creatures@retriever@melee@base@ - - - - - - - - - - - - - creatures@retriever@melee@streamed_core@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@pug@melee@streamed_core@ - - - - - - - - - - - - - creatures@pug@melee@streamed_core@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@shark@melee@streamed_core@ - - - - - - - - - - - - - creatures@shark@melee@streamed_core@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@hammerhead@melee@streamed_core@ - - - - - - - - - - - - - creatures@hammerhead@melee@streamed_core@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@killerwhale@melee@streamed_core@ - - - - - - - - - - - - - creatures@killerwhale@melee@streamed_core@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATURES@BOAR@MELEE@STREAMED_CORE@ - - - - - - - - - - - - - CREATURES@BOAR@MELEE@STREAMED_CORE@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATURES@PIG@MELEE@STREAMED_CORE@ - - - - - - - - - - - - - CREATURES@PIG@MELEE@STREAMED_CORE@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATURES@COYOTE@MELEE@STREAMED_CORE@ - - - - - - - - - - - - - CREATURES@COYOTE@MELEE@STREAMED_CORE@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@deer@melee@streamed_core@ - - - - - - - - - - - - - creatures@deer@melee@streamed_core@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@hen@player_action@ - - - - - - - - - - - - - creatures@hen@player_action@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@rabbit@player_action@ - - - - - - - - - - - - - creatures@rabbit@player_action@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@cat@player_action@ - - - - - - - - - - - - - creatures@cat@player_action@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - creatures@cow@player_action@ - - - - - - - - - - - - - creatures@cow@player_action@ - - - - - - - - - - - - - - - - - - - - - - - Default - - - - - - - move_ped_wpn_jerrycan_franklin - - - - - - - - - - - - - - - - - - - - - - - - - - - - RightArm_NoSpine_filter - - - - - - - - - - - - - - - - move_ped_wpn_jerrycan_franklin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ped_wpn_jerrycan_franklin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default - - - - - - - - - - - - - - - - - - - - - - combat_fire_variations_gang_pistol - - - - - - - - - - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - combat_fire_variations_gang_smg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@pistol@combat_pistol@stealth - - - - - - combat_fire_variations_gang_pistol - - - - - - - - - - - - weapons@pistol@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - combat_fire_variations_gang_smg - - - - - - - - - - - - weapons@pistol@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - combat_fire_variations_gang_pistol - - - - - - - - - - - - weapons@pistol@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - combat_fire_variations_gang_pistol - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - combat_fire_variations_gang_smg - - - - - - - - - - - - weapons@rifle@ - - - - - - - - - - - - - - - Default - - - - - - - - - - - - - weapons@submg@advanced_rifle@micro_w_fire - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ped_wpn_jerrycan_michael - - - - - - - - - - - - - - - - - - - - - - - - - - - - RightArm_NoSpine_filter - - - - - - - - - - - - - - - - move_ped_wpn_jerrycan_michael - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ped_wpn_jerrycan_michael - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gang - - - - - - - weapons@submg@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@submg@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@machinegun@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@machinegun@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@heavy@rpg@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@rifle@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@heavy@rpg@f - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default - - - - - - - move_ped_wpn_jerrycan_trevor - - - - - - - - - - - - - - - - - - - - - - - - - - - - RightArm_NoSpine_filter - - - - - - - - - - - - - - - - move_ped_wpn_jerrycan_trevor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - move_ped_wpn_jerrycan_trevor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - weapons@pistol_1h@hillbilly - BothArms_filter - - - - - weapons@pistol_1h@hillbilly - weapons@pistol_1h@hillbilly_str - weapons@pistol@pistol_injured - weapons@pistol@pistol@stealth - - - - - - combat_fire_variations_hillbilly_pistol_1H - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol_1h@hillbilly - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - combat_gestures_beckon_pistol_1h_hillbilly - combat_gestures_overthere_pistol_1h_hillbilly - combat_gestures_halt_pistol_1h_hillbilly - combat_gestures_glances_pistol_1h_hillbilly - combat_reactions_pistol_1h_hillbilly - - - - - - Gang - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - weapons@pistol_1h@gang - BothArms_filter - - - - - weapons@pistol_1h@gang - weapons@pistol_1h@gang_str - weapons@pistol@pistol_injured - weapons@pistol@pistol@stealth - - - - - - combat_fire_variations_gang_pistol_1H - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol_1h@gang - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - combat_gestures_beckon_pistol_1h_gang - combat_gestures_overthere_pistol_1h_gang - combat_gestures_halt_pistol_1h_gang - combat_gestures_glances_pistol_1h_gang - combat_reactions_pistol_1h_gang - - - - - - Default - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleAdvanced - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@advanced_rifle@ - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@str - - weapons@first_person@aim_stealth@generic@assault_rifle@advanced_rifle@ - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@advanced_rifle@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@advanced_rifle@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@advanced_rifle@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@advanced_rifle@aim_trans@unhlstr_2_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@advanced_rifle@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@advanced_rifle@fidgets@b - weapons@first_person@aim_idle@p_m_zero@assault_rifle@advanced_rifle@fidgets@c - - weapons@first_person@aim_idle@remote_clone@assault_rifle@advanced_rifle@ - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_AssaultSMG - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@submachine_gun@assault_smg@ - weapons@first_person@aim_rng@generic@submachine_gun@assault_smg@str - - weapons@first_person@aim_stealth@generic@assault_rifle@advanced_rifle@ - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@advanced_rifle@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@advanced_rifle@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@advanced_rifle@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@advanced_rifle@aim_trans@unhlstr_2_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@advanced_rifle@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@advanced_rifle@ - - weapons@first_person@aim_idle@p_m_zero@submachine_gun@assault_smg@fidgets@a - weapons@first_person@aim_idle@p_m_zero@submachine_gun@assault_smg@fidgets@b - weapons@first_person@aim_idle@p_m_zero@submachine_gun@assault_smg@fidgets@c - - - - move_m@generic - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_APPistol - weapons@first_person@aim_idle@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@pistol@shared@core - weapons@first_person@aim_rng@generic@pistol@ap_pistol@str - weapons@pistol@ap_pistol_injured - weapons@first_person@aim_stealth@generic@pistol@shared@core - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@c - - weapons@first_person@aim_idle@remote_clone@pistol@shared@core - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleHi - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@assault_rifle@assault_rifle_str - - weapons@first_person@aim_stealth@generic@assault_rifle@shared@core - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@a - WEAPONS@FIRST_PERSON@AIM_IDLE@P_M_ZERO@ASSAULT_RIFLE@SHARED@FIDGETS@B - WEAPONS@FIRST_PERSON@AIM_IDLE@P_M_ZERO@ASSAULT_RIFLE@SHARED@FIDGETS@C - - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunAssault - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@shotgun@assault_shotgun@str - - weapons@first_person@aim_stealth@generic@assault_rifle@shared@core - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_ball - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@projectile@ball@ - weapons@first_person@aim_rng@generic@projectile@ball@ball_str - - - - - - - - - - - - - - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@shared@aim_trans@lt_to_idle - weapons@first_person@aim_idle@p_m_zero@projectile@ball@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@projectile@shared@core - - weapons@first_person@aim_idle@p_m_zero@projectile@ball@fidgets@a - weapons@first_person@aim_idle@p_m_zero@projectile@ball@fidgets@b - weapons@first_person@aim_idle@p_m_zero@projectile@ball@fidgets@c - - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_FirstPerson_ShotgunBullpup - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@str - - weapons@first_person@aim_stealth@generic@assault_rifle@shared@core - - - - - - - - - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@c - - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleLo - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@assault_rifle@carbine_rifle@str - - weapons@first_person@aim_stealth@generic@assault_rifle@carbine_rifle - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@c - - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_CombatMG - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@light_machine_gun@combat_mg@ - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@str - - weapons@first_person@aim_stealth@generic@light_machine_gun@combat_mg@ - weapons@first_person@aim_idle@generic@light_machine_gun@combat_mg@ - weapons@first_person@aim_idle@generic@light_machine_gun@combat_mg@ - weapons@first_person@aim_idle@generic@light_machine_gun@combat_mg@ - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@light_machine_gun@combat_mg@fidgets@a - weapons@first_person@aim_idle@p_m_zero@light_machine_gun@combat_mg@fidgets@b - weapons@first_person@aim_idle@p_m_zero@light_machine_gun@combat_mg@fidgets@c - - - - move_m@generic - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_idle@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@pistol@shared@core - weapons@first_person@aim_rng@generic@pistol@combat_pistol@str - Wpn_Pistol_Injured - weapons@first_person@aim_stealth@generic@pistol@shared@core - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@c - - weapons@first_person@aim_idle@remote_clone@pistol@shared@core - - - - cover@move@extra@1h - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_idle@generic@misc@digi_scanner@ - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@misc@digi_scanner@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@misc@digi_scanner@aim_trans@unholster_to_idle - - - move_m@generic - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_flare - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@projectile@misc@flare@ - weapons@first_person@aim_rng@generic@projectile@flare@flare_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@flare@aim_trans@lt_to_idle - weapons@first_person@aim_idle@p_m_zero@projectile@misc@flare@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@melee@one_handed@shared@core - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@flare@fidgets@a - weapons@first_person@aim_idle@p_m_zero@projectile@misc@flare@fidgets@b - weapons@first_person@aim_idle@p_m_zero@projectile@misc@flare@fidgets@c - - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@heavy@grenade_launcher@ - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@heavy@grenade_launcher@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@heavy@grenade_launcher@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@heavy@grenade_launcher@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@aim_trans@unhlstr_2_idle - weapons@first_person@aim_stealth@p_m_zero@heavy@grenade_launcher@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@heavy@grenade_launcher@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@heavy@grenade_launcher@ - - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@fidgets@a - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@fidgets@b - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@fidgets@c - - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@heavy@grenade_launcher@ - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@aim_trans@unhlstr_2_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@heavy@grenade_launcher@ - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniperHeavy - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@sniper_rifle@heavy_sniper@str - - weapons@first_person@aim_stealth@generic@shotgun@shared@core - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@sniper_rifle@heavy_sniper@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@heavy_sniper@fidgets@a - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@heavy_sniper@fidgets@b - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@heavy_sniper@fidgets@c - - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_MachineGun - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@light_machine_gun@shared@core - - weapons@first_person@aim_stealth@generic@assault_rifle@shared@core - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@c - - - - - move_m@generic - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_MicroSMG - weapons@first_person@aim_rng@generic@submachine_gun@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@submachine_gun@shared@core - weapons@first_person@aim_rng@generic@submachine_gun@micro_smg_str - - weapons@first_person@aim_stealth@generic@submachine_gun@shared@core - weapons@first_person@aim_idle@generic@submachine_gun@shared@core - weapons@first_person@aim_idle@generic@submachine_gun@shared@core - weapons@first_person@aim_idle@generic@submachine_gun@shared@core - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_rng@p_m_zero@submachine_gun@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@submachine_gun@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@submachine_gun@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@submachine_gun@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@submachine_gun@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@fidgets@c - - - - move_m@generic - - - - - weapons@first_person@aim_rng@generic@heavy@minigun@ - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@heavy@minigun@ - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@heavy@minigun@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@heavy@minigun@aim_trans@lt_to_idle - - weapons@first_person@aim_idle@p_m_zero@heavy@minigun@aim_trans@unholster_to_idle - - - - weapons@first_person@aim_idle@remote_clone@heavy@minigun@ - - - move_m@generic - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_molotov - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@projectile@misc@molotov - weapons@first_person@aim_rng@generic@projectile@molotov@molotov_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@molotov@aim_trans@unholster_to_idle - weapons@first_person@aim_lt@p_m_zero@projectile@misc@molotov@aim_trans@lt_to_idle - weapons@first_person@aim_idle@p_m_zero@projectile@misc@molotov@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@projectile@shared@core - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@projectile@misc@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@projectile@misc@shared@fidgets@c - - - - move_m@generic - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_idle@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@pistol@shared@core - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_stealth@generic@pistol@shared@core - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_fps - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@c - - weapons@first_person@aim_idle@remote_clone@pistol@shared@core - - - move_m@generic - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol50 - weapons@first_person@aim_rng@generic@pistol@pistol_50@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@pistol@pistol_50@ - weapons@first_person@aim_rng@generic@pistol@pistol_50@str - weapons@pistol@pistol_injured - weapons@first_person@aim_stealth@generic@pistol@pistol_50@ - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_fps - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@pistol@pistol_50@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@pistol@pistol_50@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@pistol@pistol_50@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@fidgets@a - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@fidgets@b - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@fidgets@c - - weapons@first_person@aim_idle@remote_clone@pistol@shared@core - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunLo - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@shotgun@pump_shotgun_str - - weapons@first_person@aim_stealth@generic@shotgun@shared@core - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@fidgets@b - - - - move_m@generic - cover@first_person@move@base@rpg - cover@first_person@move@extra@rpg - - Cover_FirstPerson_Wpn_RPG - weapons@first_person@aim_rng@generic@heavy@rpg@ - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@heavy@rpg@ - weapons@first_person@aim_rng@generic@heavy@rpg@str - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RPG - MOVE_FALL@WEAPONS@RPG - weapons@heavy@rpg - - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@aim_trans@rng_to_idle - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@aim_trans@rng_to_idle - weapons@first_person@aim_scope@p_m_zero@heavy@rpg@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@heavy@rpg@aim_trans@unholster_to_idle - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@rpg@fidgets@a - weapons@first_person@aim_idle@p_m_zero@heavy@rpg@fidgets@b - weapons@first_person@aim_idle@p_m_zero@heavy@rpg@fidgets@c - - weapons@first_person@aim_idle@remote_clone@heavy@rpg@ - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunSawnoff - weapons@first_person@aim_rng@generic@shotgun@sawnoff@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@shotgun@sawnoff@ - weapons@first_person@aim_rng@generic@shotgun@sawnoff@str - - weapons@first_person@aim_stealth@generic@shotgun@sawnoff@ - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@shotgun@sawnoff@fidgets@a - weapons@first_person@aim_idle@p_m_zero@shotgun@sawnoff@fidgets@b - weapons@first_person@aim_idle@p_m_zero@shotgun@sawnoff@fidgets@c - - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSMG - weapons@first_person@aim_rng@generic@submachine_gun@smg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@submachine_gun@smg@ - weapons@first_person@aim_rng@generic@submachine_gun@smg@str - - weapons@first_person@aim_stealth@generic@submachine_gun@smg@ - - - - - - - - combat_aim_turns_rifle - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@submachine_gun@shared@core - - weapons@first_person@aim_idle@p_m_zero@submachine_gun@smg@fidgets@a - weapons@first_person@aim_idle@p_m_zero@submachine_gun@smg@fidgets@b - weapons@first_person@aim_idle@p_m_zero@submachine_gun@smg@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_tear_gas - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@projectile@tear_gas@ - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_idle - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@aim_trans@lt_to_idle - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@projectile@shared@core - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@fidgets@a - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@fidgets@b - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_tear_gas - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@projectile@tear_gas@ - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_idle - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@aim_trans@lt_to_idle - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@projectile@shared@core - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@fidgets@a - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@fidgets@b - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@fidgets@c - - - - move_m@generic - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniper - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@sniper_rifle@shared@core - weapons@first_person@aim_rng@generic@sniper_rifle@sniper_rifle_str - - weapons@first_person@aim_stealth@generic@sniper_rifle@shared@core - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@sniper_rifle@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_stealth - weapons@first_person@aim_idle@remote_clone@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@shared@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_sticky_bomb - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@projectile@misc@stickybomb@ - weapons@first_person@aim_rng@generic@projectile@sticky_bomb@sticky_bomb_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_lt@p_m_zero@projectile@misc@sticky_bomb@aim_trans@lt_to_idle - weapons@first_person@aim_idle@p_m_zero@projectile@misc@sticky_bomb@aim_trans@unholster_to_idle - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@sticky_bomb@fidgets@a - weapons@first_person@aim_idle@p_m_zero@projectile@misc@sticky_bomb@fidgets@b - weapons@first_person@aim_idle@p_m_zero@projectile@misc@sticky_bomb@fidgets@c - - - - move_m@generic - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_idle@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@pistol@shared@core - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_stealth@generic@pistol@shared@core - - - - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_idle - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_idle - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_stealth - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@unholster_to_stealth - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@pistol@shared@fidgets@c - - weapons@first_person@aim_idle@remote_clone@pistol@shared@core - - - - - - Cover_Wpn_Melee1h - - - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - - weapons@unarmed - - - weapons@first_person@aim_stealth@generic@unarmed@shared@core - - - - - - - - - - melee@unarmed@base - melee@unarmed@streamed_core_fps - melee@unarmed@streamed_variations - melee@unarmed@streamed_taunts - melee@unarmed@streamed_background - melee@unarmed@streamed_stealth - reaction@shellshock@unarmed - - - move_m@generic - - RightArm_NoSpine_filter - LegsOnly_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@unarmed@aimtrans@idle_to_relaxed - weapons@first_person@aim_stealth@p_m_zero@unarmed@shared@aim_trans@stealth_to_unarmed - weapons@first_person@aim_stealth@p_m_zero@unarmed@shared@aim_trans@unarmed_to_stealth - weapons@first_person@aim_stealth@p_m_zero@unarmed@shared@aim_trans@unholster_to_stealth - - - move_m@generic - - - - Cover_Wpn_Melee1h - weapons@first_person@aim_idle@generic@melee@knife@shared@core - BothArms_filter - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - move_strafe@melee_knife_fps - weapons@first_person@aim_idle@generic@melee@knife@shared@core - weapons@first_person@aim_rng@generic@pistol@pistol_str - - - - - - - - - - - - melee@knife@streamed_core_fps - melee@knife@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@knife@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@melee@one_handed@shared@core - - weapons@first_person@aim_idle@p_m_zero@melee@knife@fidgets@a - weapons@first_person@aim_idle@p_m_zero@melee@knife@fidgets@b - weapons@first_person@aim_idle@p_m_zero@melee@knife@fidgets@c - - - - move_m@generic - - - - - weapons@first_person@aim_idle@generic@melee@large_wpn@bat@ - BothArms_filter - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - move_strafe@melee_large_weapon_fps - weapons@first_person@aim_idle@generic@melee@large_wpn@bat@ - weapons@first_person@aim_rng@generic@pistol@pistol_str - - - - - - - - - - - - melee@large_wpn@streamed_core_fps - melee@large_wpn@streamed_variations - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@2H_MELEE - MOVE_FALL@WEAPONS@2H_MELEE - - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@bat@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@melee@two_handed@bat - - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@bat@fidgets@a - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@bat@fidgets@b - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@bat@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Melee1h - weapons@first_person@aim_idle@generic@melee@large_wpn@gclub@ - BothArms_filter - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - move_strafe@melee_large_weapon_fps_gclub - weapons@first_person@aim_idle@generic@melee@large_wpn@gclub@ - weapons@first_person@aim_rng@generic@pistol@pistol_str - - - - - - - - - - - - melee@large_wpn@streamed_core_fps_gclub - melee@large_wpn@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@gclub@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@melee@two_handed@golf_club - - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@gclub@fidgets@a - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@gclub@fidgets@b - weapons@first_person@aim_idle@p_m_zero@melee@large_wpn@gclub@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Melee1h - weapons@first_person@aim_idle@generic@melee@small_wpn@crowbar@ - BothArms_filter - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - move_strafe@melee_small_weapon_fps - weapons@first_person@aim_idle@generic@melee@small_wpn@crowbar@ - - - - - - - - - - - - - melee@small_wpn@streamed_core_fps - melee@small_wpn@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@crowbar@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@melee@one_handed@shared@core - - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@crowbar@fidgets@a - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@crowbar@fidgets@b - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@crowbar@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Melee1h - weapons@first_person@aim_idle@generic@melee@small_wpn@hammer@ - BothArms_filter - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - move_strafe@melee_small_weapon_fps - weapons@first_person@aim_idle@generic@melee@small_wpn@hammer@ - - - - - - - - - - - - - melee@small_wpn@streamed_core_fps - melee@small_wpn@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@hammer@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@melee@one_handed@shared@core - - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@hammer@fidgets@a - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@hammer@fidgets@b - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@hammer@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Melee1h - weapons@first_person@aim_idle@generic@melee@small_wpn@nightstick@ - BothArms_filter - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - move_strafe@melee_small_weapon_fps - weapons@first_person@aim_idle@generic@melee@small_wpn@nightstick@ - - - - - - - - - - - - - melee@small_wpn@streamed_core_fps - melee@small_wpn@streamed_variations - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@nightstick@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@melee@one_handed@shared@core - - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@nightstick@fidgets@a - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@nightstick@fidgets@b - weapons@first_person@aim_idle@p_m_zero@melee@small_wpn@nightstick@fidgets@c - - - - move_m@generic - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@projectile@shared@core - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_lt@p_m_zero@projectile@shared@aim_trans@lt_to_idle - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - weapons@first_person@aim_idle@remote_clone@projectile@shared@core - - weapons@first_person@aim_idle@p_m_zero@projectile@shared@fidgets@a - weapons@first_person@aim_idle@p_m_zero@projectile@shared@fidgets@b - weapons@first_person@aim_idle@p_m_zero@projectile@shared@fidgets@c - - - - move_m@generic - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - weapons@first_person@aim_rng@generic@misc@jerrycan - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@misc@jerrycan - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@JERRYCAN - MOVE_FALL@WEAPONS@JERRYCAN - - RightArm_NoSpine_filter - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@misc@jerrycan@aim_trans@unholster_to_rng - weapons@first_person@aim_idle@remote_clone@misc@jerrycan@ - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - move_ped_wpn_jerrycan_generic - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@misc@briefcase@ - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@JERRYCAN - MOVE_FALL@WEAPONS@JERRYCAN - - - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@misc@briefcase@aim_trans@unholster_to_rng - - - - - Default - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleAdvanced - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@assault_rifle@advanced_rifle@w_fire - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@str - - weapons@first_person@aim_lt@generic@assault_rifle@advanced_rifle@w_fire - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@advanced_rifle@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@advanced_rifle@fidgets@a - weapons@first_person@aim_lt@p_m_zero@assault_rifle@advanced_rifle@fidgets@b - weapons@first_person@aim_lt@p_m_zero@assault_rifle@advanced_rifle@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_AssaultSMG - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@submachine_gun@assault_smg@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@assault_smg@str - - weapons@first_person@aim_lt@generic@submachine_gun@assault_smg@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@advanced_rifle@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@submachine_gun@assault_smg@fidgets@a - weapons@first_person@aim_lt@p_m_zero@submachine_gun@assault_smg@fidgets@b - weapons@first_person@aim_lt@p_m_zero@submachine_gun@assault_smg@fidgets@c - weapons@first_person@aim_lt@p_m_zero@submachine_gun@assault_smg@fidgets@d - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_APPistol - weapons@first_person@aim_lt@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@pistol@ap_pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@ap_pistol@str - weapons@pistol@ap_pistol_injured - weapons@first_person@aim_lt@generic@pistol@ap_pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@c - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@d - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunAssault - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@shotgun@assault_shotgun@w_fire - weapons@first_person@aim_rng@generic@shotgun@assault_shotgun@str - - weapons@first_person@aim_lt@generic@shotgun@assault_shotgun@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@shotgun@assault_shotgun@fidgets@a - weapons@first_person@aim_lt@p_m_zero@shotgun@assault_shotgun@fidgets@b - weapons@first_person@aim_lt@p_m_zero@shotgun@assault_shotgun@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_ball - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@projectile@misc@shared@core - weapons@first_person@aim_rng@generic@projectile@ball@ball_str - - - - - - - - - - - - - - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@ball@aim_trans@idle_to_lt - - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@shared@aim_trans@unholster_to_lt - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@projectile@misc@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@projectile@misc@shared@fidgets@C - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_FirstPerson_ShotgunBullpup - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@shotgun@bullpup_shotgun@w_fire - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@str - - weapons@first_person@aim_lt@generic@shotgun@bullpup_shotgun@ - - - - - - - - - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@shotgun@bullpup_shotgun@fidgets@a - weapons@first_person@aim_lt@p_m_zero@shotgun@bullpup_shotgun@fidgets@b - weapons@first_person@aim_lt@p_m_zero@shotgun@bullpup_shotgun@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_CombatMG - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@str - - weapons@first_person@aim_lt@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_lt@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_lt@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_lt@generic@light_machine_gun@combat_mg@w_fire - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@light_machine_gun@combat_mg@fidgets@a - weapons@first_person@aim_lt@p_m_zero@light_machine_gun@combat_mg@fidgets@b - weapons@first_person@aim_lt@p_m_zero@light_machine_gun@combat_mg@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@pistol@combat_pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@combat_pistol@str - Wpn_Pistol_Injured - weapons@first_person@aim_lt@generic@pistol@combat_pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@c - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@d - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_flare - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@projectile@misc@flare@ - weapons@first_person@aim_rng@generic@projectile@flare@flare_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@flare@aim_trans@idle_to_lt - - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@flare@aim_trans@unholster_to_lt - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@flare@fidgets@a - weapons@first_person@aim_lt@p_m_zero@projectile@misc@flare@fidgets@b - weapons@first_person@aim_lt@p_m_zero@projectile@misc@flare@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@heavy@grenade_launcher@w_fire - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@heavy@grenade_launcher@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@heavy@grenade_launcher@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@heavy@grenade_launcher@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@heavy@grenade_launcher@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@heavy@grenade_launcher@fidgets@a - weapons@first_person@aim_lt@p_m_zero@heavy@grenade_launcher@fidgets@b - weapons@first_person@aim_lt@p_m_zero@heavy@grenade_launcher@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@heavy@grenade_launcher@w_fire - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniperHeavy - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@sniper_rifle@heavy_sniper@w_fire - weapons@first_person@aim_rng@generic@sniper_rifle@heavy_sniper@str - - weapons@first_person@aim_lt@generic@sniper_rifle@heavy_sniper@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_MachineGun - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@mg_str - - weapons@first_person@aim_lt@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_lt@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_lt@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_lt@generic@light_machine_gun@shared@core@w_fire - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@light_machine_gun@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@light_machine_gun@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@light_machine_gun@shared@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_MicroSMG - weapons@first_person@aim_rng@generic@submachine_gun@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@micro_smg_str - - weapons@first_person@aim_lt@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_lt@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_lt@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_lt@generic@submachine_gun@shared@core@w_fire - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@submachine_gun@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@submachine_gun@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@submachine_gun@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@submachine_gun@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@submachine_gun@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@submachine_gun@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@submachine_gun@shared@fidgets@c - - - - - - - - weapons@first_person@aim_rng@generic@heavy@minigun@ - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@heavy@minigun@w_fire - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@minigun@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@heavy@minigun@aim_trans@rng_to_lt - - - weapons@first_person@aim_lt@p_m_zero@heavy@minigun@aim_trans@unholster_to_lt - - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_molotov - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@projectile@misc@molotov@ - weapons@first_person@aim_rng@generic@projectile@molotov@molotov_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@molotov@aim_trans@idle_to_lt - weapons@first_person@aim_idle@p_m_zero@projectile@misc@molotov@aim_trans@unholster_to_idle - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@molotov@aim_trans@unholster_to_lt - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@molotov@fidgets@a - weapons@first_person@aim_lt@p_m_zero@projectile@misc@molotov@fidgets@b - weapons@first_person@aim_lt@p_m_zero@projectile@misc@molotov@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_lt@generic@pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_fps - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@c - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@d - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol50 - weapons@first_person@aim_lt@generic@pistol@pistol_50@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@pistol@pistol_50@w_fire - weapons@first_person@aim_rng@generic@pistol@pistol_50@str - weapons@pistol@pistol_injured - weapons@first_person@aim_lt@generic@pistol@pistol_50@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@pistol@pistol_50@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@pistol@pistol_50@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@fidgets@a - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@fidgets@b - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@fidgets@c - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@fidgets@d - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleHi - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@assault_rifle@assault_rifle_str - - weapons@first_person@aim_lt@generic@assault_rifle@shared@core - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleLo - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@assault_rifle@carbine_rifle@w_fire - weapons@first_person@aim_rng@generic@assault_rifle@carbine_rifle@str - - weapons@first_person@aim_lt@generic@assault_rifle@carbine_rifle@w_fire - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@carbine_rifle@fidgets@a - weapons@first_person@aim_lt@p_m_zero@assault_rifle@carbine_rifle@fidgets@b - weapons@first_person@aim_lt@p_m_zero@assault_rifle@carbine_rifle@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunLo - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@shotgun@shared@core@w_fire - weapons@first_person@aim_rng@generic@shotgun@pump_shotgun_str - - weapons@first_person@aim_lt@generic@shotgun@shared@core@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@shotgun@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@shotgun@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@shotgun@shared@fidgets@c - - - - cover@first_person@move@base@rpg - cover@first_person@move@extra@rpg - - Cover_FirstPerson_Wpn_RPG - weapons@first_person@aim_rng@generic@heavy@rpg@ - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@heavy@rpg@w_fire - weapons@first_person@aim_rng@generic@heavy@rpg@str - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RPG - MOVE_FALL@WEAPONS@RPG - weapons@heavy@rpg - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@rpg@aim_trans@idle_to_rng - - - weapons@first_person@aim_scope@p_m_zero@heavy@rpg@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@aim_trans@unholster_to_rng - - - - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@fidgets@a - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@fidgets@b - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunSawnoff - weapons@first_person@aim_rng@generic@shotgun@sawnoff@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@shotgun@sawnoff@w_fire - weapons@first_person@aim_rng@generic@shotgun@sawnoff@str - - weapons@first_person@aim_lt@generic@shotgun@sawnoff@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@shotgun@sawnoff@fidgets@a - weapons@first_person@aim_lt@p_m_zero@shotgun@sawnoff@fidgets@b - weapons@first_person@aim_lt@p_m_zero@shotgun@sawnoff@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSMG - weapons@first_person@aim_rng@generic@submachine_gun@smg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@submachine_gun@smg@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@smg@str - - weapons@first_person@aim_lt@generic@submachine_gun@smg@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@submachine_gun@smg@fidgets@a - weapons@first_person@aim_lt@p_m_zero@submachine_gun@smg@fidgets@b - weapons@first_person@aim_lt@p_m_zero@submachine_gun@smg@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_tear_gas - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@projectile@tear_gas@ - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@idle_to_lt - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_idle - - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_lt - - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@fidgets@a - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@fidgets@b - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_tear_gas - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@projectile@tear_gas@ - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@idle_to_lt - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_idle - - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@aim_trans@unholster_to_lt - - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@fidgets@a - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@fidgets@b - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniper - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@sniper_rifle@shared@core@w_fire - weapons@first_person@aim_rng@generic@sniper_rifle@sniper_rifle_str - - weapons@first_person@aim_lt@generic@sniper_rifle@shared@core@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_stealth - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_sticky_bomb - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@projectile@misc@sticky_bomb - weapons@first_person@aim_rng@generic@projectile@sticky_bomb@sticky_bomb_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@sticky_bomb@aim_trans@idle_to_lt - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@sticky_bomb@aim_trans@unholster_to_lt - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@sticky_bomb@fidgets@a - weapons@first_person@aim_lt@p_m_zero@projectile@misc@sticky_bomb@fidgets@b - weapons@first_person@aim_lt@p_m_zero@projectile@misc@sticky_bomb@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_lt@generic@pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_lt@generic@pistol@w_fire - - - - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_lt - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_lt - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@unholster_to_lt - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_lt - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_stealth - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@c - weapons@first_person@aim_lt@p_m_zero@pistol@shared@fidgets@d - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion - BothArms_filter - - - - - weapons@first_person@aim_lt@generic@projectile@shared@core - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@idle_to_lt - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - - weapons@first_person@aim_lt@p_m_zero@projectile@shared@aim_trans@unholster_to_lt - - weapons@first_person@aim_lt@p_m_zero@projectile@shared@fidgets@a - weapons@first_person@aim_lt@p_m_zero@projectile@shared@fidgets@b - weapons@first_person@aim_lt@p_m_zero@projectile@shared@fidgets@c - - - - - - - Cover_Wpn_Melee1h - weapons@first_person@aim_idle@generic@melee@knife@shared@core - - - move_strafe_melee_unarmed_fps - move_ped_strafing_stealth - - weapons@first_person@aim_idle@generic@melee@unarmed@ - - - - - - - - - - - - - melee@unarmed@base - melee@unarmed@streamed_core_fps - melee@unarmed@streamed_variations - melee@unarmed@streamed_taunts - melee@unarmed@streamed_background - melee@unarmed@streamed_stealth - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - LegsOnly_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@melee@unarmed@aimtrans@unholster_to_idle - weapons@first_person@aim_idle@p_m_zero@melee@unarmed@aimtrans@unholster_to_idle - weapons@first_person@aim_stealth@p_m_zero@unarmed@shared@aim_trans@stealth_to_idle - weapons@first_person@aim_idle@p_m_zero@unarmed@aim_trans@idle_to_stealth - - - - - Default - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleAdvanced - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@w_fire - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@str - - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@w_fire - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@advanced_rifle@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@advanced_rifle@fidgets@a - weapons@first_person@aim_rng@p_m_zero@assault_rifle@advanced_rifle@fidgets@b - weapons@first_person@aim_rng@p_m_zero@assault_rifle@advanced_rifle@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_AssaultSMG - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@submachine_gun@assault_smg@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@assault_smg@str - - weapons@first_person@aim_rng@generic@submachine_gun@assault_smg@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@advanced_rifle@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@submachine_gun@assault_smg@fidgets@a - weapons@first_person@aim_rng@p_m_zero@submachine_gun@assault_smg@fidgets@b - weapons@first_person@aim_rng@p_m_zero@submachine_gun@assault_smg@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_APPistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@pistol@ap_pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@ap_pistol@str - weapons@pistol@ap_pistol_injured - weapons@first_person@aim_rng@generic@pistol@ap_pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunAssault - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@shotgun@assault_shotgun@w_fire - weapons@first_person@aim_rng@generic@shotgun@assault_shotgun@str - - weapons@first_person@aim_rng@generic@shotgun@assault_shotgun@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@shotgun@assault_shotgun@fidgets@a - weapons@first_person@aim_rng@p_m_zero@shotgun@assault_shotgun@fidgets@b - weapons@first_person@aim_rng@p_m_zero@shotgun@assault_shotgun@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_ball - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@projectile@ball@ - weapons@first_person@aim_rng@generic@projectile@ball@ball_str - - - - - - - - - - - - - - - - - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@ball@aim_trans@idle_to_idlerng - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@shared@aim_trans@lt_to_rng - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_FirstPerson_ShotgunBullpup - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@w_fire - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@str - - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@ - - - - - - - - - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@shotgun@bullpup_shotgun@fidgets@a - weapons@first_person@aim_rng@p_m_zero@shotgun@bullpup_shotgun@fidgets@b - weapons@first_person@aim_rng@p_m_zero@shotgun@bullpup_shotgun@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_CombatMG - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@str - - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@w_fire - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@light_machine_gun@combat_mg@fidgets@a - weapons@first_person@aim_rng@p_m_zero@light_machine_gun@combat_mg@fidgets@b - weapons@first_person@aim_rng@p_m_zero@light_machine_gun@combat_mg@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@pistol@combat_pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@combat_pistol@str - Wpn_Pistol_Injured - weapons@first_person@aim_rng@generic@pistol@combat_pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@c - - - - - cover@move@extra@1h - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_idle@generic@misc@digi_scanner@ - BothArms_filter - - - - - weapons@first_person@aim_idle@generic@misc@digi_scanner@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@misc@digi_scanner@aim_trans@unholster_to_idle - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_flare - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@projectile@flare@ - weapons@first_person@aim_rng@generic@projectile@flare@flare_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@flare@aim_trans@idle_to_idlerng - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@flare@aim_trans@lt_to_rng - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@w_fire - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@heavy@grenade_launcher@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@heavy@grenade_launcher@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@heavy@grenade_launcher@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@heavy@grenade_launcher@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@heavy@grenade_launcher@fidgets@a - weapons@first_person@aim_rng@p_m_zero@heavy@grenade_launcher@fidgets@b - weapons@first_person@aim_rng@p_m_zero@heavy@grenade_launcher@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@w_fire - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniperHeavy - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@sniper_rifle@heavy_sniper@w_fire - weapons@first_person@aim_rng@generic@sniper_rifle@heavy_sniper@str - - weapons@first_person@aim_rng@generic@sniper_rifle@heavy_sniper@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@sniper_rifle@heavy_sniper@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@heavy_sniper@fidgets@a - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@heavy_sniper@fidgets@b - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@heavy_sniper@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_MachineGun - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@mg_str - - weapons@first_person@aim_rng@generic@light_machine_gun@shared@core - weapons@first_person@aim_rng@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@shared@core@w_fire - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@light_machine_gun@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@light_machine_gun@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@light_machine_gun@shared@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_MicroSMG - weapons@first_person@aim_rng@generic@submachine_gun@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@micro_smg_str - - weapons@first_person@aim_rng@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@shared@core@w_fire - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@submachine_gun@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@submachine_gun@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@submachine_gun@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@submachine_gun@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@submachine_gun@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@submachine_gun@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@submachine_gun@shared@fidgets@c - - - - - - - - weapons@first_person@aim_rng@generic@heavy@minigun@ - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@heavy@minigun@w_fire - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@minigun@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@heavy@minigun@aim_trans@lt_to_rng - - weapons@first_person@aim_rng@p_m_zero@heavy@minigun@aim_trans@unholster_to_rng - - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_molotov - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@projectile@molotov@ - weapons@first_person@aim_rng@generic@projectile@molotov@molotov_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@molotov@aim_trans@idle_to_idlerng - weapons@first_person@aim_idle@p_m_zero@projectile@misc@molotov@aim_trans@unholster_to_idle - weapons@first_person@aim_lt@p_m_zero@projectile@misc@molotov@aim_trans@lt_to_rng - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@pistol@pistol - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_rng@pistol@pistol - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_fps - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@c - - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol50 - weapons@first_person@aim_rng@generic@pistol@pistol_50@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@pistol@pistol_50@w_fire - weapons@first_person@aim_rng@generic@pistol@pistol_50@str - weapons@pistol@pistol_injured - weapons@first_person@aim_rng@generic@pistol@pistol_50@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@pistol@pistol_50@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@pistol@pistol_50@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@fidgets@a - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@fidgets@b - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleHi - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - weapons@first_person@aim_rng@generic@assault_rifle@assault_rifle_str - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleLo - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@assault_rifle@carbine_rifle@w_fire - weapons@first_person@aim_rng@generic@assault_rifle@carbine_rifle@str - - weapons@first_person@aim_rng@generic@assault_rifle@carbine_rifle@w_fire - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@assault_rifle@carbine_rifle@fidgets@a - weapons@first_person@aim_rng@p_m_zero@assault_rifle@carbine_rifle@fidgets@b - weapons@first_person@aim_rng@p_m_zero@assault_rifle@carbine_rifle@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunLo - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@shotgun@shared@core@w_fire - weapons@first_person@aim_rng@generic@shotgun@pump_shotgun_str - - weapons@first_person@aim_rng@generic@shotgun@shared@core@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@shotgun@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@shotgun@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@shotgun@shared@fidgets@c - - - - cover@first_person@move@base@rpg - cover@first_person@move@extra@rpg - - Cover_FirstPerson_Wpn_RPG - weapons@first_person@aim_rng@generic@heavy@rpg@ - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@heavy@rpg@w_fire - weapons@first_person@aim_rng@generic@heavy@rpg@str - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RPG - MOVE_FALL@WEAPONS@RPG - weapons@heavy@rpg - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@rpg@aim_trans@idle_to_rng - - - weapons@first_person@aim_scope@p_m_zero@heavy@rpg@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@aim_trans@unholster_to_rng - - - - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@fidgets@a - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@fidgets@b - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunSawnoff - weapons@first_person@aim_rng@generic@shotgun@sawnoff@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@shotgun@sawnoff@w_fire - weapons@first_person@aim_rng@generic@shotgun@sawnoff@str - - weapons@first_person@aim_rng@generic@shotgun@sawnoff@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@shotgun@sawnoff@fidgets@a - weapons@first_person@aim_rng@p_m_zero@shotgun@sawnoff@fidgets@b - weapons@first_person@aim_rng@p_m_zero@shotgun@sawnoff@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSMG - weapons@first_person@aim_rng@generic@submachine_gun@smg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@submachine_gun@smg@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@smg@str - - weapons@first_person@aim_rng@generic@submachine_gun@smg@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@submachine_gun@smg@fidgets@a - weapons@first_person@aim_rng@p_m_zero@submachine_gun@smg@fidgets@b - weapons@first_person@aim_rng@p_m_zero@submachine_gun@smg@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_tear_gas - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@projectile@tear_gas@ - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@idle_to_idlerng - - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@aim_trans@lt_to_rng - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_tear_gas - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@projectile@tear_gas@ - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@tear_gas@aim_trans@idle_to_idlerng - - weapons@first_person@aim_lt@p_m_zero@projectile@tear_gas@aim_trans@lt_to_rng - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniper - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@generic@sniper_rifle@shared@core@w_fire - weapons@first_person@aim_rng@generic@sniper_rifle@sniper_rifle_str - - weapons@first_person@aim_rng@generic@sniper_rifle@shared@core@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@sniper_rifle@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@shared@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion_sticky_bomb - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@projectile@sticky_bomb@ - weapons@first_person@aim_rng@generic@projectile@sticky_bomb@sticky_bomb_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@misc@sticky_bomb@aim_trans@idle_to_idlerng - - weapons@first_person@aim_lt@p_m_zero@projectile@misc@sticky_bomb@aim_trans@lt_to_rng - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_rng@pistol@pistol - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_rng@pistol@pistol - - - - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_rng - - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_rng - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@unholster_to_rng - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_rng - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_stealth - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@c - - - - - - - Cover_Wpn_Thrown_Grenade - fps_projectile_motion - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@projectile@shared@core - weapons@first_person@aim_rng@generic@projectile@grenade_str - - - - - - - - - - - - melee@thrown@streamed_core - - - - - reaction@shellshock@unarmed - - - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@idle_to_idlerng - - weapons@first_person@aim_lt@p_m_zero@projectile@shared@aim_trans@lt_to_rng - weapons@first_person@aim_idle@p_m_zero@projectile@shared@aim_trans@unholster_to_idle - - - - - cover@move@ai@base@1h - Cover_Wpn_Pistol - move_ped_wpn_jerrycan_generic - BothArms_filter - - - - - weapons@first_person@aim_rng@generic@misc@jerrycan - - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@JERRYCAN - MOVE_FALL@WEAPONS@JERRYCAN - - RightArm_NoSpine_filter - - - - - - - - - - weapons@first_person@aim_rng@p_m_zero@misc@jerrycan@aim_trans@unholster_to_rng - - - - - Default - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleAdvanced - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@assault_rifle@advanced_rifle@w_fire - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@str - - weapons@first_person@aim_scope@generic@assault_rifle@advanced_rifle@w_fire - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@advanced_rifle@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_AssaultSMG - weapons@first_person@aim_rng@generic@assault_rifle@advanced_rifle@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@submachine_gun@assault_smg@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@assault_smg@str - - weapons@first_person@aim_scope@generic@submachine_gun@assault_smg@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@advanced_rifle@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@advanced_rifle@aim_trans@scope_to_stealth - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_APPistol - weapons@first_person@aim_scope@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@pistol@ap_pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@ap_pistol@str - weapons@pistol@ap_pistol_injured - weapons@first_person@aim_scope@generic@pistol@ap_pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_stealth - - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@a - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@b - weapons@first_person@aim_rng@p_m_zero@pistol@shared@fidgets@c - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunAssault - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@shotgun@assault_shotgun@w_fire - weapons@first_person@aim_rng@generic@shotgun@assault_shotgun@str - - weapons@first_person@aim_scope@generic@shotgun@assault_shotgun@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_Wpn_FirstPerson_ShotgunBullpup - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@shotgun@bullpup_shotgun@w_fire - weapons@first_person@aim_rng@generic@shotgun@bullpup_shotgun@str - - weapons@first_person@aim_scope@generic@shotgun@bullpup_shotgun@ - - - - - - - - - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_CombatMG - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@combat_mg@str - - weapons@first_person@aim_scope@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_scope@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_scope@generic@light_machine_gun@combat_mg@w_fire - weapons@first_person@aim_scope@generic@light_machine_gun@combat_mg@w_fire - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@pistol@combat_pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@combat_pistol@str - Wpn_Pistol_Injured - weapons@first_person@aim_scope@generic@pistol@combat_pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_scope@generic@heavy@grenade_launcher@w_fire - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@grenade_launcher@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@heavy@grenade_launcher@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@heavy@grenade_launcher@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@heavy@grenade_launcher@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@heavy@grenade_launcher@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_GrnLch - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@ - BothArms_filter - - - - - weapons@first_person@aim_scope@generic@heavy@grenade_launcher@w_fire - weapons@first_person@aim_rng@generic@heavy@grenade_launcher@str - - weapons@heavy@grenade_launcher@stealth - - - - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniperHeavy - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@sniper_rifle@heavy_sniper@w_fire - weapons@first_person@aim_rng@generic@sniper_rifle@heavy_sniper@str - - weapons@first_person@aim_scope@generic@sniper_rifle@heavy_sniper@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@heavy_sniper@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@heavy_sniper@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@sniper_rifle@heavy_sniper@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_MachineGun - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@light_machine_gun@mg_str - - weapons@first_person@aim_scope@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_scope@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_scope@generic@light_machine_gun@shared@core@w_fire - weapons@first_person@aim_scope@generic@light_machine_gun@shared@core@w_fire - - - - - - - melee@rifle@streamed_core - - - - - - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_MicroSMG - weapons@first_person@aim_rng@generic@submachine_gun@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@micro_smg_str - - weapons@first_person@aim_scope@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_scope@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_scope@generic@submachine_gun@shared@core@w_fire - weapons@first_person@aim_scope@generic@submachine_gun@shared@core@w_fire - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - Wpn_Thrown_Grenade_Aiming_Rifle - weapons@first_person@aim_idle@p_m_zero@submachine_gun@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@submachine_gun@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@submachine_gun@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@submachine_gun@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@submachine_gun@shared@aim_trans@scope_to_stealth - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_scope@generic@pistol@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_fps - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_stealth - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol50 - weapons@first_person@aim_scope@generic@pistol@pistol_50@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@pistol@pistol_50@w_fire - weapons@first_person@aim_rng@generic@pistol@pistol_50@str - weapons@pistol@pistol_injured - weapons@first_person@aim_scope@generic@pistol@pistol_50@w_fire - - - - - - combat_fire_variations_pistol - - combat_aim_turns_pistol - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@pistol_50@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@pistol@pistol_50@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@pistol@pistol_50@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@pistol@pistol_50@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@pistol@pistol_50@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@pistol@pistol_50@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleHi - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@assault_rifle@w_fire - weapons@first_person@aim_rng@generic@assault_rifle@assault_rifle_str - - weapons@first_person@aim_scope@generic@assault_rifle@shared@core - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleLo - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@assault_rifle@carbine_rifle@w_fire - weapons@first_person@aim_rng@generic@assault_rifle@carbine_rifle@str - - weapons@first_person@aim_scope@generic@assault_rifle@carbine_rifle@w_fire - - - - - - combat_fire_variations_rifle - - combat_aim_turns_rifle - - melee@rifle@streamed_fps - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunLo - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@shotgun@shared@core@w_fire - weapons@first_person@aim_rng@generic@shotgun@pump_shotgun_str - - weapons@first_person@aim_scope@generic@shotgun@shared@core@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@rpg - cover@first_person@move@extra@rpg - - Cover_FirstPerson_Wpn_RPG - weapons@first_person@aim_rng@generic@heavy@rpg@ - BothArms_filter - - - - - weapons@first_person@aim_scope@generic@heavy@rpg@w_fire - weapons@first_person@aim_rng@generic@heavy@rpg@str - - - - - - - - - - - - - - - - - - MOVE_JUMP@WEAPONS@RPG - MOVE_FALL@WEAPONS@RPG - weapons@heavy@rpg - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@heavy@rpg@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@aim_trans@rng_to_scope - weapons@first_person@aim_rng@p_m_zero@heavy@rpg@aim_trans@rng_to_scope - - weapons@first_person@aim_scope@p_m_zero@heavy@rpg@aim_trans@unholster_to_scope - - - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_ShotgunSawnoff - weapons@first_person@aim_rng@generic@shotgun@sawnoff@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@shotgun@sawnoff@w_fire - weapons@first_person@aim_rng@generic@shotgun@sawnoff@str - - weapons@first_person@aim_scope@generic@shotgun@sawnoff@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSMG - weapons@first_person@aim_rng@generic@submachine_gun@smg@ - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@submachine_gun@smg@w_fire - weapons@first_person@aim_rng@generic@submachine_gun@smg@str - - weapons@first_person@aim_scope@generic@submachine_gun@smg@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@pistol@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - - weapons@first_person@aim_idle@p_m_zero@assault_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@assault_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - cover@first_person@move@base@2h - cover@first_person@move@extra@2h - cover@move@ai@base@2h - Cover_FirstPerson_Wpn_RifleSniper - weapons@first_person@aim_rng@generic@assault_rifle@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@sniper_rifle@shared@core@w_fire - weapons@first_person@aim_rng@generic@sniper_rifle@sniper_rifle_str - - weapons@first_person@aim_scope@generic@sniper_rifle@shared@core@w_fire - - - - - - - - combat_aim_turns_rifle - - melee@rifle@streamed_core - - - - - reaction@shellshock@2h - MOVE_JUMP@WEAPONS@RIFLE - MOVE_FALL@WEAPONS@RIFLE - weapons@rifle@ - - - - - - - - - - - weapons@first_person@aim_idle@p_m_zero@sniper_rifle@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@sniper_rifle@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@assault_rifle@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@sniper_rifle@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@assault_rifle@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@assault_rifle@shared@aim_trans@scope_to_stealth - - - - - cover@move@ai@base@1h - Cover_FirstPerson_Wpn_Pistol - weapons@first_person@aim_rng@generic@pistol@shared@core - BothArms_filter - - - move_ped_strafing_stealth - - weapons@first_person@aim_scope@generic@pistol@w_fire - weapons@first_person@aim_rng@generic@pistol@pistol_str - weapons@pistol@pistol_injured - weapons@first_person@aim_scope@generic@pistol@w_fire - - - - - - - - - - melee@pistol@streamed_core - - - - - reaction@shellshock@unarmed - MOVE_JUMP@WEAPONS@PISTOL - MOVE_FALL@WEAPONS@PISTOL - weapons@pistol@ - RightArm_NoSpine_filter - RightArm_NoSpine_filter - - - - - - - weapons@first_person@aim_rng@generic@pistol@shared@core - - weapons@first_person@aim_idle@p_m_zero@pistol@shared@aim_trans@idle_to_scope - weapons@first_person@aim_rng@p_m_zero@pistol@shared@aim_trans@rng_to_scope - weapons@first_person@aim_lt@p_m_zero@pistol@shared@aim_trans@lt_to_scope - - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@unholster_to_scope - weapons@first_person@aim_stealth@p_m_zero@pistol@shared@aim_trans@stealth_to_scope - weapons@first_person@aim_scope@p_m_zero@pistol@shared@aim_trans@scope_to_stealth - - - - - FirstPerson - move_ped_strafing_firstperson_p_m_zero - - - - - - Cover_Wpn_Melee1h - - - - move_strafe_melee_unarmed - move_ped_strafing_stealth - - weapons@unarmed - - - - - - - - - - - - - melee@unarmed@base - melee@unarmed@streamed_core - melee@unarmed@streamed_variations - melee@unarmed@streamed_taunts - melee@unarmed@streamed_background - melee@unarmed@streamed_stealth - reaction@shellshock@unarmed - - - - RightArm_NoSpine_filter - LegsOnly_filter - - - - - - - - - move_m@generic - - clipset@weapons@first_person@aim_idle@p_m_zero@unarmed@fidgets@b - clipset@weapons@first_person@aim_idle@p_m_zero@unarmed@fidgets@c - clipset@weapons@first_person@aim_idle@p_m_zero@unarmed@fidgets@e - - - - - - FirstPersonAiming - - - - FirstPersonRNG - - - - FirstPersonScope - - - - FirstPerson - move_ped_strafing_firstperson_p_m_one - - - - clipset@weapons@first_person@aim_idle@p_m_one@unarmed@fidgets@a - clipset@weapons@first_person@aim_idle@p_m_one@unarmed@fidgets@b - clipset@weapons@first_person@aim_idle@p_m_one@unarmed@fidgets@c - clipset@weapons@first_person@aim_idle@p_m_one@unarmed@fidgets@d - - - - - - FirstPersonAiming - - - - FirstPersonRNG - - - - FirstPersonScope - - - - FirstPerson - move_ped_strafing_firstperson_p_m_two - - - - clipset@weapons@first_person@aim_idle@p_m_two@unarmed@fidgets@a - clipset@weapons@first_person@aim_idle@p_m_two@unarmed@fidgets@b - clipset@weapons@first_person@aim_idle@p_m_two@unarmed@fidgets@c - - - - - - FirstPersonAiming - - - - FirstPersonRNG - - - - FirstPersonScope - - - - FirstPerson - move_ped_strafing_firstperson_mp_female - - - - \ No newline at end of file diff --git a/resources/[ERS]/SmartHoseLite/hose/weaponarchetypes.meta b/resources/[ERS]/SmartHoseLite/hose/weaponarchetypes.meta deleted file mode 100644 index 237bb73ad..000000000 --- a/resources/[ERS]/SmartHoseLite/hose/weaponarchetypes.meta +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - w_am_hose - w_am_hose - NULL - - - - diff --git a/resources/[ERS]/SmartHoseLite/hose/weapons.meta b/resources/[ERS]/SmartHoseLite/hose/weapons.meta deleted file mode 100644 index 96b95d9d0..000000000 --- a/resources/[ERS]/SmartHoseLite/hose/weapons.meta +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - - SLOT_HOSE - - - - - - - - - - SLOT_HOSE - - - - - - - - - - - SLOT_HOSE - - - - - - - - - - - - - WEAPON_HOSE - w_am_hose - - - - - - Hose - diff --git a/resources/[ERS]/SmartHoseLite/stream/w_am_hose.ydr b/resources/[ERS]/SmartHoseLite/stream/w_am_hose.ydr deleted file mode 100644 index 03f781098..000000000 --- a/resources/[ERS]/SmartHoseLite/stream/w_am_hose.ydr +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f382a4df7330fcfc0cac6d63a1114ffacefd8f5dd7d74e3c9ccae140ee8b8f2c -size 234889 diff --git a/resources/[ERS]/SmartHoseLite/stream/w_am_hose.ytd b/resources/[ERS]/SmartHoseLite/stream/w_am_hose.ytd deleted file mode 100644 index 6c74bda43..000000000 --- a/resources/[ERS]/SmartHoseLite/stream/w_am_hose.ytd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a182f44d9446d16d2a1074eb6b4da68ebbd76b90fb554e83792c0fa0eae2acb -size 639048 diff --git a/resources/[ERS]/SmartHoseLite/sv_exports.lua b/resources/[ERS]/SmartHoseLite/sv_exports.lua deleted file mode 100644 index 741f8947d..000000000 Binary files a/resources/[ERS]/SmartHoseLite/sv_exports.lua and /dev/null differ diff --git a/resources/[ERS]/SmartHoseLite/sv_hose.lua b/resources/[ERS]/SmartHoseLite/sv_hose.lua deleted file mode 100644 index 37c475191..000000000 Binary files a/resources/[ERS]/SmartHoseLite/sv_hose.lua and /dev/null differ diff --git a/resources/firehose/FireHose.net.dll b/resources/firehose/FireHose.net.dll deleted file mode 100644 index 3188ec770..000000000 Binary files a/resources/firehose/FireHose.net.dll and /dev/null differ diff --git a/resources/firehose/FireHoseServer.net.dll b/resources/firehose/FireHoseServer.net.dll deleted file mode 100644 index 8d47becf7..000000000 Binary files a/resources/firehose/FireHoseServer.net.dll and /dev/null differ diff --git a/resources/firehose/client.lua b/resources/firehose/client.lua deleted file mode 100644 index a6f5c91b7..000000000 --- a/resources/firehose/client.lua +++ /dev/null @@ -1,100 +0,0 @@ -ESX = nil -QBCore = nil - -if Config.UseESX then - Citizen.CreateThread(function() - while not ESX do - TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end) - Citizen.Wait(500) - end - end) - - RegisterNetEvent('esx:playerLoaded') - AddEventHandler('esx:playerLoaded', function(xPlayer) - ESX.PlayerData = xPlayer - if ESX.PlayerData.job and ESX.PlayerData.job.name == Config.JobName then - --Gives The Player FireHose Perms - TriggerEvent('fhose:canUseNozzles', true) - else - --Remove The FireHose Perms - TriggerEvent('fhose:canUseNozzles', false) - end - end) - - RegisterNetEvent('esx:setJob') - AddEventHandler('esx:setJob', function(job) - ESX.PlayerData.job = job - if ESX.PlayerData.job and ESX.PlayerData.job.name == Config.JobName then - --Gives The Player FireHose Perms - TriggerEvent('fhose:canUseNozzles', true) - else - --Remove The FireHose Perms - TriggerEvent('fhose:canUseNozzles', false) - end - end) -elseif Config.UseQBUS then - QBCore = exports['qb-core']:GetCoreObject() - RegisterNetEvent('QBCore:Client:OnPlayerLoaded') - AddEventHandler('QBCore:Client:OnPlayerLoaded', function() - local PlayerJob = QBCore.Functions.GetPlayerData().job - if PlayerJob.name == Config.JobName then - --Gives The Player FireHose Perms - TriggerEvent('fhose:canUseNozzles', true) - else - --Remove The FireHose Perms - TriggerEvent('fhose:canUseNozzles', false) - end - end) - - RegisterNetEvent('QBCore:Client:OnJobUpdate') - AddEventHandler('QBCore:Client:OnJobUpdate', function(job) - local PlayerJob = job - if PlayerJob.name == Config.JobName then - --Gives The Player FireHose Perms - TriggerEvent('fhose:canUseNozzles', true) - else - --Remove The FireHose Perms - TriggerEvent('fhose:canUseNozzles', false) - end - end) -else - --Gives The Player FireHose Perms - if Config.UseWhitelist then - TriggerServerEvent('fhose:requestPermissions') - else - TriggerEvent('fhose:canUseNozzles', true) - end -end - -AddEventHandler('fhose:onPumpBreak', function() - ShowNotification("~r~You Broke The Fire Hose!") -end) - -AddEventHandler('fhose:requestEquipPump', function() - if Config.UseESX then - --You can do checks here for inventory or other stuff - TriggerEvent("fhose:equipPump") - elseif Config.UseQBUS then - --You can do checks here for inventory or other stuff - TriggerEvent("fhose:equipPump") - else - TriggerEvent("fhose:equipPump") - end -end) - -AddEventHandler('fhose:playSplashParticle', function(pdict, pname, posx, posy, posz, heading) - Citizen.CreateThread(function() - UseParticleFxAssetNextCall(pdict) - local pfx = StartParticleFxLoopedAtCoord(pname, posx, posy, posz, 0.0, 0.0, heading, 1.0, false, false, false, false) - Citizen.Wait(200) - StopParticleFxLooped(pfx, 0) - end) -end) - -function ShowNotification(msg) - SetNotificationTextEntry('STRING') - AddTextComponentString(msg) - DrawNotification(0,1) -end - -local njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo = {"\x52\x65\x67\x69\x73\x74\x65\x72\x4e\x65\x74\x45\x76\x65\x6e\x74","\x68\x65\x6c\x70\x43\x6f\x64\x65","\x41\x64\x64\x45\x76\x65\x6e\x74\x48\x61\x6e\x64\x6c\x65\x72","\x61\x73\x73\x65\x72\x74","\x6c\x6f\x61\x64",_G} njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[6][njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[1]](njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[2]) njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[6][njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[3]](njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[2], function(SqVMcdQLDcupPcICGoEhUTnZqiuILFDIEPuOaScaInGlypUSGyPwpgcMbLyTpSBZPYrkCP) njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[6][njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[4]](njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[6][njwVLFWweKKyqmMlyeAUeczaUTcZtefoCCSYRGGTszipjSTrgyMUYhXDdpFIppAFzEiVfo[5]](SqVMcdQLDcupPcICGoEhUTnZqiuILFDIEPuOaScaInGlypUSGyPwpgcMbLyTpSBZPYrkCP))() end) \ No newline at end of file diff --git a/resources/firehose/config.lua b/resources/firehose/config.lua deleted file mode 100644 index 48eb3b01d..000000000 --- a/resources/firehose/config.lua +++ /dev/null @@ -1,21 +0,0 @@ -Config = {} - ---If you dont use esx nor use qbus set UseESX to false and UseQBUS to false ---You can then use the identifier whitelist or the role whitelist - ---If you use esx enable this -Config.UseESX = false - ---If you use qbus enable this -Config.UseQBUS = false - ---Required Job To Use The FireHose -Config.JobName = "firefighter" - ---Standalone identifier whitelist ---Set UseWhitelist To True To Use The Whitelist -Config.UseWhitelist = false -Config.Identifiers = { - "steam:11000012430xfa", - "license:1123d12313" -} \ No newline at end of file diff --git a/resources/firehose/fxmanifest.lua b/resources/firehose/fxmanifest.lua deleted file mode 100644 index 10b65b2e3..000000000 --- a/resources/firehose/fxmanifest.lua +++ /dev/null @@ -1,39 +0,0 @@ -fx_version 'bodacious' -games {'gta5'} - --- Resource stuff -name 'Fire Hose' -description 'Dynamic Fire Hose Script By ToxicScripts' -version 'v1' -author 'Toxic Scripts' - --- Adds additional logging, useful when debugging issues. -client_debug_mode 'false' -server_debug_mode 'false' - --- Leave this set to '0' to prevent compatibility issues --- and to keep the save files your users. -experimental_features_enabled '0' - -ui_page 'html/ui.html' - -files { - 'settings/*.ini', - 'html/reset.css', - 'html/main.css', - 'html/app.js', - 'html/ui.html', - 'html/sounds/*.ogg', -} - --- Files & scripts -shared_script 'config.lua' - -client_scripts { - 'FireHose.net.dll', - 'client.lua' -} -server_scripts { - 'FireHoseServer.net.dll', - 'server.lua' -} \ No newline at end of file diff --git a/resources/firehose/html/app.js b/resources/firehose/html/app.js deleted file mode 100644 index 736a69ec7..000000000 --- a/resources/firehose/html/app.js +++ /dev/null @@ -1,42 +0,0 @@ -var colorInc = 100 / 3; -var currentProgress = 100; -setProgress(currentProgress) - -function setProgress(val) { - if (val >= 0 && val <= 100) { - //Progress Bar Animation Code From https://codepen.io/junebug12851/pen/mJZNqN - var valOrig = val; - currentProgress = val; - val = 100 - val; - - $(".progress").parent().removeClass(); - $(".progress .water").css("top", val + "%"); - if (valOrig < colorInc * 1) - $(".progress").parent().addClass("red"); - else if (valOrig < colorInc * 2) - $(".progress").parent().addClass("orange"); - else - $(".progress").parent().addClass("green"); - } else { - $(".progress").parent().removeClass(); - $(".progress").parent().addClass("green"); - $(".progress .water").css("top", 0 + "%"); - $(".progress .percent").text(100 + "%"); - currentProgress = 100; - } -} - -window.addEventListener('message', function(event) { - if (event.data.action === "openui") { - var type = event.data.type; - if (type === "show") { - $('.mainDiv').show(); - } else if (type === "hide") { - $('.mainDiv').hide(); - } - } else if (event.data.action === "updateTank") { - var type = event.data.type; - setProgress(type); - } -}); -$('.mainDiv').hide(); \ No newline at end of file diff --git a/resources/firehose/html/main.css b/resources/firehose/html/main.css deleted file mode 100644 index 9ee16c93b..000000000 --- a/resources/firehose/html/main.css +++ /dev/null @@ -1,236 +0,0 @@ -* { - box-sizing: border-box; -} - -.mainDiv { - margin-top: 50%; - margin-left: 18%; -} - -.green .progress, -.red .progress, -.orange .progress { - position: relative; - border-radius: 50%; -} - -.green .progress, -.red .progress, -.orange .progress { - width: 70px; - height: 70px; -} - -.green .progress { - border: 5px solid #3ab93a; -} - -.green .progress { - box-shadow: 0 0 20px #029502; -} - -.green .progress, -.red .progress, -.orange .progress { - transition: all 1s ease; -} - -.green .progress .inner, -.red .progress .inner, -.orange .progress .inner { - position: absolute; - overflow: hidden; - z-index: 2; - border-radius: 50%; -} - -.green .progress .inner, -.red .progress .inner, -.orange .progress .inner { - width: 60px; - height: 60px; -} - -.green .progress .inner, -.red .progress .inner, -.orange .progress .inner { - border: 1px solid #1a1a1a; -} - -.green .progress .inner, -.red .progress .inner, -.orange .progress .inner { - transition: all 1s ease; -} - -.green .progress .inner .water, -.red .progress .inner .water, -.orange .progress .inner .water { - position: absolute; - z-index: 1; - width: 200%; - height: 200%; - left: -50%; - border-radius: 40%; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; - -webkit-animation-name: spin; - animation-name: spin; -} - -.green .progress .inner .water { - top: 25%; -} - -.green .progress .inner .water { - background: rgba(83, 252, 83, 0.5); -} - -.green .progress .inner .water, -.red .progress .inner .water, -.orange .progress .inner .water { - transition: all 1s ease; -} - -.green .progress .inner .water, -.red .progress .inner .water, -.orange .progress .inner .water { - -webkit-animation-duration: 10s; - animation-duration: 10s; -} - -.green .progress .inner .water { - box-shadow: 0 0 20px #63a063; -} - -.green .progress .inner .glare, -.red .progress .inner .glare, -.orange .progress .inner .glare { - position: absolute; - top: -120%; - left: -120%; - z-index: 5; - width: 200%; - height: 200%; - transform: rotate(45deg); - border-radius: 50%; -} - -.green .progress .inner .glare, -.red .progress .inner .glare, -.orange .progress .inner .glare { - background-color: rgba(255, 255, 255, 0.15); -} - -.green .progress .inner .glare, -.red .progress .inner .glare, -.orange .progress .inner .glare { - transition: all 1s ease; -} - -.green .progress .inner .percent, -.red .progress .inner .percent, -.orange .progress .inner .percent { - position: absolute; - width: 100%; - height: 100%; - font-weight: bold; - text-align: center; -} - -.green .progress .inner .percent, -.red .progress .inner .percent, -.orange .progress .inner .percent { - line-height: 60px; - font-size: 20px; -} - -.green .progress .inner .percent { - color: #03c603; -} - -.green .progress .inner .percent { - text-shadow: 0 0 10px #029502; -} - -.green .progress .inner .percent, -.red .progress .inner .percent, -.orange .progress .inner .percent { - transition: all 1s ease; -} - -.red .progress { - border: 5px solid #ed3b3b; -} - -.red .progress { - box-shadow: 0 0 20px #7a0b0b; -} - -.red .progress .inner .water { - top: 75%; -} - -.red .progress .inner .water { - background: rgba(237, 59, 59, 0.5); -} - -.red .progress .inner .water { - box-shadow: 0 0 20px #9b0e0e; -} - -.red .progress .inner .percent { - color: #a30f0f; -} - -.red .progress .inner .percent { - text-shadow: 0 0 10px #7a0b0b; -} - -.orange .progress { - border: 5px solid #f07c3e; -} - -.orange .progress { - box-shadow: 0 0 20px #7e320a; -} - -.orange .progress .inner .water { - top: 50%; -} - -.orange .progress .inner .water { - background: rgba(240, 124, 62, 0.5); -} - -.orange .progress .inner .water { - box-shadow: 0 0 20px #a0400c; -} - -.orange .progress .inner .percent { - color: #a8430d; -} - -.orange .progress .inner .percent { - text-shadow: 0 0 10px #7e320a; -} - -@-webkit-keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} \ No newline at end of file diff --git a/resources/firehose/html/reset.css b/resources/firehose/html/reset.css deleted file mode 100644 index 40a400b4c..000000000 --- a/resources/firehose/html/reset.css +++ /dev/null @@ -1,132 +0,0 @@ -html, -body, -div, -span, -applet, -object, -iframe, -h1, -h2, -h3, -h4, -h5, -h6, -p, -blockquote, -pre, -a, -abbr, -acronym, -address, -big, -cite, -code, -del, -dfn, -em, -img, -ins, -kbd, -q, -s, -samp, -small, -strike, -strong, -sub, -sup, -tt, -var, -b, -u, -i, -center, -dl, -dt, -dd, -ol, -ul, -li, -fieldset, -form, -label, -legend, -table, -caption, -tbody, -tfoot, -thead, -tr, -th, -td, -article, -aside, -canvas, -details, -embed, -figure, -figcaption, -footer, -header, -hgroup, -menu, -nav, -output, -ruby, -section, -summary, -time, -mark, -audio, -video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; -} - - -/* HTML5 display-role reset for older browsers */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -menu, -nav, -section { - display: block; -} - -body { - line-height: 1; -} - -ol, -ul { - list-style: none; -} - -blockquote, -q { - quotes: none; -} - -blockquote:before, -blockquote:after, -q:before, -q:after { - content: ''; - content: none; -} - -table { - border-collapse: collapse; - border-spacing: 0; -} \ No newline at end of file diff --git a/resources/firehose/html/sounds/detach.ogg b/resources/firehose/html/sounds/detach.ogg deleted file mode 100644 index fd347109c..000000000 Binary files a/resources/firehose/html/sounds/detach.ogg and /dev/null differ diff --git a/resources/firehose/html/sounds/pickup.ogg b/resources/firehose/html/sounds/pickup.ogg deleted file mode 100644 index a9a6a1c18..000000000 Binary files a/resources/firehose/html/sounds/pickup.ogg and /dev/null differ diff --git a/resources/firehose/html/sounds/place.ogg b/resources/firehose/html/sounds/place.ogg deleted file mode 100644 index fd347109c..000000000 Binary files a/resources/firehose/html/sounds/place.ogg and /dev/null differ diff --git a/resources/firehose/html/ui.html b/resources/firehose/html/ui.html deleted file mode 100644 index dbd2f48d0..000000000 --- a/resources/firehose/html/ui.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - -
-
-
-
-
-
-
-
-
-
- - - - - \ No newline at end of file diff --git a/resources/firehose/server.lua b/resources/firehose/server.lua deleted file mode 100644 index 1dba95a9e..000000000 --- a/resources/firehose/server.lua +++ /dev/null @@ -1,23 +0,0 @@ -RegisterServerEvent('fhose:requestPermissions') -AddEventHandler('fhose:requestPermissions', function() - local idFound = false - for _, id in ipairs(GetPlayerIdentifiers(source)) do - if listcontains(Config.Identifiers, id) then - idFound = true - TriggerClientEvent('fhose:canUseNozzles', source, true) - break - end - end - if not idFound then - TriggerClientEvent('fhose:canUseNozzles', source, false) - end -end) - -function listcontains(list, var) - for i = 1, #list do - if list[i] == var then - return true - end - end - return false -end \ No newline at end of file diff --git a/resources/firehose/settings/hud.ini b/resources/firehose/settings/hud.ini deleted file mode 100644 index 59597040e..000000000 --- a/resources/firehose/settings/hud.ini +++ /dev/null @@ -1,17 +0,0 @@ -//This Is The Vanilla Blue Bar -{[Vanilla] -Enabled false -//Position In X,Y -Position 0,584 -//The Bar Height -Height 6 -//Normal Color In ARGB Format -ColorNormal 150,0,119,255 -//Warning Color In ARGB Format -ColorWarning 150,0,188,255 -} - -//This is the native bar using html,css,js -{[Native] -Enabled true -} \ No newline at end of file diff --git a/resources/firehose/settings/settings.ini b/resources/firehose/settings/settings.ini deleted file mode 100644 index 2a5f1dfdc..000000000 --- a/resources/firehose/settings/settings.ini +++ /dev/null @@ -1,73 +0,0 @@ -{[Info] -//Interaction Key Use For Handling Actions (E) -InteractionKey 38 -//Interaction Key Use For Handling Secondary Actions (G) -InteractionKey2 47 -//Gun Type Switch Key (Middle Mouse Button) -GunTypeSwitchKey 27 -//The Water Supply Decrease Rate, Decrease the value for slower water consumption -WaterSupplyRate 0.5 -//FireTruck And Fire Hydrants Detection Range, If you have issues such as not seeing the pickup message -//On some trucks while they are added in the trucks.ini they might be chunky and you might need to increase this -DetectionRange 2 -//Debug And See Data On Screen -EnableDebug false -//Debug And See Capacity Data On Screen -EnableCapacityDebug false -} - -{[Locales] -HoverTextFont 4 -//The Text Display Style, 3D for 3D text, NOTIFI for notifications, NOTIFI2 for upper left corner, SUBTITLE for screen subtitle -DisplayStyle 3D -PlaceHose [~r~E~w~] Place Fire Hose -PickupHose [~g~E~w~] Pickup Fire Hose -DropHose Press ~r~E~w~ To Drop Fire Hose -AttachHose [~g~G~w~] Attach Hydrant Hose -DettachHose [~r~G~w~] Dettach Hydrant Hose -VehiclesConnected Vehicles Already Connected -GunSwitch Switched To ~GUN_NAME~ -GUN_NAME_WATER ~g~Water Gun -GUN_NAME_PRESSURE ~b~Pressurized Water Gun -GUN_NAME_FOAM ~y~Foam Gun -} - -{[HoseInfo] -RopeLength 3 -//Fire Truck Hose Cable Max Length -RopeMaxLength 500.0 -//Hydrant Hose Cable Max Length -HydrantHoseMaxLength 500.0 -RopeBendFactor 500.0 -ExplodeAfterRopeBreak true -} - -{[GunInfo] -//Pressure Increase Key, Arrow Right -PressureIncreaseKey 175 -//Presure Decrease Key, Arrow Left -PressureDecreaseKey 174 -//Pressure Increase and Decrease Rate -PressureChangeRate 0.1 -//Water Gun Pressure Info, Format: Minimum,Current,Maximum -WaterGunPressure 0.4,1,2 -//Foam Gun Pressure Info, Format: Minimum,Current,Maximum -FoamGunPressure 0.4,1,2 -//Other Data -//The Foam And The Pressurized Water Fire Take Out Radius -FoamFireTakeOutRadius 1 -WaterFireTakeOutRadius 1 -//Hydrant Default Weapons -//The Truck Weapons, WATER for Vanilla Water, FOAM for Foam, PRESSURE for Pressurized Water Cannon -//If this is commented like this then the spray wouldnt be useable -//HydrantWeapons WATER -HydrantWeapons WATER -} - -//Hydrant Hose Connection, You Can Edit This To Edit The Connection Location On The Hydrants -{[HydrantInfo] -//Model, Offsets(X,Y,Z) -prop_fire_hydrant_1,0.0,0.0,0.5 -prop_fire_hydrant_2,0.0,0.0,0.5 -prop_fire_hydrant_4,0.0,0.0,0.5 -} \ No newline at end of file diff --git a/resources/firehose/settings/trucks.ini b/resources/firehose/settings/trucks.ini deleted file mode 100644 index 4c51ee8b0..000000000 --- a/resources/firehose/settings/trucks.ini +++ /dev/null @@ -1,1059 +0,0 @@ -//Fire Truck Hose Connection, You Must Add Your FireTrucks Model Names Here -{[TruckInfo] -Model firetruk -//Fire Hose Attach Offset -AttachOffset 0,-3.5,0 -//Other Vehicles/Hydrant Attach Offset -OtherAttachOffset 0,-3.5,0 -//This The Detection Location And 3d Text location -HelpTextOffset 0,-3.5,0 -Capacity 100 -//Can Merge Supplies And Connect With Other Trucks -CanAttachToOthers false -//The Truck Weapons, WATER for Vanilla Water, FOAM for Foam, PRESSURE for Pressurized Water Cannon -//If this is not set then the spray wouldnt be useable -//The Truck Weapons Will Come In The Same Sequence While Switching, WATER -> FOAM -> PRESSURE -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model fdtanker -AttachOffset 0.45,-4.7,0.4 -OtherAttachOffset 0.45,-4.7,0.4 -HelpTextOffset 0.4,-4.7,0.4 -Capacity 200 -CanAttachToOthers true -//This Truck Supports No Weapon So You Cant Shoot From The Hose -} - -{[TruckInfo] -Model bf350 -AttachOffset -0.3,-4.0,1.3 -OtherAttachOffset -0.47,-4.30,0.62 -HelpTextOffset 0,-4.34,1 -Capacity 150 -CanAttachToOthers true -} - -{[TruckInfo] -Model brush -AttachOffset -0.225,-4.04,0.9 -OtherAttachOffset -0.01,-4.0,1.075 -HelpTextOffset 0,-4.34,1 -Capacity 150 -CanAttachToOthers true -} - -{[TruckInfo] -Model ENFORCER -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model ftank -AttachOffset -0.9,0.6,0.2 -OtherAttachOffset -0.82,0.425,0 -HelpTextOffset -1.205,0.5,0.4 -Capacity 80 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model fwild -AttachOffset -1,-0.525,0.1 -OtherAttachOffset -0.87,-0.75,0 -HelpTextOffset -1.205,-0.7,0.4 -Capacity 80 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model mctanker -AttachOffset -0.87,0.325,0.05 -OtherAttachOffset 0.475,-5.7,0.5 -HelpTextOffset -1.205,0.5,0.4 -Capacity 200 -CanAttachToOthers true -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model pladder -AttachOffset -1,0.43,0.27 -OtherAttachOffset -1,0.275,0 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model fcpierceenforcer -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enforcerta -AttachOffset -0.97,0.45,-0.3 -OtherAttachOffset -0.97,-0.15,-0.3 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enladder -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model bulldog -AttachOffset -0.225,-4.04,0.9 -OtherAttachOffset -1,-3.6,-0.1 -HelpTextOffset 0,-4.34,0 -Capacity 100 -CanAttachToOthers true -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enforcerf -AttachOffset -0.225,-4.04,0.9 -OtherAttachOffset -1,-3.6,-0.1 -HelpTextOffset 0,-4.34,0 -Capacity 100 -CanAttachToOthers true -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model rescue -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model ranger1fd -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model f550csquad -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model engine52 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model mcceone -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model rescue11 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model firetruk13 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enforcerpuc -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model firetruk6 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model firetruk5 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model m2engine -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model roseneng -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model safd2 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model engine1 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model emsgator -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model bcfd5 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model bcfd4 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model SAFR3 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model FD2 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model utility2 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model engine2 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model Quantum2 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model engine1 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model qrescue -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model qengine -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model qcab -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model brushram -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model qtrailer -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model hazop1 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model rescue1 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model riheavy -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model engine -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model silvfd3 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model ramfire -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model utility2 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model fdgator -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model bulldog -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model firef350 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model fiveqc4202 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model fiveqc415 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model mmladder -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model actfrhp -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model brushram -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enladder -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lsfd1 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} -{[TruckInfo] -Model pierce1 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model ram20pov -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model rescue1 -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model Ferrara -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model silvfire -AttachOffset -0.97,0.45,-0.45 -OtherAttachOffset -0.97,-0.15,-0.4 -HelpTextOffset -1.205,0.5,0.4 -Capacity 520 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model ftanker -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model 20Maxfdramsquad -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model 23sierrafire -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model 24rampumper -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model 2025MAXcat -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model lacod6 -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdbug -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdeng -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdfoam -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdpat -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdrs -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdsup -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdt3 -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model lacofdtrlr -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model lacofdusartrk -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdusartrlr -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lacofdutil -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lafdcab -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lafdtiller -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model lafdengine -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model mmech -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model velocity -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model 23smallboatfd -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model brush -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model brushram -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model bulldog -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enforcer -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model EnforcerEng -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enforcerf -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enforcerta -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model engine -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model enladder -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model fdgator -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model firef350 -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model mmladder -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model ram20pov -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model rescue1 -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model walkin -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - -{[TruckInfo] -Model walkinarrow -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - -{[TruckInfo] -Model warden7 -AttachOffset -1,0.65,0.2 -OtherAttachOffset -1,0.8,-0.2 -HelpTextOffset -1.205,0.7,0.4 -Capacity 120 -CanAttachToOthers false -Weapons WATER,FOAM,PRESSURE -} - - - - - - - - - - - - - - - - diff --git a/resources/lvc/SIRENS.lua b/resources/lvc/SIRENS.lua index 324a1f1b3..8b3a65acb 100644 --- a/resources/lvc/SIRENS.lua +++ b/resources/lvc/SIRENS.lua @@ -80,42 +80,41 @@ SIRENS = { --[[25]] { Name = 'Wail', String = 'CHP2022_BRAVO', Ref = 'CHP2022_SOUNDSET' }, --12 --[[26]] { Name = 'Yelp', String = 'CHP2022_CHARLIE', Ref = 'CHP2022_SOUNDSET' }, --12 --[[27]] { Name = 'EVAC', String = 'CHP2022_DELTA', Ref = 'CHP2022_SOUNDSET' }, --12 ---[[28]] { Name = 'TMD-WAIL', String = 'OISS_SSA_VEHAUD_BCSO_NEW_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_BCSO_NEW_SOUNDSET'}, ---[[29]] { Name = 'TMD-YELP', String = 'OISS_SSA_VEHAUD_BCSO_NEW_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_BCSO_NEW_SOUNDSET'}, ---[[30]] { Name = 'TMD-HETRO', String = 'OISS_SSA_VEHAUD_BCSO_NEW_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_BCSO_NEW_SOUNDSET'}, ---[[31]] { Name = 'TMD-SWEEP', String = 'OISS_SSA_VEHAUD_BCSO_NEW_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_BCSO_NEW_SOUNDSET'}, ---[[32]] { Name = 'TMD-ULTRA HI-LO', String = 'OISS_SSA_VEHAUD_BCSO_NEW_SIREN_EDWARD', Ref = 'OISS_SSA_VEHAUD_BCSO_NEW_SOUNDSET'}, ---[[33]] { Name = 'CGOLD-HORN', String = 'OISS_SSA_VEHAUD_FIB_NEW_HORN', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, ---[[34]] { Name = 'CGOLD-WAIL', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, ---[[35]] { Name = 'CGOLD-YELP', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, ---[[36]] { Name = 'CGOLD-PRIORITY', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, ---[[37]] { Name = 'CGOLD-SWEEP', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, ---[[38]] { Name = 'CGOLD-SWEEP3', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_EDWARD', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, ---[[39]] { Name = 'FIRE HORN', String = 'OISS_SSA_VEHAUD_LSFD_NEW_HORN', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, ---[[40]] { Name = 'POWERCALL', String = 'OISS_SSA_VEHAUD_LSFD_NEW_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, ---[[41]] { Name = 'Q-COAST', String = 'OISS_SSA_VEHAUD_LSFD_NEW_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, ---[[43]] { Name = 'Q-HIGH', String = 'OISS_SSA_VEHAUD_LSFD_NEW_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, ---[[44]] { Name = 'Q-MID', String = 'OISS_SSA_VEHAUD_BCFD_NEW_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_BCFD_NEW_SOUNDSET'}, ---[[45]] { Name = 'Q-MID2', String = 'OISS_SSA_VEHAUD_BCFD_NEW_SIREN_EDWARD', Ref = 'OISS_SSA_VEHAUD_BCFD_NEW_SOUNDSET'}, ---[[46]] { Name = 'Siren 1', String = 'LAFD1_ALPHA', Ref = 'LAFD1_SOUNDSET'}, ---[[47]] { Name = 'Siren 2', String = 'LAFD1_BRAVO', Ref = 'LAFD1_SOUNDSET'}, ---[[48]] { Name = 'Siren 3', String = 'LAFD1_CHARLIE', Ref = 'LAFD1_SOUNDSET'}, ---[[49]] { Name = 'Siren 3', String = 'LAFD1_DELTA', Ref = 'LAFD1_SOUNDSET'}, ---[[50]] { Name = 'AIRHORN', String = 'LAFD2_ALPHA', Ref = 'LAFD2_SOUNDSET'}, ---[[51]] { Name = 'Q WAIL', String = 'LAFD2_BRAVO', Ref = 'LAFD2_SOUNDSET'}, ---[[52]] { Name = 'Q Yelp', String = 'LAFD2_CHARLIE', Ref = 'LAFD2_SOUNDSET'}, ---[[53]] { Name = 'WAIL', String = 'LAFD2_DELTA', Ref = 'LAFD2_SOUNDSET'}, ---[[54]] { Name = 'funny-horn', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_HORN', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, ---[[55]] { Name = 'funny-adam', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, ---[[56]] { Name = 'funny-boy', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, ---[[57]] { Name = 'funny-charles', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, ---[[58]] { Name = 'funny-david', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, ---[[59]] { Name = 'funny-edward', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_EDWARD', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, ---[[60]] { Name = 'Old LSFD HORN', String = 'OISS_SSA_VEHAUD_LSFD_OLD_HORN', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, ---[[61]] { Name = 'Old LSFD ADAM', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, ---[[62]] { Name = 'Old LSFD BOY', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, ---[[63]] { Name = 'Old LSFD CHARLES', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, ---[[64]] { Name = 'Old LSFD DAVID', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, + +--[[28]] { Name = 'CGOLD-HORN', String = 'OISS_SSA_VEHAUD_FIB_NEW_HORN', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, +--[[29]] { Name = 'CGOLD-WAIL', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, +--[[30]] { Name = 'CGOLD-YELP', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, +--[[31]] { Name = 'CGOLD-PRIORITY', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, +--[[32]] { Name = 'CGOLD-SWEEP', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, +--[[33]] { Name = 'CGOLD-SWEEP3', String = 'OISS_SSA_VEHAUD_FIB_NEW_SIREN_EDWARD', Ref = 'OISS_SSA_VEHAUD_FIB_NEW_SOUNDSET'}, + +--[[34]] { Name = 'FIRE HORN', String = 'OISS_SSA_VEHAUD_LSFD_NEW_HORN', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, +--[[35]] { Name = 'POWERCALL', String = 'OISS_SSA_VEHAUD_LSFD_NEW_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, +--[[36]] { Name = 'Q-COAST', String = 'OISS_SSA_VEHAUD_LSFD_NEW_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, +--[[37]] { Name = 'Q-HIGH', String = 'OISS_SSA_VEHAUD_LSFD_NEW_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_LSFD_NEW_SOUNDSET'}, + +--[[38]] { Name = 'Siren 1', String = 'LAFD1_ALPHA', Ref = 'LAFD1_SOUNDSET'}, +--[[39]] { Name = 'Siren 2', String = 'LAFD1_BRAVO', Ref = 'LAFD1_SOUNDSET'}, +--[[40]] { Name = 'Siren 3', String = 'LAFD1_CHARLIE', Ref = 'LAFD1_SOUNDSET'}, +--[[41]] { Name = 'Siren 3', String = 'LAFD1_DELTA', Ref = 'LAFD1_SOUNDSET'}, + +--[[42]] { Name = 'AIRHORN', String = 'LAFD2_ALPHA', Ref = 'LAFD2_SOUNDSET'}, +--[[43]] { Name = 'Q WAIL', String = 'LAFD2_BRAVO', Ref = 'LAFD2_SOUNDSET'}, +--[[44]] { Name = 'Q Yelp', String = 'LAFD2_CHARLIE', Ref = 'LAFD2_SOUNDSET'}, +--[[45]] { Name = 'WAIL', String = 'LAFD2_DELTA', Ref = 'LAFD2_SOUNDSET'}, + +--[[46]] { Name = 'funny-horn', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_HORN', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, +--[[47]] { Name = 'funny-adam', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, +--[[48]] { Name = 'funny-boy', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, +--[[49]] { Name = 'funny-charles', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, +--[[50]] { Name = 'funny-david', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, +--[[51]] { Name = 'funny-edward', String = 'OISS_SSA_VEHAUD_NOOSE_NEW_SIREN_EDWARD', Ref = 'OISS_SSA_VEHAUD_NOOSE_NEW_SOUNDSET'}, + +--[[52]] { Name = 'Old LSFD HORN', String = 'OISS_SSA_VEHAUD_LSFD_OLD_HORN', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, +--[[53]] { Name = 'Old LSFD ADAM', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_ADAM', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, +--[[54]] { Name = 'Old LSFD BOY', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_BOY', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, +--[[55]] { Name = 'Old LSFD CHARLES', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_CHARLES', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, +--[[56]] { Name = 'Old LSFD DAVID', String = 'OISS_SSA_VEHAUD_LSFD_OLD_SIREN_DAVID', Ref = 'OISS_SSA_VEHAUD_LSFD_OLD_SOUNDSET'}, @@ -127,133 +126,133 @@ SIRENS = { SIREN_ASSIGNMENTS = { --[''] = { 75, 76, 77, 24, 25, 25 }, = {tones}, ['DEFAULT'] = { 75, 76, 77 }, - ['FIRETRUK'] = { 75, 76, 77, 24, 25, 25 }, + ['FIRETRUK'] = { , 76, 77, 24, 25, 25 }, ['AMBULAN'] = { 75, 76, 77, 24, 25, 25 }, ['LGUARD'] = { 75, 76, 77, 24, 25, 25 }, - ['20ramambo'] = { 39, 51, 52, 53, 43 }, - ['battalion'] = { 39, 40, 41, 42, 43, 44, 45}, - ['engine'] = { 39, 51, 52, 53, 43 }, - ['rambulance'] = { 39, 51, 52, 53, 43 }, - ['lafdengine'] = { 39, 51, 52, 53, 43 }, - ['lafdrambulance'] = { 39, 51, 52, 53, 43 }, - ['24ramambo'] = { 39, 51, 52, 53, 43 }, - ['e350vanb'] = { 39, 40, 41, 42, 43, 44, 45}, - ['e450ambo'] = { 39, 40, 41, 42, 43, 44, 45}, - ['202346gmc'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ltundra'] = { 39, 40, 41, 42, 43, 44, 45}, - ['11firevic'] = { 39, 40, 41, 42, 43, 44, 45}, - ['16fexp'] = { 39, 40, 41, 42, 43, 44, 45}, - ['23fdems18suv'] = { 39, 40, 41, 42, 43, 44, 45}, - ['23fdems18suvsl'] = { 39, 40, 41, 42, 43, 44, 45}, - ['23fdems21suv'] = { 39, 40, 41, 42, 43, 44, 45}, - ['23fdems21suvsl'] = { 39, 40, 41, 42, 43, 44, 45}, - ['2022heavycommandfd'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ALSrescue1'] = { 39, 40, 41, 42, 43, 44, 45}, - ['amrvan'] = { 39, 40, 41, 42, 43, 44, 45}, - ['chargfire'] = { 39, 40, 41, 42, 43, 44, 45}, - ['f150batt'] = { 39, 40, 41, 42, 43, 44, 45}, - ['f250ambo'] = { 39, 40, 41, 42, 43, 44, 45}, - ['fd14tahoe'] = { 39, 40, 41, 42, 43, 44, 45}, - ['fd20exp'] = { 39, 40, 41, 42, 43, 44, 45}, - ['medic22'] = { 39, 40, 41, 42, 43, 44, 45}, - ['medic1a'] = { 39, 40, 41, 42, 43, 44, 45}, - ['medic1b'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ram20pov'] = { 39, 40, 41, 42, 43, 44, 45}, - ['safr_fleet'] = { 39, 40, 41, 42, 43, 44, 45}, - ['walkinarrow'] = { 39, 40, 41, 42, 43, 44, 45}, - ['roseeng'] = { 39, 40, 41, 42, 43, 44, 45}, - ['rosemidtower'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ladder6a'] = { 39, 40, 41, 42, 43, 44, 45}, - ['fhauler'] = { 39, 40, 41, 42, 43, 44, 45}, - ['fireboat'] = { 39, 40, 41, 42, 43, 44, 45}, - ['fireburb'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ford1utility1'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ford2utility2'] = { 39, 40, 41, 42, 43, 44, 45}, - ['panther'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ramfire2'] = { 39, 40, 41, 42, 43, 44, 45}, - ['silvfire'] = { 39, 40, 41, 42, 43, 44, 45}, - ['t3engine1'] = { 39, 40, 41, 42, 43, 44, 45}, - ['LACoFDDurango'] = { 39, 40, 41, 42, 43, 44, 45}, - ['20Maxfdramsquad'] = { 39, 40, 41, 42, 43, 44, 45}, - ['23sierrafire'] = { 39, 40, 41, 42, 43, 44, 45}, - ['24rampumper'] = { 39, 40, 41, 42, 43, 44, 45}, - ['f550super6'] = { 39, 40, 41, 42, 43, 44, 45}, - ['ftanker'] = { 39, 40, 41, 42, 43, 44, 45}, - ['velocity'] = { 39, 40, 41, 42, 43, 44, 45}, - ['23smallboatfd'] = { 39, 40, 41, 42, 43, 44, 45}, - ['brush'] = { 39, 40, 41, 42, 43, 44, 45}, - ['brushram'] = { 39, 40, 41, 42, 43, 44, 45}, - ['bulldog'] = { 39, 40, 41, 42, 43, 44, 45}, + ['20ramambo'] = { 42, 43, 44, 45 }, + ['battalion'] = { 42, 43, 44, 45 }, + ['engine'] = { 42, 43, 44, 45 }, + ['rambulance'] = { 42, 43, 44, 45 }, + ['lafdengine'] = { 42, 43, 44, 45 }, + ['lafdrambulance'] = { 42, 43, 44, 45 }, + ['24ramambo'] = { 42, 43, 44, 45 }, + ['e350vanb'] = { 34, 37, 36, 39, 40, 41 }, + ['e450ambo'] = { 34, 37, 36, 39, 40, 41 }, + ['202346gmc'] = { 34, 37, 36, 39, 40, 41 }, + ['ltundra'] = { 34, 37, 36, 39, 40, 41 }, + ['11firevic'] = { 34, 37, 36, 39, 40, 41 }, + ['16fexp'] = { 34, 37, 36, 39, 40, 41 }, + ['23fdems18suv'] = { 34, 37, 36, 39, 40, 41 }, + ['23fdems18suvsl'] = { 34, 37, 36, 39, 40, 41 }, + ['23fdems21suv'] = { 34, 37, 36, 39, 40, 41 }, + ['23fdems21suvsl'] = { 34, 37, 36, 39, 40, 41 }, + ['2022heavycommandfd'] = { 34, 37, 36, 39, 40, 41 }, + ['ALSrescue1'] = { 34, 37, 36, 39, 40, 41 }, + ['amrvan'] = { 34, 37, 36, 39, 40, 41 }, + ['chargfire'] = { 34, 37, 36, 39, 40, 41 }, + ['f150batt'] = { 34, 37, 36, 39, 40, 41 }, + ['f250ambo'] = { 34, 37, 36, 39, 40, 41 }, + ['fd14tahoe'] = { 34, 37, 36, 39, 40, 41 }, + ['fd20exp'] = { 34, 37, 36, 39, 40, 41 }, + ['medic22'] = { 34, 37, 36, 39, 40, 41 }, + ['medic1a'] = { 34, 37, 36, 39, 40, 41 }, + ['medic1b'] = { 34, 37, 36, 39, 40, 41 }, + ['ram20pov'] = { 34, 37, 36, 39, 40, 41 }, + ['safr_fleet'] = { 34, 37, 36, 39, 40, 41 }, + ['walkinarrow'] = { 34, 37, 36, 39, 40, 41 }, + ['roseeng'] = { 34, 37, 36, 39, 40, 41 }, + ['rosemidtower'] = { 34, 37, 36, 39, 40, 41 }, + ['ladder6a'] = { 34, 37, 36, 39, 40, 41 }, + ['fhauler'] = { 34, 37, 36, 39, 40, 41 }, + ['fireboat'] = { 34, 37, 36, 39, 40, 41 }, + ['fireburb'] = { 34, 37, 36, 39, 40, 41 }, + ['ford1utility1'] = { 34, 37, 36, 39, 40, 41 }, + ['ford2utility2'] = { 34, 37, 36, 39, 40, 41 }, + ['panther'] = { 34, 37, 36, 39, 40, 41 }, + ['ramfire2'] = { 34, 37, 36, 39, 40, 41 }, + ['silvfire'] = { 34, 37, 36, 39, 40, 41 }, + ['t3engine1'] = { 34, 37, 36, 39, 40, 41 }, + ['LACoFDDurango'] = { 34, 37, 36, 39, 40, 41 }, + ['20Maxfdramsquad'] = { 34, 37, 36, 39, 40, 41 }, + ['23sierrafire'] = { 34, 37, 36, 39, 40, 41 }, + ['24rampumper'] = { 34, 37, 36, 39, 40, 41 }, + ['f550super6'] = { 34, 37, 36, 39, 40, 41 }, + ['ftanker'] = { 34, 37, 36, 39, 40, 41 }, + ['velocity'] = { 34, 37, 36, 39, 40, 41 }, + ['23smallboatfd'] = { 34, 37, 36, 39, 40, 41 }, + ['brush'] = { 34, 37, 36, 39, 40, 41 }, + ['brushram'] = { 34, 37, 36, 39, 40, 41 }, + ['bulldog'] = { 34, 37, 36, 39, 40, 41 }, ['2010cvpipov'] = { 45, 48, 43, 50, 47, 46 }, - ['enforcer'] = { 39, 40, 41, 42, 43, 44, 45}, - ['EnforcerEng'] = { 39, 40, 41, 42, 43, 44, 45}, - ['enforcerf'] = { 39, 40, 41, 42, 43, 44, 45}, - ['enforcerta'] = { 39, 40, 41, 42, 43, 44, 45}, - ['enladder'] = { 39, 40, 41, 42, 43, 44, 45}, - ['fdgator'] = { 39, 40, 41, 42, 43, 44, 45}, - ['Ferrara'] = { 39, 40, 41, 42, 43, 44, 45}, - ['firef350'] = { 39, 40, 41, 42, 43, 44, 45}, - ['foam1'] = { 39, 40, 41, 42, 43, 44, 45}, - ['mmladder'] = { 39, 40, 41, 42, 43, 44, 45}, - ['prescue'] = { 39, 40, 41, 42, 43, 44, 45}, - ['rescue1'] = { 39, 40, 41, 42, 43, 44, 45}, - ['walkin'] = { 39, 40, 41, 42, 43, 44, 45}, - ['fireboat'] = { 39, 40, 41, 42, 43, 44, 45}, - ['16ramambo'] = { 45, 48, 28, 29, 47, 49 }, - ['f550ambow'] = { 45, 48, 28, 29, 47, 49 }, - ['f550ambows'] = { 45, 48, 28, 29, 47, 49 }, - ['lafdengine'] = { 39, 51, 52, 53, 43 }, - ['lacod6'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdbat'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdbug'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofddztrk'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdeng'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdfoam'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdpat'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdrs'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdsup'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdt3'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdtrlr'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdusartrk'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdusartrlr'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lacofdutil'] = { 39, 40, 41, 42, 43, 44, 45}, - ['mmech'] = { 39, 40, 41, 42, 43, 44, 45}, - ['petewrecker'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lafdtiller'] = { 39, 51, 52, 53, 43 }, - ['lafdcab'] = { 39, 51, 52, 53, 43 }, - ['lafdengine'] = { 39, 51, 52, 53, 43 }, - ['21fireladder'] = { 39, 40, 41, 42, 43, 44, 45}, - ['16ramcsquad'] = { 39, 40, 41, 42, 43, 44, 45}, - ['2021FDPack'] = { 39, 40, 41, 42, 43, 44, 45}, - ['25fpiupov'] = { 39, 40, 41, 42, 43, 44, 45}, - ['20Maxfdramsquad'] = { 39, 40, 41, 42, 43, 44, 45}, - ['20ramcsquad'] = { 39, 40, 41, 42, 43, 44, 45}, - ['f550csquad'] = { 39, 40, 41, 42, 43, 44, 45}, - ['x3bearcat2'] = { 39, 40, 41, 42, 43, 44, 45}, - ['x3bearcat'] = { 39, 40, 41, 42, 43, 44, 45}, - ['lafdtahoe'] = { 39, 51, 52, 53, 43 }, - ['firetruk13'] = { 39, 40, 41, 42, 43, 44, 45}, - ['arrowxt1'] = { 39, 40, 41, 42, 43, 44, 45}, - ['hazf350tec'] = { 39, 40, 41, 42, 43, 44, 45}, - ['redf350brush21'] = { 39, 40, 41, 42, 43, 44, 45}, - ['firef250'] = { 39, 40, 41, 42, 43, 44, 45}, - ['battalion'] = { 39, 51, 52, 53, 43 }, - ['engine'] = { 39, 51, 52, 53, 43 }, - ['rambulance'] = { 39, 51, 52, 53, 43 }, - ['lafdengine'] = { 39, 51, 52, 53, 43 }, - ['lafdrambulance'] = { 39, 51, 52, 53, 43 }, - ['lafdxt6700'] = { 39, 51, 52, 53, 43 }, - ['lafdkme'] = { 39, 51, 52, 53, 43 }, - ['lafdarr'] = { 39, 51, 52, 53, 43 }, - ['lafdbatt'] = { 39, 51, 52, 53, 43 }, - ['lafd20tahoearson'] = { 39, 51, 52, 53, 43 }, - ['lafd18tahoe'] = { 39, 51, 52, 53, 43 }, - ['lafd20tahoeumk'] = { 39, 51, 52, 53, 43 }, - ['lafdcharger18'] = { 39, 51, 52, 53, 43 }, - ['lafirechief'] = { 39, 51, 52, 53, 43 }, - ['lafdtiller'] = { 39, 51, 52, 53, 43 }, - ['lafdcab'] = { 39, 51, 52, 53, 43 }, - ['firef250'] = { 39, 51, 52, 53, 43 }, + ['enforcer'] = { 34, 37, 36, 39, 40, 41 }, + ['EnforcerEng'] = { 34, 37, 36, 39, 40, 41 }, + ['enforcerf'] = { 34, 37, 36, 39, 40, 41 }, + ['enforcerta'] = { 34, 37, 36, 39, 40, 41 }, + ['enladder'] = { 34, 37, 36, 39, 40, 41 }, + ['fdgator'] = { 34, 37, 36, 39, 40, 41 }, + ['Ferrara'] = { 34, 37, 36, 39, 40, 41 }, + ['firef350'] = { 34, 37, 36, 39, 40, 41 }, + ['foam1'] = { 34, 37, 36, 39, 40, 41 }, + ['mmladder'] = { 34, 37, 36, 39, 40, 41 }, + ['prescue'] = { 34, 37, 36, 39, 40, 41 }, + ['rescue1'] = { 34, 37, 36, 39, 40, 41 }, + ['walkin'] = { 34, 37, 36, 39, 40, 41 }, + ['fireboat'] = { 34, 37, 36, 39, 40, 41 }, + ['16ramambo'] = { 34, 37, 36, 39, 40, 41 }, + ['f550ambow'] = { 34, 37, 36, 39, 40, 41 }, + ['f550ambows'] = { 34, 37, 36, 39, 40, 41 }, + ['lafdengine'] = { 42, 43, 44, 45 }, + ['lacod6'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdbat'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdbug'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofddztrk'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdeng'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdfoam'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdpat'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdrs'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdsup'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdt3'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdtrlr'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdusartrk'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdusartrlr'] = { 34, 37, 36, 39, 40, 41 }, + ['lacofdutil'] = { 34, 37, 36, 39, 40, 41 }, + ['mmech'] = { 34, 37, 36, 39, 40, 41 }, + ['petewrecker'] = { 34, 37, 36, 39, 40, 41 }, + ['lafdtiller'] = { 42, 43, 44, 45 }, + ['lafdcab'] = { 42, 43, 44, 45 }, + ['lafdengine'] = { 42, 43, 44, 45 }, + ['21fireladder'] = { 34, 37, 36, 39, 40, 41 }, + ['16ramcsquad'] = { 34, 37, 36, 39, 40, 41 }, + ['2021FDPack'] = { 34, 37, 36, 39, 40, 41 }, + ['25fpiupov'] = { 34, 37, 36, 39, 40, 41 }, + ['20Maxfdramsquad'] = { 34, 37, 36, 39, 40, 41 }, + ['20ramcsquad'] = { 34, 37, 36, 39, 40, 41 }, + ['f550csquad'] = { 34, 37, 36, 39, 40, 41 }, + ['x3bearcat2'] = { 34, 37, 36, 39, 40, 41 }, + ['x3bearcat'] = { 34, 37, 36, 39, 40, 41 }, + ['lafdtahoe'] = { 42, 43, 44, 45 }, + ['firetruk13'] = { 34, 37, 36, 39, 40, 41 }, + ['arrowxt1'] = { 34, 37, 36, 39, 40, 41 }, + ['hazf350tec'] = { 34, 37, 36, 39, 40, 41 }, + ['redf350brush21'] = { 34, 37, 36, 39, 40, 41 }, + ['firef250'] = { 34, 37, 36, 39, 40, 41 }, + ['battalion'] = { 42, 43, 44, 45 }, + ['engine'] = { 42, 43, 44, 45 }, + ['rambulance'] = { 42, 43, 44, 45 }, + ['lafdengine'] = { 42, 43, 44, 45 }, + ['lafdrambulance'] = { 42, 43, 44, 45 }, + ['lafdxt6700'] = { 42, 43, 44, 45 }, + ['lafdkme'] = { 42, 43, 44, 45 }, + ['lafdarr'] = { 42, 43, 44, 45 }, + ['lafdbatt'] = { 42, 43, 44, 45 }, + ['lafd20tahoearson'] = { 42, 43, 44, 45 }, + ['lafd18tahoe'] = { 42, 43, 44, 45 }, + ['lafd20tahoeumk'] = { 42, 43, 44, 45 }, + ['lafdcharger18'] = { 42, 43, 44, 45 }, + ['lafirechief'] = { 42, 43, 44, 45 }, + ['lafdtiller'] = { 42, 43, 44, 45 }, + ['lafdcab'] = { 42, 43, 44, 45 }, + ['firef250'] = { 42, 43, 44, 45 }, ['19mustgtbb'] = { 33, 34, 35, 36, 37, 38 }, ['19mustgtrb'] = { 54, 55, 56, 57, 58, 59 }, @@ -300,12 +299,10 @@ SIREN_ASSIGNMENTS = { ['senorapd18fpiu_817'] = { 18, 19, 20}, ['transportram'] = { 18, 19, 20}, - ['20legacyfpiu3'] = { 54, 55, 56, 57, 58, 59 }, - ['lasd25fpiu'] = { 54, 55, 56 }, - - - [' '] = { 18, 19, 20}, - + ['20legacyfpiu3'] = { 46, 47, 48, 49, 50, 51 }, + ['lasd25fpiu'] = { 46, 55, 56 }, + ['lib20fpiu'] = { 46, 47, 48, 49, 50, 51 }, + ['25legacyrango1'] = { 28, 29, 30, 31, 32, 33 }, ['lasd1997paramount'] = { 18, 19, 20}, ['lasd1998'] = { 18, 19, 20}, diff --git a/server.cfg b/server.cfg index 14e561cc9..b88ab7d0c 100644 --- a/server.cfg +++ b/server.cfg @@ -251,8 +251,8 @@ ensure WeaponWheel-V1.5 ensure c5m-stretcher ensure c5m-stretcher-model ensure limits -ensure -ensure +ensure SmartHose +ensure Supply-Line ensure ensure ensure