チート・補助ツール

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


Cookie Clicker シミュレーター

専用ページで動く Web シミュレーター。プログラムやデータを改竄することはない(= チートではない)ので、気軽に使える。
施設や強化アイテムを任意に設定し、CpS の変化などを調べ、比較することが出来る。
また現在の状況(セーブデータ)を入力すれば、次にどれを購入すれば効率がいいのかを示してくれる。
Cookies Calculator
v. 2.052 対応のシミュレーター。新バージョンでは施設の生産力計算がややこしいので利用しない手はない。
アプグレやオーラの付け替え、秒間クリック数の指定による生産量の変化等、色々なことが比較検討できる。
「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.031 対応。
javascript:(function() {
    Game.LoadMod('https://cookiemonsterteam.github.io/CookieMonster/dist/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年頃で更新が止まっており、大量の派生バージョンが作成されている。
2022年秋現在、比較的アップデートされているバージョンがこちら
V.2.048動作確認済 : https://github.com/Icehawk78/FrozenCookies(オリジナル?)
V.2.052動作確認済 : https://github.com/erbkaiser/FrozenCookies(ドラゴン自動育成、自動ドロップ取得など)
V.2.048未対応 : https://github.com/Mtarnuhal/FrozenCookies(V.2.048で使用するとフリーズ)

各種詳細情報開示+自動化ツール。パラメーターを直接改竄するようなチート機能はない。
自動化は全て ON / OFF 切り替え式で、必要に応じて選択可能。勿論一切使わないのもあり。
Cookie Monster に較べ視覚的にはシンプル。自動購入設定には少々工夫が必要。
Fortune News自動クリック、次の GC 出現、GC 効果の残り時間の描画OFF/テキスト表示のみ/グラフ表示のみ/全て表示

使用方法

上記のV.2.052動作確認済みのサイト内 Bookmarklet install の指示を参考に、指定されたファイル内の文字列を URL に指定したブックマークレットを作成する。

主な機能

  • 施設・アップグレードを効率的な購入順に画面中央情報欄にリスト化
  • 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"の動きをするようになった(ソースコード確認したがモードの区別していない)
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.052 対応。統計欄に記載されていない隠しデータまで見られます。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 に自動修正されてしまう。
Game.cookiesPs = ★;

v.2.031 以降であれば、新しい Modding API の機能である Game.registerHook メソッドを用いて CpS を任意の値に完全に固定化することが容易になった。
(()=>{
    const targetCps=★;
    if(typeof Game.tamperCps!=='undefined')Game.removeHook('cps',Game.tamperCps);
    Game.tamperCps=()=>targetCps/Game.globalCpsMult;
    Game.registerHook('cps',Game.tamperCps);
    Game.recalculateGains=1;
})();
上記のコードはページを再読み込みするか以下のコードを実行することで解除できる。
(()=>{
    Game.removeHook('cps',Game.tamperCps);
    Game.recalculateGains=1;
})();

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

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

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

+ 説明すると、Game.ClickCookie 関数のソースコードは以下のようになっている。
説明すると、Game.ClickCookie 関数のソースコードは以下のようになっている。
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+')';
   }
 })();

バフやデバフを解除する

+ バフやデバフをすべて解除したり、個別に解除できるようにしたりする。
バフやデバフをすべて解除したり、個別に解除できるようにしたりする。
バフやデバフをすべて解除する。
Game.killBuffs();

デバフのみすべて解除する。専用のメソッドなどは用意されていないので、対象を指定して個別に解除していく必要がある。
(()=>{
    const debuffTypeIds=[2,5,10,13,15,17,21,23,25,26];    /* 解除対象のデバフを ID で指定する */
    for(let i in Game.buffs){
        if(debuffTypeIds.includes(Game.buffs[i].type.id))Game.killBuff(i);
    }
})();
条件式を反転させれば、バフのみすべて解除することも一応可能。

