Feature highlights: - Adds many content to the SC2 game - Allows custom mission order - Adds race-swapped missions for build missions (except Epilogue and NCO) - Allows War Council Nerfs (Protoss units can get pre - War Council State, alternative units get another custom nerf to match the power level of base units) - Revamps Predator's upgrade tree (never was considered strategically important) - Adds some units and upgrades - Locked and excluded items can specify quantity - Key mode (if opt-in, missions require keys to be unlocked on top of their regular regular requirements - Victory caches - Victory locations can grant multiple items to the multiworld instead of one - The generator is more resilient for generator failures as it validates logic for item excludes - Fixes the following issues: - https://github.com/ArchipelagoMW/Archipelago/issues/3531 - https://github.com/ArchipelagoMW/Archipelago/issues/3548
44 lines
1.8 KiB
JavaScript
44 lines
1.8 KiB
JavaScript
let updateSection = (sectionName, fakeDOM) => {
|
|
document.getElementById(sectionName).innerHTML = fakeDOM.getElementById(sectionName).innerHTML;
|
|
}
|
|
|
|
window.addEventListener('load', () => {
|
|
// Reload tracker every 60 seconds (sync'd)
|
|
const url = window.location;
|
|
// Note: This synchronization code is adapted from code in trackerCommon.js
|
|
const targetSecond = parseInt(document.getElementById('player-tracker').getAttribute('data-second')) + 3;
|
|
console.log("Target second of refresh: " + targetSecond);
|
|
|
|
let getSleepTimeSeconds = () => {
|
|
// -40 % 60 is -40, which is absolutely wrong and should burn
|
|
var sleepSeconds = (((targetSecond - new Date().getSeconds()) % 60) + 60) % 60;
|
|
return sleepSeconds || 60;
|
|
};
|
|
|
|
let updateTracker = () => {
|
|
const ajax = new XMLHttpRequest();
|
|
ajax.onreadystatechange = () => {
|
|
if (ajax.readyState !== 4) { return; }
|
|
|
|
// Create a fake DOM using the returned HTML
|
|
const domParser = new DOMParser();
|
|
const fakeDOM = domParser.parseFromString(ajax.responseText, 'text/html');
|
|
|
|
// Update dynamic sections
|
|
updateSection('player-info', fakeDOM);
|
|
updateSection('section-filler', fakeDOM);
|
|
updateSection('section-terran', fakeDOM);
|
|
updateSection('section-zerg', fakeDOM);
|
|
updateSection('section-protoss', fakeDOM);
|
|
updateSection('section-nova', fakeDOM);
|
|
updateSection('section-kerrigan', fakeDOM);
|
|
updateSection('section-keys', fakeDOM);
|
|
updateSection('section-locations', fakeDOM);
|
|
};
|
|
ajax.open('GET', url);
|
|
ajax.send();
|
|
updater = setTimeout(updateTracker, getSleepTimeSeconds() * 1000);
|
|
};
|
|
window.updater = setTimeout(updateTracker, getSleepTimeSeconds() * 1000);
|
|
});
|