チート・補助ツール

  • 効率的に焼くためのアドバイスが欲しいとき
  • 技術的な仕組みに興味があり、意図的にある動作を引き起こしたい時
  • さっさと終わらせて満足したい場合
  • フリーズ状態からセーブデータを確保したい、又は破損したセーブデータを修復したい時
そんな時には、これらを試してみてはいかがです?
※注:GoogleChrome でコンソール入力し「Uncaught ReferenceError: Game is not defined」とエラーが出た場合、
ゲーム画面をリロードしてから再入力すること。


Cookie Clicker シミュレーター

専用ページで動く Web シミュレーター。プログラムやデータを改竄することはない(= チートではない)ので、気軽に使える。
施設や強化アイテムを任意に設定し、CpS の変化などを調べ、比較することが出来る。
また現在の状況(セーブデータ)を入力すれば、次にどれを購入すれば効率がいいのかを示してくれる。
Riimu's Cookie Clicker Optimizer
有志によって作成された CookieClicker のシミュレータ。v .1.0466 対応。
次に買うべき施設が分かり、更にデータのバックアップ(サーバー管理なので、URL を保存すれば他ブラウザでも対応)もできる。
クリック連打速度を計り、生産量をシミュレートする「Clicking Speed Test」もある。
Cookies Calculator
v. 2.021 対応のシミュレーター。新バージョンでは施設の生産力計算がややこしいので利用しない手はない。
アプグレやオーラの付け替え、秒間クリック数の指定による生産量の変化等、色々なことが比較検討できる。
「Top 5 recommended purchases:」では、次に購入すべきものトップ 5 を表示。
施設計算に特化した「Cookies Building Price Calculator」もある。


コード使用の前知識

多くは JavaScript で作られており、プログラムである以上、悪質なユーザーによる有害スクリプトを実行してしまう可能性がある。
また、本家向けに作られたツールなどは、日本語バージョンでは動作保障されない。
すべては自己責任で! よく解らないものには手を出さない!

ブックマークレットの作り方

ブックマークレットとは、ブラウザのブックマークから起動するコンパクトなプログラムのこと。
URL の代わりに小さな JavaScript プログラムを入れたブックマークを開くだけで、表示中のページに対し処理が実行される。
ブックマークバーなどに登録し、直ぐに実行できるようにしておけば、強力なブラウジング補助になる。
複雑な処理を行わせる場合は、外部サイトにメインスクリプトを用意しておき、ブックマークレットで呼び出し用スクリプトを実行させる。
  1. 各ブラウザでブックマークを作成
  2. 名前は適当で良い(分かりやすい名前で)
  3. URL に JavaScript プログラムを書き込む
  4. 必要に応じてブックマークバーなどに登録しておく
  5. ブックマークをクリックすれば URL に書かれたスクリプトが起動

JavaScript コンソール

本来は JavaScript プログラムのデバッグを行うためのツール。
対話的なインターフェイスで、式を評価したり関数を呼び出したりすることができる。
ゲームシステム内の変数を書き換えることもできる。

ブラウザによって出し方が異なる。
Google Chrome
右上のメニュー → ツール → JavaScript コンソール
またはショートカットキー Control + Shift + J
Firefox
メニュー → Web 開発 → 開発ツールを表示
またはショートカットキー Control + Shift + K
Internet Explorer 10
右上のメニュー → 「F12 開発者ツール」 → 「コンソール」タブ
またはショートカットキー F12 → 「コンソール」タブ
Opera
ショートカットキー Control + Shift + I → 「Console」タブ

コンソール上で式を入力し Enter を押せば、式が評価(Evaluation = 計算)され、評価結果が表示される。

+v.2.01 より、コンソールを開くと作者からのメッセージがランダムでログに表示されるようになった。
v.2.01 より、コンソールを開くと作者からのメッセージがランダムでログに表示されるようになった。つま先様がみてる
  • Oh, hello!
  • hey, how's it hangin
  • About to cheat in some cookies or just checking for bugs?
  • Remember : cheated cookies taste awful!
  • Hey, Orteil here. Cheated cookies taste awful... or do they?
  • おっ、こんちはー!
  • どう、調子バッチグー? ※「調子はどう?」の死語的表現らしいので。
  • なになに、チートするの?それとも只のバグチェック?
  • 忘るべからず:ズルして作ったクッキーは不味い。
  • へーい、Orteil だよー。ズルして作ったクッキーは不味い…それともぉ?


多機能ツール(Third-party Add-ons)

クッキーを効率よく焼くための様々な機能を追加するツール。2019/10/15 現在、開発が続いているのは以下の 2 つ。
どちらも使用すると隠し実績「Third-party」を得る。

※ゲーム更新直後は機能しないことがよくある。慌てず騒がずツールのバージョンアップを待つこと。
未対応バージョンでは「Third-party」実績が解除されないことにも注意。


Cookie Monster

リンクはこちら : Cookie Monster

各種詳細情報を開示するナビゲーター的なツールである。自動化、改竄等のチート機能は無い。
カラフルで視認性に優れ、設定項目は多いがデフォルト状態でも特に問題はない。
ゴールデンクッキー監視機能が特に充実しており、出現予告やチャイム音等で見逃すことは先ずなくなるだろう。

下の文を URL に指定したブックマークレットを作成。V.2.021 対応。
javascript:(function() {
    Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonster.js');
}());
V.1.0466 対応。
javascript:(function() {
   Game.LoadMod('https://cdn.rawgit.com/Aktanusa/CookieMonster/1.0466.1/CookieMonster.js');
}());

主な機能

  • 施設・アップグレードを効率的な購入順に色別マーキング(青・緑>黄>橙>赤・紫 灰色アプグレは効率計算外)
  • CpS 連動に依る、購入可能になるまでの時間予告
  • Lucky(Frenzy)等の GC 効果を最大限に得る為の Bank 表示及び管理
  • 各種タイマー(次の GC 出現、次のトナカイ出現、GC 効果の残り時間)
  • ゴールデンクッキー出現時にチャイム音や画面フラッシュ、消えるまでのカウントダウン表示
  • Wrinkler が蓄えているクッキー量の表示(個別 / 全体)、虫を一掃する「Pop All」ボタン  …など

※画像クリックで拡大
(1)GC & トナカイタイマー : タブにもある。
(2)個々の貯蓄量 : オンマウスで表示。
(3)全虫の貯蓄量 : 一掃すると得られるクッキー数。
(4)GC 消滅カウントダウン
オンマウスによる詳細「追加」情報
(1)Bonus Income : 購入する事で増える全体 CpS。シナジー分も計算の内。
(2)Payback Period : Bonus Income に対し、購入費の元を取れるまでの期間。この数値が低いほど効率が良い。
(3)Time Left : 購入可能になるまでの時間。「Done !」で満了。
(4)Warning : いま購入すると Max Lucky に必要最低限の Bank を割ってしまう警告。
(5)Caution : いま購入すると Max Lucky(Frenzy)に必要最低限の Bank を割ってしまう注意。


Frozen Cookies

オリジナルサイト: http://icehawk78.github.io/FrozenCookies/
オリジナルは2014年頃で更新が止まっており、大量の派生バージョンが作成されている。
2019年秋現在、比較的アップデートされているバージョンがこちら
V2.022動作確認済 : https://github.com/Mtarnuhal/FrozenCookies

各種詳細情報開示+自動化ツール。パラメーターを直接改竄するようなチート機能はない。
自動化は全て ON / OFF 切り替え式で、必要に応じて選択可能。勿論一切使わないのもあり。
Cookie Monster に較べ視覚的にはシンプル。自動購入設定には少々工夫が必要。

下の文を URL に指定したブックマークレットを作成。V.2.021 に対応。Fortune News自動クリック、次の GC 出現、GC 効果の残り時間の描画OFF/テキスト表示のみ/グラフ表示のみ/全て表示
javascript:(
    function () {
        Game.LoadMod('https://mtarnuhal.github.io/FrozenCookies/frozen_cookies.js');
    }()
);

主な機能

  • 施設・アップグレードを効率的な購入順に画面中央情報欄にリスト化
  • CpS 連動に依る、次の目標が購入可能になるまでの時間予告
  • Lucky(Frenzy)等の GC 効果を最大限に得る為の Bank 表示及び管理
  • 各種タイマー(次の GC 出現、GC 効果の残り時間、次の目標購入、連鎖買いの目標(※)購入)
    (※)連鎖買い:施設強化アプグレや保有数関連の実績獲得の為、特定施設のみを目標数まで連続購入する仕組み。
  • 全 Wrinkler が蓄えているクッキー総量の表示
  • CpS と稼いだ HC の推移をグラフ化
  • 大クッキーを任意の秒間数で自動クリック(常時 / ClickFrenzy, DragonFlight 時のみ)
  • ゴールデンクッキー・トナカイ・虫・Fortune News それぞれの自動クリック
  • 施設・アップグレードを効率順に自動購入
  • Ascend 時、自動的に虫一掃・施設全売却・Chocolate egg 購入  …など

※画像クリックで拡大
Autobuy Information : 次の目標の情報が表示される。
高 PrestigeLevel で Ascend 直後、自動連打数を高く設定などの状況下では、計算が追いつかずに反映が遅くなりがち。

