it tells you, visually
// ==UserScript==
// @name florr.io magic/shiny firefly timer
// @namespace http://tampermonkey.net/
// @version 2.4.18
// @description it tells you, visually
// @author Kosuken
// @match https://florr.io/*
// @grant none
// @license MIT
// ==/UserScript==
(function () {
'use strict';
// shit
const timerBox = document.createElement('div');
timerBox.id = 'mff-timer';
timerBox.style.position = 'fixed';
timerBox.style.top = '20px';
timerBox.style.left = '20px';
timerBox.style.padding = '10px';
timerBox.style.backgroundColor = 'rgba(119, 234, 249, 0.8)';
timerBox.style.color = 'white';
timerBox.style.textShadow = '1px 1px 0 black, -1px 1px 0 black, 1px -1px 0 black, -1px -1px 0 black';
timerBox.style.fontFamily = '"Ubuntu", sans-serif';
timerBox.style.fontWeight = 'bold';
timerBox.style.border = '5px solid rgba(96, 190, 202, 0.5)';
timerBox.style.borderRadius = '8px';
timerBox.style.zIndex = '10000';
timerBox.style.cursor = 'move';
document.body.appendChild(timerBox);
let eventNow = false;
let eventEndsTimeout;
function updateTimer() {
const intv = 4732;
const startT = 0;
// Tnow = time now
const Tnow = Math.floor(Date.now() / 1000);
// next time and sex left
const nextT = startT + (Math.floor((Tnow - startT) / intv) + 1) * intv;
const secsLeft = nextT - Tnow;
if (secsLeft >= intv) {
// show the end countdown
if (!eventNow) {
eventNow = true;
let eventLength = 60;
eventEndsTimeout = setInterval(() => {
timerBox.innerHTML = `
<div>mff stop spawning in: <br><strong>${eventLength}s</strong></div>
`;
eventLength--;
if (eventLength < 0) {
clearInterval(eventEndsTimeout);
eventNow = false;
}
}, 1000);
return;
}
}
if (!eventNow) {
// normal
const hours = Math.floor(secsLeft / 3600);
const minutes = Math.floor((secsLeft % 3600) / 60);
const seconds = secsLeft % 60;
timerBox.innerHTML = `
<div>next magic fireflies: <br><strong>${new Date(nextT * 1000).toLocaleTimeString()}</strong></div>
<div>time left: <br><strong>${hours}h ${minutes}m ${seconds}s</strong></div>
`;
}
}
// upd8 every sec
setInterval(updateTimer, 1000);
updateTimer(); // init
// drag :D
timerBox.onmousedown = function (event) {
event.preventDefault();
let shiftX = event.clientX - timerBox.getBoundingClientRect().left;
let shiftY = event.clientY - timerBox.getBoundingClientRect().top;
function moveAt(pageX, pageY) {
timerBox.style.left = pageX - shiftX + 'px';
timerBox.style.top = pageY - shiftY + 'px';
}
function onMouseMove(event) {
moveAt(event.pageX, event.pageY);
}
document.addEventListener('mousemove', onMouseMove);
timerBox.onmouseup = function () {
document.removeEventListener('mousemove', onMouseMove);
timerBox.onmouseup = null;
};
};
timerBox.ondragstart = function () {
return false;
};
})();