--!optimize 2 --!strict local ButtonPromptsDistance = Vector3.new(-.05) local ParentDir = script.Parent local ElevatorsDir = ParentDir.Parent local MainDir = ElevatorsDir.Parent local ElevatorSystem = ElevatorsDir:WaitForChild("System") local InitElevator = require(ElevatorSystem) local ArrowLantern = require(ElevatorSystem:WaitForChild("Lanterns"):WaitForChild("Arrows")) local Buttons = require(ElevatorSystem:WaitForChild("Buttons")) local TractionRopes = require(ElevatorSystem:WaitForChild("TractionRopes")) local Doors = require(ElevatorSystem:WaitForChild("Doors")) local Events = require(script:WaitForChild("Events")) local Config = require(script:WaitForChild("Config")) local Leveling = require(script:WaitForChild("Leveling")) local MovingObjects = require(script:WaitForChild("MovingObjects")) local TagsModule = require(MainDir:WaitForChild("Map"):WaitForChild("Load"):WaitForChild("Tags")) return function(TagsConstructor: TagsModule.TagsConstructor, ButtonTags: TagsModule.ElevatorButtons, LanternTags: TagsModule.Lanterns, LandingDoorTags: TagsModule.LandingTags) local ElevatorModel = TagsConstructor:Request("Elevator_Haughton") :: Model local CabRopesObject = TagsConstructor:Request("Haughton_Rope_Cab") :: BasePart local PulleyRopesObject = TagsConstructor:Request("Haughton_Rope_Pulley") :: BasePart local ElevatorBoxModel = ElevatorModel:WaitForChild("Mover") :: BasePart local Elevator = InitElevator.constructor(ElevatorBoxModel, Config.Elevator, Leveling) local MovingObjectsConstructor = MovingObjects.constructor(TagsConstructor) local ButtonsConstructor = Buttons.constructor(Config.Elevator.Name, ButtonTags, Elevator.Attributes.CurrentFloor) ButtonsConstructor:InitForElevator(2, ButtonPromptsDistance) local ArrowLanternConstructor = ArrowLantern.constructor(LanternTags, Config.Elevator) local TractionRopesConstructor = TractionRopes.constructor(CabRopesObject, PulleyRopesObject) local DoorsConstructor = Doors.constructor(Leveling, ElevatorBoxModel, Config.Doors, LandingDoorTags) local EventsConstructor = Events.constructor( Elevator, Config.Elevator, DoorsConstructor, ArrowLanternConstructor, ButtonsConstructor, ElevatorBoxModel, Leveling, MovingObjectsConstructor, TractionRopesConstructor ) TractionRopesConstructor:Update() EventsConstructor:Init() ArrowLanternConstructor:Toggle(true, true) if DoorsConstructor:OpenAtFloor(Elevator.Attributes.CurrentFloor.Value) then DoorsConstructor:OpenCabAsync() end end