左の画像では、Lux sanctorum を連鎖買いの目標とし、Prism を 200 まで連続購入している。
購入リスト : ブラックリスト設定に応じてリスト内容も変化する。
ゲーム開始直後は全アプグレが並ぶのでとにかく長い。高 CpS だと総じて重い。

Infinity は極めて非効率もしくは効率計算外で、通常は自動購入の対象にはならない。
リスト最下(*)が付いているのは、現在の Bank 状況とグランマの状態。
キーボードの「W」を押すと、虫一掃ボタン&得られるクッキー合計のポップアップ表示。

設定

モードの切替は各項目を複数回クリック。
設定 機能
Autobuy ON/OFF 施設、アップグレード等を自動購入する/しない
Auto Ascend ON/OFF 指定した HC 数に達したら自動アセンドする/しない。※但し永久アプグレの購入は不可(後述)。
Auto Bulkbuy x100/x10/OFF 主にアセンド直後に施設をまとめ買いする/しない。セットしていても必要あれば1個買いする
Autoclick GC ON/OFF Golden Cookieが出現したら自動クリックする/しない
Autopop Wrinklers Wrinkler(Grandmapocalypseの虫)の自動撃退をする/しない
OFF: 撃退しない
Efficiently: クッキー取得量最大になるよう撃退
※ イースター、ハロウィンの季節アップグレード自動収集中は設定が無視され即撃退になる
Instantly: 出現したら即撃退
Auto HarvestSL ON/OFF 砂糖が完熟したら自動収穫する/しない。以下 ON + Rigidel について。
(1)Rigidel 未セット且つ Worship 残り 2 以上
完熟 1 時間前にダイヤスロットに Rigidel セット、カーソルを適宜売却して有効化、収穫後スロットから外し元に戻す。
(2)Rigidel セット済
装着スロットの種類に応じ、適切な時間にカーソルを適宜売却して有効化する。
Autoclick Reindeer ON/OFF クリスマスにトナカイが出現したら自動クリックする/しない
Autoclick ON/OFF 大クッキーの自動クリックする/しない。秒何回クリックするか指定可能
Autofrenzy ON/OFF GCによるFrenzy発生中のみ大クッキー自動クリックする/しない。秒何回クリックするか指定可能。AutoclickがONの場合はほぼ意味が無い
Auto Blacklist ON/OFF ブラックリストの目標達成した後に、ブラックリストを無効(No Blacklist)にする/しない。
Speedrun Blacklist, Hardcore Blacklist がその対象となる。Grandmapocalypse Modeでも機能するが後述。




No Blacklist 制限一切なく、効率計算に基づき自動購入する(一部アプグレを除く)。
Speedrun Blacklist Heavenly Chips 系 Upgrades を購入しない。実績「Speed baking」専用。
Hardcore Blacklist Upgrades を購入しない。実績「Hardcore」用でもある。
Grandmapocalypse Mode Grandmapocalypse関連研究アイテムの購入制限。詳細は後述。
No Buildings 施設を購入しない。
Pastemode ON/OFF 最も効率の低いものから購入する/しない。通常はOFFで固定。
GoldenCookies Efficiency GC を 100% / 0% 取得するものとして効率計算をする。GC 自動取得 ON ならば 100% で固定。
FPS 24 ~ 300 に変更可能、デフォルトは 30 で通常は固定。詳しくはこちら
Logging ON/OFF 購入等のイベントログを JavaScript コンソールに表示する/しない。
Tracking ON/OFF CpS 及び稼いだ HC の推移を選択時間毎にグラフ化する/しない。ON で時間選択。
メモリ消費が激しいので、ゲームが重くなるなら OFF にしよう。
Auto-Switch ON/OFF Click frenzy / Dragonflight 発動に合わせてゴールデンスイッチ切替する/しない。
スイッチを常用する場合はOFFで固定。
Auto-Godzamok ON/OFF Click frenzy / Dragonflight に合わせてGodzamok を発動する/しない。発動はカーソル&ファーム全売却(ファームは1軒のみ残す)で行い、すぐに同量を買い戻す。
(1)ON
Click frenzy / Dragonflight中にGodzamok効果が切れたら再発動を行う。
(2)ON (Sane)
Click frenzy / Dragonflight発生直後の1回のみしかGodzamokを発動しない。
(3)ON (REALLY INSANE)
Click frenzy / Dragonflight中はGodzamok中でもひたすら全売却/再購入を繰り返す(倍率アップ)。
※2019年10月下旬からどのモードも"ON(Sane)"と同じ動きをするようになった(多分バグ)
Cursor Limit ON/OFF Godzamok向けにカーソル施設数を制限する/しない。上限カーソル数を指定(デフォルト 500)
Farm Limit ON/OFF Godzamok向けにファーム施設数を制限する/しない。上限ファーム数を指定(デフォルト 500)
Auto Cast ON/OFF MP 最大時に自動詠唱する/しない。ON で呪文選択。
Conjure Baked Goods, Force the Hand of Fate のオプション : トリガーで指定した CpS 倍数時に詠唱。
※ Frenzy 中に詠唱ならトリガーを「7」、最低でも Clot 除外するには「1」。
Auto Fortune ON/OFF Fortune Newsを自動クリックする/しない。
SE Bank ON/OFF Spontaneous Edifice 用のバンクを保持し、400 個めの Fractal engine を自動売却する/しない(Auto Cast で 同呪文を選択している場合)。
Wizard Tower Cap ON/OFF MaxMP が指定した値に達したら、これを維持する為に Wizard Tower の購入を止める/止めない。
※デフォルトは 100。MaxMP が 100 を超えると詠唱効率が低下する為。
Harvesting Bank 畑の作物(Bakeberry など)収穫用のバンクを保持する/しない。ON で品種を選択。
Harvesting Scenario Harvesting Bank に適用する CpS 倍率(ブースト無し, Frenzy, Building special, Frenzy + BS)。
※ BS は所有数が最も多い施設を参照。オプションで重ねがけする数の指定。
Default Season 季節関連アプグレ全て購入後、選択した季節にアセンドするまで固定(要 Season switcher)。
No graphic 次の GC 出現、GC 効果の残り時間グラフ・テキストの表示切り替え。(V2.019対応版まで非表示に出来なかった。)

留意点

(1)ドラコン育成は手動
サンタ育成は自動化に対応しているが、ドラゴンは購入・育成・オーラ装着全て手動で行うこと。
(2)自動アセンド
永久アプグレ画面をすっ飛ばすので、そのまんま隠しレガシー対策には使えない。
少しずつアセンドして目標値を達成するとか。実績目当ての連続アセンドにはとても有用。
(3)自動 Godzamok
追加売却分の倍率も加算されるので、まとめ買い 100 に設定しておくとお得。
REALY INSANEモードではひたすら全売却、買い戻しをするのでCursor/Farm Limit で施設数を抑えておかないと売買差額の損失が大きくなる。
V.2.016 対応版では Farm が餌に追加。ミニゲーム保護に一つだけ残して全売りする。
(4)自動購入対象外アイテム
Shimmering veil, Sugar Frenzy, Chocolate Eggの3つはプログラム内で明示的に自動購入対象外に設定されている。他にも効率計算の結果として自動購入対象になり得ないアイテムが幾つか存在する(例:Elder Covenant)。『あれ?自動購入しないな』と思ったらfrozen cookies画面下方にあるInternal Informationの購入候補リストを見る事。Efficiencyが"Infinity"になっているアイテムが自動購入されることは基本的にない。
(5)Blacklist の Grandmapocalypse Mode について
(a) "Grandmapocalypse Mode"ではババアポカリプス関連アイテムの幾つかがブラックリスト入りし自動購入から外れる。初期の研究アイテムは自動購入するがOne mindが出現したところで研究が中断、以降を進めるにはその都度研究アイテムの手動購入が必要になる。最後まで研究を進めるとElder Pledgeもブラックリスト入りしているため自動購入せず結果的にAngered(怒り)状態が維持される。
"Auto Blacklist ON"にしていると季節アップグレード収集完了を条件に自動で"No Blacklist"に切り替わる。
(b) "No Blacklist"等他のモードではGrandma能力向上効果取得のために研究アイテムを自動購入していく。最後まで研究が進んだ後は各怒りレベルの効率計算結果(frozen cookies画面の最下に表示)に従って最も効率の良い怒りレベルにしようとする。基本的に高連射で"Autoclick ON"だとAppeased(なだめ)状態が高効率なのでElder Pledgeを買い続け、"Autoclick OFF"ではAngered状態が高効率なのでElder Pledgeを買わないようになる(なおSacrificial rolling pinsは出現しても自動購入しないので必要なら手動購入)。
(c) 以上より高連射"Autoclick ON"でAngered状態を維持したいなら"Grandmapocalypse Mode"にしてElder Pledge購入を止める必要がある。しかし最初から設定しっ放しでは研究アイテムが自動購入されずそもそもAngered状態にならないため、何らかの手動介入が必須となる。
(6)季節アップグレード自動収集
季節アップグレードはSeason Switcherを自動使用して季節を順番で巡っていき全て収集しようとする。季節を巡る順番やタイミングは未入手アップグレードの効果と入手コストから効率計算された上で決定される。現季節のアップグレード全収集が優先されるので特定季節の収集を優先させたければ季節を手動スイッチすれば良い。
ハロウィン(イースター)はWrinker撃退がアップグレード出現条件(のひとつ)であるが、前項の通り自動ではAngered維持状態にならない事があり、そうなるとアップグレード入手不可能(困難)なまま収集が止まってしまう。その際は手動介入を行ってAngered維持状態にする。収集完了後にAppeasedにしたければ"Auto Blacklist ON"にしておくとよい(Angered継続なら"Auto Blacklist OFF")。
季節アップグレード自動収集は"Deafult Season"設定より優先されるため『"Default Season"設定してるのに勝手に季節が切り替わっちゃう』と見える事がある。