バフやデバフのアイコンをクリックすることで個別に解除できるようにする。
(()=>{
    const delay=1;    /* 現在のバフ・デバフを確認する頻度を秒単位で指定する */
    Game.handleBuffClick=e=>{
        const targetId=Number.parseInt(e.target.id.replace(/\D/g,''));
        for(let i in Game.buffs){
            if(Game.buffs[i].id===targetId)Game.killBuff(i);
        }
    };
    setInterval(()=>{
        for(let i of Game.buffsL.childNodes){
            AddEvent(i,'click',Game.handleBuffClick);
        }
    },1000*delay);
})();



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);



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));
    }
})();

フォーチュンアップグレードを自動回収する

+ フォーチュンアップグレードを解禁するニュースを自動的にクリックする。ブックマークレット形式。
フォーチュンアップグレードを解禁するニュースを自動的にクリックする。ブックマークレット形式。
javascript:(()=>{
    const delay=1;    /* ニュースの確認頻度を秒単位で指定する */
    setInterval(()=>{
        if(Game.TickerEffect&&Game.TickerEffect.type==='fortune'
            &&Game.TickerEffect.sub!=='fortuneGC'&&Game.TickerEffect.sub!=='fortuneCPS'
        )l('commentsText1').click();
    },1000*delay);
})();



7. 実績関連

実績解除

