Project skyscraper / no man's sky arg

Is the Skyscraper Haven Map bot down? Looks like there’s been several changes it hasn’t picked up.

5 Likes

It may be depressed, after becoming manic earlier on. Oh dear - a bipolar bot.

8 Likes

Poor guy… We support you, little bot-thingy!

5 Likes

It picked them up on the Haven Discord, it may have been silenced from posting here by Ekimo until he gets it all sorted.

It sounds like me and the bot had the same day :nauseated_face:

4 Likes

Oof… sorry to hear that.

It’s my own fault, I paid good money for the poison too. I am an amateur when it comes to Pubs. Today was a good reminder, mixing is bad :see_no_evil_monkey:

3 Likes

That means you didn’t run your 3 missions for the Weavers.

Go Sages! :face_with_hand_over_mouth:

7 Likes

I managed to catch the last batch there. Just before it ticked over into the next batch.

Mining for Ammonia did make me feel very nauseous again. Why Polo, why!?

You can’t catch a weaver, even when he’s down for the count.

5 Likes

Did you find the seed to Emily’s universe?

3 Likes

5 posts were merged into an existing topic: Request Memory Timestamp

Not sure where to put it, so putting it here…

For anyone who wants to be sure of what they entered into the password field in the future (I saw a few comment across the threads):

(function() {
    'use strict'; document.querySelectorAll('input[type="password"]').forEach(function(input) {
        input.type = 'text';
    });
})();

It will disable the character hiding.

Just whack it into greasemonkey/tampermonkey/violentmonkey/whatever flavour of js script tool in your browser.

And per the great idea @Vau1t had to make one to handle entering any case (that I promptly, shamelessly, lovingly stole):

Fold out for script:
(function() {
    'use strict';

    var working = sessionStorage.getItem('wpPwWorking');
    var orig    = sessionStorage.getItem('wpPwOriginal');
    var lastTried = sessionStorage.getItem('wpPwLastTried');
    var queueRaw  = sessionStorage.getItem('wpPwQueue');
    var pwForm = document.querySelector('form.post-password-form');
    var unlocked = !pwForm;

    // --- Step 0: show success popup (after detection reload) ---
    if (working) {
        sessionStorage.removeItem('wpPwWorking');
        sessionStorage.removeItem('wpPwOriginal');
        sessionStorage.removeItem('wpPwLastTried');
        sessionStorage.removeItem('wpPwQueue');
        sessionStorage.removeItem('wpPwIdx');
        alert('Password accepted!\n\nEntered: ' + orig + '\nWorking: ' + working);
        return;
    }

    // --- Step 1: page reloaded and password was accepted ---
    if (unlocked && lastTried) {
        sessionStorage.setItem('wpPwWorking', lastTried);
        sessionStorage.removeItem('wpPwLastTried');
        location.reload();
        return;
    }

    // --- Step 2: page locked, queue running -> try next variant ---
    if (pwForm && queueRaw) {
        var queue = JSON.parse(queueRaw);
        var idx   = parseInt(sessionStorage.getItem('wpPwIdx') || '0', 10);
        var pwInput = pwForm.querySelector('input[name="post_password"]');
        if (!pwInput) return;

        if (idx >= queue.length) {
            sessionStorage.removeItem('wpPwQueue');
            sessionStorage.removeItem('wpPwIdx');
            sessionStorage.removeItem('wpPwLastTried');
            pwInput.placeholder = 'All variants tried — check manually';
            var btn = pwForm.querySelector('input[type="submit"]');
            if (btn) btn.disabled = false;
            return;
        }

        // Set the next variant and submit
        sessionStorage.setItem('wpPwLastTried', queue[idx]);
        sessionStorage.setItem('wpPwIdx', idx + 1);
        pwInput.value = queue[idx];
        pwForm.submit();
        return;
    }

    // --- Step 3: idle state on locked page ---
    if (pwForm) {
        // Reveal password fields
        document.querySelectorAll('input[type="password"]').forEach(function(input) {
            input.type = 'text';
        });

        var pwInput = pwForm.querySelector('input[name="post_password"]');
        if (!pwInput) return;

        pwForm.addEventListener('submit', function(e) {
            e.preventDefault();

            var val = pwInput.value;
            if (!val) return;

            var variants = generateVariants(val);
            sessionStorage.setItem('wpPwOriginal', val);
            sessionStorage.setItem('wpPwQueue', JSON.stringify(variants));
            sessionStorage.setItem('wpPwIdx', 1);
            sessionStorage.setItem('wpPwLastTried', variants[0]);

            pwInput.value = variants[0];
            pwForm.submit();
        });
    }

    function generateVariants(s) {
        var seen = new Set();
        var out = [];

        function add(v) {
            if (!seen.has(v)) { seen.add(v); out.push(v); }
        }

        add(s);
        add(s.toUpperCase());
        add(s.toLowerCase());
        add(capitalizeWords(s));
        add(capitalizeFirst(s));
        add(toggleCase(s));
        add(alternatingCase(s, true));
        add(alternatingCase(s, false));

        return out;
    }

    function capitalizeWords(s) {
        return s.toLowerCase().replace(/\b\w/g, function(c) { return c.toUpperCase(); });
    }

    function capitalizeFirst(s) {
        return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();
    }

    function toggleCase(s) {
        return s.split('').map(function(c) {
            return c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase();
        }).join('');
    }

    function alternatingCase(s, startUpper) {
        var i = 0;
        return s.split('').map(function(c) {
            if (c === ' ') return c;
            var result = (startUpper ? (i % 2 === 0) : (i % 2 === 1)) ? c.toUpperCase() : c.toLowerCase();
            i++;
            return result;
        }).join('');
    }
})();