農園補助ツール Cookie Garden Helper


農園での品種改良や育成を半自動化して補助するツール。
基本的な使い方としては、まず手動で種播きを行って作付け状態を記録する。
その後はツールが作付け状態をできるだけ維持しながら育成や刈り取り、種の播き直し、新品種の種子収集を実行してくれる。

下の文ををURLにしたブックマークレットを作成
javascript: (function () {
    Game.LoadMod('https://rawgit.com/yannprada/cookie-garden-helper/master/cookie-garden-helper.js');
}());

農園施設画像下部 Mute ボタン横に[Cookie Garden Helper]ボタンが出現するのでクリックすればコントロールパネルが開く。
Auto-harvest ON/OFF: 刈り取り機能全体のON/OFF
農園の作物がある各マスに対して、以下のONになっている項目を上から順に判断、刈り取り処理を実行する
Avoid immortals ON/OFF 不死品種なら何もせず処理は終了
young:Remove weeds ON/OFF 結実前の雑草なら刈り取る
young:Clean Garden ON/OFF 作付け記録(後述)側が空きマスの場合、結実前の種子収集済み品種なら刈り取る
作付け記録側が空きマスでない場合、記録と異なる結実前品種であれば刈り取る
mature:New seeds ON/OFF 結実済みで、種子未収集の新品種なら刈り取る
mature:Check CpS mult ON/OFF 結実済みで、現在のCpS倍率が指定値以上なら刈り取る
dying:Check CpS mult ON/OFF 枯死間際で、現在のCpS倍率が指定値以上なら刈り取る
dying:Dying plants ON/OFF 枯死間際で、最後のtick5秒前なら刈り取る
Auto-plant ON/OFF: 種播き機能のON/OFF
農園の空きマスに対して、作付け記録に合わせて種を播く。空いていないマスには何もしない。Auto-harvestの後に実行される
Check CpS mult ON/OFF 現在のCpS倍率が指定値以下の場合のみ種を播く
save plot 現在の農園の状態を作付け記録としてセーブする。
"plot saved"の文字上にカーソルを置くと作付け記録が確認できる
Manual tools: 全播き機能
播きたい種をセレクトした状態で"Plant selected seed"をクリックすると現在の農園の空きマス全てに種を播く。
終了後に種のセレクト解除を忘れないこと

例) 交配して新品種の種を得る

+展開で手順を表示
  1. Auto-harvest OFF, Auto-plant OFF
  2. 手動で種播きして交配用の配置に作付けする
  3. "save plot"で作付け状態記録
  4. 設定は以下のようにする
    ・Avoid immortals OFF
    ・young:Remove weeds ON
    ・young:Clean Garden ON
    ・mature:New seeds ON
    ・mature:Check CpS mult OFF
    ・dying:Check CpS mult OFF (ONにして適当なCpS倍率で刈っても可)
    ・dying:Dying plants ON
    ・Auto-plant: Check CpS mult ON (Maxi CpSは1を標準に安い時を狙うなら小さい値に、高くても早く播き直したいなら大きい値に)
  5. Auto-harvest ON, Auto-plant ONにして放置、新品種の種が穫れたか時々チェック

例) Elderwort収穫時のドロップクッキー取得

+展開で手順を表示
  1. Auto-harvest OFF, Auto-plant OFF
  2. 手動で農園全面にElderwortの種を播く。Manual toolsを使うと楽。
  3. "save plot"で作付け状態記録
  4. 設定は以下のようにする
    ・Avoid immortals OFF
    ・young:Remove weeds ON (OFFでも可)
    ・young:Clean Garden ON (OFFでも可)
    ・mature:New seeds OFF (ONでも可)
    ・mature:Check CpS mult ON (Mini CpSは0.1等小さい値をセット)
    ・dying:Check CpS mult OFF (ONでも可)
    ・dying:Dying plants ON (一応ON)
    ・Auto-plant: Check CpS mult ON (Maxi CpSは1を標準に安い時を狙うなら小さい値に、高くても早く播き直したいなら大きい値に)
  5. Auto-harvest ON, Auto-plant ONにして放置、クッキーが入手できたか時々チェック

例) Duketaterを高倍率CpS時に収穫

+展開で手順を表示
  1. Auto-harvest OFF, Auto-plant OFF
  2. 手動で農園全面にDuketaterの種を播く。Manual toolsを使うと楽。
  3. "save plot"で作付け状態記録
  4. 設定は以下のようにする
    ・Avoid immortals OFF (ONでも可)
    ・young:Remove weeds ON (OFFでも可)
    ・young:Clean Garden ON (OFFでも可)
    ・mature:New seeds OFF (ONでも可)
    ・mature:Check CpS mult ON (Mini CpSは収穫したいCpS倍率をセット)
    ・dying:Check CpS mult ON (Mini CpSは枯死するよりは収穫した方が良い数値に。7とか)
    ・dying:Dying plants ON (最低限枯死直前には収穫)
    ・Auto-plant: Check CpS mult ON (Maxi CpSは1を標準に安い時を狙うなら小さい値に、高くても早く播き直したいなら大きい値に)
  5. Auto-harvest ON, Auto-plant ONにして放置



任意のセーブデータを作成する

セーブデータを失ったときなどに。
Cookies Save Editor
V. 2.021 対応。統計欄に記載されていない隠しデータまで見られます。Sugarlump 変種の早期確認に便利。



開発者モードを開く(チートをせずにチート実績を得る)

ベーカリーの名前を「(名前+半角スペース) saysopensesame 」と入れる。  例: BBA saysopensesame
すると、ツール用パネルが開くと同時に「Cheated cookies taste awful」の実績を得る。

コンソールからのパラメーター改竄をせず、バニラのままでチート実績が取れてしまう。
※画像クリックで拡大



JavaScript で直接いじる

このゲームは JavaScript で記述されており、プログラミングの知識があれば比較的簡単に色々いじれる。
JavaScript コンソールを開き、変数を書き換えたり関数を実行することで、思い通りの状態を作り出せる。

プログラムのソースコード

メインのソースコードはこれ。
http://orteil.dashnet.org/cookieclicker/main.js

作者コメント(HTML ソースより)
<!--
Code and graphics copyright Orteil, 2013-2016
Feel free to alter this code to your liking, but please do not re-host it, do not profit from it and do not present it as your own.
-->
【 訳 】
このゲームのコードは、あなたの好きなように変えても構いません。
ただし、そのプログラムを外部サイトで実行できるようにしたり、
そのプログラムで利益を得たり(商業利用したり)、
あたかもあなたが作ったような表現をするのはやめてください。




JavaScript コンソールで実行できる関数


1. デバッグ関連

開発者モード

+saysopensesame をコンソールから実行。
saysopensesame をコンソールから実行。
Game.OpenSesame();
勿論、隠し実績「Cheated cookies taste awful」がつくので注意。やるならバックアップを取ってから。

デバッグ用アップグレード解禁

+チート無しでは手に入らないデバッグ用アップグレードを全て手に入れる。
チート無しでは手に入らないデバッグ用アップグレードを全て手に入れる。
Game.GetAllDebugs();
同時に通常・プレステージアップグレードも無効状態で全て入手する。有効化するには各アプグレアイコンをクリック。

一瞬で最強にする(Ruin the fun)

+公式に一瞬でゲーム状態を最強にする関数が用意されている。
公式に一瞬でゲーム状態を最強にする関数が用意されている。
実行すると、全アップグレード(デバッグアイテム含む)・全実績(隠し含む)・1 nonillion クッキー・999,999 PL & HC を得る。
Game.RuinTheFun();
関数名どおり全ての楽しみが一瞬でぶち壊しになる。おめでとう。これで君は解放された。




2. クッキー関連

手持ちのクッキーを増やす

+クッキーの所持数(Cookies in bank)は Game.cookies という変数で管理されており、これをいじれば好きに変更可能。
クッキーの所持数(Cookies in bank)は Game.cookies という変数で管理されており、これをいじれば好きに変更可能。
Game.cookies = 【クッキーの所持数】 ;
例:Game.cookies = 999999999;
ここで設定した数が累積生産数(Cookies baked all time)を超え、値の関係に不整合が生じると、
隠し実績「Cheated cookies taste awful」を得る。

絶対量を指定するのではなく、相対的に増加 / 減少させたい場合。
Game.cookies += 【増やすクッキーの数】 ;
Game.cookies -= 【減らすクッキーの数】 ;

Earn 関数を使うと、累積生産数のカウンターも増やしてくれるので「Cheated cookies taste awful」を取得せずに済む。
Game.Earn( 【増やすクッキーの数】 );

CpS を指定した数にする

