// ==UserScript==
// @name Zombia Borders
// @namespace http://tampermonkey.net/
// @version 0.5
// @description Creates useful borders around your factory.
// @author asdf
// @match zombia.io
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
const loadPixiAndRun = () => {
const script = document.createElement('script');
script.src = 'https://pixijs.download/release/pixi.min.js';
script.onload = () => {
const checkGameReady = () => {
if (typeof game !== 'undefined' && game.renderer && game.renderer.scenery && game.renderer.scenery.node) {
const lines = [];
const makeBorder = (x, y, width, height, shouldAddInArray, colorType = "red") => {
const obj = new PIXI.Graphics();
const color = colorType === "white" ? 0xFFFFFF : 0xff0000;
obj.beginFill(color);
obj.drawRect(0, 0, width, height);
obj.endFill();
obj.x = x;
obj.y = y;
game.renderer.scenery.node.addChild(obj);
if (shouldAddInArray) {
lines.push(obj);
}
};
makeBorder(0, 0, 3, 23997);
makeBorder(0, 0, 23997, 3);
makeBorder(23997, 0, 3, 24000);
makeBorder(0, 23997, 23997, 3);
if (!game.renderer.world.oldCreateEntity) {
game.renderer.world.oldCreateEntity = game.renderer.world.createEntity;
}
game.renderer.world.createEntity = (e, i) => {
if (e.entityClass) {
game.renderer.world.oldCreateEntity(e);
}
if (e.model === "Factory") {
if (window.lines && window.lines.length) {
window.lines.forEach(line => line.destroy());
}
if (window.lines) {
window.lines.length = 0;
}
const factory = { x: e.position.x, y: e.position.y };
makeBorder(factory.x - 48, factory.y - 48, 3, 96, true, "white");
makeBorder(factory.x - 48, factory.y + 48, 96, 3, true, "white");
makeBorder(factory.x + 48, factory.y - 48, 3, 96, true, "white");
makeBorder(factory.x - 48, factory.y - 48, 96, 3, true, "white");
makeBorder(factory.x - 864, factory.y - 864, 3, 1728, true, "white");
makeBorder(factory.x - 864, factory.y + 864, 1728, 3, true, "white");
makeBorder(factory.x + 864, factory.y - 864, 3, 1728, true, "white");
makeBorder(factory.x - 864, factory.y - 864, 1728, 3, true, "white");
}
};
} else {
setTimeout(checkGameReady, 1000);
}
};
checkGameReady();
};
document.head.appendChild(script);
};
loadPixiAndRun();
})();