--!optimize 2 --!native --!strict 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 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, Leveling) local MovingObjectsConstructor = MovingObjects.constructor(TagsConstructor) local ButtonsConstructor = Buttons.constructor(Config.Name, ButtonTags, Elevator.Attributes.CurrentFloor) local TractionRopesConstructor = TractionRopes.constructor(CabRopesObject, PulleyRopesObject) local EventsConstructor = Events.constructor( Elevator, Config, ButtonsConstructor, ElevatorBoxModel, Leveling, MovingObjectsConstructor, TractionRopesConstructor ) EventsConstructor:InitButtons() ButtonsConstructor:InitForElevator(2, Vector3.new(-.05,0,0)) end