+下の関数の [   ] の中に任意の CpS の数値を入れる。但し、施設やアプグレを購入すると、本来の CpS に自動修正されてしまう。
下の関数の [   ] の中に任意の CpS の数値を入れる。但し、施設やアプグレを購入すると、本来の CpS に自動修正されてしまう。
Game.cookiesPs = [ 【CpS】 ];

大クッキーの自動クリック

※注:ゲーム画面がアクティブでないと、大クッキーの自動クリックは無効。
 ブラウザ最小化や、別タブをメインにしていると機能しない。小窓でいいので常にゲームを開いておくこと。

+クッキーを自動でクリックするには、次の関数を呼び出す。
クッキーを自動でクリックするには、次の関数を呼び出す。
Game.ClickCookie();
setTimeout 関数などを用いれば定期的に自動クリックすることが可能になる。
setInterval(function(){ Game.ClickCookie(); }, 1000);
これは 1000ms = 1 秒間隔で 1 回自動クリックするコード。「1000」を任意の数値に書き換え、クリック間隔を変更可能。
但し、その最低値は「4」である。つまり、秒間 250 回以上のクリックは無効。

説明すると、この関数のソースコードは以下のようになっている。
Game.ClickCookie=function()
{
	if (new Date().getTime()-Game.lastClick<1000/250)
	{
	}
	else
	{
		if (new Date().getTime()-Game.lastClick<1000/15)
		{
			Game.autoclickerDetected+=Game.fps;
			if (Game.autoclickerDetected>=Game.fps*5) Game.Win('Uncanny clicker');
		}
		Game.Earn(Game.computedMouseCps);
		Game.handmadeCookies+=Game.computedMouseCps;
		if (Game.prefs.particles) Game.cookieParticleAdd();
		if (Game.prefs.numbers) Game.cookieNumberAdd('+'+Beautify(Game.computedMouseCps,1));
		Game.cookieClicks++;
	}
	Game.lastClick=new Date().getTime();
}

if (new Date().getTime()-Game.lastClick<1000/250) の条件判定により、
前回のクリックから 1000/250 = 4 ms 未満の場合は処理が行われない。
よって、理論上可能なのは最大秒間 250 クリックである。

また
		if (new Date().getTime()-Game.lastClick<1000/15)
		{
			Game.autoclickerDetected+=Game.fps;
			if (Game.autoclickerDetected>=Game.fps*5) Game.Win('Uncanny clicker');
		}
この部分では実績 'Uncanny clicker' のための、クリック速度の判定を行っている。
ソースコードによれば、
  • 1000/15 = 66.6 ms 未満の間隔でクッキーがクリックされたときのみ「素早いクリック」と判定
  • 「素早いクリック」の場合にはカウンタ Game.autoclickerDetected に fps (デフォルト 30) を加算
  • カウンタが fps * 5 (デフォルト 150) 以上になれば実績 'Uncanny clicker' を獲得
  • 毎フレーム呼び出される Game.Logic 関数により Game.autoclickerDetected はデクリメントされる (下限は 0)
となっている。

「素早いクリック」の条件のため、実績解除の為には長くとも 66.6 ms 以内の間隔で連打しなければならない。
(1 秒間に 15 回のペース)
このペースで 7 回連打すれば(注: 植木算)
  • 66.6 ms * 6 = 400 ms
  • 400 ms の間に Game.autoclickerDetected への加算 30 * 6 = 180
  • 400 ms の間に Game.Logic() による Game.autoclickerDetected の減算 -13
  • 180 - 13 >= fps * 5 となり条件を満たす
よって、400 ms に 7 回以上クリックが実績 'Uncanny clicker' 解除の目安である。

自動クリック限界突破型

+大クッキーを理論的には秒間 1000 クリック(多重発動可)。ブックマークレット形式。
大クッキーを理論的には秒間 1000 クリック(多重発動可)。ブックマークレット形式。
javascript:(function(){
  setInterval(function() {Game.ClickCookie(); Game.lastClick=0; }, 1000/1000);
})();

CpC 強化効果発動中のみ自動クリック

+V. 2.0042 対応、ブックマークレット形式。Click frenzy / Dragonflight / Cursed finger / Elder frenzy の間のみ、秒間 6.67 クリック。
V. 2.0042 対応、ブックマークレット形式。Click frenzy / Dragonflight / Cursed finger / Elder frenzy の間のみ、秒間 6.67 クリック。
秒間クリック数を変更するには、クリック間隔「var clickInterval = 150;」の数値を書き換える。※ コメントを参考に修正しました。
javascript: (function() {
  var clickInterval = 150;
  var autoClicker = setInterval(function() {
    var hasClickFrenzy = (Game.hasBuff('Click frenzy'));
    var hasDragonFlight = (Game.hasBuff('Dragonflight'));
    var hasCursedFinger = (Game.hasBuff('Cursed finger'));
    var hasElderFrenzy = (Game.hasBuff('Elder frenzy'));
    var hasClickBuff = hasClickFrenzy || hasDragonFlight || hasCursedFinger || hasElderFrenzy;
    if (hasClickBuff) {
      Game.ClickCookie();
    }
  }, clickInterval);
  var clicksPerSecond = 1000 / clickInterval;
  var message = "Cookie will be auto-clicked during click buffs. Clicks per second: ";
  message += clicksPerSecond.toFixed(2);
  console.log(message);
}());



3. ゴールデンクッキー関連

※注:V. 2.002 で GC の処理方法が変わり、従来のコードは無効になった。
 GC とトナカイが一括制御される仕様に変更。 V. 1.0466 以前に対応の旧式コードは、このページ最下部。

ゴールデンクッキー&トナカイ自動クリック

+V. 2.002 対応、ブックマークレット形式。
V. 2.002 対応、ブックマークレット形式。
javascript:(function() {
  setInterval(function(){for (var i in Game.shimmers) { Game.shimmers[i].pop(); }}, 500);
}());

ゴールデンクッキー or トナカイ即出現

+従来と違い、V. 2.002 では隠し実績「Cheated cookies taste awful」が付かない。
従来と違い、V. 2.002 では隠し実績「Cheated cookies taste awful」が付かない。
「Types.golden」を「Types.reindeer」に変更すれば、トナカイ版になる。
Game.shimmerTypes.golden.time = Game.shimmerTypes.golden.maxTime;

ゴールデンクッキー or トナカイ自動発生(20 秒周期)・自動クリック

+V. 2.002 対応、ブックマークレット形式。周期を変更するには「20000」の数値を書き換える。
V. 2.002 対応、ブックマークレット形式。周期を変更するには「20000」の数値を書き換える。
こちらも「Types.golden」を「Types.reindeer」に変更すれば、トナカイ版になる。
javascript:(function(){
  setInterval(function() {
    Game.shimmerTypes.golden.time = Game.shimmerTypes.golden.maxTime;
    /*Game.shimmers.forEach(function(shimmer){shimmer.wrath = 0});*/
    Game.shimmers.forEach(function(shimmer){shimmer.pop()});
  }, 20000);
})()

CpC 強化効果発動でゴールデンスイッチ自動 ON / OFF

+V. 2.002 対応、ブックマークレット形式。Click frenzy / Dragonflight 発動中のみ、ゴールデンスイッチ ON(Tips)。
V. 2.002 対応、ブックマークレット形式。Click frenzy / Dragonflight 発動中のみ、ゴールデンスイッチ ON(Tips)。
※ 7 倍など CpS 効果が継続中でもスイッチが OFF になる仕様。連打力が高いなら、早めに切って GC 回転率を上げる方が効率的。
javascript: (function() {
  setInterval(function() {
    function isBuffStarting(buffName, buffBaseTime) {
      var alertTime = buffBaseTime - 1;
      alertTime = alertTime * Game.fps;
      return (Game.hasBuff(buffName) >= alertTime);
    }
    var isClickBuffStarting = (isBuffStarting('Dragonflight', 22) || isBuffStarting('Click frenzy', 29));
    var hasClickBuff = ((Game.hasBuff('Dragonflight') > 0) || (Game.hasBuff('Click frenzy') > 0));
    if (isClickBuffStarting) {
      if (!Game.Upgrades['Golden switch [off]'].bought) {
        Game.Upgrades['Golden switch [off]'].buy();
      }
    } else if (!hasClickBuff) {
      if (!Game.Upgrades['Golden switch [on]'].bought) {
        Game.Upgrades['Golden switch [on]'].buy();
      }
    } else {}
  }, 1000);
  var message = "The golden switch will be toggled during click frenzies.";
  console.log(message);
}());

Cookie storm を常に抽選対象から外す

+重くてプレイに支障が出る・見た目が生理的に受け付けない人向け。ブックマークレット形式。
重くてプレイに支障が出る・見た目が生理的に受け付けない人向け。ブックマークレット形式。
javascript:(function () {
   window.choose = function (arr) {
       if (arr.includes("cookie storm"))
           arr = arr.filter(function (choice) {
               return choice != "cookie storm"
           });
       return arr[Math.random() * arr.length | 0]
   }
}());

任意 Golden cookie 召喚

+任意の効果を発動する。Building special で選択される施設の選択が今後の課題。
任意の効果を発動する。Building special で選択される施設の選択が今後の課題。
var newShimmer=new Game.shimmer("golden");
newShimmer.force=kind;
newShimmer.pop();
上記の変数 kind に下記のキーワードを代入。blood frenzy は Elder frenzyを 示す。
====== キーワード一覧 =====
"cookie storm"
"cookie storm drop"
"dragonflight"
"click frenzy"
"cursed finger"
"clot"
"blood frenzy"
"ruin cookies"
"multiply cookies"
"everything must go"
"dragon harvest"
"frenzy"
"building special"
"free sugar lump"
"blab"
"chain cookie"

