--!nonstrict --[[ @class ServerMain ]] local ServerScriptService = game:GetService("ServerScriptService") local root = ServerScriptService.conditions local loader = root:FindFirstChild("LoaderUtils", true).Parent local require = require(loader).bootstrapGame(root) local NevermoreTestRunnerUtils = require("NevermoreTestRunnerUtils") if NevermoreTestRunnerUtils.runTestsIfNeededAsync(root) then return end local AdorneeConditionUtils = require("AdorneeConditionUtils") local AttributeValue = require("AttributeValue") local TieDefinition = require("TieDefinition") do local conditionFolder = AdorneeConditionUtils.createConditionContainer() conditionFolder.Parent = workspace local orGroup = AdorneeConditionUtils.createOrConditionGroup() orGroup.Parent = conditionFolder AdorneeConditionUtils.createRequiredProperty("Name", "Allowed").Parent = orGroup local andGroup = AdorneeConditionUtils.createAndConditionGroup() andGroup.Parent = orGroup AdorneeConditionUtils.createRequiredProperty("Name", "Allow").Parent = andGroup AdorneeConditionUtils.createRequiredAttribute("IsEnabled", true).Parent = andGroup local testInst = Instance.new("Folder") testInst.Name = "Deny" testInst:SetAttribute("IsEnabled", false) testInst.Parent = workspace AdorneeConditionUtils.observeConditionsMet(conditionFolder, testInst):Subscribe(function(isAllowed) print("Is allowed", isAllowed) end) task.delay(0.1, function() testInst.Name = "Allowed" end) end -- Test tie integration do local door = Instance.new("Folder") door.Name = "Door" door.Parent = workspace local openableInterface = TieDefinition.new("Openable", { IsOpen = TieDefinition.Types.PROPERTY, }) openableInterface:Implement(door, { IsOpen = AttributeValue.new(door, "IsOpen", false), }) local canOpenCondition = AdorneeConditionUtils.createConditionContainer() canOpenCondition.Name = "CanOpenCondition" canOpenCondition.Parent = workspace AdorneeConditionUtils.createRequiredTieInterface(openableInterface).Parent = canOpenCondition AdorneeConditionUtils.createRequiredAttribute("IsOpen", false).Parent = canOpenCondition AdorneeConditionUtils.observeConditionsMet(canOpenCondition, door):Subscribe(function(isAllowed) print("Is door opening allowed", isAllowed) end) end