You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doushio/curfew/client.js

65 lines
1.5 KiB

(function () {
function game_over() {
setTimeout(function () {
location.reload(true);
}, 2000);
$DOC.children().remove();
}
function shut_down_everything() {
var $threads = $('section');
if (!$threads.length)
return setTimeout(game_over, 1000);
pick_random($threads, 0.2).remove();
pick_random($('hr, aside, h1, fieldset'), 0.2).remove();
setTimeout(shut_down_everything, 500);
}
function shut_down_something() {
var $posts = $('article');
if (!$posts.length)
return setTimeout(shut_down_everything, 500);
var $posts = pick_random($posts, 0.1);
$posts.each(function () {
var $post = $(this);
var $section = $post.closest('section');
try {
var thread = Threads.get(extract_num($section));
var replies = thread.get('replies');
var num = extract_num($post);
clear_post_links(replies.get(num), replies);
}
catch (e) {}
});
$posts.remove();
if (Math.random() < 0.2)
pick_random($('figure, blockquote, b'), 0.002).remove();
setTimeout(shut_down_something, 500);
}
var tearingDown = false;
dispatcher[TEARDOWN] = function () {
if (tearingDown)
return;
tearingDown = true;
window.onbeforeunload = null;
shut_down_something();
};
function pick_random($items, proportion) {
var len = $items.length;
var origLen = len;
var toDelete = Math.max(1, Math.min(len, Math.ceil(len * proportion)));
var $picked = $();
for (; len > 0 && toDelete > 0; toDelete--) {
var i = Math.floor(Math.random() * len);
$picked = $picked.add($items[i]);
$items.splice(i, 1);
len = $items.length;
}
return $picked;
}
})();