- // ==UserScript==
- // @name Automate Arcanum
- // @name:hu Automata Arcanum
- // @namespace https://greasyfork.org/users/390287
- // @version 0.001
- // @description Plays (mostly) automatically instead of you. Work very much in progress.
- // @description:hu Automatizáló script az Arcanum játékhoz.
- // @author Yoyó
- // @icon https://i.ibb.co/Y7W0Zwd/pinkieemote.png
- // @match http://www.lerpinglemur.com/arcanum/
- // @match https://game312933.konggames.com/gamez/0031/2933/*
- // @grant none
- // ==/UserScript==
-
- //user settings
- var timeToIdle = 3; //how many ticks should it take for the idle stuff to kick in. default 3
- var stamToKeep = 80; // stamina to keep for stuff, in percentage. default 80
- var tickTime = 2000; // how many milliseconds should a tick take. default 2000
-
- //program starts here
-
- var idleTimer = 0;
- var idling = 0;
- const data = {
- "qa": { //for quick action
- "Clean Stables":{
- "stam":-0.08,
- "virtue":0.1,
- "gold":0.2
- },
- "Buy Scroll":{
- "gold":-10,
- "scrolls":1
- }
- }
- }
-
- var repetitionIsTheKeyToSuccess = window.setInterval (function(){
- let stamXPath="//div[@class='vitals']//table[@class='bars']//div[@class='stamina']//span[@class='bar-text']";
- let stamText = document.evaluate(stamXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- let stamValues = stamText.textContent.split("/");
- let currentStam = parseFloat(stamValues[0]);
- let maxStam = parseFloat(stamValues[1]);
- let goldXPath = "//div[@class='resource-list']/tr[@class='item-name']/td[text()='gold']/following-sibling::td[@class='num-align']";
- let goldText = document.evaluate(goldXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- let goldValues = goldText.textContent.split("/");
- let currentGold = parseInt(goldValues[0]);
- let maxGold = parseInt(goldValues[1]);
- let pumpkinXPath = "//div[@class='resource-list']/tr[contains(@class,'item-name')]/td[text()='pumpkins🎃']/following-sibling::td[@class='num-align']";
- let pumpkinText = document.evaluate(pumpkinXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- let pumpkinValues = pumpkinText.textContent.split("/");
- let currentPump = parseInt(pumpkinValues[0]);
- let maxPump = parseInt(pumpkinValues[1]);
- let toStam = maxStam*stamToKeep/100;
- let jackoXPath = `//div[@class='resource-list']/tr[contains(@class,'item-name')]/td[text()="jack o' lantern🎃"]/following-sibling::td[@class='num-align']`;
- let jackoText = document.evaluate(jackoXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- let jackoValues = jackoText.textContent.split("/");
- let currentJacko = parseInt(jackoValues[0]);
- let maxJacko = parseInt(jackoValues[1]);
-
- let runningXPath = "//div[@class='vitals']/div[@class='running']/div/span/text()";
- let runningText = document.evaluate(runningXPath, document, null, XPathResult.STRING_TYPE, null);
-
- let restXPath = "//div[@class='vitals']/div[@class='separate']/button[2]";
- let restButton = document.evaluate(restXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- let studyXPath = "//span[@class='action-btn runnable']/button[text()='study']";
- let studyButton = document.evaluate(studyXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- let filchXPath = "//span[@class='action-btn runnable']/button[text()='filch pumpkins🎃']";
- let filchButton = document.evaluate(filchXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- let carveXPath = "//span[@class='action-btn runnable']/button[text()='carve lantern🎃']";
- let carveButton = document.evaluate(carveXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
-
- let cleanStableXPath = "//span[contains(@class,'action-btn')]/button[text()='Clean Stables']";
- let cleanStableButton = document.evaluate(cleanStableXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- if (!cleanStableButton.disabled && currentGold < maxGold && currentStam > toStam) {
- let needToRun = (maxGold - currentGold)/data.qa["Clean Stables"].gold;
- while (needToRun > 0 && !cleanStableButton.disabled && currentStam > toStam) {
- cleanStableButton.click();
- currentStam = currentStam + data.qa["Clean Stables"].stam;
- needToRun = needToRun - 1;
- }
- }
-
- let upgradeXPath = "//div[@class='upgrade-list'][1]/span[@class='action-btn' and not(@class='locked')]/button[@class='wrapped-btn' and not(@disabled)]";
- let upgradeButton = document.evaluate(upgradeXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- if (upgradeButton != null) {
- upgradeButton.click();
- }
-
- let buyScrollXPath = "//span[@class='action-btn']/button[text()='Buy scroll' and not(@disabled)]";
- let buyScrollButton = document.evaluate(buyScrollXPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- if (buyScrollButton !== null && currentGold == maxGold) {
- buyScrollButton.click();
- }
-
- if (idling === 0) {
- idleTimer = idleTimer + 1;
- }
- if (idleTimer >= timeToIdle) {
- idleTimer = 0;
- idling = 1;
- }
- if (idling == 100) {
- if (runningText.stringValue != "studying scrolls") {
- if(runningText.stringValue != "resting") {
- idling = 0;
- }
- }
- }
- if (idling == 2) {
- if (currentPump == maxPump && runningText.stringValue === "") {
- idling = 1;
- }
- }
- if (idling == 3) {
- if (currentJacko == maxJacko) {
- idling = 2;
- filchButton.click();
- }
- }
- if (idling == 1) {
- if (currentStam <= maxStam && runningText.stringValue === "") {
- restButton.click();
- }
- if (currentStam == maxStam && runningText.stringValue === "") {
- if (filchButton !== null) {
- if (!filchButton.disabled) {
- filchButton.click();
- idling = 2;
- } else if (carveButton !== null) {
- carveButton.click();
- idling = 3;
- } else if (studyButton !== null) {
- if (!studyButton.disabled) {
- studyButton.click();
- idling = 100;
- }
- }
- } else if (studyButton !== null) {
- if (!studyButton.disabled) {
- studyButton.click();
- idling = 100;
- }
- }
- }
- }
- },tickTime);