IF NOT storage.doorIds THEN storage.doorIds = { 5129, 5102, 5111, 5120, 1644, 1648, 1646, 6262} END LOCAL moveTime = 2000 -- WAIT time between Move, 2000 milliseconds = 2 seconds LOCAL moveDist = 1 -- How far TO Walk LOCAL useTime = 2000 -- WAIT time between Use, 2000 milliseconds = 2 seconds LOCAL useDistance = 1 -- How far TO Use LOCAL FUNCTION properTable(t) LOCAL r = {} FOR _, entry in pairs(t) DO table.insert(r, entry.id) END RETURN r END UI.Label("Door IDs") LOCAL doorContainer = UI.Container(FUNCTION(widget, items) storage.doorIds = items doorId = properTable(storage.doorIds) END, true) doorContainer:setHeight(35) doorContainer:setItems(storage.doorIds) doorId = properTable(storage.doorIds) clickDoor = macro(1000, "Use Doors", FUNCTION() FOR i, tile in ipairs(g_map.getTiles(posz())) DO LOCAL item = tile:getTopUseThing() IF item AND table.find(doorId, item:getId()) THEN LOCAL tPos = tile:getPosition() LOCAL distance = getDistanceBetween(POS(), tPos) IF (distance <= useDistance) THEN use(item) RETURN delay(useTime) END IF (distance <= moveDist AND distance > useDistance) THEN IF findPath(POS(), tPos, moveDist, { ignoreNonPathable = true, precision = 1 }) THEN autoWalk(tPos, moveTime, { ignoreNonPathable = true, precision = 1 }) RETURN delay(waitTime) END END END END END)