--!strict local HttpService = game:GetService("HttpService") export type GetSet = string | { Get: string; Set: string; Flags: string?; } export type Patch = { Add: { [string]: string }?; Redirect: { [string]: GetSet }?; Defaults: { [string]: any }?; Remove: {string}?; } -- strict type reaffirmation? -- this is some bug with Luau. local function GetSet(getSet: GetSet): GetSet return getSet end local function UseColor3(propName: string): GetSet return { Get = string.format("BrickColor.FromColor3(%s)", propName); Set = propName .. " = value?.Color"; } end local function TryDefineEnum(enumName: string): string? local gotEnum, enum = pcall(function () return (Enum :: any)[enumName] :: Enum end) if gotEnum then return "Enum:" .. tostring(enum) end return nil end local function TryGetEnumItem(enumName, itemName): EnumItem? local gotEnum, enum = pcall(function () return (Enum :: any)[enumName] :: Enum end) if gotEnum then local gotEnumItem, item = pcall(function () return (enum :: any)[itemName] :: EnumItem end) if gotEnumItem then return item end end return nil end local GuiTextMixIn: Patch = { Add = { Transparency = "float" }; Redirect = { FontSize = GetSet { Get = "FontUtility.GetFontSize(TextSize)"; Set = "TextSize = FontUtility.GetFontSize(value)"; }; TextColor = UseColor3 "TextColor3"; TextWrap = GetSet "TextWrapped"; Transparency = GetSet { Get = "base.Transparency"; Set = "base.Transparency = value;\n" .. "TextTransparency = value;"; Flag = "new"; } }; } ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ local PropertyPatches: { [string]: Patch } = { AnimationRigData = { Add = { label = "BinaryString"; name = "BinaryString"; parent = "BinaryString"; postTransform = "BinaryString"; preTransform = "BinaryString"; transform = "BinaryString"; }; Defaults = { label = "AQAAAAEAAAAAAAAA"; name = "AQAAAAEAAAAAAAAA"; parent = "AQAAAAEAAAAAAA=="; postTransform = "AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA="; preTransform = "AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA="; transform = "AQAAAAEAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAA="; } }; BallSocketConstraint = { -- Why does this even exist? Add = { MaxFrictionTorqueXml = "float" }; }; BasePart = { Add = { MaterialVariantSerialized = "string"; MaterialVariant = "string"; Color3uint8 = "Color3uint8"; size = "Vector3"; }; Redirect = { Position = GetSet { Get = "CFrame.Position"; Set = "CFrame = new CFrame(value) * CFrame.Rotation"; }; MaterialVariant = GetSet "MaterialVariantSerialized"; BrickColor = UseColor3 "Color"; Color = GetSet "Color3uint8"; Size = GetSet "size"; }; Defaults = { Color3uint8 = Color3.fromRGB(163, 162, 165); MaterialVariantSerialized = ""; size = Vector3.new(4, 1.2, 2); }; }; BaseScript = { Remove = {"LinkedSource"}; }; BevelMesh = { Add = { Bevel = "float"; Bevel_Roundness = "float"; Bulge = "float"; } }; BinaryStringValue = { Add = { Value = "BinaryString" }; }; BodyColors = { Redirect = { HeadColor = UseColor3 "HeadColor3"; LeftArmColor = UseColor3 "LeftArmColor3"; RightArmColor = UseColor3 "RightArmColor3"; LeftLegColor = UseColor3 "LeftLegColor3"; RightLegColor = UseColor3 "RightLegColor3"; TorsoColor = UseColor3 "TorsoColor3"; } }; BodyAngularVelocity = { Redirect = { angularvelocity = GetSet "AngularVelocity" }; }; BodyGyro = { Redirect = { cframe = GetSet "CFrame" }; }; Camera = { Redirect = { CoordinateFrame = GetSet "CFrame" } }; CustomEvent = { Add = { PersistedCurrentValue = "float" }; }; DataModelMesh = { Add = { LODX = TryDefineEnum("LevelOfDetailSetting"); LODY = TryDefineEnum("LevelOfDetailSetting"); }; Defaults = { LODX = TryGetEnumItem("LevelOfDetailSetting", "High"); LODY = TryGetEnumItem("LevelOfDetailSetting", "High"); }; }; DataStoreService = { Defaults = { AutomaticRetry = true; LegacyNamingScheme = false; } }; DoubleConstrainedValue = { Add = { value = "double" }; Redirect = { Value = GetSet "value"; ConstrainedValue = GetSet "value"; } }; Fire = { Add = { heat_xml = "float"; size_xml = "float"; }; Defaults = { heat_xml = 9; size_xml = 5; }; Redirect = { Heat = GetSet "heat_xml"; Size = GetSet "size_xml"; }; }; FloatCurve = { Add = { ValuesAndTimes = "BinaryString" }; Defaults = { ValuesAndTimes = "AAAAAAEAAAAKAAAAAAAAFkUAAAAA" }; }; FormFactorPart = { Add = { formFactorRaw = TryDefineEnum("FormFactor"); }; Defaults = { formFactorRaw = TryGetEnumItem("FormFactor", "Brick"); }; Redirect = { FormFactor = GetSet "formFactorRaw"; }; }; FunctionalTest = { Add = { HasMigratedSettingsToTestService = "bool"; }; Defaults = { HasMigratedSettingsToTestService = false; }; }; GuiBase2d = { Redirect = { Localize = GetSet "AutoLocalize" } }; GuiBase3d = { Redirect = { Color = UseColor3 "Color3" } }; GuiObject = { Redirect = { Transparency = GetSet "BackgroundTransparency"; BackgroundColor = UseColor3 "BackgroundColor3"; BorderColor = UseColor3 "BorderColor3"; } }; HiddenSurfaceRemovalAsset = { Add = { HSRData = "BinaryString"; HSRMeshIdData = "BinaryString"; } }; HttpService = { Defaults = { HttpEnabled = false } }; Humanoid = { Add = { Health_XML = "float"; InternalHeadScale = "float"; InternalBodyScale = "Vector3"; }; Defaults = { Health_XML = 100; InternalHeadScale = 1; InternalBodyScale = Vector3.new(1, 1, 1); }; Redirect = { Health = GetSet "Health_XML"; }; Remove = { "Jump"; "Torso"; "LeftLeg"; "RightLeg"; }; }; HumanoidDescription = { Add = { EmotesDataInternal = "string"; EquippedEmotesDataInternal = "string"; }; Defaults = { AccessoryBlob = "[]"; EmotesDataInternal = "[]"; EquippedEmotesDataInternal = "[]"; } }; InsertService = { Add = { AllowClientInsertModels = "bool" }; Defaults = { AllowClientInsertModels = false }; }; IntConstrainedValue = { Add = { value = "int64" }; Redirect = { Value = GetSet "value"; ConstrainedValue = GetSet "value"; } }; Lighting = { Add = { Technology = TryDefineEnum("Technology"); }; Defaults = { Technology = TryGetEnumItem("Technology", "Compatibility"); }; }; LocalizationTable = { Add = { Contents = "string" }; Defaults = { Contents = "[]" }; Redirect = { DevelopmentLanguage = GetSet "SourceLocaleId"; } }; LocalScript = { Remove = { "LinkedSource", "Source" } }; LuaSourceContainer = { Add = { LinkedSource = "Content"; ScriptGuid = "string"; Source = "ProtectedString"; }; }; MarkerCurve = { Add = { ValuesAndTimes = "BinaryString" }; Defaults = { ValuesAndTimes = "AAAAAAEAAAAKAAAAAAAAFkUAAAAA" }; }; MaterialService = { Add = { Use2022Materials = "bool"; Use2022MaterialsXml = "bool" }; Redirect = { Use2022Materials = GetSet "Use2022MaterialsXml" }; Defaults = { AsphaltName = "Asphalt"; BasaltName = "Basalt"; BrickName = "Brick"; CobblestoneName = "Cobblestone"; ConcreteName = "Concrete"; CorrodedMetalName = "CorrodedMetal"; CrackedLavaName = "CrackedLava"; DiamondPlateName = "DiamondPlate"; FabricName = "Fabric"; FoilName = "Foil"; GlacierName = "Glacier"; GraniteName = "Granite"; GrassName = "Grass"; GroundName = "Ground"; IceName = "Ice"; LeafyGrassName = "LeafyGrass"; LimestoneName = "Limestone"; MarbleName = "Marble"; MetalName = "Metal"; MudName = "Mud"; PavementName = "Pavement"; PebbleName = "Pebble"; PlasticName = "Plastic"; RockName = "Rock"; SaltName = "Salt"; SandName = "Sand"; SandstoneName = "Sandstone"; SlateName = "Slate"; SmoothPlasticName = "SmoothPlastic"; SnowName = "Snow"; WoodName = "Wood"; WoodPlanksName = "WoodPlanks"; } }; MaterialVariant = { Add = { TexturePack0 = "Content"; TexturePack1 = "Content"; } }; MeshPart = { Add = { VertexCount = "int" }; Defaults = { VertexCount = 0 }; Redirect = { MeshID = GetSet "MeshId" } }; Model = { Add = { ModelMeshCFrame = "CFrame"; ModelMeshData = "SharedString"; ModelMeshSize = "Vector3"; NeedsPivotMigration = "bool"; WorldPivotData = "Optional"; }; }; ModuleScript = { Remove = { "LinkedSource", "Source" } }; PackageLink = { Add = { VersionIdSerialize = "int64"; PackageIdSerialize = "Content"; }; Defaults = { AutoUpdate = false }; }; Part = { Add = { shape = TryDefineEnum("PartType") }; Redirect = { Shape = GetSet "shape" }; }; ParticleEmitter = { Redirect = { VelocitySpread = GetSet { Get = "SpreadAngle.X"; Set = "SpreadAngle = new Vector2(value, value)"; } } }; PartOperation = { Add = { AssetId = "Content"; ChildData = "BinaryString"; ChildData2 = "SharedString"; MeshData = "BinaryString"; MeshData2 = "SharedString"; FormFactor = TryDefineEnum("FormFactor"); }; Defaults = { FormFactor = Enum.FormFactor.Custom }; }; PartOperationAsset = { Add = { ChildData = "BinaryString"; MeshData = "BinaryString"; }; }; Players = { Defaults = { MaxPlayersInternal = 16 } }; PolicyService = { Add = { IsLuobuServer = TryDefineEnum("TriStateBoolean"); LuobuWhitelisted = TryDefineEnum("TriStateBoolean"); }; Defaults = { IsLuobuServer = TryGetEnumItem("TriStateBoolean", "Unknown"); LuobuWhitelisted = TryGetEnumItem("TriStateBoolean", "Unknown"); }; }; RotationCurve = { Add = { ValuesAndTimes = "BinaryString" }; Defaults = { ValuesAndTimes = "AAAAAAEAAAAKAAAAAAAAFkUAAAAA" }; }; SelectionBox = { Redirect = { SurfaceColor = UseColor3 "SurfaceColor3" } }; SelectionSphere = { Redirect = { SurfaceColor = UseColor3 "SurfaceColor3" } }; ServerScriptService = { Defaults = { LoadStringEnabled = false } }; Script = { Remove = { "LinkedSource", "Source" } }; ScriptDebugger = { Add = { CoreScriptIdentifier = "string"; ScriptGuid = "string"; } }; Smoke = { Add = { size_xml = "float"; opacity_xml = "float"; riseVelocity_xml = "float"; }; Defaults = { size_xml = 1; opacity_xml = 0.5; riseVelocity_xml = 1; }; Redirect = { Size = GetSet "size_xml"; Opacity = GetSet "opacity_xml"; RiseVelocity = GetSet "riseVelocity_xml"; }; }; Sound = { Add = { MaxDistance = "float"; -- ?! xmlRead_MaxDistance_3 = "float"; xmlRead_MinDistance_3 = "float"; }; Defaults = { xmlRead_MinDistance_3 = 10; xmlRead_MaxDistance_3 = 10000; }; Redirect = { MaxDistance = GetSet "xmlRead_MaxDistance_3"; xmlRead_MinDistance_3 = GetSet "EmitterSize"; RollOffMinDistance = GetSet "EmitterSize"; MinDistance = GetSet "EmitterSize"; Pitch = GetSet "PlaybackSpeed"; }; }; Sparkles = { Redirect = { Color = GetSet "SparkleColor" }; }; StarterPlayer = { Add = { LoadCharacterLayeredClothing = "Enum:LoadCharacterLayeredClothing"; }; Defaults = { GameSettingsAvatar = Enum.GameAvatarType.R15; GameSettingsR15Collision = Enum.R15CollisionType.OuterBox; LoadCharacterLayeredClothing = Enum.LoadCharacterLayeredClothing.Default; GameSettingsScaleRangeHead = NumberRange.new(0.95, 1.00); GameSettingsScaleRangeWidth = NumberRange.new(0.70, 1.00); GameSettingsScaleRangeHeight = NumberRange.new(0.90, 1.05); GameSettingsScaleRangeBodyType = NumberRange.new(0.00, 1.00); GameSettingsScaleRangeProportion = NumberRange.new(0.00, 1.00); }; }; StudioData = { Add = { CommitInflightGuid = "string"; CommitInflightAuthorId = "int64"; CommitInflightPlaceVersion = "int"; }; }; SurfaceAppearance = { Defaults = { AlphaMode = Enum.AlphaMode.Overlay } }; TextBox = GuiTextMixIn; TextLabel = GuiTextMixIn; TextButton = GuiTextMixIn; Terrain = { Add = { AcquisitionMethod = TryDefineEnum("TerrainAcquisitionMethod"); ClusterGridV3 = "BinaryString"; PhysicsGrid = "BinaryString"; SmoothGrid = "BinaryString"; }; Defaults = { Decoration = false; SmoothGrid = "AQU="; PhysicsGrid = "AgMAAAAAAAAAAAAAAAA="; AcquisitionMethod = TryGetEnumItem("TerrainAcquisitionMethod", "None"); MaterialColors = "AAAAAAAAan8/P39rf2Y/ilY+j35fi21PZmxvZbDqw8faiVpHOi4kHh4lZlw76JxKc3trhHtagcLgc4RKxr21zq2UlJSM"; }; }; TerrainDetail = { Add = { TexturePack1 = "Content"; } }; TerrainRegion = { Add = { ExtentsMax = "Vector3int16"; ExtentsMin = "Vector3int16"; GridV3 = "BinaryString"; SmoothGrid = "BinaryString"; }; Defaults = { ExtentsMax = Vector3int16.new(); ExtentsMin = Vector3int16.new(); GridV3 = ""; SmoothGrid = "AQU="; }; }; TextChatService = { Defaults = { CreateDefaultCommands = true; CreateDefaultTextChannels = true; } }; TriangleMeshPart = { Add = { InitialSize = "Vector3"; LODData = "BinaryString"; PhysicsData = "BinaryString"; PhysicalConfigData = "SharedString"; }; Defaults = { InitialSize = Vector3.new(1, 1, 1); PhysicalConfigData = "1B2M2Y8AsgTpgAmY7PhCfg=="; }; }; TrussPart = { Add = { style = TryDefineEnum("Style") }; Redirect = { Style = GetSet "style" }; }; UnvalidatedAssetService = { Add = { CachedData = "string" }; Defaults = { CachedData = HttpService:JSONEncode { users = {}; lastSaveTime = 0; lastKnownPublishRequest = 0; } } }; UserInputService = { Add = { LegacyInputEventsEnabled = "bool" }; Defaults = { LegacyInputEventsEnabled = true }; }; ViewportFrame = { Add = { CameraCFrame = "CFrame"; CameraFieldOfView = "float"; }; Defaults = { CameraCFrame = CFrame.new(); CameraFieldOfView = 70; }; }; WeldConstraint = { Add = { Part0Internal = "Class:BasePart"; Part1Internal = "Class:BasePart"; EnabledInternal = "bool"; State = "int"; CFrame0 = "CFrame"; CFrame1 = "CFrame"; }; Defaults = { CFrame0 = CFrame.new(); CFrame1 = CFrame.new(); EnabledInternal = true; State = 3; Part0 = Instance.new("Part"); Part1 = Instance.new("Part"); }; Redirect = { Part0 = GetSet "Part0Internal"; Part1 = GetSet "Part1Internal"; Enabled = GetSet "EnabledInternal"; }; }; Workspace = { Add = { CollisionGroups = "string"; ExplicitAutoJoints = "bool"; TerrainWeldsFixed = "bool"; StreamingMinRadius = "int"; StreamingTargetRadius = "int"; MeshPartHeads = TryDefineEnum("MeshPartHeads"); SignalBehavior = TryDefineEnum("SignalBehavior"); StreamingPauseMode = TryDefineEnum("StreamingPauseMode"); PhysicsSteppingMethod = TryDefineEnum("PhysicsSteppingMethod"); MeshPartHeadsAndAccessories = TryDefineEnum("MeshPartHeadsAndAccessories"); }; Defaults = { CollisionGroups = "Default^0^1"; TouchesUseCollisionGroups = false; ExplicitAutoJoints = true; TerrainWeldsFixed = true; StreamingMinRadius = 64; StreamingTargetRadius = 1024; MeshPartHeads = TryGetEnumItem("MeshPartHeads", "Default"); SignalBehavior = TryGetEnumItem("SignalBehavior", "Default"); StreamingPauseMode = TryGetEnumItem("StreamingPauseMode", "Default"); PhysicsSteppingMethod = TryGetEnumItem("PhysicsSteppingMethod", "Default"); MeshPartHeadsAndAccessories = TryGetEnumItem("MeshPartHeadsAndAccessories", "Default"); } } } ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ return PropertyPatches ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------