Is the Skyscraper Haven Map bot down? Looks like there’s been several changes it hasn’t picked up.
It may be depressed, after becoming manic earlier on. Oh dear - a bipolar bot.
Poor guy… We support you, little bot-thingy!
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 ![]()
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 ![]()
That means you didn’t run your 3 missions for the Weavers.
Go Sages! ![]()
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.
Did you find the seed to Emily’s universe?
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);
})();
New page, @vector_cmdr the operator name is almost yours.
Yep - It’s one of my submissions ![]()
It’s in the sheet, but redacted.
It is the man himself, you can check the sheet!
Sorry, should be working - I’ll remember to do that next time.
Wooo, nice job vector! Stable Haven for all <3 (13 hours til I got hearts again.)
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.
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
