1
0
mirror of https://github.com/Luzifer/automate-cookie-clicker.git synced 2024-09-19 15:23:02 +00:00
automate-cookie-clicker/autocookieclicker.user.js
Knut Ahlers 636a6a381d
Lets manage dragons
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2018-04-20 06:56:02 +02:00

129 lines
3.7 KiB
JavaScript

// ==UserScript==
// @name Automate CookieClicker
// @namespace https://luzifer.io/
// @version 0.14.0
// @description Automate everything!
// @author Knut Ahlers <knut@ahlers.me>
// @source https://github.com/Luzifer/automate-cookie-clicker
// @match http://orteil.dashnet.org/cookieclicker/
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js
// @updateURL https://raw.githubusercontent.com/Luzifer/automate-cookie-clicker/master/autocookieclicker.user.js
// @icon http://orteil.dashnet.org/cookieclicker/img/favicon.ico
// @grant GM_info
// @grant GM_addStyle
// ==/UserScript==
var blockingUpgrades = [
69, // Destructive upgrade: "One mind"
85, // Revoke elders covenant
331, // Golden switch
333, // Milk selector
414, // Background selector
];
var purchaseSteps = 50;
function autoClick() {
$('#bigCookie').click();
}
function executeAutoActions() {
// Click all golden cookies
$('.shimmer').click();
// Harvest sugar lumps
if ((new Date() - Game.lumpT) > Game.lumpRipeAge) {
Game.harvestLumps(1);
}
// Look for upgrades being available
let availableUpgrades = $('.upgrade.enabled').filter(upgradeFilter);
if (availableUpgrades.length > 0) {
debug(availableUpgrades.length + " upgrades available, buying now...");
availableUpgrades.click();
note('Purchased ' + availableUpgrades.length + ' upgrades for you.');
}
// Get the top enabled purchase to be made
let availableProducts = $('.product.unlocked.enabled').filter(productFilter);
if (availableProducts.length > 0 && Game.buyMode == 1) { // buyMode 1 = buy, -1 = sell
let product = $(availableProducts[availableProducts.length - 1]);
debug("Auto-Buying: " + product.find('.title:first').text());
product.click();
note('Purchased ' + product.find('.title:first').text() + ' for you.');
}
// Upgrade dragon if possible
if (Game.dragonLevels[Game.dragonLevel + 1].cost()) {
Game.UpgradeDragon()
}
}
function controlAutoClicker() {
let cps = Game.cookiesPs;
if (cps < 3000 || hasActiveClickBuff()) {
if (window.autoClicker == undefined) {
window.autoClicker = window.setInterval(autoClick, 100);
}
} else {
if (window.autoClicker != undefined) {
window.clearInterval(window.autoClicker);
window.autoClicker = undefined;
}
}
}
function debug(msg) {
console.log("[AutoCookieClicker] " + msg);
}
function getMaxBuy() {
let topPurchaseCount = Game.ObjectsById[Game.ObjectsN - 1].amount;
return Math.max(Math.ceil((topPurchaseCount + 1) / purchaseSteps), 1) * purchaseSteps;
}
function hasActiveClickBuff() {
var hasBuff = false;
for (key in Game.buffs) {
if (Game.buffs[key].multClick) hasBuff = true;
}
return hasBuff;
}
function installHelper() {
// Startup notification
let version = GM_info.script.version;
note('Version ' + version + ' loaded.');
window.controlAutoClicker = window.setInterval(controlAutoClicker, 1000);
// Enable automatic purchasing of upgrades / elements
window.autoPurchase = window.setInterval(executeAutoActions, 500);
}
function note(msg, quick = true) {
// Icon: img/icons.png 0-based indices
Game.Notify("Auto-CookieClicker", msg, [12, 0], quick, true);
}
function productFilter(idx) {
let owned = Game.ObjectsById[parseInt($(this).attr('id').replace(/^product/, ''))].amount;
return owned < getMaxBuy();
}
function upgradeFilter(idx) {
var onClickHandler = $(this).attr('onclick');
if (onClickHandler == null) {
return false;
}
var upgradeID = parseInt(onClickHandler.replace(/^.*\[([0-9]+)\].*$/, "$1"));
return !blockingUpgrades.includes(upgradeID);
}
(function() {
'use strict';
window.setTimeout(installHelper, 1000);
})();