+ 任意の実績を解除する。
任意の実績を解除する。
★ に実績名を代入。
Game.Win('★');
または、以下の ★ に実績の「ID」を代入。
Game.Win(Game.AchievementsById[★].name);
「ID」を調べるには、以下の ☆ に実績名を代入し実行。コンソールに表示されるので確認。
Game.Achievements['☆'];
全実績を解除する(隠し・ダンジョン実績含む)。
Object.values(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(★); /* 数値分の砂糖をゲットする */

システム時刻を弄った人向け救済措置

+ 次の収穫日が遙か先。そんな人の為に。
次の収穫日が遙か先。そんな人の為に。
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++;}
     /* 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>Other Seasons</th><th>Easter/Valentine</th></tr>';
       for(var i=1;i<=10;i++) {
           ret+='<tr><td>'+i+'</td>';
           for(var j=0;j<=1;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);


グリモアの魔力の回復速度を変更する

+ ★に任意の値を代入して、グリモアの魔力の回復速度を何倍にするかを指定する。
★に任意の値を代入して、グリモアの魔力の回復速度を何倍にするかを指定する。
(()=>{
    const mult=★;
    const M=Game.Objects['Wizard tower'].minigame;
    if(typeof M.tamperLogic!=='undefined')Game.removeHook('logic',M.tamperLogic);
    if(typeof M.tamperDraw!=='undefined')Game.removeHook('draw',M.tamperDraw);
    M.tamperLogic=()=>{
        M.magic+=M.magicPS*(mult-1);
        if(M.magic<0)M.magic=0;
        if(M.magicM<M.magic)M.magic=M.magicM;
    };
    M.tamperDraw=()=>{
        if(Game.drawT%5!==0)return;
        M.magicBarTextL.innerHTML=
            Math.min(Math.floor(M.magicM),Beautify(M.magic))+'/'+
            Beautify(Math.floor(M.magicM))+(M.magic<M.magicM?(' ('+
            loc("+%1/s",Beautify((M.magicPS*mult||0)*Game.fps,2))+')'):'');
    };
    Game.registerHook('logic',M.tamperLogic);
    Game.registerHook('draw',M.tamperDraw);
})();

Garden 結実したら自動で収穫

+ 結実した作物を自動で収穫する。雑草自動除去機能つき。日本語版でも動作可能。
結実した作物を自動で収穫する。雑草自動除去機能つき。日本語版でも動作可能。
最終行の1000(確認間隔ms)の右の引数で雑草即時除去有無を指定。不要ならfalseにする。
(falseでも他の作物と同様mature後に除去される。mature直後にも1回拡散判定等が発生する点に注意。)
その右の引数で不死作物の収穫有無を指定。mature後に即収穫したいならtrue。
その右の引数でChocorootのように収穫時クッキーがもらえる作物の収穫有無を指定。CpSを考慮し手動で収穫したい場合はfalse。
(ただしfalseの場合でも枯死直前=半透明化になった瞬間に収穫を行う。)
その右の引数でmature後即収穫せずに枯死直前まで待つかを指定。交配等の都合で待ちたい場合はtrue。
(雑草即時除去を無効にしている場合、雑草も枯死直前まで除去しなくなる点に注意。)
setInterval(function(weedImmediately, harvestImmortal, harvestCookies, whenDying){
  var M = Game.ObjectsById[2].minigame;
  for (var x = 0; x < 6; x++){
    for (var y = 0; y < 6; y++){
      var tile = M.getTile(x, y);
      if (tile[0] > 0){
        var me = M.plantsById[tile[0] - 1];
        if (me.weed && weedImmediately){
          M.harvest(x, y);
        }else if (tile[1] + (me.ageTick + me.ageTickR) * M.plotBoost[y][x][0] >= 100){
          M.harvest(x, y);
        }else if (tile[1] >= me.mature){
          if (!whenDying && (!me.immortal || harvestImmortal) && 
(!me.effsStr.includes('harvest when mature for +') && !me.effsStr.includes('結実時に収穫すると +') || harvestCookies)) M.harvest(x, y);
        }
      }
    }
  }
}, 1000, true, false, true, false);

なお、不死作物の収穫有無のみ指定でよい場合、以下のコードを使用してもよい。
一番右の引数をfalseにすると、不死作物もmature後に即収穫。(上記関数と指定方法が逆なので注意)
その左の引数をfalseにすると全ての作物が即除去されてしまうため注意。
setInterval(Game.ObjectsById[2].minigame.harvestAll, 1000, 0, true, true);

特定の一作物のみ自動収穫対象とする場合、★に作物名を入力。
入力値はゲーム中の名前と若干異なる。(例:「Baker's wheat」なら★は「bakerWheat」)
Chromeのコンソール使用なら[ ]内編集中に自動で候補が出てくるはず。
setInterval(Game.ObjectsById[2].minigame.harvestAll, 1000, Game.ObjectsById[2].minigame.plants['★'], true, true);

作物を名前ではなくID番号で指定する場合、★に0~33の数値を入力。
setInterval(Game.ObjectsById[2].minigame.harvestAll, 1000, Game.ObjectsById[2].minigame.plantsById[★], true, true);

Garden Tick即時発生&土壌再選択待機時間リセット

+ 残り時間に関わらずTickを即時発生させる。また、土壌再選択の待機時間をリセットする。
残り時間に関わらずTickを即時発生させる。また、土壌再選択の待機時間をリセットする。
次のTick発生時刻、および再度土壌選択できるようになる時刻を現在の時刻で置き換える。

Tick即時発生
Game.ObjectsById[2].minigame.nextStep = Date.now();
土壌選択待機時間リセット
Game.ObjectsById[2].minigame.nextSoil = Date.now();

ガーデンの作物を常に成熟状態にする

+ ガーデンの作物を成熟させるコードを定期的に実行することで常に成熟状態にする。
ガーデンの作物を成熟させるコードを定期的に実行することで常に成熟状態にする。
(()=>{
    const delay=1;    /* ガーデンの作物を成熟させる頻度を秒単位で指定する */
    setInterval(()=>{
        const M=Game.Objects['Farm'].minigame;
        for(let y=0;y<6;y++){
            for(let x=0;x<6;x++){
                if(!M.isTileUnlocked(x,y)||M.plot[y][x][0]===0)continue;
                M.plot[y][x][1]=M.plantsById[M.plot[y][x][0]-1].mature+1;
            }
        }
        M.toCompute=true;
        M.toRebuild=true;
    },1000*delay);
})();

Stock Market Tick周期変更

+ 価格変動の周期を60秒から変更する。
価格変動の周期を60秒から変更する。
★に変更後の周期を秒単位で入力。例えば、1秒ごとに価格変動させたい場合は★=1を入力。
Game.ObjectsById[5].minigame.secondsPerTick = ★;

Stock Market 自動売買