Cookie storm 召喚

+Cookie storm を発動し、出現した Golden cookie を自動回収する。回収できる量はPCの処理能力に依存。イースターエッグを一瞬でコンプリート可能。
Cookie storm を発動し、出現した Golden cookie を自動回収する。回収できる量はPCの処理能力に依存。イースターエッグを一瞬でコンプリート可能。
 var newShimmer=new Game.shimmer("golden");
 newShimmer.force="cookie storm";
 newShimmer.pop();
 
 var count_CSD_click=0;
 new Promise(function(){
 var click_CS_drop=setInterval(function(){
   for (var i in Game.shimmers){
     Game.shimmers[i].pop();
     count_CSD_click++;
   };
   console.log("Clicking CS_drops. clicked=",count_CSD_click);
   if(Game.hasBuff("Cookie storm")==0){
     clearInterval(click_CS_drop);
     console.log("CS is finished. Total clicked CS_drops = ",count_CSD_click);
     Game.Notify("Cookie Storm is finished.","Total clicked CS_drops = "+count_CSD_click)
   };
 },250);
})

季節にかかわらずデフォルトの GC / RC のグラフィックを使用する

+見やすさを重視したい場合に。ブックマークレット形式。
見やすさを重視したい場合に。ブックマークレット形式。
 javascript:(function(){
   Game.shimmer.prototype.init=function(){
     Game.shimmerTypes[this.type].initFunc(this);
     var bgPic=this.wrath?'img/wrathCookie.png':'img/goldCookie.png';
     this.l.style.backgroundImage='url('+bgPic+')';
   }
 })();



4. ババアポカリプス関連

Elder Pledge自動購入

+ブックマークレット形式。言うまでもないが、虫養殖中に使用すると爆散するので注意。
ブックマークレット形式。言うまでもないが、虫養殖中に使用すると爆散するので注意。
javascript:(function(){
  setInterval(function() {
    if (Game.UpgradesInStore.indexOf(Game.Upgrades["Elder Pledge"]) != -1) {
     Game.Upgrades["Elder Pledge"].buy();
    }
  }, 500);
})()

虫の自動クリック

+ブックマークレット形式。
ブックマークレット形式。
javascript: (function(){
  setInterval(function() { Game.wrinklers.forEach(function(me) { if (me.close==1) me.hp = 0}); }, 500);
})();

食事中の虫を全て Shiny にする

+一匹でも OK。どうしても例の実績が取れない時などに。
一匹でも OK。どうしても例の実績が取れない時などに。
for (i = 0; i < Game.wrinklers.length; i++) { Game.wrinklers[i].type = 1; }

虫が一度に 12 匹出現

+「Elder spice」が無くても 12 匹出る(配置は 10 匹分だが、余りの 2 匹は重なって収まっている)。
「Elder spice」が無くても 12 匹出る(配置は 10 匹分だが、余りの 2 匹は重なって収まっている)。
通常の虫。既に食事中の虫がいる場合、空いている場所のみに新たに出現。
for (i = 0; i < Game.wrinklers.length; i++) { Game.wrinklers[i].phase = 1; }
Shiny。既に食事中の虫がいる場合、そのままの状態で Shiny に変化する。
for (i = 0; i < Game.wrinklers.length; i++) { Game.wrinklers[i].phase = Game.wrinklers[i].type = 1; }

虫 12 匹の自動発生(20 秒周期)・自動クリック

+ブックマークレット形式。こちらも「Elder spice」が無くても 12 匹出る。周期を変更するには「20000」の数値を書き換える。
ブックマークレット形式。こちらも「Elder spice」が無くても 12 匹出る。周期を変更するには「20000」の数値を書き換える。
通常の虫。
javascript:(function(){
  window.setInterval(function(){
  var wrinklers=Game.wrinklers;for(var i=0;i<12;i++){
    if(wrinklers[i].sucked<=0.5){wrinklers[i].phase=1;wrinklers[i].hp=3;}
    else{wrinklers[i].sucked=1;wrinklers[i].hp=0;}
  }
  },20000);
})();
Shiny。
javascript:(function(){
  window.setInterval(function(){
  var wrinklers=Game.wrinklers;for(var i=0;i<12;i++){
    if(wrinklers[i].sucked<=0.5){wrinklers[i].phase=1;wrinklers[i].type=1;}
    else{wrinklers[i].sucked=1;wrinklers[i].hp=0;}
  }
  },20000);
})();
※「sucked」が虫のクッキー貯めこみ係数なので「.sucked=1」のところを大きくすると…

虫 12 匹連続瞬殺(1 秒周期)

+虫の出現グラフィックとポップアップ通知を省略することで、高速連続瞬殺が可能に。
虫の出現グラフィックとポップアップ通知を省略することで、高速連続瞬殺が可能に。
一見何も起こっていないようだが、Stats - Special - Wrinklers popped でちゃんとカウントされている。
統計欄の数値更新は 5 秒置きなので、60 匹ずつ数が上がっていくのが確認できる。
var noWrinkler = setInterval(function() {
  Game.CollectWrinklers(); for(i = 0; i < Game.wrinklers.length; i++) { Game.wrinklers[i].phase = 2; }
}, 1000);
止める時は以下のコード。
clearInterval(noWrinkler);

虫が蓄えている量を表示

+オンマウスで個別リアルタイム表示。ブックマークレット形式。
オンマウスで個別リアルタイム表示。ブックマークレット形式。
javascript:(function(s){
  if(typeof Game.onSectionLeft=='undefined'){
    s=l('sectionLeft');
    Game.onSectionLeft=0;
    AddEvent(s,'mouseover',function(e){Game.onSectionLeft=1});
    AddEvent(s,'mouseout',function(e){Game.onSectionLeft=0});
    Game.customLogic.push(function(w,i,t){
      w=Game.wrinklers;
      t=Game.tooltip;
      if(Game.onSectionLeft)for(i in w){
        if(w[i].phase&&w[i].selected)return t.draw('','<b>'+Beautify(w[i].sucked)+'</b> sucked','wrinklers')
      }if(t.on&&t.origin=='wrinklers')t.hide()
    })
  }
})() 



5. 施設関連

購入費の変更

+購入費の変更。
購入費の変更。
全施設が初期価格で据え置きになる。
Game.priceIncrease = 1; Game.ObjectsById.forEach(function (e) { e.refresh(); }); Game.storeToRebuild = 1;
全施設が無料になる。
Game.ObjectsById.forEach(function (e) { e.basePrice = 0; e.refresh(); }); Game.storeToRebuild = 1;

施設50個まとめ買い追加 (+ 購入・売却切り替えショートカット追加)

+施設50個まとめ買いできるボタンとショートカット、さらに購入・売却切り替えできるショートカットを追加。ブックマークレット形式。
施設50個まとめ買いできるボタンとショートカット、さらに購入・売却切り替えできるショートカットを追加。ブックマークレット形式。
購入モード時のみ、ALLボタンが50ボタンになり、それを選択すると50個まとめ買いできるように。
Shift+Ctrl同時押ししながら施設クリックでも同様のことが可能。(50個購入または全売却)
また、Altキーで購入・売却切り替えも追加。押している間は売却、離すと購入が選択される。
(Firefoxの場合、Alt単独ではうまく動作しないようなので、Shift or Ctrlと合わせて使うのを推奨)
javascript:AddEvent(window,'keyup',function(e){
  if (e.keyCode==18) {e.preventDefault();}
});
(function(){
  Game.sellBulkShortcut=0;
  var funcLogic=Game.Logic;
  Game.Logic=function() {
    funcLogic();
    if (!Game.OnAscend && Game.AscendTimer==0) {
      if (!Game.promptOn) {
        /*press shift & ctrl to bulk-buy 50*/
        if ((Game.keys[16] && Game.keys[17]) && Game.buyBulkShortcut!=2) {
          if (!Game.buyBulkShortcut) Game.buyBulkOld=Game.buyBulk;
          Game.buyBulk=-1;
          Game.buyBulkShortcut=2;
          Game.storeBulkButton(-1);
        }
        if ((Game.keys[16] || Game.keys[17]) && !(Game.keys[16] && Game.keys[17]) && Game.buyBulkShortcut==2) {
          if (Game.keys[16]) Game.buyBulk=100;
          if (Game.keys[17]) Game.buyBulk=10;
          Game.buyBulkShortcut=1;
          Game.storeBulkButton(-1);
        }
        /*press alt to switch to sell*/
        if (Game.keys[18] && !Game.sellBulkShortcut) {
          Game.buyMode=-1;
          Game.sellBulkShortcut=1;
          Game.storeBulkButton(-1);
        }
      }
      if (!Game.keys[18] && Game.sellBulkShortcut) {
        Game.buyMode=1;
        Game.sellBulkShortcut=0;
        Game.storeBulkButton(-1);
      }
    }
  };
  l('storeBulkMax').onclick=function onclick(event) {Game.storeBulkButton(50);};
  var textStoreBulkMax=l('storeBulkMax').innerHTML;
  var funcStoreBulkButton=Game.storeBulkButton;
  Game.storeBulkButton=function(id) {
    if (id==0) Game.buyMode=1;
    else if (id==1) Game.buyMode=-1;
    if (id==5 || (Game.buyBulk==-1 || Game.buyBulk==50)) Game.buyBulk=Game.buyMode==1?50:-1;
    funcStoreBulkButton(id);
    if (Game.buyBulk==-1 || Game.buyBulk==50) l('storeBulkMax').className='storePreButton storeBulkAmount selected'; else l('storeBulkMax').className='storePreButton storeBulkAmount';
    if (Game.buyMode==1) {
      l('storeBulkMax').style.visibility='visible';
      l('storeBulkMax').innerHTML='50';
    } else {
      l('storeBulkMax').innerHTML=textStoreBulkMax;
    }
  };
  Game.storeBulkButton(-1);
  for (var i in Game.Objects) {
    Game.Objects[i].rebuild=(function() {
      var me=Game.Objects[i];
      var func=me.rebuild;
      return function() {
        func.call(me);
        l('productPrice'+me.id).style.color=Game.buyMode==1?'#6f6':'#f33';
        l('productPriceMult'+me.id).innerHTML=Game.buyBulk!=1?(Game.buyBulk>1?'x'+Game.buyBulk:textStoreBulkMax)+' ':'';
      };
    })();
  }
})();



