// ==UserScript==
// @name Reddit Place Kekistani Flag
// @namespace http://tampermonkey.net/
// @version 1.5
// @description Kekistani Flag
// @author Jim Russells
// @match https://www.reddit.com/place?webview=true
// @match http*://www.reddit.com/place?webview=true
// @match https://www.reddit.com/r/place/*
// @match http*://www.reddit.com/r/place*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var images = [
// ordered by priority
// use the debug flag to test your images!
{
offsetX: 207,
offsetY: 909,
text: [
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccc...cccccc...cccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"cc.@@@.cccc.@@@.ccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccc.@@@.cc.@@@.cccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"cc.@@@@.cc.@@@@.ccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccc....cccc....cccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccc..cccc..cccccccccccc@@@@@@@@@@@cccccccccccccccccccccccccccccccccccccccccccc",
"cccc.@@.cc.@@.ccccccccc@@...........@ccccccccccccccccccccccccccccccccccccccccccc",
"ccc.@@@.cc.@@@.ccccccc@.....@@@@@....@@ccccccccccccccccccccccccccccccccccccccccc",
"ccc.@@@.cc.@@@.ccccc@@...@@.......@@...@cccccccccccccccccccccccccccccccccccccccc",
"ccc.@[email protected].@[email protected]@@..@@..@@@@@@@..@@..@ccccccccccccccccccccccccccccccccccccccc",
"cccc.c.cccc.c.cccc@@..@..@@@@@@@@@@@..@..@cccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccc@..@.@@@@@@@@@@@@@@@.@..@ccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccc@..@.@@@@@@@@@@@@@@@@@.@..@cccccccccccccccccccccccccccccccccccc",
"cccccccccccccccc@..@.@@@@@@.@@@@@.@@@@@@.@.@cccccccccccccccccccccccccccccccccccc",
"cccccccccccccccc@..@.@@@@@@@..@..@@@@@@@.@..@ccccccccccccccccccccccccccccccccccc",
"cccccccccccccccc..@.@@@@@@@@@...@@@@@@@@@.@.@ccccccccccccccccccccccccccccccccccc",
"@@@@@@@@@@@@@@@@..@.@@@@@@@@@@.@@@@@@@@@@.@..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"...............@...@@@@@@@@.......@@@@@@@@...@..................................",
"@@@@@@@@@@@@@@@@...@@.@@@.@@@@@@@@@.@@@.@@...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@..@.@@@.@@.@.@@.@@.@.@@.@@@.@.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"..............@..@.@@@..@.@.@@.@@.@.@..@@@.@....................................",
"..............@..@.@@@@...@.@@.@@.@...@@@@.@....................................",
"..............@..@.@@@@...@.@@.@@.@...@@@@.@....................................",
"..............@..@.@@@..@.@.@@.@@.@.@..@@@.@....................................",
"@@@@@@@@@@@@@@@..@.@@@.@@.@.@@.@@.@.@@.@@@.@.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"@@@@@@@@@@@@@@@....@@.@@@.@@@@@@@@@.@@@.@@...@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"...............@...@@@@@@@@.......@@@@@@@@...@..................................",
"@@@@@@@@@@@@@@@@..@.@@@@@@@@@@.@@@@@@@@@@.@..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
"cccccccccccccccc..@.@@@@@@@@@...@@@@@@@@@.@.@ccccccccccccccccccccccccccccccccccc",
"cccccccccccccccc@..@.@@@@@@@..@..@@@@@@@.@..@ccccccccccccccccccccccccccccccccccc",
"cccccccccccccccc@..@.@@@@@@.@@@@@.@@@@@@.@.@cccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccc@..@.@@@@@@@@@@@@@@@@@.@..@cccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccc@..@.@@@@@@@@@@@@@@@.@..@ccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccc@@..@..@@@@@@@@@@@..@..@cccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccc@...@@..@@@@@@@..@@..@@cccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccc@@...@@.......@@...@cccccccccccccccccccccccccccccccccccccccc",
"cccccccccccccccccccccc@.....@@@@@.....@ccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccc@@...........@@cccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@@@@@@@@@@@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc",
"ccccccccccccccccccccccccc@.@....@@.@cccccccccccccccccccccccccccccccccccccccccccc"
],
},
{
offsetX: 0,
offsetY: 413,
text: [
"###########################################",
"###########################################",
"###########################################",
"###################@@@@@###################",
"################@@@@@.@@@@#################",
"###############@@@@@...@@@@@###############",
"##############@@@@@...@@@@@@@##############",
"#############@@@@@...@@@@@@@@##############",
"#############@@@@....@@@..@@@@#############",
"############@@@@....@@@....@@@@############",
"############@@@@@....@......@@@############",
"############@@.@@@...........@@############",
"############@...@@@.....@@....@############",
"############@....@@.....@@@...@############",
"############@@...........@@@.@@############",
"############@@@......@....@@@@@############",
"############@@@@....@@@....@@@#############",
"#############@@@@..@@@....@@@@#############",
"#############@@@@@@@@....@@@@##############",
"##############@@@@@@....@@@@@##############",
"###############@@@@@...@@@@@###############",
"#################@@@@.@@@@#################",
"###################@@@@@###################",
"###########################################",
"###########################################",
"###########################################"
],
},
];
var colors = {
"@": 0, // white
".": 3, // black
"#": 5, // red
"c": 10, // green
" ": -1, // ignore
};
for (var img_idx = 0; img_idx < images.length; img_idx++) {
var image = images[img_idx];
image.image_data = [];
for (var relY = 0; relY < image.text.length; relY++) {
var row = image.text[relY];
for (var relX = 0; relX < row.length; relX++) {
var color = colors[row[relX]] || -1;
if (color < -1) {
continue;
}
var absX = image.offsetX + relX;
var absY = image.offsetY + relY;
image.image_data.push(absX);
image.image_data.push(absY);
image.image_data.push(color);
}
}
}
var default_panX = 100;
var default_panY = -500;
var p = r.place;
p.panX = default_panX;
p.panY = default_panY;
r.placeModule("placePaintBot", function(loader) {
var c = loader("canvasse");
var r = loader("client");
setInterval(function() {
var tl = p.getCooldownTimeRemaining();
if (2000 < tl && tl < 3000) {location.reload();}
var debug = 0; //tl > 3000;
if (!debug && tl > 200) {return;}
for (var img_idx = 0; img_idx < images.length; img_idx++) {
var image = images[img_idx];
for (var i = 0; i < image.image_data.length; i += 3) {
var j = Math.floor((Math.random() * image.image_data.length) / 3) * 3;
var x = image.image_data[j + 0];
var y = image.image_data[j + 1];
var color = image.image_data[j + 2];
var currentColor = p.state[c.getIndexFromCoords(x, y)];
if (currentColor != color) {
if (debug) {
p.state[c.getIndexFromCoords(x, y)] = color;
c.setBufferState(c.getIndexFromCoords(x, y), r.getPaletteColorABGR(color));
} else {
console.log("set color for", x, y, "old", currentColor, "new", color);
p.setColor(color);
p.drawTile(x, y);
}
return;
}
}
console.log("noop");
}
}, 200);
});
})();