+ 基準価格を元に指定した値になれば自動で売買する。
基準価格を元に指定した値になれば自動で売買する。
基準価格についてはSugar lump・minigame(砂糖の塊・ミニゲーム)/StockMarket>Value(価格)変動ルールの簡易説明>価格の変動要因を参照。
2行目の buyRate は基準価格の6割になれば購入。
3行目の sellRate は基準価格になれば売却。
あまり極端な値に設定するより、ほどほどの値で売買機会を増やす方が良い?
function autoStock() {
const buyRate = 0.6;
const sellRate = 1.0;
var M = Game.ObjectsById[5].minigame;
for(var id = 0; id <= 16; id++) {
var me = M.goodsById[id];
var stdValue = (id + 1) * 10 + 10;
var value = M.getGoodPrice(me);
if(value <= stdValue * buyRate && me.stock < M.getGoodMaxStock(me)) {
M.buyGood(id, 10000);  
} else if(value >= stdValue * sellRate && me.stock > 0) {
M.sellGood(id, 10000);
}
}
}
setInterval(function() {autoStock();}, 59000);

Pantheon

スロットへ神をセットする、または取り外すためのスクリプト。
※注意:ここで紹介しているセットや付け替え処理は、Worship swapsを正しく処理します。セットする際には1消費し、0であればセットはできません。

+ 基本情報・神およびスロットのID一覧
Holobore(ホロボア)=0;
Vomitrax(ヴォミトラックス)=1;
Godzamok(ゴザモク)=2;
Cyclius(サイクリウス)=3;
Selebrak(セレブラク)=4;
Dotjeiess(ドットジェイエス)=5;
Muridal(ムリダル)=6;
Jeremy(ジェレミー)=7;
Mokalsium(モカルシウム)=8;
Skruuia(スクルーイア)=9;
Rigidel(リジデル)=10;

Diamond(ダイアモンド)=0;
Ruby(ルビー)=1;
Jade(ヒスイ)=2;

+ 神をスロットにセットする
var M = Game.Objects['Temple'].minigame;
M.dragGod(M.godsById[★]);  //任意の神を選択する(★には神のID(0~10)のいずれかを指定
M.hoverSlot(◆);           //任意のスロットを選択する(◆にはスロットのID(0~2)のいずれかを指定)
M.dropGod();               //つかんでいた神を離す(マウスのボタンを離すのと同じ処理)
M.hoverSlot(-1);           //処理終了後、どのスロットも選択していない状態に戻す

//Sample ゴザモクをダイヤスロットへセット
var M = Game.Objects['Temple'].minigame;
M.dragGod(M.godsById[2]);
M.hoverSlot(0);
M.dropGod();
M.hoverSlot(-1);

+ スロットにセット済みの神を取り外す
var M = Game.Objects['Temple'].minigame;
M.dragGod(M.godsById[M.slot[◆]]); //◆には取り外すスロットのID(0~2)のいずれかを指定
M.hoverSlot(-1);
M.dropGod();

+ スロットにセット済みの神を別のスロットへセットする
var M = Game.Objects['Temple'].minigame;
M.dragGod(M.godsById[M.slot[◆]]); //◆には移動前のスロットのID(0~2)のいずれかを指定
M.hoverSlot(◇);                   //◇には移動先のスロットのID(0~2)のいずれかを指定
M.dropGod();
M.hoverSlot(-1);



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();}
});

セーブデータをロードするショートカットを追加する

+ セーブデータを Ctrl+L でロードできるようにする。ブックマークレット形式。
セーブデータを Ctrl+L でロードできるようにする。ブックマークレット形式。
セーブデータを手動セーブするショートカット(Ctrl+S)および後記する自動セーブの有効/無効を切り替え可能にするコードと併用することで、ゲームを自動セーブ方式から手動セーブ方式に切り替えることができる。
javascript:(()=>{
    AddEvent(window,'keydown',e=>{
        const key='L';    /* ショートカットに使用するアルファベットを半角大文字で指定する */
        if(!Game.OnAscend&&Game.AscendTimer===0&&e.ctrlKey&&e.code==='Key'+key){
            Game.ImportSaveCode(localStorage.getItem('CookieClickerGame'));
            e.preventDefault();
        }
    });
})();

自動セーブの有効/無効を切り替え可能にする