6. アップグレード関連

アップグレード解禁

+任意の通常アップグレードをストアに入荷。
任意の通常アップグレードをストアに入荷。
★ にアイテム名を代入。勿論、購入には相応のクッキーが必要。
Game.Unlock('★');
または、以下の ★ にアイテムの「ID」を代入。
Game.Unlock(Game.UpgradesById[★].name);
「ID」を調べるには、以下の ☆ にアイテム名を代入し実行。コンソールに表示されるので確認。
Game.Upgrades['☆'];
ストアで購入可能な、全ての通常アップグレードを入荷する。
Game.UpgradesById.forEach(function(e) { Game.Unlock(e.name); });

アップグレード無料入手

+任意のアップグレードを解禁かつ購入済みにする。
任意のアップグレードを解禁かつ購入済みにする。
★ にアイテムの「ID」を代入。ストアでは買えないプレステージアップグレード・デバッグアップグレードが入手可能。
※アイテム名を代入する  Game.Upgrades[★].earn() は無効の模様。
Game.UpgradesById[★].earn()
全アップグレードを解禁かつ購入済みにする。
Game.UpgradesById.forEach(function(e) { if (e.bought === 0) e.earn(); });

Chocolate egg を再購入

+チョコ卵が購入済みならロックを解除し、再度購入する。ブックマークレット形式。
チョコ卵が購入済みならロックを解除し、再度購入する。ブックマークレット形式。
javascript: (function() {
    if (Game.UpgradesById[227].unlocked == 1) {
        Game.UpgradesById[227].bought = 0;
        Game.UpgradesById[227].buy();
        var obj = Game.UpgradesById[227].bought;
        console.log(JSON.stringify(obj));
    }
})();



7. 実績関連

実績解除

+任意の実績を解除する。
任意の実績を解除する。
★ に実績名を代入。
Game.Win('★');
または、以下の ★ に実績の「ID」を代入。
Game.Win(Game.AchievementsById[★].name);
「ID」を調べるには、以下の ☆ に実績名を代入し実行。コンソールに表示されるので確認。
Game.Achievements['☆'];
全実績を解除する(隠し・ダンジョン実績含む)。
Game.AchievementsById.forEach(function(e) { Game.Win(e.name); });

実績の取り消し

+任意の解除済み実績を取り消す。
任意の解除済み実績を取り消す。
以下の ★ に実績名を代入。
Game.RemoveAchiev("★");
または、以下の ★ に実績の「ID」を代入。 ※実績名を代入する  Game.Achievements[★].won = 0; は無効の模様。
Game.AchievementsById[★].won = 0;
全実績を取り消す(隠し・ダンジョン実績含む)。
Game.AchievementsById.forEach(function(e) { e.won = 0; });
※実績を取り消してもミルクの量は減らない。
全実績取り消し後、上の「全実績解除」コードを実行すると、更にミルクが上乗せされる(v. 2.002 ならば + 1024 %)。
これらを繰り返せば、ミルク量を際限なく上げられる。

回数系実績の為の数値操作

+★ に数値代入。一行だけ使用するのも複数行まとめて使用するのも可。
★ に数値代入。一行だけ使用するのも複数行まとめて使用するのも可。
Game.resets=★; /* アセンド回数 */
Game.goldenClicks=★; /* GC クリック数(All time) */
Game.wrinklersPopped=★; /* 虫を退治した数 */
Game.reindeerClicked=★; /* トナカイクリック回数 */



8. 砂糖関連

各種数値操作

+★ に数値代入。一行だけ使用するのも複数行まとめて使用するのも可。
★ に数値代入。一行だけ使用するのも複数行まとめて使用するのも可。
Game.lumpsTotal=★; /* 収穫済みの砂糖の数 */
Game.lumpCurrentType=★; /* 砂糖の種類。 0 : 通常  1 : 分岐  2 : 金色  3 : 肉塊  4 : キャラメル */
Game.lumpsOverripeAge=★; /* 落果までの時間。 0 にすると即収穫。 完熟期でなければ無意味 */
Game.gainLumps(★); /* 数値分の砂糖をゲットする */

PC 時計を弄った人向け救済措置

+次の収穫日が遙か先。そんな人の為に。
次の収穫日が遙か先。そんな人の為に。
Game.lumpT は現在の Sugar lump が育ち始めた時刻。これを元に落果時刻が決まるので、Game.time(現在の時刻)で上書きする。
Game.lumpT = Game.time;



9. ミニゲーム関連

累計詠唱回数を弄る

+★ に数値代入。
★ に数値代入。
Game.Objects['Wizard tower'].minigame.spellsCastTotal=★;

指定呪文を自動詠唱

+魔力満タンになったら発動。一例として、Force the Hand of Fate
魔力満タンになったら発動。一例として、Force the Hand of Fate
M.castSpell(M.spells['hand of fate']); をコピーし、別の呪文を入れて直後にペーストすれば、順番に発動する。
javascript: var M = Game.ObjectsById[7].minigame;
setInterval(function() {
	if (M.magic == M.magicM) {
		M.castSpell(M.spells['hand of fate']);
	}
}, 500);
入力用の魔法名一覧
'conjure baked goods'  'hand of fate'  'stretch time'  'spontaneous edifice'  'haggler\'s charm'
'summon crafty pixies'  'gambler\'s fever dream'  'resurrect abomination'  'diminish ineptitude'

Grimoire 結果予測

+Grimoire画面にForce the Hand of FateとGambler's Fever Dreamの結果を出力する窓を作る。ブックマークレット対応。
Grimoire画面にForce the Hand of FateとGambler's Fever Dreamの結果を出力する窓を作る。ブックマークレット対応。
Hand of Fateは、将来10個分を季節・チャイムによる変化も含めて表示するが、
現在の状態で選択されるクッキーは太字になる。
※標準を0 changeとして、季節がバレンタインかイースターなら+1、チャイムがONなら+1
※召喚されるクッキーの判定に関する詳細はGrimoireの解説参照

