local OFGuns93DisplayCategoryPatch = { patched = false, tickHookAdded = false, repatchQueued = false, } local BC_FIREARM_CATEGORY = "WepFire" local BC_MAGAZINE_CATEGORY = "WepAmmoMag" local GUNS93_SENTINEL_FIREARM = "Base.83Cheetah" local GUNS93_SENTINEL_MAGAZINE = "Base.83Mag" local function resolveWeaponCategories() return BC_FIREARM_CATEGORY, BC_MAGAZINE_CATEGORY end local GUNS93_FIREARMS = { ["Base.83Cheetah"] = true, ["Base.AKM"] = true, ["Base.AKSport"] = true, ["Base.Anaconda"] = true, ["Base.AR15"] = true, ["Base.AR180"] = true, ["Base.AssaultRifle"] = true, ["Base.AssaultRifle2"] = true, ["Base.Auto5"] = true, ["Base.Auto5_Alt"] = true, ["Base.BenelliM3"] = true, ["Base.BenelliM3_Alt"] = true, ["Base.Beretta682"] = true, ["Base.Beretta682_Alt"] = true, ["Base.Beretta92FS"] = true, ["Base.BHP"] = true, ["Base.Bobcat"] = true, ["Base.Brown3006BAR"] = true, ["Base.Brown308BAR"] = true, ["Base.BrownCitori"] = true, ["Base.BrownCitori_Alt"] = true, ["Base.Buckmark"] = true, ["Base.CalicoPistol"] = true, ["Base.CalicoRifle"] = true, ["Base.CAR15"] = true, ["Base.Colt9mm"] = true, ["Base.ColtArmy"] = true, ["Base.ColtDet"] = true, ["Base.Command1911"] = true, ["Base.CZ75B"] = true, ["Base.DE357"] = true, ["Base.DeltaElite"] = true, ["Base.Dissy"] = true, ["Base.DoubleBarrelShotgun"] = true, ["Base.DoubleBarrelShotgun_Alt"] = true, ["Base.DoubleBarrelShotgunSawnoff"] = true, ["Base.DoubleBarrelShotgunSawnoff_Alt"] = true, ["Base.FAL"] = true, ["Base.Glock17"] = true, ["Base.Glock17L"] = true, ["Base.Glock19"] = true, ["Base.Glock20"] = true, ["Base.Glock21"] = true, ["Base.Glock22"] = true, ["Base.Glock23"] = true, ["Base.Glock24"] = true, ["Base.Gov1911"] = true, ["Base.GP100"] = true, ["Base.GP100_Alt"] = true, ["Base.GP101"] = true, ["Base.GP101_Alt"] = true, ["Base.Hammerless"] = true, ["Base.HBAR"] = true, ["Base.HK91"] = true, ["Base.HuntingRifle"] = true, ["Base.Ithaca37"] = true, ["Base.Ithaca37_Alt"] = true, ["Base.Ithaca37Riot"] = true, ["Base.Ithaca37Riot_Alt"] = true, ["Base.J22"] = true, ["Base.Javelina"] = true, ["Base.L395K"] = true, ["Base.L395K_Alt"] = true, ["Base.Longslide"] = true, ["Base.M1903"] = true, ["Base.M1917"] = true, ["Base.M1A"] = true, ["Base.M1ABush"] = true, ["Base.M1Carbine"] = true, ["Base.M1Garand"] = true, ["Base.M24"] = true, ["Base.M249"] = true, ["Base.M3GreaseGun"] = true, ["Base.M590"] = true, ["Base.M590_Alt"] = true, ["Base.M60"] = true, ["Base.M635"] = true, ["Base.M723"] = true, ["Base.M727"] = true, ["Base.M733"] = true, ["Base.M870"] = true, ["Base.M870_Alt"] = true, ["Base.MAC10"] = true, ["Base.Marlin3363030"] = true, ["Base.Marlin33644"] = true, ["Base.Marlin39A"] = true, ["Base.Marlin45"] = true, ["Base.Marlin60"] = true, ["Base.Marlin9"] = true, ["Base.Mauser98K"] = true, ["Base.Mini14"] = true, ["Base.Mini30"] = true, ["Base.Moss500"] = true, ["Base.Moss500_Alt"] = true, ["Base.Moss590"] = true, ["Base.Moss590_Alt"] = true, ["Base.MP5"] = true, ["Base.Officer1911"] = true, ["Base.P226"] = true, ["Base.P228"] = true, ["Base.P380"] = true, ["Base.P7M13"] = true, ["Base.P7M8"] = true, ["Base.Pistol"] = true, ["Base.Pistol2"] = true, ["Base.Pistol3"] = true, ["Base.PPK"] = true, ["Base.Python"] = true, ["Base.Python_Alt"] = true, ["Base.R223Rem788"] = true, ["Base.R223RugM77"] = true, ["Base.R3006Rem700"] = true, ["Base.R3006RugM77"] = true, ["Base.R3030Rem788"] = true, ["Base.R308Rem700"] = true, ["Base.R308RugM77"] = true, ["Base.R44Rem788"] = true, ["Base.Raven25"] = true, ["Base.Rem1100"] = true, ["Base.Rem1100_Alt"] = true, ["Base.Rem1187P"] = true, ["Base.Rem1187P_Alt"] = true, ["Base.Rem223760"] = true, ["Base.Rem3006760"] = true, ["Base.Rem308760"] = true, ["Base.Rem870P"] = true, ["Base.Rem870P_Alt"] = true, ["Base.Revolver"] = true, ["Base.Revolver_Long"] = true, ["Base.Revolver_Short"] = true, ["Base.Rug1022"] = true, ["Base.Rugmark"] = true, ["Base.RugP89"] = true, ["Base.RugP90"] = true, ["Base.SavageFox"] = true, ["Base.SavageFox_Alt"] = true, ["Base.SecuritySix"] = true, ["Base.SecuritySix_Alt"] = true, ["Base.Shotgun"] = true, ["Base.Shotgun_Alt"] = true, ["Base.ShotgunSawnoff"] = true, ["Base.ShotgunSawnoff_Alt"] = true, ["Base.SKS"] = true, ["Base.SOAuto5"] = true, ["Base.SOAuto5_Alt"] = true, ["Base.SOBeretta682"] = true, ["Base.SOBeretta682_Alt"] = true, ["Base.SOBrownCitori"] = true, ["Base.SOBrownCitori_Alt"] = true, ["Base.SOIthaca37"] = true, ["Base.SOIthaca37_Alt"] = true, ["Base.SOL395K"] = true, ["Base.SOL395K_Alt"] = true, ["Base.SOM24"] = true, ["Base.SOMoss500"] = true, ["Base.SOMoss500_Alt"] = true, ["Base.SOR223Rem700"] = true, ["Base.SOR223Rem788"] = true, ["Base.SOR3006Rem700"] = true, ["Base.SOR3030Rem788"] = true, ["Base.SOR308Rem700"] = true, ["Base.SOR308Rem788"] = true, ["Base.SOR44Rem788"] = true, ["Base.SORem1100"] = true, ["Base.SORem1100_Alt"] = true, ["Base.SOSavageFox"] = true, ["Base.SOSavageFox_Alt"] = true, ["Base.SOW223WinM70"] = true, ["Base.SOW3006WinM70"] = true, ["Base.SOW308WinM70"] = true, ["Base.SOWin1200"] = true, ["Base.SOWin1200_Alt"] = true, ["Base.SOWin1400"] = true, ["Base.SOWin1400_Alt"] = true, ["Base.SOWin1912"] = true, ["Base.SOWin1912_Alt"] = true, ["Base.SOWin37"] = true, ["Base.SOWin37_Alt"] = true, ["Base.SPAS12"] = true, ["Base.SPAS12_Alt"] = true, ["Base.SW10"] = true, ["Base.SW17"] = true, ["Base.SW4006"] = true, ["Base.SW4506"] = true, ["Base.SW586"] = true, ["Base.SW586_Alt"] = true, ["Base.SW5906"] = true, ["Base.SW65"] = true, ["Base.SW65_Alt"] = true, ["Base.T56"] = true, ["Base.TEC9"] = true, ["Base.USP40"] = true, ["Base.USP9"] = true, ["Base.Uzi"] = true, ["Base.Valmet"] = true, ["Base.VarmintRifle"] = true, ["Base.W223WinM70"] = true, ["Base.W3006WinM70"] = true, ["Base.W308WinM70"] = true, ["Base.Win1200"] = true, ["Base.Win1200_Alt"] = true, ["Base.Win1200Def"] = true, ["Base.Win1200Def_Alt"] = true, ["Base.Win1400"] = true, ["Base.Win1400_Alt"] = true, ["Base.Win1912"] = true, ["Base.Win1912_Alt"] = true, ["Base.Win30067400"] = true, ["Base.Win3087400"] = true, ["Base.Win37"] = true, ["Base.Win37_Alt"] = true, ["Base.Win61"] = true, ["Base.Win69"] = true, ["Base.Win943030"] = true, ["Base.Win94357"] = true, ["Base.Win94357_Alt"] = true, ["Base.Win9445"] = true, } local GUNS93_MAGAZINES = { ["Base.100CalicoMag"] = true, ["Base.1022Mag"] = true, ["Base.10M14Mag"] = true, ["Base.15BHPMag"] = true, ["Base.17BHPMag"] = true, ["Base.1908Mag"] = true, ["Base.1911MagExtend"] = true, ["Base.1911MagExtendSS"] = true, ["Base.1911MagSS"] = true, ["Base.20M16AR180Mag"] = true, ["Base.20M16Mag"] = true, ["Base.20M9Mag"] = true, ["Base.20MP5Mag"] = true, ["Base.223Rem760Mag"] = true, ["Base.223RemMag"] = true, ["Base.25Rug1022Mag"] = true, ["Base.25UziColtSMGMag"] = true, ["Base.25UziMag"] = true, ["Base.3006BARMag"] = true, ["Base.3006clip"] = true, ["Base.3006Rem760Mag"] = true, ["Base.3006WinMag"] = true, ["Base.3030RemMag"] = true, ["Base.308BARMag"] = true, ["Base.308Clip"] = true, ["Base.308Rem760Mag"] = true, ["Base.308WinMag"] = true, ["Base.30M14Mag"] = true, ["Base.30M16AR180Mag"] = true, ["Base.30M1CarMag"] = true, ["Base.30Mini14Mag"] = true, ["Base.4006Mag"] = true, ["Base.40AKMag"] = true, ["Base.40AR180Mag"] = true, ["Base.40M16AR180Mag"] = true, ["Base.44Clip"] = true, ["Base.44RemMag"] = true, ["Base.4506Mag"] = true, ["Base.45Clip"] = true, ["Base.45Moonclip"] = true, ["Base.556Clip"] = true, ["Base.5906Mag"] = true, ["Base.83Mag"] = true, ["Base.9mmClip"] = true, ["Base.AK5Mag"] = true, ["Base.AKBakeMag"] = true, ["Base.AKDrumMag"] = true, ["Base.AKMag"] = true, ["Base.AR180Mag"] = true, ["Base.BetaCMag"] = true, ["Base.BHPMag"] = true, ["Base.BHPMagSS"] = true, ["Base.BobcatMag"] = true, ["Base.BuckMag"] = true, ["Base.CalicoMag"] = true, ["Base.ColtSMGMag"] = true, ["Base.CZ75BMag"] = true, ["Base.DE357Mag"] = true, ["Base.DeltaEliteMag"] = true, ["Base.DeltaEliteMagBlue"] = true, ["Base.DeltaEliteMagExtend"] = true, ["Base.DeltaEliteMagExtendBlue"] = true, ["Base.EblocClip"] = true, ["Base.FALMag"] = true, ["Base.G17ExtMag"] = true, ["Base.G17Mag"] = true, ["Base.G17StickMag"] = true, ["Base.G19ExtMag"] = true, ["Base.G19Mag"] = true, ["Base.G20Mag"] = true, ["Base.G21Mag"] = true, ["Base.G22Mag"] = true, ["Base.G23Mag"] = true, ["Base.HK91Mag"] = true, ["Base.HKS10A357"] = true, ["Base.HKS10A38"] = true, ["Base.HKS22K"] = true, ["Base.HKS29M44"] = true, ["Base.HKS36A357"] = true, ["Base.HKS36A38"] = true, ["Base.HKS586A357"] = true, ["Base.HKS586A38"] = true, ["Base.HKSDSA38"] = true, ["Base.HKSMK3A357"] = true, ["Base.HKSMK3A38"] = true, ["Base.HKSPYA357"] = true, ["Base.HKSPYA38"] = true, ["Base.J22Mag"] = true, ["Base.L395KMag"] = true, ["Base.L395KMagSlugs"] = true, ["Base.M14Clip"] = true, ["Base.M1CarMag"] = true, ["Base.M249Box"] = true, ["Base.M3GreaseMag"] = true, ["Base.M60Box"] = true, ["Base.MAC10Mag"] = true, ["Base.MACGreaseMag"] = true, ["Base.MarkMag"] = true, ["Base.Mauserclip"] = true, ["Base.Mini14Mag"] = true, ["Base.Mini30Mag"] = true, ["Base.MP5Mag"] = true, ["Base.OfficerMag"] = true, ["Base.P226Mag"] = true, ["Base.P228Mag"] = true, ["Base.P380Mag"] = true, ["Base.P7M13Mag"] = true, ["Base.P7M8Mag"] = true, ["Base.P89Mag"] = true, ["Base.P90Mag"] = true, ["Base.PPKMag"] = true, ["Base.R25Mag"] = true, ["Base.Size3CompII357"] = true, ["Base.Size3CompII38"] = true, ["Base.Size3CompIII357"] = true, ["Base.Size3CompIII38"] = true, ["Base.Size4CompII357"] = true, ["Base.Size4CompII38"] = true, ["Base.Size4CompIII357"] = true, ["Base.Size4CompIII38"] = true, ["Base.Size5CompII357"] = true, ["Base.Size5CompII38"] = true, ["Base.Size5CompIII357"] = true, ["Base.Size5CompIII38"] = true, ["Base.Size6CompII357"] = true, ["Base.Size6CompII38"] = true, ["Base.Size6CompIII357"] = true, ["Base.Size6CompIII38"] = true, ["Base.SKSclip"] = true, ["Base.SpeedStrip357"] = true, ["Base.SpeedStrip38"] = true, ["Base.SpeedStrip44"] = true, ["Base.TEC9Mag"] = true, ["Base.TherARMag"] = true, ["Base.TherMini14Mag"] = true, ["Base.USP40Mag"] = true, ["Base.USP9Mag"] = true, ["Base.UziColtSMGMag"] = true, ["Base.UziMag"] = true, ["Base.ValmetMag"] = true, ["Base.Win69AMag"] = true, } local function setDisplayCategory(scriptManager, fullType, category) local scriptItem = scriptManager:FindItem(fullType) if not scriptItem then return false end if type(scriptItem.DoParam) == "function" then scriptItem:DoParam("DisplayCategory = " .. category) return true end if type(scriptItem.setDisplayCategory) == "function" then scriptItem:setDisplayCategory(category) return true end return false end local function areGuns93ItemsReady(scriptManager) if not scriptManager then return false end local firearm = scriptManager:FindItem(GUNS93_SENTINEL_FIREARM) local magazine = scriptManager:FindItem(GUNS93_SENTINEL_MAGAZINE) return firearm ~= nil and magazine ~= nil end local function applyPatch() if OFGuns93DisplayCategoryPatch.patched then return true end local scriptManager = ScriptManager and ScriptManager.instance if not scriptManager or type(scriptManager.FindItem) ~= "function" then return false end local firearmCategory, magazineCategory = resolveWeaponCategories() if not areGuns93ItemsReady(scriptManager) then return false end local patchedCount = 0 for fullType in pairs(GUNS93_FIREARMS) do if setDisplayCategory(scriptManager, fullType, firearmCategory) then patchedCount = patchedCount + 1 end end for fullType in pairs(GUNS93_MAGAZINES) do if setDisplayCategory(scriptManager, fullType, magazineCategory) then patchedCount = patchedCount + 1 end end if patchedCount == 0 then return false end OFGuns93DisplayCategoryPatch.patched = true return true end local function tryPatchOnTick() if applyPatch() then OFGuns93DisplayCategoryPatch.tickHookAdded = false Events.OnTick.Remove(tryPatchOnTick) end end local function ensureTickHook() if OFGuns93DisplayCategoryPatch.tickHookAdded then return end OFGuns93DisplayCategoryPatch.tickHookAdded = true Events.OnTick.Add(tryPatchOnTick) end local function queueRepatchNow() OFGuns93DisplayCategoryPatch.patched = false if not applyPatch() then ensureTickHook() end end local function runQueuedRepatch() OFGuns93DisplayCategoryPatch.repatchQueued = false Events.OnTick.Remove(runQueuedRepatch) queueRepatchNow() end local function queueRepatch() if OFGuns93DisplayCategoryPatch.repatchQueued then return end OFGuns93DisplayCategoryPatch.repatchQueued = true Events.OnTick.Add(runQueuedRepatch) end local function tryInstallBetterContainersRepatchHook() local ok, helpers = pcall(require, "BetterContainers/Helpers") if not ok or type(helpers) ~= "table" then return end local eventName = helpers.OPTIONS_APPLIED if type(eventName) ~= "string" then return end local event = Events[eventName] if event and type(event.Add) == "function" then event.Add(queueRepatch) end end if not applyPatch() then ensureTickHook() end if Events.OnMainMenuEnter and type(Events.OnMainMenuEnter.Add) == "function" then Events.OnMainMenuEnter.Add(queueRepatch) end tryInstallBetterContainersRepatchHook()