+ オプションの末尾に自動セーブの有効/無効を切り替える設定ボタンを追加する。ブックマークレット形式。
オプションの末尾に自動セーブの有効/無効を切り替える設定ボタンを追加する。ブックマークレット形式。
※ 注意:自動セーブの有効/無効の設定内容はセーブデータにしっかり記録される。ページを再読み込みしても有効にはならないので注意。
javascript:(()=>{
    const origin=Game.UpdateMenu;
    Game.UpdateMenu=()=>{
        origin();
        if(Game.onMenu!=='prefs')return;
        let el=document.createElement('span');
        el.innerHTML=`
            <br>
            ${Game.WritePrefButton('autosave','autosaveButton','自動セーブ'+ON,'自動セーブ'+OFF)}
            <label>(自動セーブを有効にする)</label>
        `;
        const parents=document.querySelectorAll('#menu .listing');
        parents[parents.length-1].appendChild(el);
    };
})();



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

★ に上記の関数や変数を置き換えると、ブックマークレット形式になる。
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();
 })();



タッチデバイス修正用のブックマークレット

タッチデバイス(スマートフォンやタブレット端末など)のブラウザ版において、ゲームプレイの障害となる要素を解決するためのブックマークレット。
これらはあくまでも問題の改善が目的であり、それ以上の自動化機能やチート機能などは一切含まない。また、PC 版における動作に関しては保証することはできない。

プレステージアップグレードを購入可能にする

+ PC 版と同様にアセンド画面でドラッグすることで移動可能にする。
PC 版と同様にアセンド画面でドラッグすることで移動可能にする。
javascript:(()=>{
    AddEvent(document,'touchstart',e=>{
        Game.mouseX=(e.touches[0].pageX)/Game.scale;
        Game.mouseY=(e.touches[0].pageY-TopBarOffset)/Game.scale;
        Game.lastActivity=Game.time;
        Game.mouseDown=1;
        Game.clickFrom=event.target;
    });
    AddEvent(document,'touchmove',e=>{
        Game.mouseX=(e.changedTouches[0].pageX)/Game.scale;
        Game.mouseY=(e.changedTouches[0].pageY-TopBarOffset)/Game.scale;
        Game.mouseMoved=1;
        Game.lastActivity=Game.time;
    });
    AddEvent(document,'touchend',()=>{
        Game.lastActivity=Game.time;
        Game.mouseDown=0;
        Game.clickFrom=0;
    });
})();

パンテオンを操作可能にする(タップ操作版)

+ ガーデンで種の植え付けをするときと同じ感覚でパンテオンの聖霊を変更できるようにする。
ガーデンで種の植え付けをするときと同じ感覚でパンテオンの聖霊を変更できるようにする。
具体的な操作方法としては、
  • 聖霊を 1 回タップすることで選択、同じ聖霊をもう 1 回タップすることで選択解除
  • 聖霊を選択した状態でスロットをタップすることで、そのスロットに聖霊をセットする
  • スロットにセットされている聖霊を外すには、外したい聖霊を選択した状態で下部のセットされていない聖霊エリアをタップする