(function(global){
 /* for setting */
   var refleshInterval=1000;
 /* internal variables */
   var randcounter=0;
   var M=(Game.Objects['Wizard tower']||Game.ObjectsById[7]).minigame;
   var localMath=Object.create(Math);
 /* functions */
   var choose = function (arr) {return arr[localMath.floor(localMath.random()*arr.length)];};
   var isFail = function (spell, obj)
   {
       var obj=obj||{};
       var failChance=M.getFailChance(spell);
       if (typeof obj.failChanceSet!=='undefined') failChance=obj.failChanceSet;
       if (typeof obj.failChanceAdd!=='undefined') failChance+=obj.failChanceAdd;
       if (typeof obj.failChanceMult!=='undefined') failChance*=obj.failChanceMult;
       if (typeof obj.failChanceMax!=='undefined') failChance=Math.max(failChance, obj.failChanceMax);
       return ((!spell.fail || (localMath.random()<(1 - failChance)))?true:false);
   };
   var gamble={
       win:function()
       {
           var selfCost=M.getSpellCost(M.spells['gambler\'s fever dream']);
           var spells=[];
           for (var i in M.spells)
           {if (i!='gambler\'s fever dream' && (M.magic-selfCost)>=M.getSpellCost(M.spells[i])*0.5) spells.push(M.spells[i]);}
           if (spells.length==0){return ("no magics can cast")}
           var selected=choose(spells);
           var result="";
           localMath.seedrandom(Game.seed + '/' + (M.spellsCastTotal+1));
           if (selected.name == 'Force the Hand of Fate') {
               result = isFail(selected, {failChanceMax:0.5})?hand.win(randcounter):hand.fail(randcounter);
               return ("will cast <b>" + selected.name + "</b> and " + result);
           } else {
               result = isFail(selected, {failChanceMax:0.5})?"win":"fail";
               return ("will cast <b>" + selected.name + "</b> and <b>" + result + "</b>");
           }
       },
   };
   var hand={
       failFunc:function(fail)
       {
           var golden=0; /* game */
           return fail+0.15*golden;
       },
       win:function(cycle)
       {
           localMath.random();localMath.random(); /* by shimmer.initFunc */
           for(i=0;i<cycle;i++){localMath.random();} /* by PlaySound or season shimmer */
           var choices=[];
           choices.push('frenzy','multiply cookies');
           if (!Game.hasBuff('Dragonflight')) choices.push('click frenzy');
           if (localMath.random()<0.1) choices.push('cookie storm','cookie storm','blab');
           if (Game.BuildingsOwned>=10 && localMath.random()<0.25) choices.push('building special');
           /* if (localMath.random()<0.2) choices.push('clot','cursed finger','ruin cookies'); */
           if (localMath.random()<0.15) choices=['cookie storm drop'];
           if (localMath.random()<0.0001) choices.push('free sugar lump');
           return ("GC ("+choose(choices) + ")");
       },
       fail:function(cycle)
       {
           localMath.random();localMath.random(); /* by shimmer.initFunc */
           for(var i=0;i<cycle;i++){localMath.random();} /* by PlaySound or season */
           var choices=[];
           choices.push('clot','ruin cookies');
           if (localMath.random()<0.1) choices.push('cursed finger','elder frenzy');
           if (localMath.random()<0.003) choices.push('free sugar lump');
           if (localMath.random()<0.1) choices=['blab'];
           return ("RC ("+choose(choices) + ")");
       }
   };
   var testSpell = function () {
       var ret="";
       var spellTotal=M.spellsCastTotal;
       randcounter=0;
       if (Game.season=='easter' || Game.season=='valentines') {randcounter++;}
       if (Game.chimeType==1 && Game.ascensionMode!=1) {randcounter++;}
     /* Gamblers Fever Dream */
       ret += '<p><h3>Gamblers Dream</h3>';
       localMath.seedrandom(Game.seed + '/' + spellTotal);
       spellResult=isFail(gamble)?gamble.win():gamble.fail();
       ret += ('<h5 style="padding-left:1em">' + spellResult + '</h5></p>');
     /* Hand of Fate */
       ret+='<p><h3>Hand of Fate</h3><table style="margin:auto;width:90%">';
       ret+='<tr><th></th><th>0 change</th><th>1 change</th><th>2 change</th></tr>';
       for(var i=1;i<=10;i++) {
           ret+='<tr><td>'+i+'</td>';
           for(var j=0;j<=2;j++) {
               localMath.seedrandom(Game.seed + '/' + (spellTotal + i - 1));
               var spellFail=isFail(hand);
               var spellResult=spellFail?hand.win(j):hand.fail(j);
               if (spellFail) {
                   ret += ('<td style="margin:1px;');
               } else {
                   ret += ('<td style="margin:1px;color:red;');
               }
               if (randcounter == j) {
                   ret += ('font-weight:bold;">' + spellResult + '</td>');
               } else {
                   ret += ('">' + spellResult + '</td>');
               }
           }
           ret+='</tr>';
       }
       ret+='</table></p>';
       Math.seedrandom();
       return ret;
   };
 /* panel creation */
   var panel = document.createElement('div');
   panel.setAttribute("id", "grimoireNext");
   panel.setAttribute("class", "framed note");
   panel.style.cssText='margin:3px auto; width:80%';
   document.getElementById("grimoireContent").appendChild(panel);
   panel.innerHTML = testSpell();
 /* auto refresh */
   setInterval(function(){panel.innerHTML = testSpell();},refleshInterval);
})(this);




10. その他

fps(frames per second)変更

+★ に 1 以上の整数を代入。因みにゲームの設定値は 30 。これより高いとアニメーション速度が上がり、低いと遅くなる。
★ に 1 以上の整数を代入。因みにゲームの設定値は 30 。これより高いとアニメーション速度が上がり、低いと遅くなる。
GC やトナカイの発生間隔、GC やスイッチの効果継続時間、自動連打使用時のクリック回数などに影響する。
Game.fps=★;
具体例として、fps = 1 にするとゲームの進行速度が 1 / 30 になる。
これにより、自動連打使用時の秒間クリック数が倍増する(実測はしていないが恐らく 30 倍)。
また、fps 変更時に発動中・ON 状態であった GC 効果・季節スイッチ等の残り時間が、通常の 30 倍になる。
変更後に発動・切り替えたものは通常通り。

V. 1.0466 で GC・トナカイ自動クリックを使用していると多重クリックが起きる(V. 2.002 では仕様変更のため不可能)。
環境にもよるが fps = 1 で 5 ~ 6 回かそれ以上。結果、同時に複数の GC 効果が発生したり、複数の卵や報酬を獲得したりする。

リロードすると、残り時間など全て元に戻る。

セーブデータを抜き出す

+PC 内部に保存されていたデータをコンソールに表示。フリーズした時とか。
PC 内部に保存されていたデータをコンソールに表示。フリーズした時とか。
console.log(window.localStorage.getItem("CookieClickerGame")); 

Export saveのショートカットを追加する

+Export saveのダイアログをCtrl+Xで開けるようになる。ブックマークレット形式。
Export saveのダイアログをCtrl+Xで開けるようになる。ブックマークレット形式。
javascript:AddEvent(window,'keydown',function(e){
  if (!Game.OnAscend && Game.AscendTimer==0 && e.ctrlKey && e.keyCode==88) {Game.ExportSave();e.preventDefault();}
});



上の関数などをブックマークレット化

★ に上記の関数や変数を置き換えると、ブックマークレット形式になる。
javascript:(function(){ ★ })();
ちなみに「Earn」では、以下の記述でブックマークレットとして使用可能。
javascript:Game.Earn( 【増やすクッキーの数】 );



プロンプト付き関数ブックマークレット

上記の関数の一部を、プロンプトで値を指定できるようにしたブックマークレット。
開くと日本語のメッセージが出てくるので、それに従って数字や文字を入力する。
別の値を指定したい時に、url を変えた複数のブックマークレットを作る必要がないので便利。

クッキーを増やす

+Earn 関数を使用。焼いたクッキーが増える。キャンセルすると増えない。
Earn 関数を使用。焼いたクッキーが増える。キャンセルすると増えない。
javascript:(function(){
  var val=prompt('欲しいクッキーの数を入力してください!',0);
  val-=0;
  if(val==null){val=0;}Game.Earn(val);
})();

大クッキー自動クリック

+クリック間隔をミリ秒単位で指定できる。初期値は 1000(1 秒に 1 回)。キャンセルすると自動クリックが中断される。
クリック間隔をミリ秒単位で指定できる。初期値は 1000(1 秒に 1 回)。キャンセルすると自動クリックが中断される。
javascript:(function(){
  var val=prompt('クリック間隔(ミリ秒、1000で1秒)を入力してください。',1000);
  if(val==null){clearInterval(timerC);return;}val-=0;
  timerC=setInterval(function(){Game.ClickCookie();},val);
})();

通常アップグレード解禁

+プロンプトで通常アップグレードの名前を入力すると、ストアに入荷される。キャンセルすると何も入荷されない。
プロンプトで通常アップグレードの名前を入力すると、ストアに入荷される。キャンセルすると何も入荷されない。
javascript:(function(){
  var val=prompt('解禁したい通常アップグレードの名前を入力してください。','');
  if(val==null){val='';}Game.Unlock(val);
})();

Pantheon の Spirit 付け替え(スマホ用)

+スマホのブラウザから Pantheon の操作がうまくできない人用。最初のプロンプトで操作したい Spirit のIDを、次のプロンプトでスロットのIDを入力する。
 javascript: (function swap(){
   let M = Game.Objects['Temple'].minigame;
   let godIndex = prompt('Spirit ( 0: Holobore, 1: Vomitrax, 3: Godzamok ... )', '');
   let godName = M.godsById[godIndex].name;
   if (!godName) return;
   let slot = prompt(`"${godName}" is ( 0: Diamond, 1: Ruby, 2: Jade, -1: unslot )`, '');
   let what = {"id" : godIndex};
   M.dragGod(what);
   M.slotHovered = slot;
   M.dropGod();
 })();



V. 1.0466 以前に対応の旧式コード

+...
大クッキー・金クッキー・トナカイ・虫 全部まとめて自動クリック BML
不要なものは行ごと削除。
javascript:(function(){
  setInterval("Game.ClickCookie()",100); /* 大クッキー秒間 10 回 */
  setInterval(function(){if(Game.goldenCookie.life>0){Game.goldenCookie.click();}},500); /* ゴールデン */
  setInterval(function(){if(Game.seasonPopup.life>0){Game.seasonPopup.click();}},500); /* トナカイ */
  setInterval(function() { Game.wrinklers.forEach(function(me) { if (me.close==1) me.hp = 0});},500); /* 虫 */
})();

ゴールデンクッキーをすぐに出す
注: 実績「Cheated cookies taste awful」を獲得する。
Game.goldenCookie.spawn();

ゴールデンクッキーをすぐに出す(チート実績回避版)BML
javascript: (function() {
    Game.goldenCookie.toDie = 0;
    Game.goldenCookie.life = 0;
    Game.goldenCookie.minTime = 0;
    Game.goldenCookie.spawn();
})();

