[{"data":1,"prerenderedAt":4129},["ShallowReactive",2],{"/docs/jobs/firejob/changelog":3,"/docs/jobs/firejob/changelog-surround":4116,"/docs/jobs/firejob/changelog-implemented-suggestions":4128},{"id":4,"title":5,"body":6,"description":4105,"extension":4106,"head":4107,"implementedSuggestions":4107,"meta":4108,"navigation":4109,"path":4111,"schemaOrg":4107,"seo":4112,"sitemap":4113,"stem":4114,"__hash__":4115},"docs/1.docs/0.jobs/3.firejob/6.changelog.md","Changelog",{"type":7,"value":8,"toc":4103},"minimark",[9,27,4099],[10,11,14],"callout",{"color":12,"icon":13},"warning","i-lucide-triangle-alert",[15,16,17,18,22,23,26],"p",{},"Before updating, make sure ",[19,20,21],"strong",{},"sky_base"," and ",[19,24,25],{},"sky_jobs_base"," are up to date.",[28,29,30,734,2025,3524,3809],"u-changelog-versions",{},[31,32,36],"u-changelog-version",{"date":33,"title":34,"badge":35},"2026-08-03","Version 1.4.0","Latest",[37,38,40,62,67,101,106,132,137,148,153,186],"template",{"v-slot:body":39},"",[10,41,42],{"color":12,"icon":13},[15,43,44,45,47,48,22,52,47,54,57,58,61],{},"Update ",[19,46,21],{}," to ",[49,50,51],"code",{},"1.33.0",[19,53,25],{},[49,55,56],{},"1.36.0"," before updating ",[19,59,60],{},"sky_firejob",".",[15,63,64],{},[19,65,66],{},"Highlights",[68,69,70,77,83,89,95],"ul",{},[71,72,73,76],"li",{},[19,74,75],{},"Accurate 100-meter hose routes"," - attack and monitor hoses retain their laid path, follow outdoor terrain and MLO floors, keep stable truck-side bends, and render smoother corners without deleting long routes.",[71,78,79,82],{},[19,80,81],{},"Configured pump interaction points"," - pump panels, intakes, discharges, monitor supply, and vehicle-transfer actions use the editor-defined positions and rotations for each vehicle model.",[71,84,85,88],{},[19,86,87],{},"Reliable water-monitor supply"," - the nearest outlet is reserved while the hose is carried, remains occupied after connection, and is released correctly on every abort or disconnect path.",[71,90,91,94],{},[19,92,93],{},"All configured Fire jobs supported"," - permissions, dispatch recipients, rewards, maintenance, creator triggers, and exported actions derive from the active Fire job configuration instead of a hard-coded job name.",[71,96,97,100],{},[19,98,99],{},"Signed Scenario Hub requests"," - remote Scenario Hub traffic now uses server-side request signing and provides safe diagnostics for availability and signature mismatches.",[15,102,103],{},[19,104,105],{},"Notable Changes",[68,107,108,111,114,117,120,123,126,129],{},[71,109,110],{},"Vehicle entrapment uses the configured body/engine damage thresholds instead of obsolete speed thresholds.",[71,112,113],{},"Enhanced pumps shut down when fuel reaches zero and cannot be re-engaged until refueled.",[71,115,116],{},"Grounded nozzles have configurable placement, rotation, interaction distance, target size, deployment distance, and handling animation.",[71,118,119],{},"Vehicle water-transfer actions share the pump target and use the nearest configured intake/outlet geometry.",[71,121,122],{},"Fire dispatch preserves the initiating player, and rejected dispatch creation is logged clearly.",[71,124,125],{},"Fire carry uses the central Jobs Base runtime and can explicitly allow or reject carrier vehicles.",[71,127,128],{},"The breathing HUD keeps its SCBA gauge, mask overlay, and heat warnings while hiding the removed equipment silhouette.",[71,130,131],{},"Added a complete Serbian locale and ordered NUI image-source support.",[15,133,134],{},[19,135,136],{},"Other Changes",[68,138,139,142,145],{},[71,140,141],{},"Updated the streamed hose material for a matte cloth appearance.",[71,143,144],{},"Deterministic config loading prevents duplicate registration, and blip values are normalized before reaching FiveM natives.",[71,146,147],{},"Added focused regression coverage for configured jobs, pump targets/rotation, transfer targets, dispatch, hose sync, entrapment, radial exports, and rewards.",[15,149,150],{},[19,151,152],{},"Changed Files",[68,154,155,160,165,170,175,181],{},[71,156,157],{},[49,158,159],{},"sky_firejob/config/config.lua",[71,161,162],{},[49,163,164],{},"sky_firejob/config/locales/*",[71,166,167],{},[49,168,169],{},"sky_firejob/fxmanifest.lua",[71,171,172],{},[49,173,174],{},"sky_firejob/README.md",[71,176,177,180],{},[49,178,179],{},"sky_firejob/source/*"," — delete and reinsert",[71,182,183],{},[49,184,185],{},"sky_firejob/stream/sky_hose_segment.ydr",[187,188,191,334,339,358,653,667],"update-guide",{"from":189,"resource":60,"to":190},"1.3.1","1.4.0",[37,192,193],{"v-slot:simplified":39},[194,195,196,206,212,240,289,303,321,327],"ol",{},[71,197,44,198,47,200,22,202,47,204,61],{},[19,199,21],{},[49,201,51],{},[19,203,25],{},[49,205,56],{},[71,207,208,209,211],{},"Back up Fire, delete the old folder, and install the complete ",[49,210,190],{}," package including runtime, UI, locales, tests, README, manifest, and stream assets.",[71,213,214,215,218,219,222,223,47,226,229,230,233,234,22,237,61],{},"Without ",[49,216,217],{},"/jobconfig",", add ",[49,220,221],{},"Config.PlayerCarry.allowCarrierInVehicle = false","; change extinguisher maintenance ",[49,224,225],{},"allowedJobs",[49,227,228],{},"{}","; remove ",[49,231,232],{},"Config.InteriorExtinguishers.stock.storageJob","; and remove the obsolete entrapment fields ",[49,235,236],{},"minImpactSpeedKmh",[49,238,239],{},"minSpeedDropKmh",[71,241,242,243,246,247,250,251,254,255,258,259,262,263,266,267,270,271,274,275,278,279,282,283,47,286,61],{},"Add the complete new Hose values: grounded offset ",[49,244,245],{},"-0.38","; rotation ",[49,248,249],{},"90.0/0.0/90.0","; pump target distance ",[49,252,253],{},"2.0","; target size ",[49,256,257],{},"0.35","; ground animation ",[49,260,261],{},"pickup_object"," / ",[49,264,265],{},"pickup_low"," with ",[49,268,269],{},"1200",", ",[49,272,273],{},"650",", flag ",[49,276,277],{},"0","; deploy distance ",[49,280,281],{},"6.0","; and change max length from ",[49,284,285],{},"55.0",[49,287,288],{},"100.0",[71,290,291,292,295,296,299,300,302],{},"Change the ",[49,293,294],{},"jobs"," lists for scenario random triggers, scenario dispatch, all four society rewards, tree dispatch, and fire dispatch from the old ",[49,297,298],{},"firefighter"," entries to ",[49,301,228],{},". Empty means all currently configured Fire jobs.",[71,304,305,306,309,310,313,314,317,318,320],{},"Every ",[49,307,308],{},"Config.Hose.vehicles"," entry now needs editor-saved pump-panel ",[49,311,312],{},"X/Y/Z/size"," plus ",[49,315,316],{},"X/Y/Z/Rx/Ry/Rz"," for each active intake and outlet. Do not copy the shipped example coordinates to another model; configure every vehicle through ",[49,319,217],{}," or the vehicle editor. The shipped example changes from four to three discharges.",[71,322,323,324,326],{},"With ",[49,325,217],{},", review and save Carry, Hose/nozzle behavior, per-vehicle pump geometry, entrapment, extinguisher maintenance, incident recipients, and reward recipients after installing the package.",[71,328,329,330,333],{},"Keep the new ",[49,331,332],{},"stream/sky_hose_segment.ydr","; no SQL migration or inventory item is required. Configure Scenario Hub signing only through the protected deployment path, then restart Base, Jobs Base, and Fire.",[37,335,336],{"v-slot:prepare":39},[15,337,338],{},"Back up the complete Fire resource and intentional configuration. Install cleanly so runtime, UI, job configuration, HMAC support, manifest, and streamed hose model are from the same package.",[37,340,341],{"v-slot:files":39},[15,342,343,344,270,347,350,351,353,354,357],{},"Replace ",[49,345,346],{},"fxmanifest.lua",[49,348,349],{},"source",", built UI, locales, README, tests, and ",[49,352,332],{},". Keep ",[49,355,356],{},"source/server/vendor/sha2.lua"," in the package.",[37,359,360,365,625,648],{"v-slot:config":39},[15,361,214,362,364],{},[49,363,217],{},", apply all of these public changes:",[366,367,368,383],"table",{},[369,370,371],"thead",{},[372,373,374,378],"tr",{},[375,376,377],"th",{},"Config path",[375,379,380,382],{},[49,381,190],{}," shipped value / action",[384,385,386,400,413,422,433,450,461,472,484,496,510,525,536,550,560,569,580,591,603,614],"tbody",{},[372,387,388,394],{},[389,390,391],"td",{},[49,392,393],{},"Config.PlayerCarry.allowCarrierInVehicle",[389,395,396,397],{},"New: ",[49,398,399],{},"false",[372,401,402,407],{},[389,403,404],{},[49,405,406],{},"Config.InteriorExtinguishers.maintenance.allowedJobs",[389,408,409,410,412],{},"Changed to ",[49,411,228],{},"; empty means all configured Fire jobs",[372,414,415,419],{},[389,416,417],{},[49,418,232],{},[389,420,421],{},"Removed; storage ownership follows the active configured Fire job",[372,423,424,429],{},[389,425,426],{},[49,427,428],{},"Config.Hose.groundedNozzleOffset",[389,430,396,431],{},[49,432,245],{},[372,434,435,440],{},[389,436,437],{},[49,438,439],{},"Config.Hose.groundedNozzleRotation.pitch/roll/headingOffset",[389,441,396,442,270,445,270,448],{},[49,443,444],{},"90.0",[49,446,447],{},"0.0",[49,449,444],{},[372,451,452,457],{},[389,453,454],{},[49,455,456],{},"Config.Hose.pumpTargetDistance",[389,458,396,459],{},[49,460,253],{},[372,462,463,468],{},[389,464,465],{},[49,466,467],{},"Config.Hose.pumpTargetSize",[389,469,396,470],{},[49,471,257],{},[372,473,474,479],{},[389,475,476],{},[49,477,478],{},"Config.Hose.groundActionAnimation.enabled",[389,480,396,481],{},[49,482,483],{},"true",[372,485,486,491],{},[389,487,488],{},[49,489,490],{},"Config.Hose.groundActionAnimation.dict",[389,492,396,493],{},[49,494,495],{},"\"pickup_object\"",[372,497,498,503],{},[389,499,500],{},[49,501,502],{},"Config.Hose.groundActionAnimation.layDownName/pickUpName",[389,504,396,505,270,508],{},[49,506,507],{},"\"pickup_low\"",[49,509,507],{},[372,511,512,517],{},[389,513,514],{},[49,515,516],{},"Config.Hose.groundActionAnimation.durationMs/transitionMs/flag",[389,518,396,519,270,521,270,523],{},[49,520,269],{},[49,522,273],{},[49,524,277],{},[372,526,527,532],{},[389,528,529],{},[49,530,531],{},"Config.Hose.deployDistance",[389,533,396,534],{},[49,535,281],{},[372,537,538,543],{},[389,539,540],{},[49,541,542],{},"Config.Hose.maxLength",[389,544,545,546,47,548],{},"Changed from ",[49,547,285],{},[49,549,288],{},[372,551,552,557],{},[389,553,554],{},[49,555,556],{},"Config.VehicleRescue.playerEntrapment.minImpactSpeedKmh",[389,558,559],{},"Removed",[372,561,562,567],{},[389,563,564],{},[49,565,566],{},"Config.VehicleRescue.playerEntrapment.minSpeedDropKmh",[389,568,559],{},[372,570,571,576],{},[389,572,573],{},[49,574,575],{},"Config.FireScenarioCreator.randomTrigger.jobs",[389,577,409,578,412],{},[49,579,228],{},[372,581,582,587],{},[389,583,584],{},[49,585,586],{},"Config.FireScenarioCreator.dispatch.jobs",[389,588,409,589,412],{},[49,590,228],{},[372,592,593,598],{},[389,594,595],{},[49,596,597],{},"Config.SocietyRewards.fire/oil/tree/rescue.jobs",[389,599,409,600,602],{},[49,601,228],{},"; rewards derive from configured Fire jobs and saved Job Configurator values",[372,604,605,610],{},[389,606,607],{},[49,608,609],{},"Config.TreeIncident.dispatch.jobs",[389,611,409,612,412],{},[49,613,228],{},[372,615,616,621],{},[389,617,618],{},[49,619,620],{},"Config.FireSystem.dispatch.jobs",[389,622,409,623,412],{},[49,624,228],{},[15,626,627,628,630,631,633,634,637,638,640,641,644,645,647],{},"For every entry in ",[49,629,308],{},", keep the current editor-saved pump panel ",[49,632,312],{},", each active ",[49,635,636],{},"pumpOutletN"," position and rotation (",[49,639,316],{},"), and each active ",[49,642,643],{},"pumpIntakeN"," position and rotation. The shipped example now uses three discharges rather than four. Do not copy the example coordinates to a different vehicle model; position them through ",[49,646,217],{}," or the vehicle editor.",[15,649,323,650,652],{},[49,651,217],{},", review and save Hose nozzle placement/animation, deployment and maximum length, target size/distance, per-vehicle panel/intake/outlet geometry, Carry vehicle behavior, entrapment detection, incident dispatch, extinguisher maintenance, and reward recipients. The empty job lists intentionally select the current configured Fire jobs.",[37,654,655,664],{"v-slot:data":39},[15,656,657,658,660,661,663],{},"No SQL migration, inventory item, or image registration is required. Replace ",[49,659,332],{},"; mixed clients can otherwise render a different hose material than ",[49,662,190],{}," clients.",[15,665,666],{},"Scenario Hub signing requires the deployment secret and key version to match the Public API. Never place the secret in public config, changelog, support messages, or AI knowledge.",[37,668,669],{"v-slot:verify":39},[68,670,673,692,698,704,710,716,722,728],{"className":671},[672],"contains-task-list",[71,674,677,682,683,685,686,688,689,691],{"className":675},[676],"task-list-item",[678,679],"input",{"disabled":680,"type":681},true,"checkbox"," Base ",[49,684,51],{},", Jobs Base ",[49,687,56],{},", and Fire ",[49,690,190],{}," are running.",[71,693,695,697],{"className":694},[676],[678,696],{"disabled":680,"type":681}," Every configured Fire job receives intended radial actions, dispatches, rewards, maintenance, and creator access.",[71,699,701,703],{"className":700},[676],[678,702],{"disabled":680,"type":681}," Pump targets appear at editor-defined points on each configured vehicle model.",[71,705,707,709],{"className":706},[676],[678,708],{"disabled":680,"type":681}," Monitor and transfer hoses reserve and render the intended nearest ports.",[71,711,713,715],{"className":712},[676],[678,714],{"disabled":680,"type":681}," A routed hose remains grounded and connected across slopes, MLO floors, and long paths up to 100 meters.",[71,717,719,721],{"className":718},[676],[678,720],{"disabled":680,"type":681}," The enhanced pump shuts down at zero fuel.",[71,723,725,727],{"className":724},[676],[678,726],{"disabled":680,"type":681}," Damage-based entrapment, Fire dispatch, Scenario Hub availability, carry, and image fallbacks work correctly.",[71,729,731,733],{"className":730},[676],[678,732],{"disabled":680,"type":681}," The updated streamed hose has the intended matte cloth appearance.",[31,735,738],{"date":736,"title":737},"2026-07-29","Version 1.3.1",[37,739,740,756,760,795,799,828,832,843],{"v-slot:body":39},[10,741,742],{"color":12,"icon":13},[15,743,44,744,47,746,22,749,47,751,57,754,61],{},[19,745,21],{},[49,747,748],{},"1.32.1",[19,750,25],{},[49,752,753],{},"1.35.1",[19,755,60],{},[15,757,758],{},[19,759,66],{},[68,761,762,768,774,783,789],{},[71,763,764,767],{},[19,765,766],{},"Simple and enhanced firetruck pump panels"," - choose automatic one-intake/one-discharge operation or a full manual panel with configurable pressure, RPM, tank feed/fill, up to two intakes, and up to four hose discharges.",[71,769,770,773],{},[19,771,772],{},"Realistic pump hydraulics and stress"," - supply capacity, hose friction, cavitation, dry running, fuel consumption, heat, overload warnings, pressure loss, and gradual engine damage now respond to live pump use.",[71,775,776,779,780,782],{},[19,777,778],{},"Per-vehicle pump configuration"," - ",[49,781,217],{}," can configure pump mode, tanks, intake/outlet counts, custom port labels, and attachment positions through dedicated vehicle cards and connection editors.",[71,784,785,788],{},[19,786,787],{},"Placeable attack hoses"," - firefighters can lay their attack nozzle and hose on the ground, retrieve it later, and keep the grounded hose synchronized for nearby players.",[71,790,791,794],{},[19,792,793],{},"Restored protective-gear HUD"," - the breathing display again shows the complete firefighter equipment silhouette with clear missing-item highlights.",[15,796,797],{},[19,798,105],{},[68,800,801,804,807,810,813,816,819,822,825],{},[71,802,803],{},"Pump outlets control their own hose assignment and flow state, while the panel updates live as supply, tank, fuel, valve, and stress values change.",[71,805,806],{},"Vehicle deck-gun controls appear only when the configured turret exists on the spawned vehicle.",[71,808,809],{},"Portable drafting uses a server-authoritative natural-water allowlist and supports longer, submerged intake lines.",[71,811,812],{},"Grounded hoses align with the nozzle, follow MLO floors, and clean up when their vehicle disappears.",[71,814,815],{},"Tank filling, pump supply, water monitors, deck guns, and hose flow now respect the active valve, pressure, and source state.",[71,817,818],{},"Players can be rescued through vehicle doors that were already missing before entrapment state synchronized.",[71,820,821],{},"Fire water operations and exported actions recognize every Fire job configured through the in-game configurator.",[71,823,824],{},"Incident Reports and other embedded Fire apps fill the shared tablet correctly.",[71,826,827],{},"Air-bottle storage closes with Escape and gauge-based interfaces initialize more reliably.",[15,829,830],{},[19,831,136],{},[68,833,834,837,840],{},[71,835,836],{},"Reduced client work for death checks, hose pathing, pump state, fuel, temperature, and damage updates while preserving responsive controls.",[71,838,839],{},"Improved English action feedback and completed German Fire and pump-panel translations.",[71,841,842],{},"Added regression coverage for pump modes, hydraulics, overload, connections, hose synchronization, tablet handoff, authorization, and locale parity.",[187,844,846,909,965,1075,1921,1928],{"from":845,"resource":60,"to":189},"1.3.0",[37,847,848],{"v-slot:simplified":39},[194,849,850,860,869,872,875,881,886,895,898],{},[71,851,44,852,47,854,22,856,47,858,61],{},[19,853,21],{},[49,855,748],{},[19,857,25],{},[49,859,753],{},[71,861,862,863,865,866,868],{},"Download ",[19,864,60],{}," ",[49,867,189],{},", then back up the resource and customized config files.",[71,870,871],{},"Delete the old resource folder and install the complete new folder, including the rebuilt interface.",[71,873,874],{},"Keep the new pump-control runtime, pump-panel interface, locales, and protective-gear HUD assets.",[71,876,877,878,61],{},"Configure valid natural-water areas manually in ",[49,879,880],{},"Config.Hose.pump.waterSourceAreas",[71,882,214,883,885],{},[49,884,217],{},", merge every new pump-control, vehicle behavior, hydraulics, and vehicle-port value listed below.",[71,887,323,888,890,891,894],{},[49,889,217],{},", review and save the new ",[19,892,893],{},"Pump Panel"," section; the three portable-drafting values remain manual.",[71,896,897],{},"No SQL migration or new inventory item is required.",[71,899,900,901,270,903,905,906,908],{},"Restart ",[19,902,21],{},[19,904,25],{},", and ",[19,907,60],{}," in that order.",[37,910,911,914,953],{"v-slot:prepare":39},[15,912,913],{},"Stop the server after updating both base resources. Create these backups:",[366,915,916,926],{},[369,917,918],{},[372,919,920,923],{},[375,921,922],{},"Back up",[375,924,925],{},"Safe location",[384,927,928,942],{},[372,929,930,936],{},[389,931,932,933,935],{},"Complete ",[49,934,60],{}," folder",[389,937,938,939,935],{},"Outside the live ",[49,940,941],{},"resources",[372,943,944,947],{},[389,945,946],{},"Customized config/editor/function files",[389,948,949,950,935],{},"Separate ",[49,951,952],{},"custom-config",[954,955,956],"blockquote",{},[15,957,958,959,961,962,964],{},"Do not overlay ",[49,960,189],{}," on ",[49,963,845],{},". The pump runtime and interface were expanded substantially.",[37,966,967,970],{"v-slot:files":39},[15,968,969],{},"Install the complete package:",[366,971,972,985],{},[369,973,974],{},[372,975,976,979,982],{},[375,977,978],{},"Action",[375,980,981],{},"Current server path",[375,983,984],{},"New package / destination",[384,986,987,1002,1017,1036,1050,1062],{},[372,988,989,994,999],{},[389,990,991],{},[19,992,993],{},"Delete",[389,995,996],{},[49,997,998],{},"resources/[sky]/sky_firejob",[389,1000,1001],{},"Remove only after the backup exists",[372,1003,1004,1009,1012],{},[389,1005,1006],{},[19,1007,1008],{},"Copy",[389,1010,1011],{},"—",[389,1013,1014,1015,935],{},"Copy the complete new ",[49,1016,60],{},[372,1018,1019,1024,1033],{},[389,1020,1021],{},[19,1022,1023],{},"Keep from new release",[389,1025,1026,270,1028,905,1030],{},[49,1027,346],{},[49,1029,349],{},[49,1031,1032],{},"source/html",[389,1034,1035],{},"Required for both pump panels, hydraulics, hose placement, rescue, and tablet fixes",[372,1037,1038,1042,1047],{},[389,1039,1040],{},[19,1041,1023],{},[389,1043,1044],{},[49,1045,1046],{},"config/locales",[389,1048,1049],{},"Contains the current English and German UI copy",[372,1051,1052,1056,1059],{},[389,1053,1054],{},[19,1055,1023],{},[389,1057,1058],{},"Rebuilt frontend assets",[389,1060,1061],{},"Contains the pump gauges, panel views, and protective-gear HUD imagery",[372,1063,1064,1069,1072],{},[389,1065,1066],{},[19,1067,1068],{},"Merge only your values",[389,1070,1071],{},"Backed-up config/editor/function files",[389,1073,1074],{},"Reapply intentional customizations inside the matching new files",[37,1076,1077,1091,1100,1893,1901,1912,1915],{"v-slot:config":39},[15,1078,1079,1080,865,1083,1086,1087,1090],{},"Start with the ",[19,1081,1082],{},"new",[49,1084,1085],{},"config/config.lua",". The complete public ",[49,1088,1089],{},"1.3.0 → 1.3.1"," config migration is listed below.",[1092,1093,1094],"lua-diff-reference",{},[15,1095,1096,1097,1099],{},"Compare ",[49,1098,159],{},". Keep the NEW file and transfer only intentional server-specific values.",[1101,1102,1103,1297,1436,1662,1769],"accordion",{},[1104,1105,1107,1121,1171,1174,1288],"accordion-item",{"label":1106},"1 · Portable drafting values — always manual",[15,1108,1109,1110,1113,1114,1116,1117,1120],{},"These three values are ",[19,1111,1112],{},"not"," managed by ",[49,1115,217],{}," and must be present in ",[49,1118,1119],{},"Config.Hose.pump"," on every server:",[366,1122,1123,1132],{},[369,1124,1125],{},[372,1126,1127,1129],{},[375,1128,377],{},[375,1130,1131],{},"Shipped value / required action",[384,1133,1134,1146,1158],{},[372,1135,1136,1141],{},[389,1137,1138],{},[49,1139,1140],{},"Config.Hose.pump.intakeExtraLength",[389,1142,1143],{},[49,1144,1145],{},"5.0",[372,1147,1148,1153],{},[389,1149,1150],{},[49,1151,1152],{},"Config.Hose.pump.intakeSubmergeDepth",[389,1154,1155],{},[49,1156,1157],{},"0.55",[372,1159,1160,1164],{},[389,1161,1162],{},[49,1163,880],{},[389,1165,1166,1167,1170],{},"Add one or more trusted ",[49,1168,1169],{},"{ coords, radius, zTolerance }"," areas that cover the natural-water locations where drafting is allowed",[15,1172,1173],{},"Replace the shipped example area with locations appropriate for your map:",[1175,1176,1180],"pre",{"className":1177,"code":1178,"filename":1085,"language":1179,"meta":39,"style":39},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.Hose.pump.waterSourceAreas = {\n    {\n        coords = vector3(1300.0, 4100.0, 30.0),\n        radius = 850.0,\n        zTolerance = 4.0\n    }\n}\n","lua",[49,1181,1182,1212,1218,1251,1265,1276,1282],{"__ignoreMap":39},[1183,1184,1187,1191,1195,1197,1200,1202,1205,1209],"span",{"class":1185,"line":1186},"line",1,[1183,1188,1190],{"class":1189},"sTEyZ","Config.",[1183,1192,1194],{"class":1193},"sBMFI","Hose",[1183,1196,61],{"class":1189},[1183,1198,1199],{"class":1193},"pump",[1183,1201,61],{"class":1189},[1183,1203,1204],{"class":1193},"waterSourceAreas",[1183,1206,1208],{"class":1207},"sMK4o"," =",[1183,1210,1211],{"class":1189}," {\n",[1183,1213,1215],{"class":1185,"line":1214},2,[1183,1216,1217],{"class":1189},"    {\n",[1183,1219,1221,1224,1227,1231,1234,1238,1240,1243,1245,1248],{"class":1185,"line":1220},3,[1183,1222,1223],{"class":1189},"        coords ",[1183,1225,1226],{"class":1207},"=",[1183,1228,1230],{"class":1229},"s2Zo4"," vector3",[1183,1232,1233],{"class":1189},"(",[1183,1235,1237],{"class":1236},"sbssI","1300.0",[1183,1239,270],{"class":1189},[1183,1241,1242],{"class":1236},"4100.0",[1183,1244,270],{"class":1189},[1183,1246,1247],{"class":1236},"30.0",[1183,1249,1250],{"class":1189},"),\n",[1183,1252,1254,1257,1259,1262],{"class":1185,"line":1253},4,[1183,1255,1256],{"class":1189},"        radius ",[1183,1258,1226],{"class":1207},[1183,1260,1261],{"class":1236}," 850.0",[1183,1263,1264],{"class":1189},",\n",[1183,1266,1268,1271,1273],{"class":1185,"line":1267},5,[1183,1269,1270],{"class":1189},"        zTolerance ",[1183,1272,1226],{"class":1207},[1183,1274,1275],{"class":1236}," 4.0\n",[1183,1277,1279],{"class":1185,"line":1278},6,[1183,1280,1281],{"class":1189},"    }\n",[1183,1283,1285],{"class":1185,"line":1284},7,[1183,1286,1287],{"class":1189},"}\n",[15,1289,1290,1293,1294,1296],{},[49,1291,1292],{},"Config.Hose.pump.naturalWaterEnabled"," remains the existing master switch. When enabled, drafting outside ",[49,1295,1204],{}," is rejected.",[1104,1298,1300,1303,1429],{"label":1299},"2 · Panel mode and pressure controls",[15,1301,1302],{},"Add the complete new blocks:",[366,1304,1305,1314],{},[369,1306,1307],{},[372,1308,1309,1311],{},[375,1310,377],{},[375,1312,1313],{},"Shipped value",[384,1315,1316,1333,1345,1357,1369,1381,1393,1405,1417],{},[372,1317,1318,1323],{},[389,1319,1320],{},[49,1321,1322],{},"Config.Hose.pumpPanelStyle",[389,1324,1325,1328,1329,1332],{},[49,1326,1327],{},"\"enhanced\"","; use ",[49,1330,1331],{},"\"simple\""," for automatic one-intake/one-discharge operation",[372,1334,1335,1340],{},[389,1336,1337],{},[49,1338,1339],{},"Config.Hose.pumpControl.minPressure",[389,1341,1342],{},[49,1343,1344],{},"50",[372,1346,1347,1352],{},[389,1348,1349],{},[49,1350,1351],{},"Config.Hose.pumpControl.maxPressure",[389,1353,1354],{},[49,1355,1356],{},"600",[372,1358,1359,1364],{},[389,1360,1361],{},[49,1362,1363],{},"Config.Hose.pumpControl.pressureStep",[389,1365,1366],{},[49,1367,1368],{},"25",[372,1370,1371,1376],{},[389,1372,1373],{},[49,1374,1375],{},"Config.Hose.pumpControl.presetPressure",[389,1377,1378],{},[49,1379,1380],{},"300",[372,1382,1383,1388],{},[389,1384,1385],{},[49,1386,1387],{},"Config.Hose.pumpControl.idlePressure",[389,1389,1390],{},[49,1391,1392],{},"100",[372,1394,1395,1400],{},[389,1396,1397],{},[49,1398,1399],{},"Config.Hose.pumpControl.idleRpm",[389,1401,1402],{},[49,1403,1404],{},"700",[372,1406,1407,1412],{},[389,1408,1409],{},[49,1410,1411],{},"Config.Hose.pumpControl.maxRpm",[389,1413,1414],{},[49,1415,1416],{},"3150",[372,1418,1419,1424],{},[389,1420,1421],{},[49,1422,1423],{},"Config.Hose.pumpControl.tankFillLitersPerSecond",[389,1425,1426],{},[49,1427,1428],{},"40.0",[15,1430,1431,1433,1434,61],{},[49,1432,217],{}," manages these values under ",[19,1435,893],{},[1104,1437,1439,1461,1657],{"label":1438},"3 · Vehicle pump behavior and stress",[15,1440,1441,1442,270,1445,270,1448,270,1451,270,1454,905,1457,1460],{},"Keep the existing ",[49,1443,1444],{},"enabled",[49,1446,1447],{},"immobilizeTransferVehicles",[49,1449,1450],{},"keepEngineOnDuringTransfer",[49,1452,1453],{},"keepEngineOnDuringPump",[49,1455,1456],{},"rpmEnabled",[49,1458,1459],{},"activeRpm"," values, then add or update:",[366,1462,1463,1474],{},[369,1464,1465],{},[372,1466,1467,1469],{},[375,1468,377],{},[375,1470,1471,1473],{},[49,1472,189],{}," shipped value",[384,1475,1476,1487,1498,1510,1522,1534,1546,1557,1569,1581,1593,1605,1617,1629,1641],{},[372,1477,1478,1483],{},[389,1479,1480],{},[49,1481,1482],{},"Config.Hose.vehiclePumpBehavior.immobilizePumpVehicles",[389,1484,1485],{},[49,1486,483],{},[372,1488,1489,1494],{},[389,1490,1491],{},[49,1492,1493],{},"Config.Hose.vehiclePumpBehavior.keepEngineOnWhenAbandoned",[389,1495,1496],{},[49,1497,483],{},[372,1499,1500,1505],{},[389,1501,1502],{},[49,1503,1504],{},"Config.Hose.vehiclePumpBehavior.engagementMaxSpeed",[389,1506,1507],{},[49,1508,1509],{},"0.5",[372,1511,1512,1517],{},[389,1513,1514],{},[49,1515,1516],{},"Config.Hose.vehiclePumpBehavior.fuelPercentPerMinute",[389,1518,1519],{},[49,1520,1521],{},"2.5",[372,1523,1524,1529],{},[389,1525,1526],{},[49,1527,1528],{},"Config.Hose.vehiclePumpBehavior.ambientTemperature",[389,1530,1531],{},[49,1532,1533],{},"25.0",[372,1535,1536,1541],{},[389,1537,1538],{},[49,1539,1540],{},"Config.Hose.vehiclePumpBehavior.overloadWarningLoad",[389,1542,1543],{},[49,1544,1545],{},"1.0",[372,1547,1548,1553],{},[389,1549,1550],{},[49,1551,1552],{},"Config.Hose.vehiclePumpBehavior.warningTemperature",[389,1554,1555],{},[49,1556,288],{},[372,1558,1559,1564],{},[389,1560,1561],{},[49,1562,1563],{},"Config.Hose.vehiclePumpBehavior.criticalTemperature",[389,1565,1566],{},[49,1567,1568],{},"115.0",[372,1570,1571,1576],{},[389,1572,1573],{},[49,1574,1575],{},"Config.Hose.vehiclePumpBehavior.damageTemperature",[389,1577,1578],{},[49,1579,1580],{},"110.0",[372,1582,1583,1588],{},[389,1584,1585],{},[49,1586,1587],{},"Config.Hose.vehiclePumpBehavior.maxEngineDamagePerSecond",[389,1589,1590],{},[49,1591,1592],{},"12.0",[372,1594,1595,1600],{},[389,1596,1597],{},[49,1598,1599],{},"Config.Hose.vehiclePumpBehavior.thermalResponse",[389,1601,1602],{},[49,1603,1604],{},"0.04",[372,1606,1607,1612],{},[389,1608,1609],{},[49,1610,1611],{},"Config.Hose.vehiclePumpBehavior.dryRunTemperature",[389,1613,1614],{},[49,1615,1616],{},"145.0",[372,1618,1619,1624],{},[389,1620,1621],{},[49,1622,1623],{},"Config.Hose.vehiclePumpBehavior.dryRunDamagePerSecond",[389,1625,1626],{},[49,1627,1628],{},"8.0",[372,1630,1631,1636],{},[389,1632,1633],{},[49,1634,1635],{},"Config.Hose.vehiclePumpBehavior.cavitationTemperatureGain",[389,1637,1638],{},[49,1639,1640],{},"45.0",[372,1642,1643,1648],{},[389,1644,1645],{},[49,1646,1647],{},"Config.Hose.vehiclePumpBehavior.updateMs",[389,1649,1650,1653,1654],{},[49,1651,1652],{},"1000"," instead of ",[49,1655,1656],{},"150",[15,1658,1659,1661],{},[49,1660,217],{}," manages every value in this table.",[1104,1663,1665,1672,1762],{"label":1664},"4 · Pump hydraulics",[15,1666,1667,1668,1671],{},"Add the complete ",[49,1669,1670],{},"Config.Hose.vehiclePumpBehavior.hydraulics"," block:",[366,1673,1674,1683],{},[369,1675,1676],{},[372,1677,1678,1681],{},[375,1679,1680],{},"Field",[375,1682,1313],{},[384,1684,1685,1703,1721,1738,1750],{},[372,1686,1687,1695],{},[389,1688,1689,262,1692],{},[49,1690,1691],{},"tankIntakePressure",[49,1693,1694],{},"tankSupplyGpm",[389,1696,1697,262,1700],{},[49,1698,1699],{},"35.0",[49,1701,1702],{},"1200.0",[372,1704,1705,1713],{},[389,1706,1707,262,1710],{},[49,1708,1709],{},"hydrantIntakePressure",[49,1711,1712],{},"hydrantSupplyGpm",[389,1714,1715,262,1718],{},[49,1716,1717],{},"150.0",[49,1719,1720],{},"1600.0",[372,1722,1723,1731],{},[389,1724,1725,262,1728],{},[49,1726,1727],{},"pumpIntakePressure",[49,1729,1730],{},"pumpSupplyGpm",[389,1732,1733,262,1735],{},[49,1734,288],{},[49,1736,1737],{},"900.0",[372,1739,1740,1745],{},[389,1741,1742],{},[49,1743,1744],{},"cavitationStartRatio",[389,1746,1747],{},[49,1748,1749],{},"0.85",[372,1751,1752,1757],{},[389,1753,1754],{},[49,1755,1756],{},"frictionLossPsiPerTenMeters",[389,1758,1759],{},[49,1760,1761],{},"10.0",[15,1763,1764,1433,1766,61],{},[49,1765,217],{},[19,1767,1768],{},"Pump Panel → Hydraulics",[1104,1770,1772,1778,1887],{"label":1771},"5 · Per-vehicle pump ports",[15,1773,1774,1775,1777],{},"Add these fields to every entry in ",[49,1776,308],{},":",[366,1779,1780,1789],{},[369,1781,1782],{},[372,1783,1784,1787],{},[375,1785,1786],{},"Vehicle field",[375,1788,1313],{},[384,1790,1791,1803,1815,1827,1839,1851,1863,1875],{},[372,1792,1793,1798],{},[389,1794,1795],{},[49,1796,1797],{},"pumpIntakeCount",[389,1799,1800],{},[49,1801,1802],{},"2",[372,1804,1805,1810],{},[389,1806,1807],{},[49,1808,1809],{},"pumpDischargeCount",[389,1811,1812],{},[49,1813,1814],{},"4",[372,1816,1817,1822],{},[389,1818,1819],{},[49,1820,1821],{},"pumpOutlet1Label",[389,1823,1824],{},[49,1825,1826],{},"\"Discharge Rear\"",[372,1828,1829,1834],{},[389,1830,1831],{},[49,1832,1833],{},"pumpOutlet2Label",[389,1835,1836],{},[49,1837,1838],{},"\"#1 Discharge\"",[372,1840,1841,1846],{},[389,1842,1843],{},[49,1844,1845],{},"pumpOutlet3Label",[389,1847,1848],{},[49,1849,1850],{},"\"#2 Discharge\"",[372,1852,1853,1858],{},[389,1854,1855],{},[49,1856,1857],{},"pumpOutlet4Label",[389,1859,1860],{},[49,1861,1862],{},"\"#3 Discharge\"",[372,1864,1865,1870],{},[389,1866,1867],{},[49,1868,1869],{},"pumpIntake1Label",[389,1871,1872],{},[49,1873,1874],{},"\"#1 Intake\"",[372,1876,1877,1882],{},[389,1878,1879],{},[49,1880,1881],{},"pumpIntake2Label",[389,1883,1884],{},[49,1885,1886],{},"\"#2 Intake\"",[15,1888,1889,1890,1892],{},"The new ",[49,1891,217],{}," vehicle cards manage counts, labels, and individual intake/outlet attachment positions. Existing hose and hydrant offsets remain valid fallbacks until you save dedicated port positions.",[15,1894,1895,1896,1898,1899,1777],{},"If you use ",[49,1897,217],{},", open the Fire job and review ",[19,1900,893],{},[68,1902,1903,1906,1909],{},[71,1904,1905],{},"panel mode and pressure/RPM limits",[71,1907,1908],{},"engine retention, fuel, heat, damage, and hydraulics",[71,1910,1911],{},"every pump vehicle's intake/outlet counts, labels, and attachment positions",[15,1913,1914],{},"Save the job after reviewing it. Still edit the three portable-drafting values from section 1 manually.",[15,1916,1917,1918,1920],{},"No old public block was removed. ",[49,1919,1647],{}," is the only existing shipped value changed by this patch.",[37,1922,1923],{"v-slot:data":39},[15,1924,1925,1926,61],{},"No SQL migration and no new inventory item or inventory image are required for ",[49,1927,189],{},[37,1929,1930,1933,1956,1959],{"v-slot:verify":39},[15,1931,1932],{},"Keep the dependency order:",[1175,1934,1939],{"className":1935,"code":1936,"filename":1937,"language":1938,"meta":39,"style":39},"language-cfg shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ensure sky_base\nensure sky_jobs_base\nensure sky_firejob\n","server.cfg","cfg",[49,1940,1941,1946,1951],{"__ignoreMap":39},[1183,1942,1943],{"class":1185,"line":1186},[1183,1944,1945],{},"ensure sky_base\n",[1183,1947,1948],{"class":1185,"line":1214},[1183,1949,1950],{},"ensure sky_jobs_base\n",[1183,1952,1953],{"class":1185,"line":1220},[1183,1954,1955],{},"ensure sky_firejob\n",[15,1957,1958],{},"Test on a staging server:",[68,1960,1962,1974,1980,1986,1992,2001,2007,2013,2019],{"className":1961},[672],[71,1963,1965,1967,1968,685,1970,688,1972,61],{"className":1964},[676],[678,1966],{"disabled":680,"type":681}," The console reports Base ",[49,1969,748],{},[49,1971,753],{},[49,1973,189],{},[71,1975,1977,1979],{"className":1976},[676],[678,1978],{"disabled":680,"type":681}," Simple mode exposes one intake and one discharge; enhanced mode exposes the configured ports.",[71,1981,1983,1985],{"className":1982},[676],[678,1984],{"disabled":680,"type":681}," Tank feed/fill, hydrant intake, portable pump intake, hose outlets, water monitor, and deck gun respect live valve and pressure state.",[71,1987,1989,1991],{"className":1988},[676],[678,1990],{"disabled":680,"type":681}," Fuel use, temperature, cavitation, overload warnings, and damage respond to pump load.",[71,1993,1995,1997,1998,2000],{"className":1994},[676],[678,1996],{"disabled":680,"type":681}," Natural drafting works inside every configured ",[49,1999,1204],{}," entry and is rejected outside them.",[71,2002,2004,2006],{"className":2003},[676],[678,2005],{"disabled":680,"type":681}," A firefighter can lay down and retrieve an attack hose, including inside an MLO.",[71,2008,2010,2012],{"className":2009},[676],[678,2011],{"disabled":680,"type":681}," Missing vehicle doors allow the intended rescue flow.",[71,2014,2016,2018],{"className":2015},[676],[678,2017],{"disabled":680,"type":681}," Incident Reports fill the shared tablet and air-bottle storage closes with Escape.",[71,2020,2022,2024],{"className":2021},[676],[678,2023],{"disabled":680,"type":681}," The protective-gear HUD shows helmet, mask, jacket, trousers, and boots correctly.",[31,2026,2029],{"date":2027,"title":2028},"2026-07-27","Version 1.3.0",[37,2030,2031,2047,2051,2077,2081,2110,2114,2127],{"v-slot:body":39},[10,2032,2033],{"color":12,"icon":13},[15,2034,44,2035,47,2037,22,2040,47,2042,57,2045,61],{},[19,2036,21],{},[49,2038,2039],{},"1.32.0",[19,2041,25],{},[49,2043,2044],{},"1.35.0",[19,2046,60],{},[15,2048,2049],{},[19,2050,66],{},[68,2052,2053,2059,2065,2071],{},[71,2054,2055,2058],{},[19,2056,2057],{},"Placeable persistent extinguisher mounts"," - authorized firefighters can use a mounting kit to place complete extinguishers on walls or the ground, remove them through controlled interactions, and preserve their position, rotation, fill, condition, and inventory metadata across restarts.",[71,2060,2061,2064],{},[19,2062,2063],{},"Player carry for Fire crews"," - on-duty firefighters can carry and release nearby players through synchronized animations, with configurable distance and movement rules.",[71,2066,2067,2070],{},[19,2068,2069],{},"More reliable multi-patient rescue"," - any accessible trapped patient can be treated, extracted, and handed to a moving ambulance independently of the order used for other occupants.",[71,2072,2073,2076],{},[19,2074,2075],{},"Accurate incident completion"," - resolved fires, oil spills, tree incidents, and rescue objectives now complete their owning Mission Creator scenario consistently.",[15,2078,2079],{},[19,2080,105],{},[68,2082,2083,2086,2089,2092,2095,2098,2101,2104,2107],{},[71,2084,2085],{},"Hose and nozzle props use authoritative shared state so other players and cinematic recordings see the same equipment.",[71,2087,2088],{},"Hard braking alone no longer traps occupants; crash reports require relevant collision evidence.",[71,2090,2091],{},"Trapped-player UI can show a localized top-down door overview with closed, open, damaged, and usable-exit states.",[71,2093,2094],{},"Protective gear can define separate male and female breathing and heat-protection clothing.",[71,2096,2097],{},"Mission Creator vehicle selection includes localized GTA vehicle categories, and placement gizmos remain interactive without position drift.",[71,2099,2100],{},"Fire Reports open inside the shared tablet, and firefighters can use shared bodycam/dashcam access supplied by Jobs Base.",[71,2102,2103],{},"Oil-spill editor size and cleanup state persist correctly through save and autosave.",[71,2105,2106],{},"Water Monitor radial actions appear reliably, and locally supplied fire vehicles synchronize correctly for other players.",[71,2108,2109],{},"Patient and caller dialogue renders reliably in a compact in-world rescue speech display.",[15,2111,2112],{},[19,2113,136],{},[68,2115,2116,2119,2122],{},[71,2117,2118],{},"Added the extinguisher mount model, texture, collision, archetype, inventory image, and localized setup text.",[71,2120,2121],{},"Reduced idle work for fire, hose, water-transfer, pump, and extinguisher systems.",[71,2123,2124,2125,61],{},"Updated the resource version to ",[49,2126,845],{},[187,2128,2130,2189,2245,2383,3350,3442],{"from":2129,"resource":60,"to":845},"1.2.0",[37,2131,2132],{"v-slot:simplified":39},[194,2133,2134,2144,2151,2160,2163,2170,2181],{},[71,2135,44,2136,47,2138,22,2140,47,2142,61],{},[19,2137,21],{},[49,2139,2039],{},[19,2141,25],{},[49,2143,2044],{},[71,2145,862,2146,865,2148,2150],{},[19,2147,60],{},[49,2149,845],{},", then back up the resource and database.",[71,2152,2153,2154,270,2156,2159],{},"Delete the old resource folder and install the complete new folder, including ",[49,2155,1032],{},[49,2157,2158],{},"stream",", locales, and the extinguisher mount assets.",[71,2161,2162],{},"Transfer your server-specific values into the new config files. Keep the new Player Carry, extinguisher placement/maintenance/stock, rescue door overview, and female protective-gear settings.",[71,2164,2165,2166,2169],{},"Add ",[49,2167,2168],{},"fire_extinguisher_mount_kit"," to the intended Fire shops and register the item and image in your inventory.",[71,2171,2172,2173,2176,2177,2180],{},"If ",[49,2174,2175],{},"Config.AutoExecuteQuery = false",", run the new ",[49,2178,2179],{},"/import.sql",". Otherwise the extinguisher table is upgraded automatically.",[71,2182,900,2183,270,2185,905,2187,908],{},[19,2184,21],{},[19,2186,25],{},[19,2188,60],{},[37,2190,2191,2202,2240],{"v-slot:prepare":39},[15,2192,44,2193,47,2195,22,2197,47,2199,2201],{},[49,2194,21],{},[49,2196,2039],{},[49,2198,25],{},[49,2200,2044],{},", then stop the server.",[366,2203,2204,2212],{},[369,2205,2206],{},[372,2207,2208,2210],{},[375,2209,922],{},[375,2211,925],{},[384,2213,2214,2224,2232],{},[372,2215,2216,2220],{},[389,2217,932,2218,935],{},[49,2219,60],{},[389,2221,938,2222,935],{},[49,2223,941],{},[372,2225,2226,2229],{},[389,2227,2228],{},"Database",[389,2230,2231],{},"A restorable SQL dump",[372,2233,2234,2236],{},[389,2235,946],{},[389,2237,949,2238,935],{},[49,2239,952],{},[954,2241,2242],{},[15,2243,2244],{},"Do not overlay this release. The resource now includes a rebuilt interface and new streamed extinguisher-mount assets.",[37,2246,2247,2249,2365],{"v-slot:files":39},[15,2248,969],{},[366,2250,2251,2261],{},[369,2252,2253],{},[372,2254,2255,2257,2259],{},[375,2256,978],{},[375,2258,981],{},[375,2260,984],{},[384,2262,2263,2276,2292,2312,2325,2338,2352],{},[372,2264,2265,2269,2273],{},[389,2266,2267],{},[19,2268,993],{},[389,2270,2271],{},[49,2272,998],{},[389,2274,2275],{},"Remove only after both backups exist",[372,2277,2278,2282,2284],{},[389,2279,2280],{},[19,2281,1008],{},[389,2283,1011],{},[389,2285,2286,2287,2289,2290],{},"Copy the new ",[49,2288,60],{}," folder to ",[49,2291,998],{},[372,2293,2294,2298,2306],{},[389,2295,2296],{},[19,2297,1023],{},[389,2299,2300,270,2302,905,2304],{},[49,2301,346],{},[49,2303,349],{},[49,2305,1032],{},[389,2307,2308,2309,2311],{},"Loads version ",[49,2310,845],{},", player carry, and the current interface",[372,2313,2314,2318,2322],{},[389,2315,2316],{},[19,2317,1023],{},[389,2319,932,2320,935],{},[49,2321,2158],{},[389,2323,2324],{},"Installs the mount model, texture, archetype, and collision",[372,2326,2327,2331,2335],{},[389,2328,2329],{},[19,2330,1023],{},[389,2332,2333],{},[49,2334,1046],{},[389,2336,2337],{},"Contains the current Fire and setup text",[372,2339,2340,2344,2349],{},[389,2341,2342],{},[19,2343,1023],{},[389,2345,2346],{},[49,2347,2348],{},"config/inventory/fire_extinguisher_mount_kit.png",[389,2350,2351],{},"Copy to your inventory later if required",[372,2353,2354,2359,2362],{},[389,2355,2356],{},[19,2357,2358],{},"Merge only if customized",[389,2360,2361],{},"Old config/editor/function edits",[389,2363,2364],{},"Reapply intentional changes inside the matching new files",[15,2366,2367,2368,2370,2371,270,2374,270,2377,905,2380,61],{},"Confirm that ",[49,2369,2158],{}," contains ",[49,2372,2373],{},"sky_fire_exting_mount.ydr",[49,2375,2376],{},".ytd",[49,2378,2379],{},".ytyp",[49,2381,2382],{},"_col.ybn",[37,2384,2385,2396,2407],{"v-slot:config":39},[15,2386,1079,2387,865,2389,2391,2392,2395],{},[19,2388,1082],{},[49,2390,1085],{},"; it already contains every required block. Transfer your old server values into it instead of replacing the file. The complete ",[49,2393,2394],{},"1.2.0 → 1.3.0"," public config migration is grouped below.",[1092,2397,2398],{},[15,2399,1096,2400,2402,2403,2406],{},[49,2401,1085],{},". For customized files under ",[49,2404,2405],{},"config/editor",", repeat the comparison one matching file path at a time.",[1101,2408,2409,2565,2791,2985,3306],{},[1104,2410,2412,2422,2562],{"label":2411},"1 · Player carry defaults",[15,2413,2414,2415,2418,2419,2421],{},"Keep the complete new ",[49,2416,2417],{},"Config.PlayerCarry"," block. ",[49,2420,217],{}," does not manage it.",[366,2423,2424,2433],{},[369,2425,2426],{},[372,2427,2428,2430],{},[375,2429,1680],{},[375,2431,2432],{},"Shipped default",[384,2434,2435,2460,2484,2506,2517,2540],{},[372,2436,2437,2450],{},[389,2438,2439,262,2441,262,2444,262,2447],{},[49,2440,1444],{},[49,2442,2443],{},"maxDistance",[49,2445,2446],{},"requireOnDuty",[49,2448,2449],{},"allowSprint",[389,2451,2452,262,2454,262,2456,262,2458],{},[49,2453,483],{},[49,2455,1521],{},[49,2457,483],{},[49,2459,399],{},[372,2461,2462,2473],{},[389,2463,2464,262,2467,262,2470],{},[49,2465,2466],{},"carrierAnimation.dict",[49,2468,2469],{},".name",[49,2471,2472],{},".flag",[389,2474,2475,262,2478,262,2481],{},[49,2476,2477],{},"\"missfinale_c2mcs_1\"",[49,2479,2480],{},"\"fin_c2_mcs_1_camman\"",[49,2482,2483],{},"49",[372,2485,2486,2495],{},[389,2487,2488,262,2491,262,2493],{},[49,2489,2490],{},"passengerAnimation.dict",[49,2492,2469],{},[49,2494,2472],{},[389,2496,2497,262,2500,262,2503],{},[49,2498,2499],{},"\"nm\"",[49,2501,2502],{},"\"firemans_carry\"",[49,2504,2505],{},"33",[372,2507,2508,2513],{},[389,2509,2510],{},[49,2511,2512],{},"attachBone",[389,2514,2515],{},[49,2516,277],{},[372,2518,2519,2530],{},[389,2520,2521,262,2524,262,2527],{},[49,2522,2523],{},"attachOffsets.x",[49,2525,2526],{},".y",[49,2528,2529],{},".z",[389,2531,2532,262,2535,262,2537],{},[49,2533,2534],{},"0.27",[49,2536,447],{},[49,2538,2539],{},"0.63",[372,2541,2542,2553],{},[389,2543,2544,262,2547,262,2550],{},[49,2545,2546],{},"attachOffsets.pitch",[49,2548,2549],{},".roll",[49,2551,2552],{},".yaw",[389,2554,2555,262,2557,262,2559],{},[49,2556,1509],{},[49,2558,1509],{},[49,2560,2561],{},"180.0",[15,2563,2564],{},"Change these values only when you deliberately want different carry access, animations, or player alignment.",[1104,2566,2568,2574,2644,2649,2785],{"label":2567},"2 · Extinguisher mount and placement defaults",[15,2569,2570,2571,1777],{},"Keep these new values directly under ",[49,2572,2573],{},"Config.InteriorExtinguishers",[366,2575,2576,2584],{},[369,2577,2578],{},[372,2579,2580,2582],{},[375,2581,1680],{},[375,2583,2432],{},[384,2585,2586,2598,2610,2621,2633],{},[372,2587,2588,2593],{},[389,2589,2590],{},[49,2591,2592],{},"fullAmmo",[389,2594,2595],{},[49,2596,2597],{},"2000",[372,2599,2600,2605],{},[389,2601,2602],{},[49,2603,2604],{},"emptyMountModel",[389,2606,2607],{},[49,2608,2609],{},"\"sky_fire_exting_mount\"",[372,2611,2612,2617],{},[389,2613,2614],{},[49,2615,2616],{},"emptyMountStreamDistance",[389,2618,2619],{},[49,2620,288],{},[372,2622,2623,2628],{},[389,2624,2625],{},[49,2626,2627],{},"emptyMountOffset",[389,2629,2630],{},[49,2631,2632],{},"{ x = 0.0, y = -0.03, z = 0.0 }",[372,2634,2635,2640],{},[389,2636,2637],{},[49,2638,2639],{},"emptyMountHeadingOffset",[389,2641,2642],{},[49,2643,447],{},[15,2645,2414,2646,1671],{},[49,2647,2648],{},"Config.InteriorExtinguishers.placement",[366,2650,2651,2659],{},[369,2652,2653],{},[372,2654,2655,2657],{},[375,2656,1680],{},[375,2658,2432],{},[384,2660,2661,2675,2687,2699,2715,2726,2742,2758,2775],{},[372,2662,2663,2669],{},[389,2664,2665,262,2667],{},[49,2666,1444],{},[49,2668,2446],{},[389,2670,2671,262,2673],{},[49,2672,483],{},[49,2674,483],{},[372,2676,2677,2682],{},[389,2678,2679],{},[49,2680,2681],{},"item",[389,2683,2684],{},[49,2685,2686],{},"\"fire_extinguisher_mount_kit\"",[372,2688,2689,2694],{},[389,2690,2691],{},[49,2692,2693],{},"model",[389,2695,2696],{},[49,2697,2698],{},"\"prop_fire_exting_3a\"",[372,2700,2701,2709],{},[389,2702,2703,262,2706],{},[49,2704,2705],{},"consumeItem",[49,2707,2708],{},"returnItemOnRemove",[389,2710,2711,262,2713],{},[49,2712,483],{},[49,2714,483],{},[372,2716,2717,2722],{},[389,2718,2719],{},[49,2720,2721],{},"zOffset",[389,2723,2724],{},[49,2725,447],{},[372,2727,2728,2736],{},[389,2729,2730,262,2733],{},[49,2731,2732],{},"streamDistance",[49,2734,2735],{},"pickupDistance",[389,2737,2738,262,2740],{},[49,2739,1717],{},[49,2741,1521],{},[372,2743,2744,2752],{},[389,2745,2746,262,2749],{},[49,2747,2748],{},"dynamic",[49,2750,2751],{},"wallPlacement",[389,2753,2754,262,2756],{},[49,2755,399],{},[49,2757,483],{},[372,2759,2760,2768],{},[389,2761,2762,262,2765],{},[49,2763,2764],{},"wallOffset",[49,2766,2767],{},"wallHeadingOffset",[389,2769,2770,262,2773],{},[49,2771,2772],{},"0.01",[49,2774,447],{},[372,2776,2777,2781],{},[389,2778,2779],{},[49,2780,225],{},[389,2782,2783],{},[49,2784,228],{},[15,2786,2787,2788,2790],{},"An empty ",[49,2789,225],{}," list uses the normal Fire access rules; populate it only when placement should be restricted further.",[1104,2792,2794,2797,2923,2929,2932,2976],{"label":2793},"3 · Maintenance, stock, and shop item",[15,2795,2796],{},"Keep both complete blocks:",[366,2798,2799,2807],{},[369,2800,2801],{},[372,2802,2803,2805],{},[375,2804,377],{},[375,2806,2432],{},[384,2808,2809,2820,2831,2843,2854,2865,2876,2888,2905],{},[372,2810,2811,2816],{},[389,2812,2813],{},[49,2814,2815],{},"maintenance.enabled",[389,2817,2818],{},[49,2819,483],{},[372,2821,2822,2827],{},[389,2823,2824],{},[49,2825,2826],{},"maintenance.requireOnDuty",[389,2828,2829],{},[49,2830,483],{},[372,2832,2833,2838],{},[389,2834,2835],{},[49,2836,2837],{},"maintenance.allowedJobs",[389,2839,2840],{},[49,2841,2842],{},"{ \"firefighter\" }",[372,2844,2845,2850],{},[389,2846,2847],{},[49,2848,2849],{},"maintenance.emptyThresholdPercent",[389,2851,2852],{},[49,2853,1545],{},[372,2855,2856,2861],{},[389,2857,2858],{},[49,2859,2860],{},"stock.enabled",[389,2862,2863],{},[49,2864,483],{},[372,2866,2867,2872],{},[389,2868,2869],{},[49,2870,2871],{},"stock.allowMountRestock",[389,2873,2874],{},[49,2875,483],{},[372,2877,2878,2883],{},[389,2879,2880],{},[49,2881,2882],{},"stock.storageStationId",[389,2884,2885],{},[49,2886,2887],{},"\"\"",[372,2889,2890,2898],{},[389,2891,2892,262,2895],{},[49,2893,2894],{},"stock.storageJob",[49,2896,2897],{},"stock.storageGrade",[389,2899,2900,262,2903],{},[49,2901,2902],{},"\"firefighter\"",[49,2904,277],{},[372,2906,2907,2915],{},[389,2908,2909,262,2912],{},[49,2910,2911],{},"stock.extinguisherItem",[49,2913,2914],{},"stock.extinguisherAmount",[389,2916,2917,262,2920],{},[49,2918,2919],{},"\"WEAPON_FIREEXTINGUISHER\"",[49,2921,2922],{},"1",[15,2924,2925,2928],{},[49,2926,2927],{},"stock.storageStationId = \"\""," leaves station storage unassigned. Set a real station ID before expecting stock-based restocking.",[15,2930,2931],{},"Add the mount kit only to Fire shops that should sell it:",[1175,2933,2935],{"className":1177,"code":2934,"filename":1085,"language":1179,"meta":39,"style":39},"{ name = \"fire_extinguisher_mount_kit\", label = \"Fire Extinguisher Mount Kit\", price = 250 }\n",[49,2936,2937],{"__ignoreMap":39},[1183,2938,2939,2942,2944,2947,2950,2953,2956,2958,2960,2963,2965,2968,2970,2973],{"class":1185,"line":1186},[1183,2940,2941],{"class":1189},"{ name ",[1183,2943,1226],{"class":1207},[1183,2945,2946],{"class":1207}," \"",[1183,2948,2168],{"class":2949},"sfazB",[1183,2951,2952],{"class":1207},"\"",[1183,2954,2955],{"class":1189},", label ",[1183,2957,1226],{"class":1207},[1183,2959,2946],{"class":1207},[1183,2961,2962],{"class":2949},"Fire Extinguisher Mount Kit",[1183,2964,2952],{"class":1207},[1183,2966,2967],{"class":1189},", price ",[1183,2969,1226],{"class":1207},[1183,2971,2972],{"class":1236}," 250",[1183,2974,2975],{"class":1189}," }\n",[15,2977,2978,2980,2981,2984],{},[49,2979,217],{}," manages placement, maintenance, and Fire shop rows. The ",[49,2982,2983],{},"stock"," block remains a manual config.",[1104,2986,2988,2997,3003,3094,3104,3284],{"label":2987},"4 · Door overview and female protective gear",[15,2989,2165,2990,2993,2994,61],{},[49,2991,2992],{},"doorOverviewEnabled = true"," under ",[49,2995,2996],{},"Config.VehicleRescue.playerEntrapment",[15,2998,2999,3000,1777],{},"Keep these three new entries under ",[49,3001,3002],{},"Config.FireSystem.protectiveGear.breathing.femaleRequiredComponents",[366,3004,3005,3023],{},[369,3006,3007],{},[372,3008,3009,3012,3017,3020],{},[375,3010,3011],{},"Component",[375,3013,3014],{},[49,3015,3016],{},"gearKey",[375,3018,3019],{},"Label",[375,3021,3022],{},"Drawable / texture",[384,3024,3025,3047,3071],{},[372,3026,3027,3031,3036,3041],{},[389,3028,3029],{},[49,3030,2922],{},[389,3032,3033],{},[49,3034,3035],{},"\"mask\"",[389,3037,3038],{},[49,3039,3040],{},"\"breathing mask\"",[389,3042,3043,262,3045],{},[49,3044,277],{},[49,3046,277],{},[372,3048,3049,3054,3059,3064],{},[389,3050,3051],{},[49,3052,3053],{},"5",[389,3055,3056],{},[49,3057,3058],{},"\"other\"",[389,3060,3061],{},[49,3062,3063],{},"\"air tank\"",[389,3065,3066,262,3069],{},[49,3067,3068],{},"48",[49,3070,277],{},[372,3072,3073,3078,3082,3087],{},[389,3074,3075],{},[49,3076,3077],{},"7",[389,3079,3080],{},[49,3081,3058],{},[389,3083,3084],{},[49,3085,3086],{},"\"breathing harness\"",[389,3088,3089,262,3092],{},[49,3090,3091],{},"32",[49,3093,277],{},[15,3095,3096,3097,3100,3101,1777],{},"There is no new breathing ",[49,3098,3099],{},"femaleRequiredProps"," list. Keep these entries under ",[49,3102,3103],{},"heat.femaleRequiredComponents",[366,3105,3106,3120],{},[369,3107,3108],{},[372,3109,3110,3112,3116,3118],{},[375,3111,3011],{},[375,3113,3114],{},[49,3115,3016],{},[375,3117,3019],{},[375,3119,3022],{},[384,3121,3122,3146,3169,3193,3216,3238,3261],{},[372,3123,3124,3129,3134,3139],{},[389,3125,3126],{},[49,3127,3128],{},"3",[389,3130,3131],{},[49,3132,3133],{},"\"top\"",[389,3135,3136],{},[49,3137,3138],{},"\"firefighter arms\"",[389,3140,3141,262,3144],{},[49,3142,3143],{},"111",[49,3145,277],{},[372,3147,3148,3152,3157,3162],{},[389,3149,3150],{},[49,3151,1814],{},[389,3153,3154],{},[49,3155,3156],{},"\"pants\"",[389,3158,3159],{},[49,3160,3161],{},"\"firefighter pants\"",[389,3163,3164,262,3167],{},[49,3165,3166],{},"42",[49,3168,277],{},[372,3170,3171,3176,3181,3186],{},[389,3172,3173],{},[49,3174,3175],{},"6",[389,3177,3178],{},[49,3179,3180],{},"\"shoes\"",[389,3182,3183],{},[49,3184,3185],{},"\"firefighter boots\"",[389,3187,3188,262,3191],{},[49,3189,3190],{},"13",[49,3192,277],{},[372,3194,3195,3200,3204,3209],{},[389,3196,3197],{},[49,3198,3199],{},"8",[389,3201,3202],{},[49,3203,3133],{},[389,3205,3206],{},[49,3207,3208],{},"\"firefighter undershirt\"",[389,3210,3211,262,3214],{},[49,3212,3213],{},"44",[49,3215,277],{},[372,3217,3218,3223,3227,3232],{},[389,3219,3220],{},[49,3221,3222],{},"9",[389,3224,3225],{},[49,3226,3133],{},[389,3228,3229],{},[49,3230,3231],{},"\"firefighter vest\"",[389,3233,3234,262,3236],{},[49,3235,277],{},[49,3237,277],{},[372,3239,3240,3245,3249,3254],{},[389,3241,3242],{},[49,3243,3244],{},"10",[389,3246,3247],{},[49,3248,3058],{},[389,3250,3251],{},[49,3252,3253],{},"\"firefighter decals\"",[389,3255,3256,262,3259],{},[49,3257,3258],{},"15",[49,3260,277],{},[372,3262,3263,3268,3272,3277],{},[389,3264,3265],{},[49,3266,3267],{},"11",[389,3269,3270],{},[49,3271,3133],{},[389,3273,3274],{},[49,3275,3276],{},"\"firefighter jacket\"",[389,3278,3279,262,3282],{},[49,3280,3281],{},"70",[49,3283,277],{},[15,3285,3286,3287,3290,3291,270,3294,2955,3297,270,3300,905,3303,61],{},"Keep one ",[49,3288,3289],{},"heat.femaleRequiredProps"," entry: ",[49,3292,3293],{},"prop = 0",[49,3295,3296],{},"gearKey = \"helmet\"",[49,3298,3299],{},"\"firefighter helmet\"",[49,3301,3302],{},"drawable = 44",[49,3304,3305],{},"texture = 0",[1104,3307,3309,3314,3341],{"label":3308},"5 · What to review in /jobconfig",[15,3310,1895,3311,3313],{},[49,3312,217],{},", open the Fire job and review:",[68,3315,3316,3324,3327,3332,3335],{},[71,3317,3318,22,3321],{},[19,3319,3320],{},"Extinguisher Placement",[19,3322,3323],{},"Maintenance",[71,3325,3326],{},"allowed jobs, empty-mount model/render distance/offset/heading, wall alignment, and custom mounts",[71,3328,3329],{},[19,3330,3331],{},"Door Overview",[71,3333,3334],{},"the mount kit in every intended Fire shop",[71,3336,3337,3338],{},"male and female ",[19,3339,3340],{},"Protective Gear",[15,3342,3343,3344,270,3346,3349],{},"Then save. These parts still remain manual: ",[49,3345,2417],{},[49,3347,3348],{},"Config.InteriorExtinguishers.stock",", streamed assets, SQL, and the inventory item/image.",[37,3351,3352,3355,3392,3433],{"v-slot:data":39},[15,3353,3354],{},"Choose exactly one database path:",[366,3356,3357,3367],{},[369,3358,3359],{},[372,3360,3361,3364],{},[375,3362,3363],{},"Your setting",[375,3365,3366],{},"Required action",[384,3368,3369,3379],{},[372,3370,3371,3376],{},[389,3372,3373],{},[49,3374,3375],{},"Config.AutoExecuteQuery = true",[389,3377,3378],{},"Do not import SQL manually. The first start upgrades the extinguisher table.",[372,3380,3381,3385],{},[389,3382,3383],{},[49,3384,2175],{},[389,3386,3387,3388,3391],{},"Run the new ",[49,3389,3390],{},"sky_firejob/import.sql"," once while the server is stopped.",[15,3393,3394,3395,3398,3399,270,3402,270,3405,270,3408,270,3411,270,3414,270,3417,270,3420,270,3423,270,3426,905,3429,3432],{},"The migration keeps existing ",[49,3396,3397],{},"sky_fire_extinguishers"," rows and adds ",[49,3400,3401],{},"rx",[49,3403,3404],{},"ry",[49,3406,3407],{},"rz",[49,3409,3410],{},"fill_level",[49,3412,3413],{},"item_metadata",[49,3415,3416],{},"condition_status",[49,3418,3419],{},"is_taken",[49,3421,3422],{},"is_custom",[49,3424,3425],{},"last_inspected_by",[49,3427,3428],{},"last_inspected_at",[49,3430,3431],{},"idx_inspection_due (is_taken, last_inspected_at)",". Do not drop the table.",[15,3434,3435,3436,3438,3439,3441],{},"Register ",[49,3437,2168],{}," in your active inventory unless the item already exists. The resource does not create the inventory item definition automatically. Copy ",[49,3440,2348],{}," into the inventory image folder.",[37,3443,3444,3446,3462,3464],{"v-slot:verify":39},[15,3445,1932],{},[1175,3447,3448],{"className":1935,"code":1936,"filename":1937,"language":1938,"meta":39,"style":39},[49,3449,3450,3454,3458],{"__ignoreMap":39},[1183,3451,3452],{"class":1185,"line":1186},[1183,3453,1945],{},[1183,3455,3456],{"class":1185,"line":1214},[1183,3457,1950],{},[1183,3459,3460],{"class":1185,"line":1220},[1183,3461,1955],{},[15,3463,1958],{},[68,3465,3467,3476,3482,3488,3494,3500,3506,3512,3518],{"className":3466},[672],[71,3468,3470,3472,3473,3475],{"className":3469},[676],[678,3471],{"disabled":680,"type":681}," The console reports Fire ",[49,3474,845],{}," without SQL, dependency, or missing-stream errors.",[71,3477,3479,3481],{"className":3478},[676],[678,3480],{"disabled":680,"type":681}," A mount can be placed on a wall and ground, removed, and returned as an item.",[71,3483,3485,3487],{"className":3484},[676],[678,3486],{"disabled":680,"type":681}," Extinguisher take/restock, fill, condition, and restart persistence work.",[71,3489,3491,3493],{"className":3490},[676],[678,3492],{"disabled":680,"type":681}," Stock-based restocking uses the configured station, job, grade, item, and amount.",[71,3495,3497,3499],{"className":3496},[676],[678,3498],{"disabled":680,"type":681}," Player carry synchronizes and releases correctly.",[71,3501,3503,3505],{"className":3502},[676],[678,3504],{"disabled":680,"type":681}," Hose/nozzle props are visible to a second client.",[71,3507,3509,3511],{"className":3508},[676],[678,3510],{"disabled":680,"type":681}," Hard braking alone does not trap players; real collisions and unordered multi-patient rescue work.",[71,3513,3515,3517],{"className":3514},[676],[678,3516],{"disabled":680,"type":681}," Fire, oil, tree, and rescue objectives complete; oil-spill edits persist.",[71,3519,3521,3523],{"className":3520},[676],[678,3522],{"disabled":680,"type":681}," Male and female protective gear rules and the trapped-player door overview display correctly.",[31,3525,3528],{"date":3526,"title":3527},"2026-07-23","Version 1.2.0",[37,3529,3530,3546,3550,3582,3586,3606,3610,3619],{"v-slot:body":39},[10,3531,3532],{"color":12,"icon":13},[15,3533,44,3534,47,3536,22,3539,47,3541,57,3544,61],{},[19,3535,21],{},[49,3537,3538],{},"1.31.0",[19,3540,25],{},[49,3542,3543],{},"1.34.0",[19,3545,60],{},[15,3547,3548],{},[19,3549,66],{},[68,3551,3552,3558,3564,3570,3576],{},[71,3553,3554,3557],{},[19,3555,3556],{},"Vehicle-to-vehicle water transfer"," - firefighters can connect compatible vehicles with a hose and transfer tank water through a synchronized, server-controlled workflow that pauses safely when the target tank is full.",[71,3559,3560,3563],{},[19,3561,3562],{},"Operational pump behavior"," - connected vehicles can be immobilized, engines can remain running, and configurable pump RPM behavior applies while hoses, cannons, or water monitors are actively spraying.",[71,3565,3566,3569],{},[19,3567,3568],{},"Interior extinguisher pickup system"," - configured world extinguishers can be collected, persisted, restored, and restricted by duty or job access.",[71,3571,3572,3575],{},[19,3573,3574],{},"Configurable society rewards"," - completed fire, oil-spill, tree, and rescue work can reward the society account of the completing player's configured Fire job.",[71,3577,3578,3581],{},[19,3579,3580],{},"Automatic Missions configuration"," - every creator mission can define whether it starts automatically, which jobs qualify, and whether duty is required, while new missions remain manual by default.",[15,3583,3584],{},[19,3585,105],{},[68,3587,3588,3591,3594,3597,3600,3603],{},[71,3589,3590],{},"Protective clothing requirements can now identify gear as helmet, mask, top, pants, shoes, or other equipment and display clearer missing-gear feedback.",[71,3592,3593],{},"Fire Stations and custom clothing labels can be managed more clearly in Job Configurator.",[71,3595,3596],{},"Tree incidents synchronize chainsaw props, avoid duplicate log pieces, and clean up logs and incident blips more reliably.",[71,3598,3599],{},"Rescue missions validate entities more carefully and limit completion notifications to the relevant participants.",[71,3601,3602],{},"Rear-door vehicle-rescue minigames use the correct visual scale.",[71,3604,3605],{},"Added the Full Dark tablet theme and PNG/WebP item-image support.",[15,3607,3608],{},[19,3609,136],{},[68,3611,3612,3615],{},[71,3613,3614],{},"Improved configurator reliability during persisted oil-spill updates.",[71,3616,2124,3617,61],{},[49,3618,2129],{},[1101,3620,3621],{},[1104,3622,3624],{"label":3623},"Update Instructions",[194,3625,3626,3636,3641,3651,3660,3665,3787,3792,3801,3804],{},[71,3627,44,3628,47,3630,22,3632,47,3634,61],{},[19,3629,21],{},[49,3631,3538],{},[19,3633,25],{},[49,3635,3543],{},[71,3637,862,3638,3640],{},[19,3639,60],{}," from the CFX Portal and create a database and resource backup.",[71,3642,3643,3644,3647,3648,61],{},"Replace the ",[49,3645,3646],{},"/source"," folder, including the rebuilt interface under ",[49,3649,3650],{},"/source/html",[71,3652,343,3653,3656,3657,3659],{},[49,3654,3655],{},"/fxmanifest.lua"," so the new extinguisher, water-transfer, pump, reward, and version ",[49,3658,2129],{}," scripts are loaded.",[71,3661,343,3662,61],{},[49,3663,3664],{},"/config/locales",[71,3666,3667,3668,3670,3671,3673,3674,3677,3678],{},"If you do ",[19,3669,1112],{}," use ",[49,3672,217],{},", merge every changed ",[49,3675,3676],{},"/config/config.lua"," block manually:\n",[68,3679,3680,3688,3699,3707,3717,3736,3753],{},[71,3681,1667,3682,3684,3685,3687],{},[49,3683,2573],{}," block, including ",[49,3686,1444],{},", item/label, duty and job access, interaction/scan/restore distances, pickup/restore durations, allowed jobs, and the extinguisher model list.",[71,3689,3690,3691,3694,3695,3698],{},"Under ",[49,3692,3693],{},"Config.Hose",", add the complete ",[49,3696,3697],{},"vehicleTransfer"," block with its enable/duty rules, transfer rate/tick, connect and hose distances, external-source and disconnect behavior, and source/target offsets.",[71,3700,3690,3701,3694,3703,3706],{},[49,3702,3693],{},[49,3704,3705],{},"vehiclePumpBehavior"," block with transfer immobilization, engine behavior, RPM controls, and update timing.",[71,3708,2165,3709,3712,3713,3716],{},[49,3710,3711],{},"societyAccount = \"society_firefighter\""," to the shipped Fire job in ",[49,3714,3715],{},"Config.Jobs",", or use the society account that belongs to each custom Fire job.",[71,3718,1667,3719,3722,3723,270,3726,270,3729,905,3732,3735],{},[49,3720,3721],{},"Config.SocietyRewards"," block and configure the enabled state, eligible job rows, and reward amount separately for ",[49,3724,3725],{},"fire",[49,3727,3728],{},"oil",[49,3730,3731],{},"tree",[49,3733,3734],{},"rescue"," work.",[71,3737,3690,3738,3741,3742,22,3745,3748,3749,3752],{},[49,3739,3740],{},"Config.FireScenarioCreator.random",", remove ",[49,3743,3744],{},"defaultMinOnDuty",[49,3746,3747],{},"manualOnlyScenarios",", then add ",[49,3750,3751],{},"missions = {}",". Mission rows now carry their own automatic-start, duty, and job rules.",[71,3754,3755,3756,3758,3759,270,3762,905,3765,3768,3769,270,3772,270,3775,270,3778,270,3781,905,3784,61],{},"Add the appropriate ",[49,3757,3016],{}," to every entry under ",[49,3760,3761],{},"Config.FireSystem.protectiveGear.breathing.requiredComponents",[49,3763,3764],{},"heat.requiredComponents",[49,3766,3767],{},"heat.requiredProps",". Supported categories are ",[49,3770,3771],{},"helmet",[49,3773,3774],{},"mask",[49,3776,3777],{},"top",[49,3779,3780],{},"pants",[49,3782,3783],{},"shoes",[49,3785,3786],{},"other",[71,3788,1895,3789,3791],{},[49,3790,217],{},", verify Interior Extinguishers, Vehicle Water Transfer, Pump Behavior, Society Rewards, Protective Gear, and Automatic Missions before saving. Keep the complete shipped config blocks available as runtime defaults.",[71,3793,3794,3795,3797,3798,3800],{},"Run the updated ",[49,3796,2179],{}," if automatic query execution is disabled. It creates ",[49,3799,3397],{}," for persistent interior extinguisher state.",[71,3802,3803],{},"Ensure the configured extinguisher item or weapon is available through your inventory setup.",[71,3805,900,3806,3808],{},[19,3807,60],{}," after both base resources and test vehicle water transfer, pump behavior, extinguisher pickup/restore, society payouts for every mission type, protective gear checks, automatic mission filters, and tree/rescue cleanup.",[31,3810,3813],{"date":3811,"title":3812},"2026-07-20","Version 1.1.0",[37,3814,3815,3830,3834,3866,3870,3896,3900,3916],{"v-slot:body":39},[10,3816,3817],{"color":12,"icon":13},[15,3818,44,3819,47,3821,22,3824,47,3826,57,3828,61],{},[19,3820,21],{},[49,3822,3823],{},"1.30.0",[19,3825,25],{},[49,3827,51],{},[19,3829,60],{},[15,3831,3832],{},[19,3833,66],{},[68,3835,3836,3842,3848,3854,3860],{},[71,3837,3838,3841],{},[19,3839,3840],{},"Portable water monitor"," - firefighters can place, aim, supply, operate, and recover a synchronized water monitor that consumes truck-tank or external water and extinguishes fires through server-authoritative hit validation.",[71,3843,3844,3847],{},[19,3845,3846],{},"Operational helicopter bucket"," - configurable helicopter buckets can attach on the ground, fill from water, synchronize their movement, and perform validated high-capacity water drops.",[71,3849,3850,3853],{},[19,3851,3852],{},"Expanded fire simulation"," - configurable extinguishing agents, vehicle fuel-fire rules, reignition, long-range rendering, consolidated smoke, ambient 3D sounds, and standalone incident dispatches deepen fire behavior.",[71,3855,3856,3859],{},[19,3857,3858],{},"Reliable vehicle rescue flow"," - glass and spreader actions use the configured occupant side, tool minigames, and server validation. The obsolete seatbelt minigame step was removed, so an accessible patient proceeds directly to extraction from the vehicle.",[71,3861,3862,3865],{},[19,3863,3864],{},"Improved hose runtime"," - the hose uses configurable performance modes, smoother segmented geometry, better synchronization, and more stable nozzle/vehicle attachment behavior.",[15,3867,3868],{},[19,3869,105],{},[68,3871,3872,3875,3878,3881,3884,3887,3890,3893],{},[71,3873,3874],{},"Added synchronized firetruck cannon streams and authoritative cleanup for deployed firefighting equipment.",[71,3876,3877],{},"Added shared 3D sound playback for fires, flares, chainsaws, and configured effects.",[71,3879,3880],{},"Added item-based glass hammer and spreader actions to mission rescue workflows.",[71,3882,3883],{},"Added radial action submenus with one dynamic rescue action per vehicle side.",[71,3885,3886],{},"Added persisted mission-creator edits, improved gizmo controls, and more reliable scenario/entity cleanup.",[71,3888,3889],{},"Added server-side validation for player entrapment and reliable completion after every trapped patient is delivered.",[71,3891,3892],{},"Vehicle fires remain exterior incidents, stale entrapment clears when its vehicle disappears, and resource-owned props are removed on stop.",[71,3894,3895],{},"Completed the English/German Job Configurator coverage and the bundled runtime locale catalogues.",[15,3897,3898],{},[19,3899,136],{},[68,3901,3902,3905,3908,3911],{},[71,3903,3904],{},"Simplified water equipment configuration and moved stable geometry values into shared runtime definitions.",[71,3906,3907],{},"Added the water monitor model to creator prop selection with PNG preview support.",[71,3909,3910],{},"Normalized streamed metadata declarations and removed an invalid duplicate nozzle archetype.",[71,3912,2124,3913,61],{},[49,3914,3915],{},"1.1.0",[1101,3917,3918],{},[1104,3919,3920],{"label":3623},[194,3921,3922,3932,3937,3943,3951,3960,3964,4070,4078,4084,4091,4096],{},[71,3923,44,3924,47,3926,22,3928,47,3930,61],{},[19,3925,21],{},[49,3927,3823],{},[19,3929,25],{},[49,3931,51],{},[71,3933,862,3934,3936],{},[19,3935,60],{}," from the CFX Portal and create a resource backup.",[71,3938,3643,3939,3647,3941,61],{},[49,3940,3646],{},[49,3942,3650],{},[71,3944,343,3945,3947,3948,3950],{},[49,3946,3655],{}," so the new water equipment, sound, cleanup, stream declarations, and version ",[49,3949,3915],{}," are loaded.",[71,3952,343,3953,22,3956,3959],{},[49,3954,3955],{},"/stream",[49,3957,3958],{},"/meta"," to install the current equipment models and metadata.",[71,3961,343,3962,61],{},[49,3963,3664],{},[71,3965,3667,3966,3670,3968,3970,3971,3973,3974],{},[19,3967,1112],{},[49,3969,217],{},", merge these ",[49,3972,3676],{}," changes manually:\n",[68,3975,3976,3986,3993,4000,4017,4030,4042,4063],{},[71,3977,1014,3978,3981,3982,3985],{},[49,3979,3980],{},"Config.WaterMonitor"," block and add ",[49,3983,3984],{},"{ name = \"water_monitor\", label = \"Water Monitor\", price = 750 }"," to every Fire Job shop that should sell it.",[71,3987,3988,3989,3992],{},"Replace the complete ",[49,3990,3991],{},"Config.HeliBucket"," block so item/command use, ground attachment, model-specific offsets, rope settings, capacity, filling, and validated dump behavior use the current values.",[71,3994,3995,3996,3999],{},"Merge the complete new Hose geometry/performance fields, including ",[49,3997,3998],{},"performanceMode = \"performance\"",", segment/nozzle/vehicle offsets, update distances, and timing.",[71,4001,3690,4002,218,4005,270,4008,270,4011,905,4014,61],{},[49,4003,4004],{},"Config.OilSpills",[49,4006,4007],{},"bindDurationMs",[49,4009,4010],{},"sweepDurationMs",[49,4012,4013],{},"absorbentMinigame",[49,4015,4016],{},"sweepMinigame",[71,4018,3690,4019,4022,4023,22,4026,4029],{},[49,4020,4021],{},"Config.VehicleRescue",", add the current ",[49,4024,4025],{},"minigames.glass",[49,4027,4028],{},"minigames.spreader"," blocks. Remove any old seatbelt-minigame configuration because extraction now starts directly after vehicle access is available.",[71,4031,3690,4032,218,4035,270,4038,4041],{},[49,4033,4034],{},"Config.TrappedPatientRescue",[49,4036,4037],{},"interactionDistance = 2.2",[49,4039,4040],{},"ambulanceDropoffRadius = 3.0",", and the current treatment duration.",[71,4043,3690,4044,4047,4048,270,4051,270,4054,270,4057,905,4060,61],{},[49,4045,4046],{},"Config.FireSystem",", add/merge ",[49,4049,4050],{},"syncDistance",[49,4052,4053],{},"dispatch",[49,4055,4056],{},"render",[49,4058,4059],{},"effects.sounds",[49,4061,4062],{},"reignition",[71,4064,4065,4066,4069],{},"Add the ",[49,4067,4068],{},"Config.FireSystem.materials.vehicle_fuel"," extinguishing-agent rules; the shipped default blocks water and the water monitor while allowing foam and extinguishers.",[71,4071,1895,4072,4074,4075,61],{},[49,4073,217],{},", verify the same water equipment, hose, oil-spill, rescue, dispatch, render, sound, reignition, and extinguishing-agent settings before saving. Model geometry and runtime-only config fields must still be merged from the shipped ",[49,4076,4077],{},"config.lua",[71,4079,343,4080,4083],{},[49,4081,4082],{},"/config/editor/props.lua",", then restore any custom creator prop entries.",[71,4085,4086,4087,4090],{},"Register the ",[49,4088,4089],{},"water_monitor"," item manually if your inventory requires explicit item registration; keep it in the configured Fire Job shop if it should be purchasable.",[71,4092,900,4093,4095],{},[19,4094,60],{}," after both base resources and test hoses, the water monitor, bucket filling/dumping, fire agents/reignition, rescue extraction without the seatbelt step, standalone dispatches, and cleanup after a resource restart.",[71,4097,4098],{},"No SQL migration is required.",[4100,4101,4102],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":39,"searchDepth":1186,"depth":1214,"links":4104},[],"Full change history for Sky Fire Job.","md",null,{},{"icon":4110},"i-lucide-history","/docs/jobs/firejob/changelog",{"title":5,"description":4105},{"loc":4111},"1.docs/0.jobs/3.firejob/6.changelog","PCWVFUjT2y0MideCZciuU6cdPeX7YKwv3NGOEgxsBDU",[4117,4122],{"title":4118,"path":4119,"stem":4120,"description":4121,"children":-1},"Troubleshooting","/docs/jobs/firejob/troubleshooting","1.docs/0.jobs/3.firejob/5.troubleshooting","Common setup and runtime problems for Sky Fire Job and how to resolve them.",{"title":4123,"path":4124,"stem":4125,"description":4126,"icon":4127,"children":-1},"First Steps","/docs/guide/first-steps","1.docs/1.guide/1.first-steps","A practical first-read guide for FiveM server owners using Sky-Systems resources.","i-lucide-sparkles",[],1786379829312]