javascript:(()=>{
    const M=Game.Objects['Temple'].minigame;
    M.godSelected=-1,M.slotSelected=-1;
    const id=()=>M.gods[M.godSelected].id;
    const name=n=>{
        for(let i in M.gods)if(M.gods[i].id===n)return i;
        return -1;
    };
    const on=(g,s=-1)=>{
        M.godSelected=g,M.slotSelected=s;
        if(s===-1)l('templeGod'+id()).classList.add('godSelected');
        else l('templeSlot'+s).classList.add('godSelected');
        PlaySound('snd/toneTick.mp3');
    };
    const off=()=>{
        const s=M.slotSelected;
        if(s===-1)l('templeGod'+id()).classList.remove('godSelected');
        else l('templeSlot'+s).classList.remove('godSelected');
        M.godSelected=-1,M.slotSelected=-1;
    };
    const set=n=>{
        M.dragGod({'id':id()});
        M.dragging=M.gods[M.godSelected];
        M.slotHovered=n;
        M.dropGod();
        if(id()!==-1)l('templeGodPlaceholder'+id()).style.display='none';
        off();
    };
    let el=document.createElement('style');
    el.innerHTML=`
        .templeGod:hover,.temple:active{
            box-shadow:4px 4px 4px #000;
            background-position:0 0;
            z-index:auto;
        }
        .templeGod.ready:hover .templeIcon{
            animation-name:none;
            animation-iteration-count:0;
            animation-duration:0s;
        }
        .templeGod.godSelected{
            box-shadow:6px 6px 6px 2px #000;
            background-position:0px 74px;
            z-index:1000000001;
            transform:scale(1.2)!important;
        }
        .templeGod.ready.godSelected .templeIcon{
            animation-name:bounce;
            animation-iteration-count:infinite;
            animation-duration:0.8s;
        }
    `;
    l('templeContent').appendChild(el);
    for(let i in M.gods){
        const me=M.gods[i];
        l('templeGod'+me.id).addEventListener('click',(g=>()=>{
            if(M.gods[g].slot!==-1||M.slotSelected!==-1)return;
            if(M.godSelected===g)off();
            else{if(M.godSelected!=-1)off();on(g);}
        })(i));
        for(let j of ['mousedown','mouseup']){
            l('templeGod'+me.id).addEventListener(j,e=>{e.stopPropagation()},true);
        }
    }
    for(let i in M.slot){
        l('templeSlot'+i).addEventListener('click',(i=>()=>{
            if(M.godSelected===-1){
                const n=M.slot[i];
                if(n===-1)return;
                on(name(n),i);
            }else{
                if(M.slot[i]===id()){off();return;}
                set(i);
            }
        })(i));
    }
    l('templeGods').addEventListener('click',()=>{
        if(M.godSelected===-1||M.slotSelected===-1)return;
        set(-1);
    });
})();

スイッチ欄・アップグレード欄・保管庫欄を開いたままにする

+ タッチデバイスだとやたら開閉しづらいスイッチ欄・アップグレード欄・保管庫欄を常に開いたままにする。
タッチデバイスだとやたら開閉しづらいスイッチ欄・アップグレード欄・保管庫欄を常に開いたままにする。
javascript:(()=>{
    const s=(id,prop,val)=>{l(id).style[prop]=val;};
    for(let i of ['toggleUpgrades','upgrades','vaultUpgrades'])s(i,'height','auto');
})();

ゲームの表示領域のサイズを自由に変更する

+ プロンプトから幅・高さの値を指定することで、ゲームエリアの表示サイズを自由に変更する。
プロンプトから幅・高さの値を指定することで、ゲームエリアの表示サイズを自由に変更する。
主な用途としては、ガーデンの表示領域の拡大、実績「クッキーをミルクに浸す者(Cookie-dunker)」「報道機関を押し潰す(Stifling the press)」の実績解除など。
javascript:(()=>{
    const s=(el,prop,val)=>{el.style[prop]=val;};
    const w=prompt('変更する表示サイズの幅をピクセル単位で指定してください。',1280);
    if(w===null)return;
    const h=prompt('変更する表示サイズの高さをピクセル単位で指定してください。',720);
    if(h===null)return;
    s(document.body,'overflow','visible');
    s(l('game'),'width',w+'px');
    s(l('game'),'height',h+'px');
    FireEvent(window,'resize');
    Game.windowW=w,Game.windowH=h;
})();

+ 上記のブックマークレットが上手く動作しない場合はこちら。
上記のブックマークレットが上手く動作しない場合はこちら。
javascript:(()=>{
    const confirmFunc=`{
        const s=(el,prop,val)=>{el.style[prop]=val;};
        const [w,h]=resizingInput.value.split(',');
        s(document.body,'overflow','visible');
        s(l('game'),'width',w+'px');
        s(l('game'),'height',h+'px');
        FireEvent(window,'resize');
        Game.windowW=w,Game.windowH=h;
        Game.ClosePrompt();
    }`;
    Game.Prompt(
        '<id resizing><h3>表示サイズの変更</h3><div class="block" style="text-align:center;">'+
        '変更する表示サイズの幅と高さを<br>カンマ区切りで指定してください。</div>'+
        '<div class="block"><input type="text" id="resizingInput" '+
        'style="text-align:center;width:100%;" value="1280,720"></div>',
        [[loc('Confirm'),confirmFunc],loc('Cancel')]
    );
    l('resizingInput').focus();
})();

