This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greasyfork.org/scripts/451812/1096750/PublusCoordsGenerator.js
function PublusCoordsGenerator(e, t, r, i, n) { // imageWidth, imageHeight, pieceWidth, pieceHeight, pattern
const calcPositionWithRest_ = function (e, t, r, i) {
return e * i + (e >= t ? r : 0)
}
const calcXCoordinateXRest_ = function (e, t, r) {
return (e + 61 * r) % t
}
const calcYCoordinateXRest_ = function (e, t, r, i, n) {
var s, a, o = n % 2 == 1;
return (e < t ? o : !o) ? (a = r,
s = 0) : (a = i - r,
s = r),
(e + 53 * n + 59 * r) % a + s
}
const calcXCoordinateYRest_ = function (e, t, r, i, n) {
var s, a, o = n % 2 == 1;
return (e < r ? o : !o) ? (a = i - t,
s = t) : (a = t,
s = 0),
(e + 67 * n + t + 71) % a + s
}
const calcYCoordinateYRest_ = function (e, t, r) {
return (e + 73 * r) % t
}
var s, a, o, u, c, p, l, m, d, h, y = Math.floor(e / r),
g = Math.floor(t / i),
f = e % r,
b = t % i,
S = [];
if (s = y - 43 * n % y,
s = s % y == 0 ? (y - 4) % y : s,
s = 0 == s ? y - 1 : s,
a = g - 47 * n % g,
a = a % g == 0 ? (g - 4) % g : a,
a = 0 == a ? g - 1 : a,
f > 0 && b > 0 && (o = s * r,
u = a * i,
S.push({
srcX: o,
srcY: u,
destX: o,
destY: u,
width: f,
height: b
})),
b > 0)
for (l = 0; l < y; l++)
d = calcXCoordinateXRest_(l, y, n),
h = calcYCoordinateXRest_(d, s, a, g, n),
c = calcPositionWithRest_(d, s, f, r),
p = h * i,
o = calcPositionWithRest_(l, s, f, r),
u = a * i,
S.push({
srcX: o,
srcY: u,
destX: c,
destY: p,
width: r,
height: b
});
if (f > 0)
for (m = 0; m < g; m++)
h = calcYCoordinateYRest_(m, g, n),
c = (d = calcXCoordinateYRest_(h, s, a, y, n)) * r,
p = calcPositionWithRest_(h, a, b, i),
o = s * r,
u = calcPositionWithRest_(m, a, b, i),
S.push({
srcX: o,
srcY: u,
destX: c,
destY: p,
width: f,
height: i
});
for (l = 0; l < y; l++)
for (m = 0; m < g; m++)
h = (m + 37 * n + 41 * (d = (l + 29 * n + 31 * m) % y)) % g,
c = d * r + (d >= calcXCoordinateYRest_(h, s, a, y, n) ? f : 0),
p = h * i + (h >= calcYCoordinateXRest_(d, s, a, g, n) ? b : 0),
o = l * r + (l >= s ? f : 0),
u = m * i + (m >= a ? b : 0),
S.push({
srcX: o,
srcY: u,
destX: c,
destY: p,
width: r,
height: i
});
return S;
}