クッキーのアレを遊ぶ

    @@ -10,13 +10,14 @@ window.GameX = {}; GameX.Cheats = {}; + GameX.CheatCommands = {}; GameX.Autopilots = {}; var AbstractCheat = function(opt){ opt = opt || {}; this.name = opt.name; - this.enabled = 'enabled' in opt ? opt.enabled : true; + this.enabled = 'enabled' in opt ? opt.enabled : false; this.Init = opt.init || function(){}; this.Logic = opt.logic || function(){}; this.Init(); @@ -47,6 +48,11 @@ }; }; + var GetCheatedCookie = function(){ + if(!this.enabled && Game.Achievements['Cheated cookies taste awful']) return; + Game.Win('Cheated cookies taste awful'); + }; + GameX.Cheat = function(opt){ opt = opt || {}; if(!('enabled' in opt))opt.enabled = false; @@ -54,9 +60,7 @@ this.Iter = ( function(orig){ return function(){ - if(this.enabled && Game.Achievements['Cheated cookies taste awful']){ - Game.Win('Cheated cookies taste awful'); - } + GetCheatedCookie(); orig.apply(this, arguments); }; } @@ -69,6 +73,24 @@ GameX.Autopilots[this.name] = this; }; + GameX.CheatCommand = function(opt){ + opt = opt || {}; + this.name = opt.name; + this.action = opt.action; + GameX.CheatCommands[this.name]=this; + var self = this; + this.MakeButton = function(list){ + var button = document.createElement('a'); + list.appendChild(button); + button.className = 'option'; + button.appendChild(document.createTextNode(self.name)); + button.onclick = function(){ + GetCheatedCookie(); + self.action(); + }; + }; + }; + new GameX.Autopilot( { name: 'auto clicking', @@ -81,7 +103,6 @@ new GameX.Cheat( { name: 'rapid production of golden cookies', - enabled: false, init: function(){ var self = this; var R = null; @@ -117,9 +138,20 @@ } ); + new GameX.Cheat( + { + name: 'rapid research', + init: function(){ + }, + logic: function(){ + Game.researchT=0; + } + } + ); + new GameX.Autopilot( { - name: 'auto clicking of golden cookie', + name: 'auto clicking of golden cookies', logic: function(){ var g = Game.goldenCookie; if(g.delay == 0)g.click(); @@ -140,7 +172,7 @@ var limit = { 'Cursor':200, - 'Grandma':100, + 'Grandma': 100, 'Farm':100, 'Factory':100, 'Mine':100, @@ -171,12 +203,26 @@ o.sell(); } } + }else{ + var flag = true; + for(var obj in limit){ + if(limit[obj] <= Game.Objects[obj].amount) continue; + flag = false; + break; + } + if(flag){ + limit['Cursor'] = 0; + limit['Grandma'] = 0; + limit['Portal'] = 0; + limit['Antimatter condenser'] = 0; + } } var item = {price: Game.cookies+1, buy: function(){}}; for(var i in Game.ObjectsById)( function(o){ - if(limit[o.name] <= o.amount) return; + var max = limit[o.name]; + if(max > 0 && max <= o.amount) return; if(o.price <= Game.cookies && o.price < item.price){ item = { price: o.price, @@ -190,6 +236,13 @@ for(var i in Game.UpgradesById)( function(o){ var price = o.basePrice; + if({ + 'One mind': true, + 'Communal brainsweep': true, + 'Elder Pact': true, + 'Elder Pledge': true, + 'Revoke Elder Covenant':true + }[o.name]) return; if(!o.unlocked || o.bought || price > Game.cookies || item.price < price) return; item = {price: price, buy: function(){ @@ -202,14 +255,28 @@ } ); + new GameX.CheatCommand( + { + name: "earn heavenly chips", + action: function(){ + if(Game.prestige['Heavenly chips'] < 1){ + Game.prestige['Heavenly chips'] = 1; + }else{ + Game.prestige['Heavenly chips'] *= 10; + } + } + } + ); + GameX.Iter = function(){ - for(var cheat in GameX.Autopilots){ - GameX.Autopilots[cheat].Iter(); + var name; + for(name in GameX.Autopilots){ + GameX.Autopilots[name].Iter(); } - for(var cheat in GameX.Cheats){ - GameX.Cheats[cheat].Iter(); + for(name in GameX.Cheats){ + GameX.Cheats[name].Iter(); } }; @@ -225,21 +292,24 @@ var subs = document.querySelector('#menu > .subsection'); var set = { Autopilot: GameX.Autopilots, - Cheat: GameX.Cheats + Cheat: GameX.Cheats, + 'Cheat Command': GameX.CheatCommands }; - for(var section in set){ + for(var section in set) ( + function(section){ - var title = document.createElement('div'); - subs.appendChild(title); - title.className = 'title'; - title.appendChild(document.createTextNode(section)); - var list = document.createElement('div'); - list.className = 'listing'; - subs.appendChild(list); - for(var name in set[section]){ - set[section][name].MakeButton(list); + var title = document.createElement('div'); + subs.appendChild(title); + title.className = 'title'; + title.appendChild(document.createTextNode(section)); + var list = document.createElement('div'); + list.className = 'listing'; + subs.appendChild(list); + for(var name in set[section]){ + set[section][name].MakeButton(list); + } } - } + )(section); } }; })(Game.UpdateMenu); @@ -248,6 +318,8 @@ GameX.Iter(); L(); }; + Game.Popup('Bookmarklet is installed.<br>Show the [Menu] screen.<br>'); + })(Game.Loop); })();
  • /*
     * @title クッキーのアレを遊ぶ
     * @description 自動クッキー叩き、いくつかの実績取得に合わせた自動購入、そしてチート
     * @include http://orteil.dashnet.org/cookieclicker/
     * @license MIT License
     * @require 
     */
    
    (function(){
       window.GameX = {};
    
       GameX.Cheats = {};
       GameX.CheatCommands = {};
       GameX.Autopilots = {};
       
    
       var AbstractCheat = function(opt){
         opt = opt || {};
         this.name   = opt.name;
         this.enabled = 'enabled' in opt ? opt.enabled : false;
         this.Init = opt.init || function(){};
         this.Logic = opt.logic || function(){};
         this.Init();
         var self = this;
         var onToggle = opt.onToggle || function(){};
         this.Toggle = function(e){
           self.enabled = !self.enabled;
           onToggle.apply(self, [self.enabled]);
         };
         this.Iter = function(){
           if(!self.enabled) return;
           self.Logic();
         };
    
         this.UpdateButton = function(button){
           button.innerHTML = '';
           button.className = 'option' + (self.enabled ? ' enabled' : '');
           button.appendChild(document.createTextNode(self.name + ' ' + (self.enabled ? 'ON' : 'OFF')));
         };
         this.MakeButton =function(list){
           var button = document.createElement('a');
           list.appendChild(button);
           button.onclick=function(e){
             self.Toggle();
             self.UpdateButton(button);
           };
           self.UpdateButton(button);
         };
       };
    
       var GetCheatedCookie = function(){
         if(!this.enabled && Game.Achievements['Cheated cookies taste awful']) return;
         Game.Win('Cheated cookies taste awful');
       };
    
       GameX.Cheat = function(opt){
         opt = opt || {};
         if(!('enabled' in opt))opt.enabled = false;
         AbstractCheat.apply(this, [opt]);
         this.Iter = (
           function(orig){
             return function(){
               GetCheatedCookie();
               orig.apply(this, arguments);
             };
           }
         )(this.Iter);
         GameX.Cheats[this.name] = this;
       };
    
       GameX.Autopilot = function(opt){
         AbstractCheat.apply(this, arguments);
         GameX.Autopilots[this.name] = this;
       };
    
       GameX.CheatCommand = function(opt){
         opt = opt || {};
         this.name   = opt.name;
         this.action = opt.action;
         GameX.CheatCommands[this.name]=this;
         var self = this;
         this.MakeButton = function(list){
           var button = document.createElement('a');
           list.appendChild(button);
           button.className = 'option';
           button.appendChild(document.createTextNode(self.name));
           button.onclick = function(){
             GetCheatedCookie();
             self.action();
           };
         };
       };
    
       new GameX.Autopilot(
         {
           name: 'auto clicking',
           logic: function(){
             Game.ClickCookie();
           }
         }
       );
    
       new GameX.Cheat(
         {
           name: 'rapid production of golden cookies',
           init: function(){
             var self = this;
             var R = null;
             var g = Game.goldenCookie;
             (function(c){
                c=g.choose;
                g.choose=function(){
                  if(!self.enabled) return c();
                  R = g.wraith<=0 ? c() : choose(['chain cookie',
                                                  'blood frenzy']);
                  return R;
                };
              })(g.choose);
             
             (function(C){
                g.click=function(){
                  C();
                  if(!self.enabled) return;
                  setTimeout(function(){g.delay=0;},
                             {'frenzy': 77000,
                              'blood frenzy': 6000,
                              'click frenzy': 6000}[R]||0);
                };
              })(g.click);
           },
           onToggle: function(flag){
             if(!flag) return;
             Game.goldenCookie.life=0;
             Game.goldenCookie.delay=0;
           },
           logic: function(){
           }
         }
       );
    
       new GameX.Cheat(
         {
           name: 'rapid research',
           init: function(){
           },
           logic: function(){
             Game.researchT=0;
           }
         }
       );
    
       new GameX.Autopilot(
         {
           name: 'auto clicking of golden cookies',
           logic: function(){
             var g = Game.goldenCookie;
             if(g.delay == 0)g.click();
           }
         }
       );
    
    
    
       new GameX.Autopilot(
         {
           name: 'auto purchase',
           logic: function(){
    
             if(!Game.Achievements['Just wrong'].won &&
                Game.Objects['Grandma'].amount > 0)
               Game.Objects['Grandma'].sell();
           
             var limit =  {
               'Cursor':200,
               'Grandma': 100,
               'Farm':100,
               'Factory':100,
               'Mine':100,
               'Shipment':100,
               'Alchemy lab':100,
               'Portal':100,
               'Time machine':100,
               'Antimatter condenser':100
             };
    
             if(!Game.Achievements['Mathematician'].won){
               limit = {
                 'Cursor':128,
                 'Grandma':128,
                 'Farm':128,
                 'Factory':64,
                 'Mine':32,
                 'Shipment':16,
                 'Alchemy lab':8,
                 'Portal':4,
                 'Time machine':2,
                 'Antimatter condenser':1
               };
               for(var name in limit){
                 var o = Game.Objects[name];
                 var sell = o.amount - limit[name];
                 for(var i=0;i<sell;i++){
                   o.sell();
                 }
               }
             }else{
               var flag = true;
               for(var obj in limit){
                 if(limit[obj] <= Game.Objects[obj].amount) continue;
                 flag = false;
                 break;
               }
               if(flag){
                 limit['Cursor'] = 0;
                 limit['Grandma'] = 0;
                 limit['Portal'] = 0;
                 limit['Antimatter condenser'] = 0;
               }
             }
    
             var item = {price: Game.cookies+1, buy: function(){}};
             for(var i in Game.ObjectsById)(
               function(o){
                 var max = limit[o.name];
                 if(max > 0 && max <= o.amount) return;
                 if(o.price <= Game.cookies && o.price < item.price){
                   item = {
                     price: o.price,
                     buy: function(){
                       o.buy();
                     }
                   };
                 }
               }
             )(Game.ObjectsById[i]);
             for(var i in Game.UpgradesById)(
               function(o){
                 var price = o.basePrice;
                 if({
                      'One mind': true,
                      'Communal brainsweep': true,
                      'Elder Pact': true,
                      'Elder Pledge': true,
                      'Revoke Elder Covenant':true
                    }[o.name]) return;
                 if(!o.unlocked || o.bought || price > Game.cookies || item.price < price) return;
                 item = {price: price, 
                         buy: function(){
                           o.buy();
                         }};
               }
             )(Game.UpgradesById[i]);
             item.buy();
           }
         }
       );
    
       new GameX.CheatCommand(
         {
           name: "earn heavenly chips",
           action: function(){
             if(Game.prestige['Heavenly chips'] < 1){
               Game.prestige['Heavenly chips'] = 1;
             }else{
               Game.prestige['Heavenly chips'] *= 10;
             }
           }
         }
       );
    
    
       
       GameX.Iter = function(){
         var name;
         for(name in GameX.Autopilots){
           GameX.Autopilots[name].Iter();
         }
         for(name in GameX.Cheats){
           GameX.Cheats[name].Iter();
         }
       };
    
    
       (function(L){
          if(Game._cheat_installed_) return;
          Game._cheat_installed_ = true;
    
          (function(orig){
             Game.UpdateMenu = function(){
               orig();
               if(Game.onMenu == 'prefs'){
                 var subs = document.querySelector('#menu > .subsection');
                 var set = {
                   Autopilot: GameX.Autopilots,
                   Cheat: GameX.Cheats,
                   'Cheat Command': GameX.CheatCommands
                 };
                 for(var section in set) (
                   function(section){
    
                     var title = document.createElement('div');
                     subs.appendChild(title);
                     title.className = 'title';
                     title.appendChild(document.createTextNode(section));
                     var list = document.createElement('div');
                     list.className = 'listing';
                     subs.appendChild(list);
                     for(var name in set[section]){
                       set[section][name].MakeButton(list);
                     }
                   }
                 )(section);
               }
             };
           })(Game.UpdateMenu);
    
          Game.Loop = function(){
            GameX.Iter();
            L();
          };
          Game.Popup('Bookmarklet is installed.<br>Show the [Menu] screen.<br>');
    
        })(Game.Loop);
    
     })();
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2013/09/26 06:20:04 - 2013-09-26
  2. 2013/09/23 07:11:26 - 2013-09-23