実績「Baby it's old outside」を実績解除できるようにする

+ PC 版と同様にクリスマス中にサンタ帽のグランマをタップすることで実績解除できるようにする。
PC 版と同様にクリスマス中にサンタ帽のグランマをタップすることで実績解除できるようにする。
javascript:(()=>{
    AddEvent(l('rowCanvas1'),'click',()=>{Game.mouseDown=1;})
})();

任意の JavaScript コードを実行する(非推奨)

+ プロンプトから任意の JavaScript コードを実行する。非推奨。
プロンプトから任意の JavaScript コードを実行する。非推奨。
※ 注意:信頼できないコードの実行はセキュリティリスクを伴うため、必ずコードの内容をよく確認した上で実行すること。
javascript:(()=>{
    const code=prompt('実行したい JavaScript コードを入力してください。');
    (new Function(code))();
})();

+ 上記のブックマークレットが上手く動作しない場合はこちら。
上記のブックマークレットが上手く動作しない場合はこちら。
※ 注意:信頼できないコードの実行はセキュリティリスクを伴うため、必ずコードの内容をよく確認した上で実行すること。
javascript:(()=>{
    const executeFunc=`{
        const code=l('textareaPrompt').value;
        Game.ClosePrompt();
        (new Function(code))();
    }`;
    Game.Prompt(
        '<id codeExecution><h3>任意コード実行</h3><div class="block" style="text-align:center;">'+
        '実行したい JavaScript コードを<br>入力してください。</div>'+
        '<div class="block"><textarea id="textareaPrompt" style="width:100%;height:128px;">'+
        '</textarea></div>',
        [['実行',executeFunc],loc('Nevermind')]
    );
    l('textareaPrompt').focus();
})();



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(){}) 



