-- ModuleScript WeaponStateReplicator (via decompile) local WeaponSlotResolver_upv_1 = require(game:GetService("ReplicatedStorage").Modules.WeaponSlotResolver) local tbl_1 = {} local tbl_upv_2 = {} tbl_upv_2.__index = tbl_upv_2 function tbl_1.new(a1, a2) --[[ name: new line: 17 upvalues: tbl_upv_2 (copy, index: 1) ]] local v1 = setmetatable({}, tbl_upv_2) v1.GameEvents = a1 v1.StateFolder = a2 v1.NextRequestId = 0 v1.PendingEquipRequest = nil v1.PresentationSequence = 0 return v1 end function tbl_upv_2.SetStateFolder(a1, a2) --[[ name: SetStateFolder line: 27 ]] a1.StateFolder = a2 end function tbl_upv_2.UpdateLocalState(a1, a2) --[[ name: UpdateLocalState line: 31 upvalues: WeaponSlotResolver_upv_1 (copy, index: 1) ]] WeaponSlotResolver_upv_1.UpdateStateFolder(a1.StateFolder, a2) end function tbl_upv_2.BuildEquipRequest(a1, a2, a3, a4) --[[ name: BuildEquipRequest line: 35 ]] a1.NextRequestId = a1.NextRequestId + 1 local str_1 = tostring(a1.NextRequestId) local tbl_3 = {} tbl_3.Slot = a2 tbl_3.ToolSerial = a3 tbl_3.ToolName = a4 tbl_3.RequestId = str_1 a1.PendingEquipRequest = tbl_3 a1:UpdateLocalState({EquippedSlot = a2, EquippedToolSerial = a3, EquippedToolName = a4, PendingRequestId = str_1}) return tbl_3 end function tbl_upv_2.SendEquipRequest(a1, a2, a3, a4) --[[ name: SendEquipRequest line: 54 ]] local v2 = a1:BuildEquipRequest(a2, a3, a4) a1.GameEvents.SwapWeapon:FireServer(v2) return v2 end function tbl_upv_2.ConfirmEquip(a1, a2) --[[ name: ConfirmEquip line: 60 ]] a1.PendingEquipRequest = nil a1:UpdateLocalState({PendingRequestId = "", EquippedSlot = a2.Slot or "", EquippedToolSerial = a2.ToolSerial or "", EquippedToolName = a2.ToolName or ""}) end function tbl_upv_2.RejectPendingEquip(a1, a2) --[[ name: RejectPendingEquip line: 70 ]] a1.PendingEquipRequest = nil local tbl_4 = {PendingRequestId = "", EquippedToolName = 0, EquippedToolSerial = 0, EquippedSlot = 0} tbl_4.EquippedSlot = a2 and a2.Slot or a1.StateFolder and a1.StateFolder:GetAttribute("EquippedSlot") or "" tbl_4.EquippedToolSerial = a2 and a2.ToolSerial or a1.StateFolder and a1.StateFolder:GetAttribute("EquippedToolSerial") or "" tbl_4.EquippedToolName = a2 and a2.ToolName or a1.StateFolder and a1.StateFolder:GetAttribute("EquippedToolName") or "" a1:UpdateLocalState(tbl_4) end function tbl_upv_2.HasMeaningfulStateChange(a1, a2, a3) --[[ name: HasMeaningfulStateChange line: 80 ]] if a1.StateFolder and a1.StateFolder:GetAttribute("CurrentActionState") == a2 then for key_1, value_1 in pairs(a3) do if a1.StateFolder:GetAttribute(key_1) == value_1 then continue end return true end return false end return true end function tbl_upv_2.SendActionState(a1, a2, a3) --[[ name: SendActionState line: 98 ]] local v6 = table.clone(a3 or {}) v6.CurrentActionState = a2 if a1:HasMeaningfulStateChange(a2, v6) ~= true then return end a1:UpdateLocalState(v6) local WeaponState_1 = a1.GameEvents:FindFirstChild("WeaponState") if not WeaponState_1 then return end if WeaponState_1:IsA("RemoteEvent") then WeaponState_1:FireServer({Action = a2, Updates = v6}) end end function tbl_upv_2.BuildPresentationEventPayload(a1, a2, a3) --[[ name: BuildPresentationEventPayload line: 115 ]] a1.PresentationSequence = a1.PresentationSequence + 1 local v7 = table.clone(a3 or {}) v7.Type = a2 v7.Sequence = a1.PresentationSequence return v7 end function tbl_upv_2.SendPresentationEvent(a1, a2, a3) --[[ name: SendPresentationEvent line: 123 ]] local SpectatePresentation_1 = a1.GameEvents:FindFirstChild("SpectatePresentation") if not SpectatePresentation_1 or not SpectatePresentation_1:IsA("RemoteEvent") then return nil end local v8 = a1:BuildPresentationEventPayload(a2, a3) SpectatePresentation_1:FireServer(v8) return v8 end return tbl_1