ゴールデンクッキーの自動発生(5 秒周期)・自動クリック BML
javascript: (function() {
   window.setInterval(function() {
       var temp = Game.goldenCookie;
       if (document.getElementById('goldenCookie').style.display =='block') {temp.click();} 
       else {temp.time = 60000;}
   }, 2500);
})();
temp.time の数値は時間短縮系の update を所持しているかどうかで調整が必要な場合がある(今後出現頻度変更があった場合にも)。

V 1.037 ダンジョンβ版向け ゴールデンクッキー自動(5 秒周期)発生・自動クリック BML
古いバージョンなので逆に工夫が必要。
javascript: (function() {
   window.setInterval(function() {
       var temp = Game.goldenCookie;
       if (document.getElementById('goldenCookie').style.display == 'block') {temp.click();} 
       else {temp.delay = 0;}
   }, 2500);
})();

レッドクッキーの効果が Clot の時に Frenzy に変える BML
javascript: (function() {
   setInterval(function() {if (Game.frenzyPower < 1) {frenzy();}}, 1000);
   function frenzy() {
       var time = 77 + 77 * Game.Has('Get lucky');
       Game.frenzy = Game.fps * time;
       Game.frenzyPower = 7;
       Game.recalculateGains = 1;
       Game.Popup('Frenzy : cookie production x7 for ' + time + ' seconds!');
   };
})();

トナカイの自動発生(5 秒周期)・自動クリック BML
クリスマス時の追加クッキー判定も可能。
javascript: (function() {
   window.setInterval(function() {
       var temp = Game.seasonPopup;
       if (document.getElementById('seasonPopup').style.display == 'block') {temp.click();}
       else {temp.time = 11000;}
   }, 2500);
})();
temp.time の数値は時間短縮系の update を所持しているかどうかで調整が必要な場合がある(今後出現頻度変更があった場合にも)。

ヘブンリーチップスを指定した数にする
下の変数の中の ★ を欲しいヘブンリーチップスの数に置き換えて計算する。
Game.cookiesReset = (Math.pow(2*★+1,2)-1)*Math.pow(10,12)/8; Game.CalculatePrestige();
ちなみに、相対的に増やす方法は見つかっていない模様。

画面を小さくすると邪魔になる左下のサンタを消す BML
javascript:void(Game.DrawSanta=function(){}) 



チートに関する質問

チートツールや、ゲームのソースコードに関する疑問・質問はこちらへ。
誰かが答えてくれるかもしれません。
返信するには返信先のコメントの横にチェックを入れてから投稿してください。

ゲームに関する一般的な質問はこちらへ → 質問用ページ
過去ログはこちら → コメント/チート・補助ツール

  • Cookies CalculatorがV2.018対応ですが、importしてもCPSに1.04倍ぐらいの差が出るのにV2.019で何が変わったのかわからない - 名無しさん (2019-06-04 14:31:34)
    • だからか2.019対応にならないんだよね。。 - 名無しさん (2019-06-26 10:58:21)
      • そうなんですね。前verのソースがあれば差分取って変更箇所探せそうですが - 名無しさん (2019-07-17 00:56:06)
  • GC関連に、季節にかかわらずデフォルトのGCグラを使用するブックマークレットを追加しました。個人的に、イースターなど見付けづらくて不便だったので。 - 名無しさん (2019-06-17 06:50:11)
    • また、トップページのコメントログから、Export saveのショートカットを追加するスクリプトをサルベージ。Ctrl+Xで開きます。 - 名無しさん (2019-06-17 07:15:48)
  • 施設50個まとめ買いと、おまけでBUY/SELL切り替えショートカットのスクリプトを追加しました。50個まとめ買いは、いずれ実装される予定があるみたいですが、当分はアプリ版にかかりきりでWeb版のアプデはなさそうなのでひとまず自前で実装しました。 - 名無しさん (2019-06-22 10:04:10)
  • デバッグ用アップグレードほしいんだけどそもそもどこにコードを入力すりゃいいのかさっぱりわからん - 名無しさん (2019-06-30 12:32:59)
    • デバッグ用アップグレードが欲しいだけでしたら、ベーカリー名の最後に「(空白)saysopensesame」とつけると左上にアイコンが出るはずですのでそれをクリックして出たメニューからAll debugsを押すと入手できると思います。 - 名無しさん (2019-07-17 19:59:38)
      • できました。ありがとうございます。 - 名無しさん (2019-07-18 12:03:04)
  • Frozen CookiesのGrandmapocalypse Modeに設定してるのにone mind買われるんだけどver2.016対応だから - 名無しさん (2019-09-22 10:55:21)
    • かな?今やってるのが2.019だから対応してないとかないのかなぁ(途切れてすまぬ) - 名無しさん (2019-09-22 10:55:52)
    • GitHub見たけ2.019には対応しているとのことなのでバグかな。英語ができないから報告できない… - 名無しさん (2019-09-22 18:17:39)
      • ありがとうございます。確かに英語の問題が、、、 - 名無しさん (2019-09-23 18:45:34)
  • 2.021βではfrozen cookiesやcookie garden helperは支障なく動くけど、2.02βでは問題なかったcookie monsterロードすると画面が固まるようになった - 名無しさん (2019-09-25 23:17:11)
  • 【Game.tickerL.click()】 ニュース部分のクリック処理。 //今後必要になりそうなので取り急ぎ。ベータ版の追加要素を取得できたことを確認済みです。 - 名無しさん (2019-09-27 23:20:01)
  • Game.getNewTicker(manual)でニュース更新(manualがtrueで手動クリック、falseで時間更新)Game.TickerEffect.typeで次のニュースの効果、コンソールでsetInterval(function(){Game.getNewTicker(false);if(Game.TickerEffect.type=='fortune'){Game.tickerL.click();}},100);とすると効果ありのニュースをクリックしてくれる。 - 名無しさん (2019-09-28 03:57:19)
  • Cookies Calculatorは既に2.021対応済み。早いねぇ - 名無しさん (2019-09-29 08:59:49)
  • function F() { Game.T = Game.fps*20; Game.getNewTicker(); console.log(Game.TickerEffect); if (Game.TickerEffect != 0) { Game.tickerL.click(); } var cnt = 0; for (var i in Game.Tiers['fortune'].upgrades) { var it=Game.Tiers['fortune'].upgrades[i]; if (!Game.HasUnlocked(it.name)) { cnt++; } } if (cnt == 0) { clearInterval(T); alert("Complete"); }};var T = setInterval(F, 100); - 名無しさん (2019-10-05 06:30:43)
    • ニュース更新に終了判定を入れてみた - 名無しさん (2019-10-05 06:32:13)
    • function F() { Game.getNewTicker(); console.log(Game.TickerEffect); if (Game.TickerEffect) { Game.tickerL.click(); } if (Game.Tiers['fortune'].upgrades.every(v=>{return Game.HasUnlocked(v.name)})) { clearInterval(T); alert("Complete"); }};var T = setInterval(F, 100); 同じ処理でより短くできそうだったので - 名無しさん (2019-10-07 09:26:30)
  • FrozenCookiesが稼働しなくなった?ブックマークレット読み込むと「情報」のタブが「FrozenCookies」タブに変化するけど、クリックしても何も表示されない…何故かクッキーの生産も停止する - 名無しさん (2019-10-13 16:19:46)
    • 火狐でやってたのでChromeに切り替えたところ正常稼働。しかしAutocastを数回クリックしたところでまたもや全表示消滅。これが原因だったみたい。さてどうやって直せば… - 名無しさん (2019-10-13 22:32:03)
      • とりあえず一旦セーブして、CookieClickerのサイトのCookie(ややこしい)を削除したら直った。他にお悩みの方がいるようだったらご参考に - 名無しさん (2019-10-14 03:11:21)
  • こちらはFrozenCookies V.2.016対応版で動いてます。ブックマークレット削除して作り直してみては? - 名無しさん (2019-10-13 16:48:11)
    • 返信ありがとうございます。残念ながらブックマークレット作り直しやデータ全削除等試してみたけれどダメでした。なんかのアドオンかなぁ… - 名無しさん (2019-10-13 22:15:10)
      • Chrome環境日本語版httpsでFrozen表示全滅クッキー数表示更新無しを確認。鍵外すか本家でやるかですかね。 - 名無しさん (2019-10-14 09:31:12)
        • 日本語版httpでも確認。鍵外しても無意味っぽい。 - 名無しさん (2019-10-14 09:49:13)
  • Mtarnuhal版はFortune cookies自動化にも対応してるから、V.2.016対応版の記述も古いんだよなあ。 - 名無しさん (2019-10-14 09:32:14)
    • この書き込みに釣られてブックマークレット更新したけど次のGCまで何秒とかの表示がなくなっててちょっと落ち着かない - 名無しさん (2019-10-14 22:06:17)
      • サンタとかドラゴンに円がかぶってたやつならDefault Seasonの下のボタン押せ - 名無しさん (2019-10-15 16:04:31)
  • 現行バージョンだとCookieGardenHelperさんは対応してなさそう…? - 名無しさん (2019-10-31 21:02:05)
    • V2.022で動作してるよ - 名無しさん (2019-11-01 01:45:44)
      • 日本語版でも出来る&FrozenCookiesと同じような場所に出ると思ったら全然違った、失礼 - 名無しさん (2019-11-02 00:16:03)
  • 作物の種子全部揃えるチートコードないでしょうか? - 名無しさん (2019-11-06 03:17:32)