チートに関する質問

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

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

  • FrozenCookieでアセンド後に自動購入が動かず確認したら明らかに買える額なのに完了までの時間が4000y10d…のような表記になり動作しません 確認や対策など教えてくれると助かります - 名無しさん (2023-07-24 11:29:37)
    • すいませんレガシーでした - 名無しさん (2023-07-24 11:30:26)
  • ずるしたクッキーの味は最悪だの実績を消す方法はありますか?消してもまた復活してしまいます - tatata (2023-07-25 13:33:46)
    • まず開発者モード開いて実績やアプグレのオンオフができるやつで解除する→名前を変える→セーブしてリログ これで行ける - 名無しさん (2023-08-02 09:15:20)
      • 追記 溜まったクッキーがクッキー生産数を上回っていたらたぶん戻らないからその時は上回ったぶんをjavascriptコンソールとかで消すとかしないと実績は戻らないと思う - 名無しさん (2023-08-02 09:17:35)
  • Androidでブラウザ版をプレイするとAscendした後の画面でスクロールできなくて困るんですが、何か対策できるツールはありますか? - 名無しさん (2023-08-29 09:15:11)
    • JavaScriptではなく、という意味です - 名無しさん (2023-08-29 09:16:04)
    • 「PC もブックマークレットも使用せずにあくまでもブラウザ版で」という前提なら、もう外部サイトでセーブデータ改竄くらいしかないんじゃないかな。観念してブックマークレットを使用するのが一番穏当だと思うよ - 名無しさん (2023-08-29 16:05:57)
      • 返信ありがとうございます。そうします。 - 名無しさん (2023-08-31 10:49:53)
  • Cookie Calclater開けなくなったの俺だけ? - 名無しさん (2023-08-29 23:12:33)
    • Calculatorだった - 名無しさん (2023-08-29 23:12:56)
  • スマホでコードどうやってうつ? - しらね (2023-09-11 17:54:16)
    • ブックマークレットならできるよ。ブックマークレットのやり方は自分で調べてもらうとして、ここにはコードのブックマークレット化の方法があるからそれでできるよ。 - バグと知識の伝道師 (2023-09-11 18:13:34)
  • Frozen Cookie で何かをONにしたあと勝手に転生が始まり止まらなくなりました。設定リセット等出来る事ありませんでしょうか - 名無しさん (2023-09-18 22:56:25)
    • ページを再読み込みしても直らない? - 名無しさん (2023-09-18 23:49:50)
      • 再読み込み後Frozen Cookie起動→転生ループ、再読み込み後チャレンジモードにして転生してFrozen Cookie起動→転生ループ Frozen Cookieのタブどころか、大クッキー以外読み込まれないまま転生ループなので止めようがなく… - 名無しさん (2023-09-19 03:44:47)
        • それなら、ページ再読み込み→オプション→MODデータをチェック→frozen_cookies のMODデータを削除→FrozenCookies 起動…という手順で解決しないかな? - 名無しさん (2023-09-19 03:57:53)
          • こちらですが、少し放置したところで転生が止まったのでそのタイミングで無事OFFにできました。Auto Sweet 安易にONにするなとReadmeに書いてました…お騒がせしました。 - 名無しさん (2023-09-19 08:16:14)
  • microsoft edgeでコンソールを開く方法ってありますk - 名無しさん (2023-10-16 14:06:58)
    • F12で開けるはず。 というか普通にググった方が詳しく理解できると思う - 名無しさん (2023-10-16 14:11:23)
  • いい。朝まで時間をスキップするには、すべてのプレイヤーがあることが多いけどね❗ - 嗚呼、真実を知ってしまった。朝まで時間をスキップするには、すべてのプレイヤーがあることが多いけどね❗ (2023-10-28 07:50:06)
  • てすと - 名無しさん (2024-03-09 07:38:41)
  • スマホのブラウザでタッチデバイス修正用のブックマークレットを使いたいのですが、何も変わりません。どうすれば使えますか? - 名無しさん (2024-03-09 07:41:09)
  • スマホなんですけどブックマークレットを使っても何も変わらないんですがどうすれば良いですかね? - a (2024-03-09 18:45:31)
    • その質問内容だと情報が少なすぎて原因の特定はできないけれど、おそらく以下のどれかじゃないかな
          ・ コードのコピペミス
          ・ 掲載されているコードにバグがある(iOS・Androidともに今のところ報告なし)
          ・ ブラウザがブックマークレット機能に対応してない(iOS版Firefoxで報告あり)
          ・ 以前に実行したコードや導入したMODなどと競合している
          ・ そもそもブックマークレットの実行に失敗している
      この中でも特に最後の場合に関してはここで質問するよりネット検索したほうが早いと思うよ - 名無しさん (2024-03-10 01:50:00)
      • 返信ありがとうございます。iPhoneのSafariで、パンテオンを操作可能にするコードでやってみたんですが、実行すると白い画面になって、Cookie Clickerに戻って再読み込みしてみても何も変わらないんですよね... - a (2024-03-10 12:10:21)
        • iOS版Safariなら動作確認済みだったはずだから、コピペミスか実行に失敗しているだけの可能性が高いと思うよ。先に簡単なブックマークレットから試してみるといいかもね - 名無しさん (2024-03-10 19:04:55)
  • ありがとうございます。 - a (2024-03-10 19:19:30)
    • ミスです。 - a (2024-03-10 19:20:21)
  • カーソルとグランマは5080個、それ以外は5070個購入すると購入価格がInfinityになることを確認。その状態で一番生産効率が高いのは鉱山。 - 名無しさん (2024-03-28 23:30:28)
  • 任意のゴールデンクッキーを出すコードをためしたのですが、指定した物にはならず、ただゴールデンクッキーが出てきただけでした。原因がわかる方いませんか - あは (2024-04-11 17:54:13)
    • おそらくキーワード部分の指定に失敗してエラー吐いてるだけじゃないかな。誤字脱字衍字に気をつけて実行してみてね - 名無しさん (2024-04-11 21:39:37)
  • ヘルパーmodが入れられないのですがどうすればいいですか?ブラウザ版です - 二周目です (2024-04-21 09:51:44)
最終更新:2024年03月17日 20:18