--!optimize 2 --!native --!strict local ButtonPromptsDistance = Vector3.new(-.05,0,0) local HallDoorOffset = Vector3.new(4.15,0,0) local ParentDir = script.Parent local ElevatorsDir = ParentDir.Parent local MainDir = ElevatorsDir.Parent local InitElevator = require(ElevatorsDir:WaitForChild("System")) local Events = require(script:WaitForChild("Events")) local Config = require(script:WaitForChild("Config")) local Buttons = require(script:WaitForChild("Buttons")) local Leveling = require(script:WaitForChild("Leveling")) local MovingObjects = require(script:WaitForChild("MovingObjects")) local TractionRopes = require(script:WaitForChild("TractionRopes")) local Doors = require(script:WaitForChild("Doors")) local TagsModule = require(MainDir:WaitForChild("Map"):WaitForChild("Load"):WaitForChild("Tags")) local DoorEnums = require(MainDir:WaitForChild("Types"):WaitForChild("Enums"):WaitForChild("Doors")) 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 --TEMP local CabDoorsTree = {} :: {BasePart} local Elevator = InitElevator.constructor(ElevatorBoxModel, Config, Leveling) local MovingObjectsConstructor = MovingObjects.constructor(TagsConstructor) local ButtonsConstructor = Buttons.constructor(Config.Name, ButtonTags, Elevator.Attributes.CurrentFloor) ButtonsConstructor:InitForElevator(2, ButtonPromptsDistance) local TractionRopesConstructor = TractionRopes.constructor(CabRopesObject, PulleyRopesObject) local EventsConstructor = Events.constructor( Elevator, Config, ButtonsConstructor, ElevatorBoxModel, Leveling, MovingObjectsConstructor, TractionRopesConstructor ) EventsConstructor:InitButtons() local DoorsConstructor = Doors.constructor(ElevatorBoxModel, DoorEnums.Door.SingleSpeed, CabDoorsTree, DoorEnums.Door.SingleSpeed, LandingDoorTags) task.wait(2) DoorsConstructor:CloseFloorAsync(1, HallDoorOffset) end