NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Castle Age Alchemy // @namespace Castle Age alchemy // @description It will perform alchemy! // @author Yack // @include https://web3.castleagegame.com/castle_ws/* // @exclude https://web3.castleagegame.com/castle_ws/connect_login.php // @require http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js // @version 1.11 // @grant GM_registerMenuCommand // @grant GM_xmlhttpRequest // @grant GM_info // ==/UserScript== var front = 'https://web3.castleagegame.com/castle_ws/alchemy.php?alchemy_id='; var ca_panel_ = "#app_body_container"; var display = false; var currAlchemy = 0; var textAlchemy = ""; var fullURL=[], alchemyName=[], timesAlchemy = []; /* if want all the recipes to be combined through alchemy // var noAlchemy = []; // if there are some things you don't want combined it should look // like below (names of the items are copied EXACTLY from the recipe page) // var noAlchemy = ["Limited Time: 5500 Guild Coins + 875 XP","EARTH ORB","MEDIUS"]; // NOTE: noAlchemy AFFECTS BOTH manual-alchemy AND auto-alchemy */ var noAlchemy = []; //Create Panel function get_panel() { var ca_panel = $("#ca_gift_panel"); if(!ca_panel.size()) { ca_panel = $("<div id='ca_gift_panel'></div>").css({ position : 'fixed', top : '25px', left : '5px', padding : '5px', border : 'solid 1px black', background : 'white' }); ca_panel.appendTo(ca_panel_); } return ca_panel; } //Remove Panel function remove_panel() { var ca_panel = get_panel(); if(!ca_panel.children().size()) ca_panel.remove(); } //Create inner Panel function get_sub_panel(id) { var ca_sub_panel = $("#" + id); if(!ca_sub_panel.size()) { ca_sub_panel = $("<div id='"+id+"'>Loading....</div>").css({ height : '60px', width : '420px', padding : '5px', border : 'solid 1px black', background : 'white' }); get_panel().append(ca_sub_panel); } return ca_sub_panel; } //Remove Inner Panel function remove_sub_panel(id) { var ca_sub_panel = get_sub_panel(id); ca_sub_panel.remove(); remove_panel(); } //finds possible alchemy function possibleAlchemy(){ currAlchemy = 0; textAlchemy = ""; fullURL=[]; alchemyName=[]; timesAlchemy = []; var formsCollection = document.getElementsByTagName("form"); for(var i=0;i<formsCollection.length;i++) if(formsCollection[i].id.contains("doQst_")){ var aName = formsCollection[i].parentNode.parentNode.parentNode.childNodes[5].childNodes[1].textContent.trim(); if($.inArray(aName, noAlchemy)<=-1){ var fE = formsCollection[i]; var linkURL = front + fE.elements[0].value + '&action=' + fE.elements[4].value; fullURL[fullURL.length] = linkURL; alchemyName[alchemyName.length] = aName; } } } //automated alchemy function doit(){ if(currAlchemy>=timesAlchemy.length){ alert(textAlchemy); location.reload(); }else{ $.post(fullURL[currAlchemy], function(data,status){ if(/You have created/.test(data)) { timesAlchemy[currAlchemy] = timesAlchemy[currAlchemy] + 1; if(display) get_sub_panel('ca_alch').text("You created " + timesAlchemy[currAlchemy] + " " +alchemyName[currAlchemy] + " through alchemy."); setTimeout( function() { doit(currAlchemy);}, 3000); }else if(/You are missing/.test(data)){ textAlchemy += "You created " + timesAlchemy[currAlchemy] + " " + alchemyName[currAlchemy] + ".\n"; setTimeout( function() { currAlchemy++; doit(currAlchemy);}, 3000); }else{ alert("Error"); } }); } } //for auto alchemy function auto_do_alch() { for(var i = 0; i < fullURL.length; i++) timesAlchemy[i] = 0; if(display) get_sub_panel('ca_alch').text("Starting alchemy process"); doit(); } //set auto alchemy up function auto_alchemy() { if($('.recipe').length > 0){ possibleAlchemy(); if(fullURL.length>0){ var ca_alch = get_sub_panel('ca_alch'); ca_alch.html("Gathering ingredients"); display = true; auto_do_alch(); }else { alert("Nothing to combine"); location.reload(); } } else{ alert("Taking you to alchemy's page"); $("#globalContainer").load('alchemy.php?tab=1'); } } //for manual function do_alch(link, num) { if(num > 0) { if(display) get_sub_panel('ca_alch').text("Creating " + num + " more " + textAlchemy); $.post(link, function(data,status) { if(/You have created/.test(data)) { setTimeout( function() { num--; do_alch(link, num);}, 3000); }else if(/You are missing/.test(data)){ alert('Not enough ingredients for ' + textAlchemy); $("#globalContainer").load('alchemy.php?tab=1'); }else { alert('Error Occured'); $("#globalContainer").load('alchemy.php?tab=1'); } }); } else { alert('Finished making ' + textAlchemy); location.reload(); } } //set manual alchemy function manual_alchemy() { if($('.recipe').length > 0){ possibleAlchemy(); if(fullURL.length>0){ var ca_alch = get_sub_panel('ca_alch'), selectReci = $("<select></select>"), freq = $("<input type=\"number\" id=\"userFreq\" min=\"1\" max=\"100\" step=\"1\" value=\"1\" size=\"4\" maxlength=\"2\">"), buttonSub = $("<button >Combine!</button>"); $.each(alchemyName, function(idx) { selectReci.append("<option value='" + fullURL[idx] + "'>" + alchemyName[idx] + "</option"); }); buttonSub.click(function() { var freqs = parseInt(document.getElementById("userFreq").value); if(freqs>0){ display = true; textAlchemy = selectReci[0].options[selectReci[0].selectedIndex].innerHTML; do_alch($(":selected", selectReci).attr("value"), freqs); ca_alch.html("After creating " + freqs + " " + textAlchemy +", you will be notified..."); } else alert("Times to combine has to be over 0"); }); ca_alch.html("Choose the item you want to get through alchemy:<br/>"); ca_alch.append(selectReci, freq, buttonSub); }else { alert("Nothing to combine"); location.reload(); } } else{ alert("Taking you to alchemy page"); $("#globalContainer").load('alchemy.php?tab=1'); } } //Updation of script function checkUpdate() { GM_xmlhttpRequest({ method : 'GET', url : 'https://openuserjs.org/install/Yack/Castle_Age_Alchemy.user.js', onload : function( response ) { var remoteVersion = response.responseText.match(/^\/\/\s\@version\s+(\d+\.\d+)/m)[1]; if( GM_info.script.version < remoteVersion ) { if( confirm( 'There is a newer version available.' + '\nClick OK to update' ) ) { setTimeout( function() { unsafeWindow.location.href = 'https://openuserjs.org/install/Yack/Castle_Age_Alchemy.user.js'; }, 3000 ); } } else { alert('No Updates for Castle Age Alchemy'); } } }); } //you can // in front of the manual or auto if you will never use it, or you can delete GM_registerMenuCommand('CA Manual-Alchemy', manual_alchemy); GM_registerMenuCommand('CA Auto-Alchemy', auto_alchemy); GM_registerMenuCommand('CA Alchemy - Check for update', checkUpdate );