[{"data":1,"prerenderedAt":4077},["ShallowReactive",2],{"/docs/jobs/mechanicjob/changelog":3,"/docs/jobs/mechanicjob/changelog-surround":4065},{"id":4,"title":5,"body":6,"description":4054,"extension":4055,"head":4056,"meta":4057,"navigation":4058,"path":4060,"schemaOrg":4056,"seo":4061,"sitemap":4062,"stem":4063,"__hash__":4064},"docs/1.docs/0.jobs/2.mechanicjob/6.changelog.md","Changelog",{"type":7,"value":8,"toc":4052},"minimark",[9,4048],[10,11,12,739,1213,2608,2939,3608,3976],"u-changelog-versions",{},[13,14,18],"u-changelog-version",{"date":15,"title":16,"badge":17},"2026-04-30","Version 1.0.0","Latest",[19,20,22,40,45,58,63,88,93,105],"template",{"v-slot:body":21},"",[23,24,27],"callout",{"color":25,"icon":26},"warning","i-lucide-triangle-alert",[28,29,30,31,35,36,39],"p",{},"Before updating, make sure ",[32,33,34],"strong",{},"sky_base"," and ",[32,37,38],{},"sky_jobs_base"," is up to date.",[28,41,42],{},[32,43,44],{},"Highlights",[46,47,48,52,55],"ul",{},[49,50,51],"li",{},"Added a wheel damage system that can damage, pop, and detach wheels from collisions, hard landings, and vehicle class/wheel-type multipliers.",[49,53,54],{},"Added mechanic repair support for damaged tyres through the Diagnostics App and the existing wheel workflow.",[49,56,57],{},"Improved car lift vehicle synchronization so attached vehicles are synced to nearby players through the server.",[28,59,60],{},[32,61,62],{},"Notable Changes",[46,64,65,68,76,79,82,85],{},[49,66,67],{},"Wheel damage is synced through vehicle state bags and server-side validation, including distance checks and mechanic-only reset handling.",[49,69,70,71,75],{},"Wheel damage is configurable with ",[72,73,74],"code",{},"Config.WheelDamage.enabled",", default multipliers, off-road wheel multipliers, and per-vehicle-class multipliers.",[49,77,78],{},"Only one wheel can detach at a time to reduce vehicle physics issues.",[49,80,81],{},"Tyre repairs can skip the detach step when the wheel is already detached by wheel damage.",[49,83,84],{},"The Diagnostics App now shows damaged tyres as repairable even when normal tyre wear is otherwise full.",[49,86,87],{},"Car lift attachment and detachment events now sync to nearby players and avoid duplicated lift props.",[28,89,90],{},[32,91,92],{},"Other Changes",[46,94,95],{},[49,96,97,98,35,101,104],{},"Added inventory images for ",[72,99,100],{},"wash_sponge",[72,102,103],{},"vehicle_wax",".",[106,107,108],"accordion",{},[109,110,112,182],"accordion-item",{"label":111},"Update Instructions",[113,114,115,122,125,132,137,143,165,175],"ol",{},[49,116,117,118,121],{},"Download ",[32,119,120],{},"sky_mechanicjob"," from the CFX Portal.",[49,123,124],{},"Create a backup.",[49,126,127,128,131],{},"Replace the ",[72,129,130],{},"/source"," folder.",[49,133,127,134,131],{},[72,135,136],{},"/config/locales",[49,138,127,139,142],{},[72,140,141],{},"/html"," or built frontend files included with the resource so the Diagnostics App can display wheel damage repair state.",[49,144,145,146,149,150,153,154,153,157,160,161,164],{},"Replace ",[72,147,148],{},"fxmanifest.lua"," so ",[72,151,152],{},"source/client/wheel_damage.lua",", ",[72,155,156],{},"source/server/wheel_damage.lua",[72,158,159],{},"source/server/lift.lua",", and version ",[72,162,163],{},"1.0.0"," are loaded.",[49,166,167,168,35,171,174],{},"Add or merge the new ",[72,169,170],{},"/config/inventory/wash_sponge.png",[72,172,173],{},"/config/inventory/vehicle_wax.png"," item images if your inventory requires item images.",[49,176,177,178,181],{},"Add the new wheel damage config section to ",[72,179,180],{},"config/config.lua",":",[183,184,188],"pre",{"className":185,"code":186,"language":187,"meta":21,"style":21},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.WheelDamage = {\n    enabled = true,\n    multipliers = {\n        default = 1.0,\n        offroadWheels = 0.65,\n        vehicleClasses = {\n            [0] = 1.0,   -- Compacts\n            [1] = 1.0,   -- Sedans\n            [2] = 0.9,   -- SUVs\n            [3] = 1.05,  -- Coupes\n            [4] = 1.05,  -- Muscle\n            [5] = 1.0,   -- Sports Classics\n            [6] = 1.0,   -- Sports\n            [7] = 1.1,   -- Super\n            [8] = 0.0,   -- Motorcycles\n            [9] = 0.7,   -- Off-road\n            [10] = 0.85, -- Industrial\n            [11] = 0.95, -- Utility\n            [12] = 0.95, -- Vans\n            [13] = 0.0,  -- Cycles\n            [14] = 0.0,  -- Boats\n            [15] = 0.0,  -- Helicopters\n            [16] = 0.0,  -- Planes\n            [17] = 0.85, -- Service\n            [18] = 0.8,  -- Emergency\n            [19] = 0.75, -- Military\n            [20] = 0.85, -- Commercial\n            [21] = 0.0,  -- Trains\n            [22] = 1.0   -- Open Wheel\n        }\n    }\n}\n","lua",[72,189,190,210,225,235,249,262,272,295,314,334,355,374,393,412,432,452,472,492,512,531,550,569,588,607,626,646,666,685,704,721,727,733],{"__ignoreMap":21},[191,192,195,199,203,207],"span",{"class":193,"line":194},"line",1,[191,196,198],{"class":197},"sTEyZ","Config.",[191,200,202],{"class":201},"sBMFI","WheelDamage",[191,204,206],{"class":205},"sMK4o"," =",[191,208,209],{"class":197}," {\n",[191,211,213,216,219,222],{"class":193,"line":212},2,[191,214,215],{"class":197},"    enabled ",[191,217,218],{"class":205},"=",[191,220,221],{"class":205}," true",[191,223,224],{"class":197},",\n",[191,226,228,231,233],{"class":193,"line":227},3,[191,229,230],{"class":197},"    multipliers ",[191,232,218],{"class":205},[191,234,209],{"class":197},[191,236,238,241,243,247],{"class":193,"line":237},4,[191,239,240],{"class":197},"        default ",[191,242,218],{"class":205},[191,244,246],{"class":245},"sbssI"," 1.0",[191,248,224],{"class":197},[191,250,252,255,257,260],{"class":193,"line":251},5,[191,253,254],{"class":197},"        offroadWheels ",[191,256,218],{"class":205},[191,258,259],{"class":245}," 0.65",[191,261,224],{"class":197},[191,263,265,268,270],{"class":193,"line":264},6,[191,266,267],{"class":197},"        vehicleClasses ",[191,269,218],{"class":205},[191,271,209],{"class":197},[191,273,275,278,281,284,286,288,291],{"class":193,"line":274},7,[191,276,277],{"class":197},"            [",[191,279,280],{"class":245},"0",[191,282,283],{"class":197},"] ",[191,285,218],{"class":205},[191,287,246],{"class":245},[191,289,290],{"class":197},",   ",[191,292,294],{"class":293},"sHwdD","-- Compacts\n",[191,296,298,300,303,305,307,309,311],{"class":193,"line":297},8,[191,299,277],{"class":197},[191,301,302],{"class":245},"1",[191,304,283],{"class":197},[191,306,218],{"class":205},[191,308,246],{"class":245},[191,310,290],{"class":197},[191,312,313],{"class":293},"-- Sedans\n",[191,315,317,319,322,324,326,329,331],{"class":193,"line":316},9,[191,318,277],{"class":197},[191,320,321],{"class":245},"2",[191,323,283],{"class":197},[191,325,218],{"class":205},[191,327,328],{"class":245}," 0.9",[191,330,290],{"class":197},[191,332,333],{"class":293},"-- SUVs\n",[191,335,337,339,342,344,346,349,352],{"class":193,"line":336},10,[191,338,277],{"class":197},[191,340,341],{"class":245},"3",[191,343,283],{"class":197},[191,345,218],{"class":205},[191,347,348],{"class":245}," 1.05",[191,350,351],{"class":197},",  ",[191,353,354],{"class":293},"-- Coupes\n",[191,356,358,360,363,365,367,369,371],{"class":193,"line":357},11,[191,359,277],{"class":197},[191,361,362],{"class":245},"4",[191,364,283],{"class":197},[191,366,218],{"class":205},[191,368,348],{"class":245},[191,370,351],{"class":197},[191,372,373],{"class":293},"-- Muscle\n",[191,375,377,379,382,384,386,388,390],{"class":193,"line":376},12,[191,378,277],{"class":197},[191,380,381],{"class":245},"5",[191,383,283],{"class":197},[191,385,218],{"class":205},[191,387,246],{"class":245},[191,389,290],{"class":197},[191,391,392],{"class":293},"-- Sports Classics\n",[191,394,396,398,401,403,405,407,409],{"class":193,"line":395},13,[191,397,277],{"class":197},[191,399,400],{"class":245},"6",[191,402,283],{"class":197},[191,404,218],{"class":205},[191,406,246],{"class":245},[191,408,290],{"class":197},[191,410,411],{"class":293},"-- Sports\n",[191,413,415,417,420,422,424,427,429],{"class":193,"line":414},14,[191,416,277],{"class":197},[191,418,419],{"class":245},"7",[191,421,283],{"class":197},[191,423,218],{"class":205},[191,425,426],{"class":245}," 1.1",[191,428,290],{"class":197},[191,430,431],{"class":293},"-- Super\n",[191,433,435,437,440,442,444,447,449],{"class":193,"line":434},15,[191,436,277],{"class":197},[191,438,439],{"class":245},"8",[191,441,283],{"class":197},[191,443,218],{"class":205},[191,445,446],{"class":245}," 0.0",[191,448,290],{"class":197},[191,450,451],{"class":293},"-- Motorcycles\n",[191,453,455,457,460,462,464,467,469],{"class":193,"line":454},16,[191,456,277],{"class":197},[191,458,459],{"class":245},"9",[191,461,283],{"class":197},[191,463,218],{"class":205},[191,465,466],{"class":245}," 0.7",[191,468,290],{"class":197},[191,470,471],{"class":293},"-- Off-road\n",[191,473,475,477,480,482,484,487,489],{"class":193,"line":474},17,[191,476,277],{"class":197},[191,478,479],{"class":245},"10",[191,481,283],{"class":197},[191,483,218],{"class":205},[191,485,486],{"class":245}," 0.85",[191,488,153],{"class":197},[191,490,491],{"class":293},"-- Industrial\n",[191,493,495,497,500,502,504,507,509],{"class":193,"line":494},18,[191,496,277],{"class":197},[191,498,499],{"class":245},"11",[191,501,283],{"class":197},[191,503,218],{"class":205},[191,505,506],{"class":245}," 0.95",[191,508,153],{"class":197},[191,510,511],{"class":293},"-- Utility\n",[191,513,515,517,520,522,524,526,528],{"class":193,"line":514},19,[191,516,277],{"class":197},[191,518,519],{"class":245},"12",[191,521,283],{"class":197},[191,523,218],{"class":205},[191,525,506],{"class":245},[191,527,153],{"class":197},[191,529,530],{"class":293},"-- Vans\n",[191,532,534,536,539,541,543,545,547],{"class":193,"line":533},20,[191,535,277],{"class":197},[191,537,538],{"class":245},"13",[191,540,283],{"class":197},[191,542,218],{"class":205},[191,544,446],{"class":245},[191,546,351],{"class":197},[191,548,549],{"class":293},"-- Cycles\n",[191,551,553,555,558,560,562,564,566],{"class":193,"line":552},21,[191,554,277],{"class":197},[191,556,557],{"class":245},"14",[191,559,283],{"class":197},[191,561,218],{"class":205},[191,563,446],{"class":245},[191,565,351],{"class":197},[191,567,568],{"class":293},"-- Boats\n",[191,570,572,574,577,579,581,583,585],{"class":193,"line":571},22,[191,573,277],{"class":197},[191,575,576],{"class":245},"15",[191,578,283],{"class":197},[191,580,218],{"class":205},[191,582,446],{"class":245},[191,584,351],{"class":197},[191,586,587],{"class":293},"-- Helicopters\n",[191,589,591,593,596,598,600,602,604],{"class":193,"line":590},23,[191,592,277],{"class":197},[191,594,595],{"class":245},"16",[191,597,283],{"class":197},[191,599,218],{"class":205},[191,601,446],{"class":245},[191,603,351],{"class":197},[191,605,606],{"class":293},"-- Planes\n",[191,608,610,612,615,617,619,621,623],{"class":193,"line":609},24,[191,611,277],{"class":197},[191,613,614],{"class":245},"17",[191,616,283],{"class":197},[191,618,218],{"class":205},[191,620,486],{"class":245},[191,622,153],{"class":197},[191,624,625],{"class":293},"-- Service\n",[191,627,629,631,634,636,638,641,643],{"class":193,"line":628},25,[191,630,277],{"class":197},[191,632,633],{"class":245},"18",[191,635,283],{"class":197},[191,637,218],{"class":205},[191,639,640],{"class":245}," 0.8",[191,642,351],{"class":197},[191,644,645],{"class":293},"-- Emergency\n",[191,647,649,651,654,656,658,661,663],{"class":193,"line":648},26,[191,650,277],{"class":197},[191,652,653],{"class":245},"19",[191,655,283],{"class":197},[191,657,218],{"class":205},[191,659,660],{"class":245}," 0.75",[191,662,153],{"class":197},[191,664,665],{"class":293},"-- Military\n",[191,667,669,671,674,676,678,680,682],{"class":193,"line":668},27,[191,670,277],{"class":197},[191,672,673],{"class":245},"20",[191,675,283],{"class":197},[191,677,218],{"class":205},[191,679,486],{"class":245},[191,681,153],{"class":197},[191,683,684],{"class":293},"-- Commercial\n",[191,686,688,690,693,695,697,699,701],{"class":193,"line":687},28,[191,689,277],{"class":197},[191,691,692],{"class":245},"21",[191,694,283],{"class":197},[191,696,218],{"class":205},[191,698,446],{"class":245},[191,700,351],{"class":197},[191,702,703],{"class":293},"-- Trains\n",[191,705,707,709,712,714,716,718],{"class":193,"line":706},29,[191,708,277],{"class":197},[191,710,711],{"class":245},"22",[191,713,283],{"class":197},[191,715,218],{"class":205},[191,717,246],{"class":245},[191,719,720],{"class":293},"   -- Open Wheel\n",[191,722,724],{"class":193,"line":723},30,[191,725,726],{"class":197},"        }\n",[191,728,730],{"class":193,"line":729},31,[191,731,732],{"class":197},"    }\n",[191,734,736],{"class":193,"line":735},32,[191,737,738],{"class":197},"}\n",[13,740,743],{"date":741,"title":742},"2026-04-28","Version 0.6.0",[19,744,745,753,757,768,772,795,799,830],{"v-slot:body":21},[23,746,747],{"color":25,"icon":26},[28,748,30,749,35,751,39],{},[32,750,34],{},[32,752,38],{},[28,754,755],{},[32,756,44],{},[46,758,759,762,765],{},[49,760,761],{},"Added vehicle wash and vehicle wax usable-item workflows, including dedicated wash/wax items, animations, particle effects, and a vehicle-care minigame.",[49,763,764],{},"Added realistic wheel-based brake and suspension install flows so brake and suspension work now uses jack, wheel detach, component install, wheel attach, and jack removal steps.",[49,766,767],{},"Added a configurable install duration and an on-screen progress bar for non-minigame install actions.",[28,769,770],{},[32,771,62],{},[46,773,774,780,783,786,789,792],{},[49,775,776,777,104],{},"Vehicle wax now keeps a clean vehicle clean for a configurable mileage window through ",[72,778,779],{},"Config.VehicleCare.wax.cleanKilometers",[49,781,782],{},"Wash and wax items are now available in the mechanic shop and Parts Shop delivery catalog.",[49,784,785],{},"Brake pad and suspension wear repairs now use the wheel workflow instead of a simple repair flow.",[49,787,788],{},"Improved mechanic animations for under-hood repairs, engine swaps, oil draining, oil pouring, and underbody installs.",[49,790,791],{},"Added storage, locker, and trunk background images for the mechanic UI.",[49,793,794],{},"Fuel level is no longer overwritten when saving or restoring mechanic vehicle properties.",[28,796,797],{},[32,798,92],{},[46,800,801,810,815,821,824,827],{},[49,802,803,804,35,807,104],{},"Added ",[72,805,806],{},"source/client/vehicle_care.lua",[72,808,809],{},"source/server/vehicle_care.lua",[49,811,803,812,104],{},[72,813,814],{},"Config.OrderInstall.nonMinigameDurationMs",[49,816,803,817,820],{},[72,818,819],{},"Config.VehicleCare"," for wash and wax item configuration.",[49,822,823],{},"Added English, German, and French translation keys for vehicle care and the new wheel checklist steps.",[49,825,826],{},"Fixed repaint workflow particle effects.",[49,828,829],{},"Updated the wheel attach minigame so brake and suspension workflows can reattach the existing wheel.",[106,831,832],{},[109,833,834,882,958,967,1056,1063,1200],{"label":111},[113,835,836,840,842,846,850,855,869,876,879],{},[49,837,117,838,121],{},[32,839,120],{},[49,841,124],{},[49,843,127,844,131],{},[72,845,130],{},[49,847,127,848,131],{},[72,849,136],{},[49,851,127,852,854],{},[72,853,141],{}," or built frontend files included with the resource so the vehicle-care minigame, install progress bar, and storage backgrounds are available.",[49,856,145,857,149,859,153,861,153,863,160,866,164],{},[72,858,148],{},[72,860,806],{},[72,862,809],{},[72,864,865],{},"config/img/**",[72,867,868],{},"0.6.0",[49,870,871,872,875],{},"If the release package includes ",[72,873,874],{},"/config/img",", copy it so the new storage, locker, and trunk background images are available.",[49,877,878],{},"If you use custom locale files, copy the new vehicle-care and wheel-checklist translation keys from the updated locale files.",[49,880,881],{},"Add the new wash and wax items to your mechanic shop items:",[183,883,885],{"className":185,"code":884,"language":187,"meta":21,"style":21},"{ name = \"wash_sponge\", label = \"Wash Sponge\", price = 45 },\n{ name = \"vehicle_wax\", label = \"Vehicle Wax\", price = 120 },\n",[72,886,887,926],{"__ignoreMap":21},[191,888,889,892,894,897,900,903,906,908,910,913,915,918,920,923],{"class":193,"line":194},[191,890,891],{"class":197},"{ name ",[191,893,218],{"class":205},[191,895,896],{"class":205}," \"",[191,898,100],{"class":899},"sfazB",[191,901,902],{"class":205},"\"",[191,904,905],{"class":197},", label ",[191,907,218],{"class":205},[191,909,896],{"class":205},[191,911,912],{"class":899},"Wash Sponge",[191,914,902],{"class":205},[191,916,917],{"class":197},", price ",[191,919,218],{"class":205},[191,921,922],{"class":245}," 45",[191,924,925],{"class":197}," },\n",[191,927,928,930,932,934,936,938,940,942,944,947,949,951,953,956],{"class":193,"line":212},[191,929,891],{"class":197},[191,931,218],{"class":205},[191,933,896],{"class":205},[191,935,103],{"class":899},[191,937,902],{"class":205},[191,939,905],{"class":197},[191,941,218],{"class":205},[191,943,896],{"class":205},[191,945,946],{"class":899},"Vehicle Wax",[191,948,902],{"class":205},[191,950,917],{"class":197},[191,952,218],{"class":205},[191,954,955],{"class":245}," 120",[191,957,925],{"class":197},[113,959,960],{"start":336},[49,961,962,963,966],{},"Add the new wash and wax items to ",[72,964,965],{},"Config.PartsDelivery.items"," if you use the Parts Shop:",[183,968,970],{"className":185,"code":969,"language":187,"meta":21,"style":21},"{ name = \"wash_sponge\", label = \"Wash Sponge\", price = 45, category = \"Service\" },\n{ name = \"vehicle_wax\", label = \"Vehicle Wax\", price = 120, category = \"Service\" },\n",[72,971,972,1016],{"__ignoreMap":21},[191,973,974,976,978,980,982,984,986,988,990,992,994,996,998,1000,1003,1005,1007,1010,1013],{"class":193,"line":194},[191,975,891],{"class":197},[191,977,218],{"class":205},[191,979,896],{"class":205},[191,981,100],{"class":899},[191,983,902],{"class":205},[191,985,905],{"class":197},[191,987,218],{"class":205},[191,989,896],{"class":205},[191,991,912],{"class":899},[191,993,902],{"class":205},[191,995,917],{"class":197},[191,997,218],{"class":205},[191,999,922],{"class":245},[191,1001,1002],{"class":197},", category ",[191,1004,218],{"class":205},[191,1006,896],{"class":205},[191,1008,1009],{"class":899},"Service",[191,1011,1012],{"class":205},"\" ",[191,1014,1015],{"class":197},"},\n",[191,1017,1018,1020,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054],{"class":193,"line":212},[191,1019,891],{"class":197},[191,1021,218],{"class":205},[191,1023,896],{"class":205},[191,1025,103],{"class":899},[191,1027,902],{"class":205},[191,1029,905],{"class":197},[191,1031,218],{"class":205},[191,1033,896],{"class":205},[191,1035,946],{"class":899},[191,1037,902],{"class":205},[191,1039,917],{"class":197},[191,1041,218],{"class":205},[191,1043,955],{"class":245},[191,1045,1002],{"class":197},[191,1047,218],{"class":205},[191,1049,896],{"class":205},[191,1051,1009],{"class":899},[191,1053,1012],{"class":205},[191,1055,1015],{"class":197},[113,1057,1058],{"start":357},[49,1059,1060,1061,181],{},"Add the new install duration and vehicle care config sections to ",[72,1062,180],{},[183,1064,1066],{"className":185,"code":1065,"language":187,"meta":21,"style":21},"Config.OrderInstall = {\n    nonMinigameDurationMs = 10000\n}\n\nConfig.VehicleCare = {\n    wash = {\n        item = \"wash_sponge\",\n        removeAfterUse = true\n    },\n    wax = {\n        item = \"vehicle_wax\",\n        removeAfterUse = true,\n        cleanKilometers = 35\n    }\n}\n",[72,1067,1068,1079,1089,1093,1099,1110,1119,1134,1144,1149,1158,1172,1182,1192,1196],{"__ignoreMap":21},[191,1069,1070,1072,1075,1077],{"class":193,"line":194},[191,1071,198],{"class":197},[191,1073,1074],{"class":201},"OrderInstall",[191,1076,206],{"class":205},[191,1078,209],{"class":197},[191,1080,1081,1084,1086],{"class":193,"line":212},[191,1082,1083],{"class":197},"    nonMinigameDurationMs ",[191,1085,218],{"class":205},[191,1087,1088],{"class":245}," 10000\n",[191,1090,1091],{"class":193,"line":227},[191,1092,738],{"class":197},[191,1094,1095],{"class":193,"line":237},[191,1096,1098],{"emptyLinePlaceholder":1097},true,"\n",[191,1100,1101,1103,1106,1108],{"class":193,"line":251},[191,1102,198],{"class":197},[191,1104,1105],{"class":201},"VehicleCare",[191,1107,206],{"class":205},[191,1109,209],{"class":197},[191,1111,1112,1115,1117],{"class":193,"line":264},[191,1113,1114],{"class":197},"    wash ",[191,1116,218],{"class":205},[191,1118,209],{"class":197},[191,1120,1121,1124,1126,1128,1130,1132],{"class":193,"line":274},[191,1122,1123],{"class":197},"        item ",[191,1125,218],{"class":205},[191,1127,896],{"class":205},[191,1129,100],{"class":899},[191,1131,902],{"class":205},[191,1133,224],{"class":197},[191,1135,1136,1139,1141],{"class":193,"line":297},[191,1137,1138],{"class":197},"        removeAfterUse ",[191,1140,218],{"class":205},[191,1142,1143],{"class":205}," true\n",[191,1145,1146],{"class":193,"line":316},[191,1147,1148],{"class":197},"    },\n",[191,1150,1151,1154,1156],{"class":193,"line":336},[191,1152,1153],{"class":197},"    wax ",[191,1155,218],{"class":205},[191,1157,209],{"class":197},[191,1159,1160,1162,1164,1166,1168,1170],{"class":193,"line":357},[191,1161,1123],{"class":197},[191,1163,218],{"class":205},[191,1165,896],{"class":205},[191,1167,103],{"class":899},[191,1169,902],{"class":205},[191,1171,224],{"class":197},[191,1173,1174,1176,1178,1180],{"class":193,"line":376},[191,1175,1138],{"class":197},[191,1177,218],{"class":205},[191,1179,221],{"class":205},[191,1181,224],{"class":197},[191,1183,1184,1187,1189],{"class":193,"line":395},[191,1185,1186],{"class":197},"        cleanKilometers ",[191,1188,218],{"class":205},[191,1190,1191],{"class":245}," 35\n",[191,1193,1194],{"class":193,"line":414},[191,1195,732],{"class":197},[191,1197,1198],{"class":193,"line":434},[191,1199,738],{"class":197},[113,1201,1202,1210],{"start":376},[49,1203,1204,1205,35,1207,1209],{},"Add ",[72,1206,100],{},[72,1208,103],{}," to your inventory item definitions and item images if your inventory requires them.",[49,1211,1212],{},"If you use custom wear repair config, make sure brake pad and suspension repairs use the wheel flow.",[13,1214,1217],{"date":1215,"title":1216},"2026-04-27","Version 0.5.0",[19,1218,1219,1227,1231,1242,1246,1273,1277,1298],{"v-slot:body":21},[23,1220,1221],{"color":25,"icon":26},[28,1222,30,1223,35,1225,39],{},[32,1224,34],{},[32,1226,38],{},[28,1228,1229],{},[32,1230,44],{},[46,1232,1233,1236,1239],{},[49,1234,1235],{},"Added the Parts Shop tablet app for mechanic part orders, including catalog browsing, category filters, basket checkout, own-card and company-card payment, and order history.",[49,1237,1238],{},"Added Parts Delivery points for Workshop Creator so ordered parts arrive as physical delivery boxes at configured workshop locations.",[49,1240,1241],{},"Added tablet push notifications when part deliveries are ready to collect.",[28,1243,1244],{},[32,1245,62],{},[46,1247,1248,1251,1254,1257,1264,1267,1270],{},[49,1249,1250],{},"Parts purchases can now be logged in the boss menu, including order UID, price, and ordered item summary.",[49,1252,1253],{},"Parts deliveries now support delivery ETA, pending/ready/claimed status tracking, claim history, and ready-delivery lookup by delivery point.",[49,1255,1256],{},"Delivery box props now scale by order size so larger orders use larger box piles.",[49,1258,1259,1260,1263],{},"Company-card checkout now uses the ",[72,1261,1262],{},"PURCHASE_SUPPLIES"," job permission and validates company balance before placing an order.",[49,1265,1266],{},"The Parts Shop app now reopens correctly after closing the tablet, and app permission routing was fixed.",[49,1268,1269],{},"Tuning freecam now blocks player controls while keeping camera look controls available.",[49,1271,1272],{},"Wheel lug nut indicators are easier to see in the wheel detach minigame.",[28,1274,1275],{},[32,1276,92],{},[46,1278,1279,1286,1289,1292,1295],{},[49,1280,1281,1282,1285],{},"Added the ",[72,1283,1284],{},"sky_mechanic_part_deliveries"," database table and automatic migration support.",[49,1287,1288],{},"Added English translation keys for Parts Shop, Parts Delivery, checkout errors, order history, and delivery notifications.",[49,1290,1291],{},"Fixed order history timestamps.",[49,1293,1294],{},"Improved delivery interaction logic.",[49,1296,1297],{},"Refined Parts Shop navbar, color theming, and overall design.",[106,1299,1300],{},[109,1301,1302,1348,1547,1558,2585],{"label":111},[113,1303,1304,1308,1310,1314,1318,1323,1339,1342],{},[49,1305,117,1306,121],{},[32,1307,120],{},[49,1309,124],{},[49,1311,127,1312,131],{},[72,1313,130],{},[49,1315,127,1316,131],{},[72,1317,136],{},[49,1319,127,1320,1322],{},[72,1321,141],{}," or built frontend files included with the resource so the new Parts Shop tablet app is available.",[49,1324,145,1325,149,1327,153,1330,153,1333,160,1336,164],{},[72,1326,148],{},[72,1328,1329],{},"@sky_jobs_base/source/enums/Permission.lua",[72,1331,1332],{},"source/client/parts_delivery.lua",[72,1334,1335],{},"source/server/parts_delivery.lua",[72,1337,1338],{},"0.5.0",[49,1340,1341],{},"If you use custom locale files, copy the new Parts Shop and Parts Delivery translation keys from the updated locale files.",[49,1343,1344,1345,181],{},"Add the new Parts Delivery interaction to ",[72,1346,1347],{},"Config.Interactions",[183,1349,1351],{"className":185,"code":1350,"language":187,"meta":21,"style":21},"part_delivery = {\n    public = false,\n    interaction = true,\n    unique = false,\n    marker = {\n        enabled = false,\n        type = 1,\n        offset = vector3(0.0, 0.0, 0.0)\n    },\n    blip = {\n        enabled = false,\n        name = \"Parts Delivery\",\n        sprite = 478,\n        color = 5\n    },\n    npc = {\n        enabled = false\n    }\n}\n",[72,1352,1353,1362,1374,1385,1396,1405,1416,1428,1456,1460,1469,1479,1495,1507,1517,1521,1530,1539,1543],{"__ignoreMap":21},[191,1354,1355,1358,1360],{"class":193,"line":194},[191,1356,1357],{"class":197},"part_delivery ",[191,1359,218],{"class":205},[191,1361,209],{"class":197},[191,1363,1364,1367,1369,1372],{"class":193,"line":212},[191,1365,1366],{"class":197},"    public ",[191,1368,218],{"class":205},[191,1370,1371],{"class":205}," false",[191,1373,224],{"class":197},[191,1375,1376,1379,1381,1383],{"class":193,"line":227},[191,1377,1378],{"class":197},"    interaction ",[191,1380,218],{"class":205},[191,1382,221],{"class":205},[191,1384,224],{"class":197},[191,1386,1387,1390,1392,1394],{"class":193,"line":237},[191,1388,1389],{"class":197},"    unique ",[191,1391,218],{"class":205},[191,1393,1371],{"class":205},[191,1395,224],{"class":197},[191,1397,1398,1401,1403],{"class":193,"line":251},[191,1399,1400],{"class":197},"    marker ",[191,1402,218],{"class":205},[191,1404,209],{"class":197},[191,1406,1407,1410,1412,1414],{"class":193,"line":264},[191,1408,1409],{"class":197},"        enabled ",[191,1411,218],{"class":205},[191,1413,1371],{"class":205},[191,1415,224],{"class":197},[191,1417,1418,1421,1423,1426],{"class":193,"line":274},[191,1419,1420],{"class":197},"        type ",[191,1422,218],{"class":205},[191,1424,1425],{"class":245}," 1",[191,1427,224],{"class":197},[191,1429,1430,1433,1435,1439,1442,1445,1447,1449,1451,1453],{"class":193,"line":297},[191,1431,1432],{"class":197},"        offset ",[191,1434,218],{"class":205},[191,1436,1438],{"class":1437},"s2Zo4"," vector3",[191,1440,1441],{"class":197},"(",[191,1443,1444],{"class":245},"0.0",[191,1446,153],{"class":197},[191,1448,1444],{"class":245},[191,1450,153],{"class":197},[191,1452,1444],{"class":245},[191,1454,1455],{"class":197},")\n",[191,1457,1458],{"class":193,"line":316},[191,1459,1148],{"class":197},[191,1461,1462,1465,1467],{"class":193,"line":336},[191,1463,1464],{"class":197},"    blip ",[191,1466,218],{"class":205},[191,1468,209],{"class":197},[191,1470,1471,1473,1475,1477],{"class":193,"line":357},[191,1472,1409],{"class":197},[191,1474,218],{"class":205},[191,1476,1371],{"class":205},[191,1478,224],{"class":197},[191,1480,1481,1484,1486,1488,1491,1493],{"class":193,"line":376},[191,1482,1483],{"class":197},"        name ",[191,1485,218],{"class":205},[191,1487,896],{"class":205},[191,1489,1490],{"class":899},"Parts Delivery",[191,1492,902],{"class":205},[191,1494,224],{"class":197},[191,1496,1497,1500,1502,1505],{"class":193,"line":395},[191,1498,1499],{"class":197},"        sprite ",[191,1501,218],{"class":205},[191,1503,1504],{"class":245}," 478",[191,1506,224],{"class":197},[191,1508,1509,1512,1514],{"class":193,"line":414},[191,1510,1511],{"class":197},"        color ",[191,1513,218],{"class":205},[191,1515,1516],{"class":245}," 5\n",[191,1518,1519],{"class":193,"line":434},[191,1520,1148],{"class":197},[191,1522,1523,1526,1528],{"class":193,"line":454},[191,1524,1525],{"class":197},"    npc ",[191,1527,218],{"class":205},[191,1529,209],{"class":197},[191,1531,1532,1534,1536],{"class":193,"line":474},[191,1533,1409],{"class":197},[191,1535,218],{"class":205},[191,1537,1538],{"class":205}," false\n",[191,1540,1541],{"class":193,"line":494},[191,1542,732],{"class":197},[191,1544,1545],{"class":193,"line":514},[191,1546,738],{"class":197},[113,1548,1549],{"start":316},[49,1550,1551,1552,1555,1556,181],{},"Add the new ",[72,1553,1554],{},"Config.PartsDelivery"," section to ",[72,1557,180],{},[183,1559,1561],{"className":185,"code":1560,"language":187,"meta":21,"style":21},"Config.PartsDelivery = {\n    enabled = true,\n    deliveryTimeSeconds = 900,\n    paymentMethods = {\n        own_card = true,\n        company_card = true\n    },\n    boxModel = \"prop_cs_cardbox_01\",\n    openDurationMs = 5500,\n    interactionDistance = 2.0,\n    stackHeight = 0.42,\n    items = {\n        { name = \"body_kit\",           label = \"Body Kit\",           price = 250,  category = \"Exterior\" },\n        { name = \"wheels\",             label = \"Wheels\",             price = 300,  category = \"Wheels\" },\n        { name = \"spray_can\",          label = \"Spray Can\",          price = 75,   category = \"Paint\" },\n        { name = \"engine\",             label = \"Engine\",             price = 3500, category = \"Performance\" },\n        { name = \"brakes\",             label = \"Brakes\",             price = 450,  category = \"Performance\" },\n        { name = \"transmission\",       label = \"Transmission\",       price = 2200, category = \"Performance\" },\n        { name = \"turbo\",              label = \"Turbo\",              price = 1800, category = \"Performance\" },\n        { name = \"antilag_kit\",        label = \"Anti-Lag Kit\",       price = 950,  category = \"Electronics\" },\n        { name = \"suspension\",         label = \"Suspension\",         price = 700,  category = \"Handling\" },\n        { name = \"armor_plating\",      label = \"Armor Plating\",      price = 1600, category = \"Exterior\" },\n        { name = \"stance_kit\",         label = \"Stance Kit\",         price = 850,  category = \"Handling\" },\n        { name = \"nitro_kit\",          label = \"Nitro Kit\",          price = 1400, category = \"Performance\" },\n        { name = \"vehicle_lights\",     label = \"Vehicle Lights\",     price = 550,  category = \"Electronics\" },\n        { name = \"spark_plugs\",        label = \"Spark Plugs\",        price = 120,  category = \"Service\" },\n        { name = \"engine_oil\",         label = \"Engine Oil\",         price = 90,   category = \"Service\" },\n        { name = \"engine_coolant\",     label = \"Engine Coolant\",     price = 110,  category = \"Service\" },\n        { name = \"brake_fluid\",        label = \"Brake Fluid\",        price = 85,   category = \"Service\" },\n        { name = \"transmission_fluid\", label = \"Transmission Fluid\", price = 95,   category = \"Service\" },\n        { name = \"air_filter\",         label = \"Air Filter\",         price = 140,  category = \"Service\" },\n        { name = \"rgb_controller\",     label = \"RGB Controller\",     price = 650,  category = \"Electronics\" }\n    }\n}\n",[72,1562,1563,1574,1584,1596,1605,1616,1625,1629,1645,1657,1669,1681,1690,1738,1783,1830,1874,1917,1962,2007,2052,2098,2143,2186,2229,2274,2317,2360,2403,2446,2489,2532,2575,2580],{"__ignoreMap":21},[191,1564,1565,1567,1570,1572],{"class":193,"line":194},[191,1566,198],{"class":197},[191,1568,1569],{"class":201},"PartsDelivery",[191,1571,206],{"class":205},[191,1573,209],{"class":197},[191,1575,1576,1578,1580,1582],{"class":193,"line":212},[191,1577,215],{"class":197},[191,1579,218],{"class":205},[191,1581,221],{"class":205},[191,1583,224],{"class":197},[191,1585,1586,1589,1591,1594],{"class":193,"line":227},[191,1587,1588],{"class":197},"    deliveryTimeSeconds ",[191,1590,218],{"class":205},[191,1592,1593],{"class":245}," 900",[191,1595,224],{"class":197},[191,1597,1598,1601,1603],{"class":193,"line":237},[191,1599,1600],{"class":197},"    paymentMethods ",[191,1602,218],{"class":205},[191,1604,209],{"class":197},[191,1606,1607,1610,1612,1614],{"class":193,"line":251},[191,1608,1609],{"class":197},"        own_card ",[191,1611,218],{"class":205},[191,1613,221],{"class":205},[191,1615,224],{"class":197},[191,1617,1618,1621,1623],{"class":193,"line":264},[191,1619,1620],{"class":197},"        company_card ",[191,1622,218],{"class":205},[191,1624,1143],{"class":205},[191,1626,1627],{"class":193,"line":274},[191,1628,1148],{"class":197},[191,1630,1631,1634,1636,1638,1641,1643],{"class":193,"line":297},[191,1632,1633],{"class":197},"    boxModel ",[191,1635,218],{"class":205},[191,1637,896],{"class":205},[191,1639,1640],{"class":899},"prop_cs_cardbox_01",[191,1642,902],{"class":205},[191,1644,224],{"class":197},[191,1646,1647,1650,1652,1655],{"class":193,"line":316},[191,1648,1649],{"class":197},"    openDurationMs ",[191,1651,218],{"class":205},[191,1653,1654],{"class":245}," 5500",[191,1656,224],{"class":197},[191,1658,1659,1662,1664,1667],{"class":193,"line":336},[191,1660,1661],{"class":197},"    interactionDistance ",[191,1663,218],{"class":205},[191,1665,1666],{"class":245}," 2.0",[191,1668,224],{"class":197},[191,1670,1671,1674,1676,1679],{"class":193,"line":357},[191,1672,1673],{"class":197},"    stackHeight ",[191,1675,218],{"class":205},[191,1677,1678],{"class":245}," 0.42",[191,1680,224],{"class":197},[191,1682,1683,1686,1688],{"class":193,"line":376},[191,1684,1685],{"class":197},"    items ",[191,1687,218],{"class":205},[191,1689,209],{"class":197},[191,1691,1692,1695,1697,1699,1702,1704,1707,1709,1711,1714,1716,1719,1721,1724,1727,1729,1731,1734,1736],{"class":193,"line":395},[191,1693,1694],{"class":197},"        { name ",[191,1696,218],{"class":205},[191,1698,896],{"class":205},[191,1700,1701],{"class":899},"body_kit",[191,1703,902],{"class":205},[191,1705,1706],{"class":197},",           label ",[191,1708,218],{"class":205},[191,1710,896],{"class":205},[191,1712,1713],{"class":899},"Body Kit",[191,1715,902],{"class":205},[191,1717,1718],{"class":197},",           price ",[191,1720,218],{"class":205},[191,1722,1723],{"class":245}," 250",[191,1725,1726],{"class":197},",  category ",[191,1728,218],{"class":205},[191,1730,896],{"class":205},[191,1732,1733],{"class":899},"Exterior",[191,1735,1012],{"class":205},[191,1737,1015],{"class":197},[191,1739,1740,1742,1744,1746,1749,1751,1754,1756,1758,1761,1763,1766,1768,1771,1773,1775,1777,1779,1781],{"class":193,"line":414},[191,1741,1694],{"class":197},[191,1743,218],{"class":205},[191,1745,896],{"class":205},[191,1747,1748],{"class":899},"wheels",[191,1750,902],{"class":205},[191,1752,1753],{"class":197},",             label ",[191,1755,218],{"class":205},[191,1757,896],{"class":205},[191,1759,1760],{"class":899},"Wheels",[191,1762,902],{"class":205},[191,1764,1765],{"class":197},",             price ",[191,1767,218],{"class":205},[191,1769,1770],{"class":245}," 300",[191,1772,1726],{"class":197},[191,1774,218],{"class":205},[191,1776,896],{"class":205},[191,1778,1760],{"class":899},[191,1780,1012],{"class":205},[191,1782,1015],{"class":197},[191,1784,1785,1787,1789,1791,1794,1796,1799,1801,1803,1806,1808,1811,1813,1816,1819,1821,1823,1826,1828],{"class":193,"line":434},[191,1786,1694],{"class":197},[191,1788,218],{"class":205},[191,1790,896],{"class":205},[191,1792,1793],{"class":899},"spray_can",[191,1795,902],{"class":205},[191,1797,1798],{"class":197},",          label ",[191,1800,218],{"class":205},[191,1802,896],{"class":205},[191,1804,1805],{"class":899},"Spray Can",[191,1807,902],{"class":205},[191,1809,1810],{"class":197},",          price ",[191,1812,218],{"class":205},[191,1814,1815],{"class":245}," 75",[191,1817,1818],{"class":197},",   category ",[191,1820,218],{"class":205},[191,1822,896],{"class":205},[191,1824,1825],{"class":899},"Paint",[191,1827,1012],{"class":205},[191,1829,1015],{"class":197},[191,1831,1832,1834,1836,1838,1841,1843,1845,1847,1849,1852,1854,1856,1858,1861,1863,1865,1867,1870,1872],{"class":193,"line":454},[191,1833,1694],{"class":197},[191,1835,218],{"class":205},[191,1837,896],{"class":205},[191,1839,1840],{"class":899},"engine",[191,1842,902],{"class":205},[191,1844,1753],{"class":197},[191,1846,218],{"class":205},[191,1848,896],{"class":205},[191,1850,1851],{"class":899},"Engine",[191,1853,902],{"class":205},[191,1855,1765],{"class":197},[191,1857,218],{"class":205},[191,1859,1860],{"class":245}," 3500",[191,1862,1002],{"class":197},[191,1864,218],{"class":205},[191,1866,896],{"class":205},[191,1868,1869],{"class":899},"Performance",[191,1871,1012],{"class":205},[191,1873,1015],{"class":197},[191,1875,1876,1878,1880,1882,1885,1887,1889,1891,1893,1896,1898,1900,1902,1905,1907,1909,1911,1913,1915],{"class":193,"line":474},[191,1877,1694],{"class":197},[191,1879,218],{"class":205},[191,1881,896],{"class":205},[191,1883,1884],{"class":899},"brakes",[191,1886,902],{"class":205},[191,1888,1753],{"class":197},[191,1890,218],{"class":205},[191,1892,896],{"class":205},[191,1894,1895],{"class":899},"Brakes",[191,1897,902],{"class":205},[191,1899,1765],{"class":197},[191,1901,218],{"class":205},[191,1903,1904],{"class":245}," 450",[191,1906,1726],{"class":197},[191,1908,218],{"class":205},[191,1910,896],{"class":205},[191,1912,1869],{"class":899},[191,1914,1012],{"class":205},[191,1916,1015],{"class":197},[191,1918,1919,1921,1923,1925,1928,1930,1933,1935,1937,1940,1942,1945,1947,1950,1952,1954,1956,1958,1960],{"class":193,"line":494},[191,1920,1694],{"class":197},[191,1922,218],{"class":205},[191,1924,896],{"class":205},[191,1926,1927],{"class":899},"transmission",[191,1929,902],{"class":205},[191,1931,1932],{"class":197},",       label ",[191,1934,218],{"class":205},[191,1936,896],{"class":205},[191,1938,1939],{"class":899},"Transmission",[191,1941,902],{"class":205},[191,1943,1944],{"class":197},",       price ",[191,1946,218],{"class":205},[191,1948,1949],{"class":245}," 2200",[191,1951,1002],{"class":197},[191,1953,218],{"class":205},[191,1955,896],{"class":205},[191,1957,1869],{"class":899},[191,1959,1012],{"class":205},[191,1961,1015],{"class":197},[191,1963,1964,1966,1968,1970,1973,1975,1978,1980,1982,1985,1987,1990,1992,1995,1997,1999,2001,2003,2005],{"class":193,"line":514},[191,1965,1694],{"class":197},[191,1967,218],{"class":205},[191,1969,896],{"class":205},[191,1971,1972],{"class":899},"turbo",[191,1974,902],{"class":205},[191,1976,1977],{"class":197},",              label ",[191,1979,218],{"class":205},[191,1981,896],{"class":205},[191,1983,1984],{"class":899},"Turbo",[191,1986,902],{"class":205},[191,1988,1989],{"class":197},",              price ",[191,1991,218],{"class":205},[191,1993,1994],{"class":245}," 1800",[191,1996,1002],{"class":197},[191,1998,218],{"class":205},[191,2000,896],{"class":205},[191,2002,1869],{"class":899},[191,2004,1012],{"class":205},[191,2006,1015],{"class":197},[191,2008,2009,2011,2013,2015,2018,2020,2023,2025,2027,2030,2032,2034,2036,2039,2041,2043,2045,2048,2050],{"class":193,"line":533},[191,2010,1694],{"class":197},[191,2012,218],{"class":205},[191,2014,896],{"class":205},[191,2016,2017],{"class":899},"antilag_kit",[191,2019,902],{"class":205},[191,2021,2022],{"class":197},",        label ",[191,2024,218],{"class":205},[191,2026,896],{"class":205},[191,2028,2029],{"class":899},"Anti-Lag Kit",[191,2031,902],{"class":205},[191,2033,1944],{"class":197},[191,2035,218],{"class":205},[191,2037,2038],{"class":245}," 950",[191,2040,1726],{"class":197},[191,2042,218],{"class":205},[191,2044,896],{"class":205},[191,2046,2047],{"class":899},"Electronics",[191,2049,1012],{"class":205},[191,2051,1015],{"class":197},[191,2053,2054,2056,2058,2060,2063,2065,2068,2070,2072,2075,2077,2080,2082,2085,2087,2089,2091,2094,2096],{"class":193,"line":552},[191,2055,1694],{"class":197},[191,2057,218],{"class":205},[191,2059,896],{"class":205},[191,2061,2062],{"class":899},"suspension",[191,2064,902],{"class":205},[191,2066,2067],{"class":197},",         label ",[191,2069,218],{"class":205},[191,2071,896],{"class":205},[191,2073,2074],{"class":899},"Suspension",[191,2076,902],{"class":205},[191,2078,2079],{"class":197},",         price ",[191,2081,218],{"class":205},[191,2083,2084],{"class":245}," 700",[191,2086,1726],{"class":197},[191,2088,218],{"class":205},[191,2090,896],{"class":205},[191,2092,2093],{"class":899},"Handling",[191,2095,1012],{"class":205},[191,2097,1015],{"class":197},[191,2099,2100,2102,2104,2106,2109,2111,2114,2116,2118,2121,2123,2126,2128,2131,2133,2135,2137,2139,2141],{"class":193,"line":571},[191,2101,1694],{"class":197},[191,2103,218],{"class":205},[191,2105,896],{"class":205},[191,2107,2108],{"class":899},"armor_plating",[191,2110,902],{"class":205},[191,2112,2113],{"class":197},",      label ",[191,2115,218],{"class":205},[191,2117,896],{"class":205},[191,2119,2120],{"class":899},"Armor Plating",[191,2122,902],{"class":205},[191,2124,2125],{"class":197},",      price ",[191,2127,218],{"class":205},[191,2129,2130],{"class":245}," 1600",[191,2132,1002],{"class":197},[191,2134,218],{"class":205},[191,2136,896],{"class":205},[191,2138,1733],{"class":899},[191,2140,1012],{"class":205},[191,2142,1015],{"class":197},[191,2144,2145,2147,2149,2151,2154,2156,2158,2160,2162,2165,2167,2169,2171,2174,2176,2178,2180,2182,2184],{"class":193,"line":590},[191,2146,1694],{"class":197},[191,2148,218],{"class":205},[191,2150,896],{"class":205},[191,2152,2153],{"class":899},"stance_kit",[191,2155,902],{"class":205},[191,2157,2067],{"class":197},[191,2159,218],{"class":205},[191,2161,896],{"class":205},[191,2163,2164],{"class":899},"Stance Kit",[191,2166,902],{"class":205},[191,2168,2079],{"class":197},[191,2170,218],{"class":205},[191,2172,2173],{"class":245}," 850",[191,2175,1726],{"class":197},[191,2177,218],{"class":205},[191,2179,896],{"class":205},[191,2181,2093],{"class":899},[191,2183,1012],{"class":205},[191,2185,1015],{"class":197},[191,2187,2188,2190,2192,2194,2197,2199,2201,2203,2205,2208,2210,2212,2214,2217,2219,2221,2223,2225,2227],{"class":193,"line":609},[191,2189,1694],{"class":197},[191,2191,218],{"class":205},[191,2193,896],{"class":205},[191,2195,2196],{"class":899},"nitro_kit",[191,2198,902],{"class":205},[191,2200,1798],{"class":197},[191,2202,218],{"class":205},[191,2204,896],{"class":205},[191,2206,2207],{"class":899},"Nitro Kit",[191,2209,902],{"class":205},[191,2211,1810],{"class":197},[191,2213,218],{"class":205},[191,2215,2216],{"class":245}," 1400",[191,2218,1002],{"class":197},[191,2220,218],{"class":205},[191,2222,896],{"class":205},[191,2224,1869],{"class":899},[191,2226,1012],{"class":205},[191,2228,1015],{"class":197},[191,2230,2231,2233,2235,2237,2240,2242,2245,2247,2249,2252,2254,2257,2259,2262,2264,2266,2268,2270,2272],{"class":193,"line":628},[191,2232,1694],{"class":197},[191,2234,218],{"class":205},[191,2236,896],{"class":205},[191,2238,2239],{"class":899},"vehicle_lights",[191,2241,902],{"class":205},[191,2243,2244],{"class":197},",     label ",[191,2246,218],{"class":205},[191,2248,896],{"class":205},[191,2250,2251],{"class":899},"Vehicle Lights",[191,2253,902],{"class":205},[191,2255,2256],{"class":197},",     price ",[191,2258,218],{"class":205},[191,2260,2261],{"class":245}," 550",[191,2263,1726],{"class":197},[191,2265,218],{"class":205},[191,2267,896],{"class":205},[191,2269,2047],{"class":899},[191,2271,1012],{"class":205},[191,2273,1015],{"class":197},[191,2275,2276,2278,2280,2282,2285,2287,2289,2291,2293,2296,2298,2301,2303,2305,2307,2309,2311,2313,2315],{"class":193,"line":648},[191,2277,1694],{"class":197},[191,2279,218],{"class":205},[191,2281,896],{"class":205},[191,2283,2284],{"class":899},"spark_plugs",[191,2286,902],{"class":205},[191,2288,2022],{"class":197},[191,2290,218],{"class":205},[191,2292,896],{"class":205},[191,2294,2295],{"class":899},"Spark Plugs",[191,2297,902],{"class":205},[191,2299,2300],{"class":197},",        price ",[191,2302,218],{"class":205},[191,2304,955],{"class":245},[191,2306,1726],{"class":197},[191,2308,218],{"class":205},[191,2310,896],{"class":205},[191,2312,1009],{"class":899},[191,2314,1012],{"class":205},[191,2316,1015],{"class":197},[191,2318,2319,2321,2323,2325,2328,2330,2332,2334,2336,2339,2341,2343,2345,2348,2350,2352,2354,2356,2358],{"class":193,"line":668},[191,2320,1694],{"class":197},[191,2322,218],{"class":205},[191,2324,896],{"class":205},[191,2326,2327],{"class":899},"engine_oil",[191,2329,902],{"class":205},[191,2331,2067],{"class":197},[191,2333,218],{"class":205},[191,2335,896],{"class":205},[191,2337,2338],{"class":899},"Engine Oil",[191,2340,902],{"class":205},[191,2342,2079],{"class":197},[191,2344,218],{"class":205},[191,2346,2347],{"class":245}," 90",[191,2349,1818],{"class":197},[191,2351,218],{"class":205},[191,2353,896],{"class":205},[191,2355,1009],{"class":899},[191,2357,1012],{"class":205},[191,2359,1015],{"class":197},[191,2361,2362,2364,2366,2368,2371,2373,2375,2377,2379,2382,2384,2386,2388,2391,2393,2395,2397,2399,2401],{"class":193,"line":687},[191,2363,1694],{"class":197},[191,2365,218],{"class":205},[191,2367,896],{"class":205},[191,2369,2370],{"class":899},"engine_coolant",[191,2372,902],{"class":205},[191,2374,2244],{"class":197},[191,2376,218],{"class":205},[191,2378,896],{"class":205},[191,2380,2381],{"class":899},"Engine Coolant",[191,2383,902],{"class":205},[191,2385,2256],{"class":197},[191,2387,218],{"class":205},[191,2389,2390],{"class":245}," 110",[191,2392,1726],{"class":197},[191,2394,218],{"class":205},[191,2396,896],{"class":205},[191,2398,1009],{"class":899},[191,2400,1012],{"class":205},[191,2402,1015],{"class":197},[191,2404,2405,2407,2409,2411,2414,2416,2418,2420,2422,2425,2427,2429,2431,2434,2436,2438,2440,2442,2444],{"class":193,"line":706},[191,2406,1694],{"class":197},[191,2408,218],{"class":205},[191,2410,896],{"class":205},[191,2412,2413],{"class":899},"brake_fluid",[191,2415,902],{"class":205},[191,2417,2022],{"class":197},[191,2419,218],{"class":205},[191,2421,896],{"class":205},[191,2423,2424],{"class":899},"Brake Fluid",[191,2426,902],{"class":205},[191,2428,2300],{"class":197},[191,2430,218],{"class":205},[191,2432,2433],{"class":245}," 85",[191,2435,1818],{"class":197},[191,2437,218],{"class":205},[191,2439,896],{"class":205},[191,2441,1009],{"class":899},[191,2443,1012],{"class":205},[191,2445,1015],{"class":197},[191,2447,2448,2450,2452,2454,2457,2459,2461,2463,2465,2468,2470,2472,2474,2477,2479,2481,2483,2485,2487],{"class":193,"line":723},[191,2449,1694],{"class":197},[191,2451,218],{"class":205},[191,2453,896],{"class":205},[191,2455,2456],{"class":899},"transmission_fluid",[191,2458,902],{"class":205},[191,2460,905],{"class":197},[191,2462,218],{"class":205},[191,2464,896],{"class":205},[191,2466,2467],{"class":899},"Transmission Fluid",[191,2469,902],{"class":205},[191,2471,917],{"class":197},[191,2473,218],{"class":205},[191,2475,2476],{"class":245}," 95",[191,2478,1818],{"class":197},[191,2480,218],{"class":205},[191,2482,896],{"class":205},[191,2484,1009],{"class":899},[191,2486,1012],{"class":205},[191,2488,1015],{"class":197},[191,2490,2491,2493,2495,2497,2500,2502,2504,2506,2508,2511,2513,2515,2517,2520,2522,2524,2526,2528,2530],{"class":193,"line":729},[191,2492,1694],{"class":197},[191,2494,218],{"class":205},[191,2496,896],{"class":205},[191,2498,2499],{"class":899},"air_filter",[191,2501,902],{"class":205},[191,2503,2067],{"class":197},[191,2505,218],{"class":205},[191,2507,896],{"class":205},[191,2509,2510],{"class":899},"Air Filter",[191,2512,902],{"class":205},[191,2514,2079],{"class":197},[191,2516,218],{"class":205},[191,2518,2519],{"class":245}," 140",[191,2521,1726],{"class":197},[191,2523,218],{"class":205},[191,2525,896],{"class":205},[191,2527,1009],{"class":899},[191,2529,1012],{"class":205},[191,2531,1015],{"class":197},[191,2533,2534,2536,2538,2540,2543,2545,2547,2549,2551,2554,2556,2558,2560,2563,2565,2567,2569,2571,2573],{"class":193,"line":735},[191,2535,1694],{"class":197},[191,2537,218],{"class":205},[191,2539,896],{"class":205},[191,2541,2542],{"class":899},"rgb_controller",[191,2544,902],{"class":205},[191,2546,2244],{"class":197},[191,2548,218],{"class":205},[191,2550,896],{"class":205},[191,2552,2553],{"class":899},"RGB Controller",[191,2555,902],{"class":205},[191,2557,2256],{"class":197},[191,2559,218],{"class":205},[191,2561,2562],{"class":245}," 650",[191,2564,1726],{"class":197},[191,2566,218],{"class":205},[191,2568,896],{"class":205},[191,2570,2047],{"class":899},[191,2572,1012],{"class":205},[191,2574,738],{"class":197},[191,2576,2578],{"class":193,"line":2577},33,[191,2579,732],{"class":197},[191,2581,2583],{"class":193,"line":2582},34,[191,2584,738],{"class":197},[113,2586,2587,2594],{"start":336},[49,2588,2589,2590,2593],{},"Add a ",[72,2591,2592],{},"part_delivery"," point in Workshop Creator for every workshop that should receive part orders.",[49,2595,2596,2597,2600,2601,2604,2605,2607],{},"If ",[72,2598,2599],{},"Config.AutoExecuteQuery = false",", run the updated ",[72,2602,2603],{},"import.sql"," manually so ",[72,2606,1284],{}," is created.",[13,2609,2612],{"date":2610,"title":2611},"2026-04-26","Version 0.4.0",[19,2613,2614,2622,2626,2637,2641,2662,2666,2680],{"v-slot:body":21},[23,2615,2616],{"color":25,"icon":26},[28,2617,30,2618,35,2620,39],{},[32,2619,34],{},[32,2621,38],{},[28,2623,2624],{},[32,2625,44],{},[46,2627,2628,2631,2634],{},[49,2629,2630],{},"Added synced custom xenon colors across players, including re-application when vehicles stream in or players join.",[49,2632,2633],{},"Added German and French translations.",[49,2635,2636],{},"Added a tuning menu reset button for stancing so vehicles can be restored to default stance values directly from the UI.",[28,2638,2639],{},[32,2640,62],{},[46,2642,2643,2646,2649,2656,2659],{},[49,2644,2645],{},"Improved stancing persistence when leaving and re-entering vehicles, including wheel size, wheel width, camber, track width, suspension height, and wheel rotation values.",[49,2647,2648],{},"Improved performance for nitro, anti-lag, two-step, RGB effects, vehicle wear, and general in-vehicle idle loops.",[49,2650,2651,2652,2655],{},"Nitro now uses keymapping support through ",[72,2653,2654],{},"Config.Nitro.activationKey",", with separate timing controls for active ticks, input checks, local effects, and remote effects.",[49,2657,2658],{},"Engine hoist props created through the Workshop Creator now spawn and sync more reliably from configured placement points.",[49,2660,2661],{},"Fixed unwanted neon installs during the order workflow.",[28,2663,2664],{},[32,2665,92],{},[46,2667,2668,2671,2674,2677],{},[49,2669,2670],{},"Fixed stance reset behavior in the tuning menu.",[49,2672,2673],{},"Fixed engine hoist placement in the Workshop Creator flow.",[49,2675,2676],{},"Cleaned up stancing and nitro runtime logic for better maintainability.",[49,2678,2679],{},"Updated two-step default flame scale values.",[106,2681,2682],{},[109,2683,2684,2718,2782,2791,2900,2905],{"label":111},[113,2685,2686,2690,2692,2696,2700,2709,2712],{},[49,2687,117,2688,121],{},[32,2689,120],{},[49,2691,124],{},[49,2693,127,2694,131],{},[72,2695,130],{},[49,2697,127,2698,131],{},[72,2699,136],{},[49,2701,145,2702,2704,2705,2708],{},[72,2703,148],{}," so the new ",[72,2706,2707],{},"source/client/xenon_sync.lua"," file and version metadata are loaded.",[49,2710,2711],{},"If you use custom locale files, copy the new translation keys from the updated locale files.",[49,2713,2714,2715,181],{},"If you use custom config files, update ",[72,2716,2717],{},"Config.Interactions.self_service_tuning",[183,2719,2723],{"className":2720,"code":2721,"language":2722,"meta":21,"style":21},"language-diff shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.Interactions = {\n    self_service_tuning = {\n        public = true,\n        interaction = false,\n        unique = false,\n+       placementModel = \"xs_prop_x18_engine_hoist_02a\",\n        marker = {\n            enabled = false,\n            type = 1,\n        }\n    }\n}\n","diff",[72,2724,2725,2730,2735,2740,2745,2750,2755,2760,2765,2770,2774,2778],{"__ignoreMap":21},[191,2726,2727],{"class":193,"line":194},[191,2728,2729],{},"Config.Interactions = {\n",[191,2731,2732],{"class":193,"line":212},[191,2733,2734],{},"    self_service_tuning = {\n",[191,2736,2737],{"class":193,"line":227},[191,2738,2739],{},"        public = true,\n",[191,2741,2742],{"class":193,"line":237},[191,2743,2744],{},"        interaction = false,\n",[191,2746,2747],{"class":193,"line":251},[191,2748,2749],{},"        unique = false,\n",[191,2751,2752],{"class":193,"line":264},[191,2753,2754],{},"+       placementModel = \"xs_prop_x18_engine_hoist_02a\",\n",[191,2756,2757],{"class":193,"line":274},[191,2758,2759],{},"        marker = {\n",[191,2761,2762],{"class":193,"line":297},[191,2763,2764],{},"            enabled = false,\n",[191,2766,2767],{"class":193,"line":316},[191,2768,2769],{},"            type = 1,\n",[191,2771,2772],{"class":193,"line":336},[191,2773,726],{},[191,2775,2776],{"class":193,"line":357},[191,2777,732],{},[191,2779,2780],{"class":193,"line":376},[191,2781,738],{},[113,2783,2784],{"start":297},[49,2785,2786,2787,2790],{},"Update ",[72,2788,2789],{},"Config.Nitro"," with the new keymapping and timing options:",[183,2792,2794],{"className":2720,"code":2793,"language":2722,"meta":21,"style":21},"Config.Nitro = {\n    installDistance = 4.0,\n    frontDistance = 2.2,\n    maxLevel = 100,\n+   activationKey = \"LSHIFT\",\n    activationControl = 21,\n    minSpeedKmh = 25.0,\n    throttleThreshold = 0.85,\n    drainPerSecond = 8.5,\n    torqueMultiplier = 1.32,\n    boostRampInPerSecond = 3.8,\n    boostRampOutPerSecond = 2.4,\n-   effectIntervalMs = 90,\n+   activeTickMs = 25,\n+   inputCheckIntervalMs = 120,\n+   effectIntervalMs = 180,\n+   remoteEffectIntervalMs = 320,\n    purgeIntervalMs = 180,\n    flameScale = 0.72,\n    flameDurationMs = 110,\n}\n",[72,2795,2796,2801,2806,2811,2816,2821,2826,2831,2836,2841,2846,2851,2856,2861,2866,2871,2876,2881,2886,2891,2896],{"__ignoreMap":21},[191,2797,2798],{"class":193,"line":194},[191,2799,2800],{},"Config.Nitro = {\n",[191,2802,2803],{"class":193,"line":212},[191,2804,2805],{},"    installDistance = 4.0,\n",[191,2807,2808],{"class":193,"line":227},[191,2809,2810],{},"    frontDistance = 2.2,\n",[191,2812,2813],{"class":193,"line":237},[191,2814,2815],{},"    maxLevel = 100,\n",[191,2817,2818],{"class":193,"line":251},[191,2819,2820],{},"+   activationKey = \"LSHIFT\",\n",[191,2822,2823],{"class":193,"line":264},[191,2824,2825],{},"    activationControl = 21,\n",[191,2827,2828],{"class":193,"line":274},[191,2829,2830],{},"    minSpeedKmh = 25.0,\n",[191,2832,2833],{"class":193,"line":297},[191,2834,2835],{},"    throttleThreshold = 0.85,\n",[191,2837,2838],{"class":193,"line":316},[191,2839,2840],{},"    drainPerSecond = 8.5,\n",[191,2842,2843],{"class":193,"line":336},[191,2844,2845],{},"    torqueMultiplier = 1.32,\n",[191,2847,2848],{"class":193,"line":357},[191,2849,2850],{},"    boostRampInPerSecond = 3.8,\n",[191,2852,2853],{"class":193,"line":376},[191,2854,2855],{},"    boostRampOutPerSecond = 2.4,\n",[191,2857,2858],{"class":193,"line":395},[191,2859,2860],{},"-   effectIntervalMs = 90,\n",[191,2862,2863],{"class":193,"line":414},[191,2864,2865],{},"+   activeTickMs = 25,\n",[191,2867,2868],{"class":193,"line":434},[191,2869,2870],{},"+   inputCheckIntervalMs = 120,\n",[191,2872,2873],{"class":193,"line":454},[191,2874,2875],{},"+   effectIntervalMs = 180,\n",[191,2877,2878],{"class":193,"line":474},[191,2879,2880],{},"+   remoteEffectIntervalMs = 320,\n",[191,2882,2883],{"class":193,"line":494},[191,2884,2885],{},"    purgeIntervalMs = 180,\n",[191,2887,2888],{"class":193,"line":514},[191,2889,2890],{},"    flameScale = 0.72,\n",[191,2892,2893],{"class":193,"line":533},[191,2894,2895],{},"    flameDurationMs = 110,\n",[191,2897,2898],{"class":193,"line":552},[191,2899,738],{},[113,2901,2902],{"start":316},[49,2903,2904],{},"Update the default two-step flame scale values if you want the new defaults:",[183,2906,2908],{"className":2720,"code":2907,"language":2722,"meta":21,"style":21},"Config.TwoStep = {\n-   flameScaleMin = 0.35,\n-   flameScaleMax = 0.95,\n+   flameScaleMin = 0.45,\n+   flameScaleMax = 1.25,\n}\n",[72,2909,2910,2915,2920,2925,2930,2935],{"__ignoreMap":21},[191,2911,2912],{"class":193,"line":194},[191,2913,2914],{},"Config.TwoStep = {\n",[191,2916,2917],{"class":193,"line":212},[191,2918,2919],{},"-   flameScaleMin = 0.35,\n",[191,2921,2922],{"class":193,"line":227},[191,2923,2924],{},"-   flameScaleMax = 0.95,\n",[191,2926,2927],{"class":193,"line":237},[191,2928,2929],{},"+   flameScaleMin = 0.45,\n",[191,2931,2932],{"class":193,"line":251},[191,2933,2934],{},"+   flameScaleMax = 1.25,\n",[191,2936,2937],{"class":193,"line":264},[191,2938,738],{},[13,2940,2943],{"date":2941,"title":2942},"2026-04-22","Version 0.3.0",[19,2944,2945,2953,2957,2980,2984,3004,3008,3022],{"v-slot:body":21},[23,2946,2947],{"color":25,"icon":26},[28,2948,30,2949,35,2951,39],{},[32,2950,34],{},[32,2952,38],{},[28,2954,2955],{},[32,2956,44],{},[46,2958,2959,2965,2971,2974],{},[49,2960,2961,2962,104],{},"Added paid tuning revenue deposits into the mechanic society account through ",[72,2963,2964],{},"Config.TuningCostProfile.addRevenueToSociety",[49,2966,2967,2968,2970],{},"Added a dedicated ",[72,2969,2239],{}," item for light installations, including the item image and tablet/localization labels.",[49,2972,2973],{},"Neon, drivetrain, and suspension installs now use the workshop lift flow so mechanics must work below the raised vehicle.",[49,2975,2976,2977,104],{},"Added client and server mileage exports via ",[72,2978,2979],{},"GetVehicleMileage",[28,2981,2982],{},[32,2983,62],{},[46,2985,2986,2992,2995,2998,3001],{},[49,2987,2988,2989,104],{},"Default tuning install items are now consumed after use through ",[72,2990,2991],{},"Config.OrderRequiredItems.*.removeAfterUse = true",[49,2993,2994],{},"Neon installation pricing is now included in the tuning cost profile.",[49,2996,2997],{},"Mileage HUD design has been refreshed for a more realistic in-vehicle look.",[49,2999,3000],{},"Vehicle plate labels now resolve correctly in mechanic state and interaction flows.",[49,3002,3003],{},"Shared tuning database helper logic was centralized to reduce duplicate server code.",[28,3005,3006],{},[32,3007,92],{},[46,3009,3010,3013,3016,3019],{},[49,3011,3012],{},"Fixed a database migration primary-key error for vehicle profiles.",[49,3014,3015],{},"Fixed fxmanifest warnings.",[49,3017,3018],{},"Fixed a tablet navigation issue that could leave players stuck in the tablet.",[49,3020,3021],{},"Removed the unused NPC mechanic example from the default config.",[106,3023,3024],{},[109,3025,3026,3066,3104,3111,3146,3154,3502,3510,3560,3565,3599],{"label":111},[113,3027,3028,3032,3034,3038,3042,3047,3058,3060],{},[49,3029,117,3030,121],{},[32,3031,120],{},[49,3033,124],{},[49,3035,127,3036,131],{},[72,3037,130],{},[49,3039,127,3040,131],{},[72,3041,136],{},[49,3043,145,3044,3046],{},[72,3045,148],{}," so the updated server/client file list is loaded.",[49,3048,3049,3050,3053,3054,3057],{},"Copy the new ",[72,3051,3052],{},"vehicle_lights.png"," item image from ",[72,3055,3056],{},"config/inventory"," into your inventory item image setup if needed.",[49,3059,2711],{},[49,3061,3062,3063,181],{},"Add the society revenue option to ",[72,3064,3065],{},"Config.TuningCostProfile",[183,3067,3069],{"className":2720,"code":3068,"language":2722,"meta":21,"style":21},"Config.TuningCostProfile = {\n+   addRevenueToSociety = true, -- Deposit paid tuning order money into the society account of the tuning job.\n    fallbackVehicleValue = 50000,\n    performanceStages = {\n        -- ...\n    }\n}\n",[72,3070,3071,3076,3081,3086,3091,3096,3100],{"__ignoreMap":21},[191,3072,3073],{"class":193,"line":194},[191,3074,3075],{},"Config.TuningCostProfile = {\n",[191,3077,3078],{"class":193,"line":212},[191,3079,3080],{},"+   addRevenueToSociety = true, -- Deposit paid tuning order money into the society account of the tuning job.\n",[191,3082,3083],{"class":193,"line":227},[191,3084,3085],{},"    fallbackVehicleValue = 50000,\n",[191,3087,3088],{"class":193,"line":237},[191,3089,3090],{},"    performanceStages = {\n",[191,3092,3093],{"class":193,"line":251},[191,3094,3095],{},"        -- ...\n",[191,3097,3098],{"class":193,"line":264},[191,3099,732],{},[191,3101,3102],{"class":193,"line":274},[191,3103,738],{},[113,3105,3106],{"start":316},[49,3107,1204,3108,3110],{},[72,3109,2239],{}," to the mechanic shop item list:",[183,3112,3114],{"className":185,"code":3113,"language":187,"meta":21,"style":21},"{ name = \"vehicle_lights\", label = \"Vehicle Lights\", price = 550 },\n",[72,3115,3116],{"__ignoreMap":21},[191,3117,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144],{"class":193,"line":194},[191,3119,891],{"class":197},[191,3121,218],{"class":205},[191,3123,896],{"class":205},[191,3125,2239],{"class":899},[191,3127,902],{"class":205},[191,3129,905],{"class":197},[191,3131,218],{"class":205},[191,3133,896],{"class":205},[191,3135,2251],{"class":899},[191,3137,902],{"class":205},[191,3139,917],{"class":197},[191,3141,218],{"class":205},[191,3143,2261],{"class":245},[191,3145,925],{"class":197},[113,3147,3148],{"start":336},[49,3149,2786,3150,3153],{},[72,3151,3152],{},"Config.OrderRequiredItems"," so install items are consumed and light installs use the new item:",[183,3155,3157],{"className":185,"code":3156,"language":187,"meta":21,"style":21},"Config.OrderRequiredItems = {\n    bodywork = { item = \"body_kit\", removeAfterUse = true },\n    wheels = { item = \"wheels\", removeAfterUse = true },\n    colors = { item = \"spray_can\", removeAfterUse = true },\n    engine = { item = \"engine\", removeAfterUse = true },\n    brakes = { item = \"brakes\", removeAfterUse = true },\n    transmission = { item = \"transmission\", removeAfterUse = true },\n    turbo = { item = \"turbo\", removeAfterUse = true },\n    antilag = { item = \"antilag_kit\", removeAfterUse = true },\n    lights = { item = \"vehicle_lights\", removeAfterUse = true },\n    suspension = { item = \"suspension\", removeAfterUse = true },\n    armor = { item = \"armor_plating\", removeAfterUse = true },\n    stancing = { item = \"stance_kit\", removeAfterUse = true },\n    custom_tuning = { item = \"stance_kit\", removeAfterUse = true }\n}\n",[72,3158,3159,3170,3197,3222,3247,3272,3297,3322,3347,3372,3397,3422,3447,3472,3498],{"__ignoreMap":21},[191,3160,3161,3163,3166,3168],{"class":193,"line":194},[191,3162,198],{"class":197},[191,3164,3165],{"class":201},"OrderRequiredItems",[191,3167,206],{"class":205},[191,3169,209],{"class":197},[191,3171,3172,3175,3177,3180,3182,3184,3186,3188,3191,3193,3195],{"class":193,"line":212},[191,3173,3174],{"class":197},"    bodywork ",[191,3176,218],{"class":205},[191,3178,3179],{"class":197}," { item ",[191,3181,218],{"class":205},[191,3183,896],{"class":205},[191,3185,1701],{"class":899},[191,3187,902],{"class":205},[191,3189,3190],{"class":197},", removeAfterUse ",[191,3192,218],{"class":205},[191,3194,221],{"class":205},[191,3196,925],{"class":197},[191,3198,3199,3202,3204,3206,3208,3210,3212,3214,3216,3218,3220],{"class":193,"line":227},[191,3200,3201],{"class":197},"    wheels ",[191,3203,218],{"class":205},[191,3205,3179],{"class":197},[191,3207,218],{"class":205},[191,3209,896],{"class":205},[191,3211,1748],{"class":899},[191,3213,902],{"class":205},[191,3215,3190],{"class":197},[191,3217,218],{"class":205},[191,3219,221],{"class":205},[191,3221,925],{"class":197},[191,3223,3224,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245],{"class":193,"line":237},[191,3225,3226],{"class":197},"    colors ",[191,3228,218],{"class":205},[191,3230,3179],{"class":197},[191,3232,218],{"class":205},[191,3234,896],{"class":205},[191,3236,1793],{"class":899},[191,3238,902],{"class":205},[191,3240,3190],{"class":197},[191,3242,218],{"class":205},[191,3244,221],{"class":205},[191,3246,925],{"class":197},[191,3248,3249,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270],{"class":193,"line":251},[191,3250,3251],{"class":197},"    engine ",[191,3253,218],{"class":205},[191,3255,3179],{"class":197},[191,3257,218],{"class":205},[191,3259,896],{"class":205},[191,3261,1840],{"class":899},[191,3263,902],{"class":205},[191,3265,3190],{"class":197},[191,3267,218],{"class":205},[191,3269,221],{"class":205},[191,3271,925],{"class":197},[191,3273,3274,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295],{"class":193,"line":264},[191,3275,3276],{"class":197},"    brakes ",[191,3278,218],{"class":205},[191,3280,3179],{"class":197},[191,3282,218],{"class":205},[191,3284,896],{"class":205},[191,3286,1884],{"class":899},[191,3288,902],{"class":205},[191,3290,3190],{"class":197},[191,3292,218],{"class":205},[191,3294,221],{"class":205},[191,3296,925],{"class":197},[191,3298,3299,3302,3304,3306,3308,3310,3312,3314,3316,3318,3320],{"class":193,"line":274},[191,3300,3301],{"class":197},"    transmission ",[191,3303,218],{"class":205},[191,3305,3179],{"class":197},[191,3307,218],{"class":205},[191,3309,896],{"class":205},[191,3311,1927],{"class":899},[191,3313,902],{"class":205},[191,3315,3190],{"class":197},[191,3317,218],{"class":205},[191,3319,221],{"class":205},[191,3321,925],{"class":197},[191,3323,3324,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345],{"class":193,"line":297},[191,3325,3326],{"class":197},"    turbo ",[191,3328,218],{"class":205},[191,3330,3179],{"class":197},[191,3332,218],{"class":205},[191,3334,896],{"class":205},[191,3336,1972],{"class":899},[191,3338,902],{"class":205},[191,3340,3190],{"class":197},[191,3342,218],{"class":205},[191,3344,221],{"class":205},[191,3346,925],{"class":197},[191,3348,3349,3352,3354,3356,3358,3360,3362,3364,3366,3368,3370],{"class":193,"line":316},[191,3350,3351],{"class":197},"    antilag ",[191,3353,218],{"class":205},[191,3355,3179],{"class":197},[191,3357,218],{"class":205},[191,3359,896],{"class":205},[191,3361,2017],{"class":899},[191,3363,902],{"class":205},[191,3365,3190],{"class":197},[191,3367,218],{"class":205},[191,3369,221],{"class":205},[191,3371,925],{"class":197},[191,3373,3374,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395],{"class":193,"line":336},[191,3375,3376],{"class":197},"    lights ",[191,3378,218],{"class":205},[191,3380,3179],{"class":197},[191,3382,218],{"class":205},[191,3384,896],{"class":205},[191,3386,2239],{"class":899},[191,3388,902],{"class":205},[191,3390,3190],{"class":197},[191,3392,218],{"class":205},[191,3394,221],{"class":205},[191,3396,925],{"class":197},[191,3398,3399,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420],{"class":193,"line":357},[191,3400,3401],{"class":197},"    suspension ",[191,3403,218],{"class":205},[191,3405,3179],{"class":197},[191,3407,218],{"class":205},[191,3409,896],{"class":205},[191,3411,2062],{"class":899},[191,3413,902],{"class":205},[191,3415,3190],{"class":197},[191,3417,218],{"class":205},[191,3419,221],{"class":205},[191,3421,925],{"class":197},[191,3423,3424,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445],{"class":193,"line":376},[191,3425,3426],{"class":197},"    armor ",[191,3428,218],{"class":205},[191,3430,3179],{"class":197},[191,3432,218],{"class":205},[191,3434,896],{"class":205},[191,3436,2108],{"class":899},[191,3438,902],{"class":205},[191,3440,3190],{"class":197},[191,3442,218],{"class":205},[191,3444,221],{"class":205},[191,3446,925],{"class":197},[191,3448,3449,3452,3454,3456,3458,3460,3462,3464,3466,3468,3470],{"class":193,"line":395},[191,3450,3451],{"class":197},"    stancing ",[191,3453,218],{"class":205},[191,3455,3179],{"class":197},[191,3457,218],{"class":205},[191,3459,896],{"class":205},[191,3461,2153],{"class":899},[191,3463,902],{"class":205},[191,3465,3190],{"class":197},[191,3467,218],{"class":205},[191,3469,221],{"class":205},[191,3471,925],{"class":197},[191,3473,3474,3477,3479,3481,3483,3485,3487,3489,3491,3493,3495],{"class":193,"line":414},[191,3475,3476],{"class":197},"    custom_tuning ",[191,3478,218],{"class":205},[191,3480,3179],{"class":197},[191,3482,218],{"class":205},[191,3484,896],{"class":205},[191,3486,2153],{"class":899},[191,3488,902],{"class":205},[191,3490,3190],{"class":197},[191,3492,218],{"class":205},[191,3494,221],{"class":205},[191,3496,3497],{"class":197}," }\n",[191,3499,3500],{"class":193,"line":434},[191,3501,738],{"class":197},[113,3503,3504],{"start":357},[49,3505,3506,3507,181],{},"Add neon pricing entries inside ",[72,3508,3509],{},"Config.TuningCostProfile.customPricing",[183,3511,3513],{"className":185,"code":3512,"language":187,"meta":21,"style":21},"neon_0 = 1.12,\nneon_1 = 1.12,\nneon_2 = 1.12,\nneon_3 = 1.12,\n",[72,3514,3515,3527,3538,3549],{"__ignoreMap":21},[191,3516,3517,3520,3522,3525],{"class":193,"line":194},[191,3518,3519],{"class":197},"neon_0 ",[191,3521,218],{"class":205},[191,3523,3524],{"class":245}," 1.12",[191,3526,224],{"class":197},[191,3528,3529,3532,3534,3536],{"class":193,"line":212},[191,3530,3531],{"class":197},"neon_1 ",[191,3533,218],{"class":205},[191,3535,3524],{"class":245},[191,3537,224],{"class":197},[191,3539,3540,3543,3545,3547],{"class":193,"line":227},[191,3541,3542],{"class":197},"neon_2 ",[191,3544,218],{"class":205},[191,3546,3524],{"class":245},[191,3548,224],{"class":197},[191,3550,3551,3554,3556,3558],{"class":193,"line":237},[191,3552,3553],{"class":197},"neon_3 ",[191,3555,218],{"class":205},[191,3557,3524],{"class":245},[191,3559,224],{"class":197},[113,3561,3562],{"start":376},[49,3563,3564],{},"If you use custom drivetrain or suspension config, add the lift-based install flow:",[183,3566,3568],{"className":2720,"code":3567,"language":2722,"meta":21,"style":21},"-- Drivetrain custom handling option\n+ installFlow = \"underbody_neon\",\n\n-- Suspension wear repair option\n- flow = \"performance\"\n+ flow = \"underbody_neon\"\n",[72,3569,3570,3575,3580,3584,3589,3594],{"__ignoreMap":21},[191,3571,3572],{"class":193,"line":194},[191,3573,3574],{},"-- Drivetrain custom handling option\n",[191,3576,3577],{"class":193,"line":212},[191,3578,3579],{},"+ installFlow = \"underbody_neon\",\n",[191,3581,3582],{"class":193,"line":227},[191,3583,1098],{"emptyLinePlaceholder":1097},[191,3585,3586],{"class":193,"line":237},[191,3587,3588],{},"-- Suspension wear repair option\n",[191,3590,3591],{"class":193,"line":251},[191,3592,3593],{},"- flow = \"performance\"\n",[191,3595,3596],{"class":193,"line":264},[191,3597,3598],{},"+ flow = \"underbody_neon\"\n",[113,3600,3601],{"start":395},[49,3602,2596,3603,2600,3605,3607],{},[72,3604,2599],{},[72,3606,2603],{}," manually so the vehicle profile primary-key migration fix is applied.",[13,3609,3612],{"date":3610,"title":3611},"2026-04-20","Version 0.2.0",[19,3613,3614,3622,3626,3646,3650,3670,3674,3705],{"v-slot:body":21},[23,3615,3616],{"color":25,"icon":26},[28,3617,30,3618,35,3620,39],{},[32,3619,34],{},[32,3621,38],{},[28,3623,3624],{},[32,3625,44],{},[46,3627,3628,3631,3637],{},[49,3629,3630],{},"Added the Vehicles App to the mechanic tablet with searchable, paginated vehicle records, linked tuning orders, service history, tags, notes, and gallery image assignment.",[49,3632,3633,3634,104],{},"Added automatic database migration support through ",[72,3635,3636],{},"Config.AutoExecuteQuery",[49,3638,803,3639,3642,3643,104],{},[72,3640,3641],{},"/migrate"," command for importing tuning data from previous mechanic scripts such as ",[72,3644,3645],{},"jg-mechanic",[28,3647,3648],{},[32,3649,62],{},[46,3651,3652,3655,3658,3661,3664,3667],{},[49,3653,3654],{},"Vehicle history is now logged for order installs, nitro installs/refills, and wear repairs, including used items, mechanic details, duty state, and action metadata.",[49,3656,3657],{},"Tuning orders can now link back into the Vehicles App, and vehicle records only list vehicles that have mechanic orders.",[49,3659,3660],{},"Tablet apps now reopen and close more reliably, including direct order selection from linked vehicle records.",[49,3662,3663],{},"Self-service tuning now supports multiple placement points and requires the player to be the driver.",[49,3665,3666],{},"Added optional off-duty job configuration per mechanic job.",[49,3668,3669],{},"Xenon color changes now calculate order pricing correctly.",[28,3671,3672],{},[32,3673,92],{},[46,3675,3676,3685,3690,3695,3702],{},[49,3677,803,3678,35,3681,3684],{},[72,3679,3680],{},"sky_mechanic_vehicle_profiles",[72,3682,3683],{},"sky_mechanic_vehicle_history"," database tables.",[49,3686,803,3687,3689],{},[72,3688,3641],{}," command permission.",[49,3691,803,3692,104],{},[72,3693,3694],{},"Config.Interactions.self_service_tuning.unique",[49,3696,3697,3698,3701],{},"Removed the example ",[72,3699,3700],{},"cardealer"," job from the default config.",[49,3703,3704],{},"Improved wear database readiness handling by moving schema setup into the shared mechanic migration flow.",[106,3706,3707],{},[109,3708,3709,3737,3756,3768,3811,3817,3864,3869,3959],{"label":111},[113,3710,3711,3715,3717,3721,3725,3730,3732],{},[49,3712,117,3713,121],{},[32,3714,120],{},[49,3716,124],{},[49,3718,127,3719,131],{},[72,3720,130],{},[49,3722,127,3723,131],{},[72,3724,136],{},[49,3726,145,3727,3729],{},[72,3728,148],{}," so the new client/server files are loaded.",[49,3731,2711],{},[49,3733,3734,3735,181],{},"Add in ",[72,3736,180],{},[183,3738,3740],{"className":185,"code":3739,"language":187,"meta":21,"style":21},"Config.AutoExecuteQuery = true -- Automatically creates/updates database tables on start. Set to false to disable.\n",[72,3741,3742],{"__ignoreMap":21},[191,3743,3744,3746,3749,3751,3753],{"class":193,"line":194},[191,3745,198],{"class":197},[191,3747,3748],{"class":201},"AutoExecuteQuery",[191,3750,206],{"class":205},[191,3752,221],{"class":205},[191,3754,3755],{"class":293}," -- Automatically creates/updates database tables on start. Set to false to disable.\n",[113,3757,3758],{"start":297},[49,3759,1204,3760,3763,3764,3767],{},[72,3761,3762],{},"offDutyJob"," to each mechanic job in ",[72,3765,3766],{},"Config.Jobs"," if you want off-duty job support:",[183,3769,3771],{"className":185,"code":3770,"language":187,"meta":21,"style":21},"offDutyJob = {\n    enabled = false,\n    job = \"off_mechanic\"\n},\n",[72,3772,3773,3782,3792,3807],{"__ignoreMap":21},[191,3774,3775,3778,3780],{"class":193,"line":194},[191,3776,3777],{"class":197},"offDutyJob ",[191,3779,218],{"class":205},[191,3781,209],{"class":197},[191,3783,3784,3786,3788,3790],{"class":193,"line":212},[191,3785,215],{"class":197},[191,3787,218],{"class":205},[191,3789,1371],{"class":205},[191,3791,224],{"class":197},[191,3793,3794,3797,3799,3801,3804],{"class":193,"line":227},[191,3795,3796],{"class":197},"    job ",[191,3798,218],{"class":205},[191,3800,896],{"class":205},[191,3802,3803],{"class":899},"off_mechanic",[191,3805,3806],{"class":205},"\"\n",[191,3808,3809],{"class":193,"line":237},[191,3810,1015],{"class":197},[113,3812,3813],{"start":316},[49,3814,2786,3815,181],{},[72,3816,2717],{},[183,3818,3820],{"className":2720,"code":3819,"language":2722,"meta":21,"style":21},"Config.Interactions = {\n    self_service_tuning = {\n        public = true,\n+       unique = false,\n        marker = {\n            enabled = true,\n            type = 1,\n        }\n    }\n}\n",[72,3821,3822,3826,3830,3834,3839,3843,3848,3852,3856,3860],{"__ignoreMap":21},[191,3823,3824],{"class":193,"line":194},[191,3825,2729],{},[191,3827,3828],{"class":193,"line":212},[191,3829,2734],{},[191,3831,3832],{"class":193,"line":227},[191,3833,2739],{},[191,3835,3836],{"class":193,"line":237},[191,3837,3838],{},"+       unique = false,\n",[191,3840,3841],{"class":193,"line":251},[191,3842,2759],{},[191,3844,3845],{"class":193,"line":264},[191,3846,3847],{},"            enabled = true,\n",[191,3849,3850],{"class":193,"line":274},[191,3851,2769],{},[191,3853,3854],{"class":193,"line":297},[191,3855,726],{},[191,3857,3858],{"class":193,"line":316},[191,3859,732],{},[191,3861,3862],{"class":193,"line":336},[191,3863,738],{},[113,3865,3866],{"start":336},[49,3867,3868],{},"Add the new command permission:",[183,3870,3872],{"className":185,"code":3871,"language":187,"meta":21,"style":21},"Config.CommandPermissions = {\n    admintuning = { \"god\", \"superadmin\", \"admin\" },\n    migrate = { \"god\", \"superadmin\", \"admin\" },\n}\n",[72,3873,3874,3885,3922,3955],{"__ignoreMap":21},[191,3875,3876,3878,3881,3883],{"class":193,"line":194},[191,3877,198],{"class":197},[191,3879,3880],{"class":201},"CommandPermissions",[191,3882,206],{"class":205},[191,3884,209],{"class":197},[191,3886,3887,3890,3892,3895,3897,3900,3902,3904,3906,3909,3911,3913,3915,3918,3920],{"class":193,"line":212},[191,3888,3889],{"class":197},"    admintuning ",[191,3891,218],{"class":205},[191,3893,3894],{"class":197}," { ",[191,3896,902],{"class":205},[191,3898,3899],{"class":899},"god",[191,3901,902],{"class":205},[191,3903,153],{"class":197},[191,3905,902],{"class":205},[191,3907,3908],{"class":899},"superadmin",[191,3910,902],{"class":205},[191,3912,153],{"class":197},[191,3914,902],{"class":205},[191,3916,3917],{"class":899},"admin",[191,3919,1012],{"class":205},[191,3921,1015],{"class":197},[191,3923,3924,3927,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947,3949,3951,3953],{"class":193,"line":227},[191,3925,3926],{"class":197},"    migrate ",[191,3928,218],{"class":205},[191,3930,3894],{"class":197},[191,3932,902],{"class":205},[191,3934,3899],{"class":899},[191,3936,902],{"class":205},[191,3938,153],{"class":197},[191,3940,902],{"class":205},[191,3942,3908],{"class":899},[191,3944,902],{"class":205},[191,3946,153],{"class":197},[191,3948,902],{"class":205},[191,3950,3917],{"class":899},[191,3952,1012],{"class":205},[191,3954,1015],{"class":197},[191,3956,3957],{"class":193,"line":237},[191,3958,738],{"class":197},[113,3960,3961,3968],{"start":357},[49,3962,2596,3963,2600,3965,3967],{},[72,3964,2599],{},[72,3966,2603],{}," manually so the new profile and history tables are created.",[49,3969,3970,3971,3973,3974,104],{},"Optional: run ",[72,3972,3641],{}," once if you need to import tuning data from a previous mechanic script such as ",[72,3975,3645],{},[13,3977,3980],{"date":3978,"title":3979},"2026-04-15","Version 0.1.0",[19,3981,3982,3986,3999,4003,4026,4030],{"v-slot:body":21},[28,3983,3984],{},[32,3985,44],{},[46,3987,3988,3991,3996],{},[49,3989,3990],{},"Initial release of Sky Mechanic Job.",[49,3992,3993,3994,104],{},"Added full workshop-based tuning flow with creator placement support through ",[72,3995,38],{},[49,3997,3998],{},"Added persistent tuning, tuning orders, mileage tracking, and vehicle wear.",[28,4000,4001],{},[32,4002,62],{},[46,4004,4005,4008,4011,4014,4020],{},[49,4006,4007],{},"Added self-service tuning and mechanic workshop interactions.",[49,4009,4010],{},"Added engine swaps, repaint flow, wheel changes, workshop lifts, and engine hoists.",[49,4012,4013],{},"Added nitro, anti-lag, two-step, RGB controller support, and custom handling options.",[49,4015,4016,4017,104],{},"Added persistent storage of tuning data in ",[72,4018,4019],{},"sky_mechanic_vehicle_tuning",[49,4021,4022,4023,104],{},"Added tuning order persistence in ",[72,4024,4025],{},"sky_mechanic_tuning_orders",[28,4027,4028],{},[32,4029,92],{},[46,4031,4032],{},[49,4033,4034,4035,153,4038,153,4041,4044,4045,104],{},"Added admin tools: ",[72,4036,4037],{},"/admintuning",[72,4039,4040],{},"/debugwearzero",[72,4042,4043],{},"/debugwearzeroall",", and ",[72,4046,4047],{},"/workshopcreator",[4049,4050,4051],"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":21,"searchDepth":194,"depth":212,"links":4053},[],"Full change history for Sky Mechanic Job.","md",null,{},{"icon":4059},"i-lucide-history","/docs/jobs/mechanicjob/changelog",{"title":5,"description":4054},{"loc":4060},"1.docs/0.jobs/2.mechanicjob/6.changelog","fvyAB6-9X8nQUz9WZAtHCCjRZgnPo8Knrnb3pKsp-gQ",[4066,4071],{"title":4067,"path":4068,"stem":4069,"description":4070,"children":-1},"Commands","/docs/jobs/mechanicjob/commands","1.docs/0.jobs/2.mechanicjob/5.commands","Command reference for the Sky Mechanic Job resource.",{"title":4072,"path":4073,"stem":4074,"description":4075,"icon":4076,"children":-1},"Introduction","/docs/base/introduction","1.docs/base/1.introduction","sky_base is a crucial component for all Sky-Systems scripts, designed to enhance performance, streamline configuration, and provide a unified framework for easier management. This guide will introduce you to sky_base and walk you through its configuration and use.","i-lucide-info",1777634103796]