忙しい人のためのCookieClickerチートまとめ

グランマにバレないようにやります。

# 実行方法
- Google Chrome
  1. 右クリックのメニューから`検証`を選択
  2. `Console`のタブを選択
  3. 以下のプログラムをコピー＆ペーストして実行
- Firefox
  1. 右クリックのメニューから`要素の検証`を選択
  2. `コンソール`のタブを選択
  3. 同様


# プログラム
## 少し忙しい人向け
### クッキーの自動クリック(4ミリ秒ごと)
```js:
setInterval(function(){
	Game.ClickCookie();
}, 4); 
```

### ゴールデンクッキーの自動クリック(1秒ごと)
```js:
setInterval(() => {
  Game.shimmers.forEach(function (shimmer) {
    if (shimmer.type == 'golden' && shimmer.wrath == 0) {
      shimmer.pop();
    }
  });
}, 1000);
```

### 虫を自動で倒す
```js:
setInterval(() => {
  for (var i = 0; i < 10; i++) {
    if (Game.wrinklers[i].close === 1) {
      Game.wrinklers[i].hp--;
    }
  }
}, 10000);
```


## 忙しい人向け

### クッキーを高速にクリック
`Game.lastClick = 0` によって4msの制限をなくします。

```js:2022/03/20 改良版
(() => {
  const messageName = 'zero-timeout-message';

  function clickCookieForce() {
    Game.lastClick = 0;
    Game.ClickCookie();
    window.postMessage(messageName, '*');
  }

  window.addEventListener('message', clickCookieForce, true);
  window.postMessage(messageName, '*');
})();
```

動かない場合は以下を試してみてください。
<details>
<summary>改良前のプログラム</summary>

高速に実行するために、以下のプログラムを実行しておきます。
プログラムの説明は[こちら](http://qiita.com/koukun/items/86702dfb3c572b4c5514)へ。


```js:準備用プログラム
var setZeroTimeout = (function(global) {
    var timeouts = [];
    var messageName = "zero-timeout-message";
    
    function handleMessage(event) {
        if (event.source == global && event.data == messageName) {
            if (event.stopPropagation) {
                event.stopPropagation();
            }
            if (timeouts.length) {
                timeouts.shift()();
            }
        }
    }
    
    if (global.postMessage) {
        if (global.addEventListener) {
            global.addEventListener("message", handleMessage, true);
        } else if (global.attachEvent) {
            global.attachEvent("onmessage", handleMessage);
        }
        
        return function (fn) {
            timeouts.push(fn);
            global.postMessage(messageName, "*");
        }
    } else {
        return function () {
            setTimeout(fn, 0);
        }
    }
}(window));
```

```js:プログラム
function clickCookieForce() {
	Game.lastClick = 0;
	Game.ClickCookie();
	setZeroTimeout(clickCookieForce);
}
clickCookieForce();
```

</details>


## もっと忙しい人向け

### ゴールデンクッキーを出現させてクリック
```js
(() => {
  const goldenCookie = new Game.shimmer('golden', {noWrath: true});
  goldenCookie.pop();
})();
```

```js:1秒ごと
setInterval(() => {
  const goldenCookie = new Game.shimmer('golden', {noWrath: true});
  goldenCookie.pop();
}, 1000);
```

### 虫の出現させて倒す
```js
(() => {
  Game.CollectWrinklers();
  for (i = 0; i < Game.wrinklers.length; i++) {
    Game.wrinklers[i].phase = 2;
  }
})();
```

```js:1秒ごと
setInterval(() => {
  Game.CollectWrinklers();
  for (i = 0; i < Game.wrinklers.length; i++) {
    Game.wrinklers[i].phase = 2;
  }
}, 1000);
```


## もっともっと忙しい人向け
### 全アップグレードを取得
```js
Game.UpgradesById.forEach(function(upgrade) {
	if (upgrade.pool !== "toggle") {
    	upgrade.earn();
    }
});
```

### チート以外の全実績の解除
```js
Game.AchievementsById.forEach(function(achievement) {
	if (achievement.name === "Cheated cookies taste awful") {
		return;
	}
    Game.Win(achievement.name)
});
```


### クッキーをInfinityまで焼く
```js:
Game.Earn(Infinity);
```


## その他
### 万が一、グランマにバレたら
```js:
Game.RemoveAchiev("Cheated cookies taste awful");
```