It will show the plain text and attempt in entered case and go through all combos, then present the winner in a popup like:

(or fail through to the page default wrong password)

Also, one to auto enter known passwords for you to save remembering (we need all the brainpower we can squeeze out!):

Fold out for script:
// ==UserScript==
// @name         Project Skyscraper: Auto-fill password
// @namespace    https://project-skyscraper.com
// @version      1.0
// @description  Auto-fills known passwords on project-skyscraper.com password-protected pages
// @author       vector_cmdr
// @match        https://project-skyscraper.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var page = window.location.pathname;

    // Add new page and password pairs here:
    var passwords = {
        '/request-memory-timestamp-094317/': 'EMILY',
        '/report-bru-ent-reunion-peak/': 'EVENT HORIZON',
    };

    var pw = null;
    for (var path in passwords) {
        if (page.startsWith(path)) {
            pw = passwords[path];
            break;
        }
    }
    if (!pw) return;

    // Check if already unlocked (no password form)
    var form = document.querySelector('form.post-password-form');
    if (!form) return;

    var input = form.querySelector('input[name="post_password"]');
    if (!input) return;
    var submit = form.querySelector('input[type="submit"]');

    input.type = 'text';
    input.value = pw;
    if (submit) submit.disabled = false;

    // Auto-submit after a brief delay so the reveal is visible
    setTimeout(function() {
        form.submit();
    }, 300);
})();
8 Likes

New page, @vector_cmdr the operator name is almost yours.

9 Likes

Yep - It’s one of my submissions :heart:
It’s in the sheet, but redacted.

11 Likes

It is the man himself, you can check the sheet!

4 Likes

Sorry, should be working - I’ll remember to do that next time.

2 Likes

Wooo, nice job vector! Stable Haven for all <3 (13 hours til I got hearts again.)

6 Likes

Just notifying the main thread that the architect has made their own thread, addressing the operators on their progress.

It has more or less confirmed what we have been doing all along, has been the right track, stabilising glitched or corrupted memories, to reflect the current reality.

13 Likes

2 posts were merged into an existing topic: June 6 2026 - Structural Analysis Report - Brussels

A post was merged into an existing topic: June 6 2026 - Structural Analysis Report - Brussels

17 posts were merged into an existing topic: Project Skyscraper picks from #GlitchinReality