CandyHaXs

A Script allowing you to cheat in Candybox 2.

// ==UserScript==
// @name        CandyHaXs
// @description A Script allowing you to cheat in Candybox 2.
// @include     http://candybox2.net/*
// @version     1
// @grant       none
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @namespace https://greasyfork.org/users/2236
// ==/UserScript==

//Game Container
var gameHax = 0;

// Magic Injection :P
(function() {
    var candiesEaten = Game.prototype.getCandiesEaten;
    Object.defineProperty(Game.prototype, "getCandiesEaten", {
        get: function() {
            gameHax = this;
            return candiesEaten;
        }
    });
})();

// Append everything
$(function() {
    setupWindow();
    addNumber("addCandies", "Add Candies", addCandies);
    addNumber("addLollipops", "Add Lollipops", addLollipops);
    addNumber("addChocolate", "Add Chocolate Bars", addChocolate);
    addNumber("addPains", "Add Pains Au Chocolat", addPains);
    addButton("fullHealth", "Refill Health", fullHealth);
    addButton("showButtons", "Reveal hidden Areas", showASCIIButtons);
});

function setupWindow() {
    $('#aroundStatusBar').append('<div id="hackmenu"><div id="hackwindow"></div><div id="toggle">H4X0R</div></div>');
    $('head').append('<style>'+css+'</style>');
    
    $('#hackwindow').hide();
    $('#hackmenu #toggle').click(function() {
        if ($('#hackmenu #hackwindow').is(':hidden')) 
            $('#hackmenu #hackwindow').slideDown();
        else
            $('#hackmenu #hackwindow').slideUp();
    });
}

function addNumber(name, label, func) {
    $('#hackwindow').append('<div id="'+name+'" class="number"><label for="'+name+'">'+label+'</label><input id="num_'+name+'" name="num_'+name+'" type="text" /></div>');
    $('#num_'+name).pressEnter(func);
}

function addButton(name, label, func) {
    $('#hackwindow').append('<div id="'+name+'" class="button"><label for="'+name+'">'+label+'</label><div id="but_'+name+'" class="button_set">Click</button></div>');
    $('#but_'+name).click(func);
}

function addCheckbox(name, label, func) {
    $('#hackwindow').append('<div id="'+name+'" class="check"><label for="'+name+'">'+label+'</label><input id="chk_'+name+'" name="chk_'+name+'" type="checkbox" /></div>');
    $('#chk_'+name).click(func);
}

// --------------------------------------------- Real Cheats ----------------------------------------------------

function addCandies(e) {
    if (gameHax != 0) {
        var candies = parseInt($(this).val());
        if (!isNaN(candies))
           gameHax.getCandies().add(candies);
    }
}

function addLollipops(e) {
    if (gameHax != 0) {
        var lollipops = parseInt($(this).val());
        if (!isNaN(lollipops))
           gameHax.getLollipops().add(lollipops);
    }
}

function addChocolate(e) {
    if (gameHax != 0) {
        var chocolate = parseInt($(this).val());
        if (!isNaN(chocolate))
           gameHax.getChocolateBars().add(chocolate);
    }
}

function addPains(e) {
    if (gameHax != 0) {
        var pains = parseInt($(this).val());
        if (!isNaN(pains))
           gameHax.getPainsAuChocolat().add(pains);
    }
}

function fullHealth(e) {
    if (gameHax != 0) {
        gameHax.getPlayer().hp = gameHax.getPlayer().maxHp;
    }
}

function showASCIIButtons(e) {
    if (gameHax != 0) {
        $("<style>.asciiButton{background-color: rgba(0,0,255,0.2);} .aroundComment{background-color: rgba(0,255,0,0.2);} .asciiNinjaButton{background-color: rgba(255,0,0,0.2);}</style>").appendTo('head');
    }
}

// ------------------------------------------------ CSS ---------------------------------------------------------

var css = '\
#hackmenu {\
    position: absolute;\
    left: 0px;\
    top: 0px;\
    font-family: "Verdana", sans-serif;\
    font-size: 14px;\
}\
#hackmenu #toggle {\
    width: 50px;\
    height: 20px;\
    cursor: pointer;\
}\
#hackwindow {\
    background-color: #333333;\
    height: 500px;\
    width: 335px;\
    text-align: left; \
    padding: 1px 0px 0px;\
}\
.button {\
    height: 30px; \
    margin: 5px;\
}\
.button:after {\
    clear: both; \
    display: block;\
    content: "";\
}\
.button label {\
    padding: 5px;\
    height: 20px; \
    width: 150px;\
    color: #ffffff; \
    display: block;\
    float: left;\
}\
.button .button_set {\
    padding: 2px;\
    height: 20px; \
    width: 150px;\
    margin-left: 160px;\
    display: block;\
    background-color: #DDDDDD;\
    border: 1px solid #666666;\
    border-radius: 2px;\
    text-align: center;\
}\
.number {\
    height: 30px; \
    margin: 5px;\
}\
.number:after {\
    clear: both; \
    display: block;\
    content: "";\
}\
.number label {\
    padding: 5px;\
    height: 20px; \
    width: 150px;\
    color: #ffffff; \
    display: block;\
    float: left;\
}\
.number input {\
    padding: 2px;\
    height: 20px; \
    margin-left: 160px;\
    width: 150px;\
    display: block;\
}\
.check {\
    height: 30px; \
    margin: 5px;\
}\
.check:after {\
    clear: both; \
    display: block;\
    content: "";\
}\
.check label {\
    padding: 5px;\
    height: 20px; \
    width: 150px;\
    color: #ffffff; \
    display: block;\
    float: left;\
}\
.check input {\
    margin-left: 160px;\
    display: block;\
}\
\
';

$.fn.pressEnter = function(fn) {  

    return this.each(function() {  
        $(this).bind('enterPress', fn);
        $(this).keyup(function(e){
            if(e.keyCode == 13)
            {
              $(this).trigger("enterPress");
            }
        })
    });  
 };