Skillsetter

Allows you to quickly change your skills

  1. // ==UserScript==
  2. // @name Skillsetter
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Allows you to quickly change your skills
  6. // @author Daria
  7. // @license MIT
  8. // @match https://hordes.io/play
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=hordes.io
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. window.addEventListener('load', function() {
  14. 'use strict';
  15.  
  16. let interval = setInterval(function(){
  17. if(document.getElementsByClassName("flexer svelte-e2mar4").length > 0 && document.getElementsByClassName("flexer svelte-e2mar4")[0].id == ""){
  18. let skills = document.getElementsByClassName("panel-bright skillbox svelte-e2mar4")
  19. let flexer = document.getElementsByClassName("flexer svelte-e2mar4")[0]
  20. flexer.id = "taken"
  21. console.log(document.querySelector("#skilllist").childNodes.length)
  22. if(document.querySelector("#skilllist").childNodes.length % 2 == 0){
  23. document.querySelector("#skilllist").append(document.createElement("div"))
  24. }
  25. document.querySelector("#skilllist").append(document.createElement("div"))
  26. let char = localStorage.getItem("lastConnectedChar")
  27. let skillsets = []
  28. if(localStorage.getItem("skillsets") != null){
  29. if(JSON.parse(localStorage.getItem("skillsets"))[char] != null){
  30. skillsets = JSON.parse(localStorage.getItem("skillsets"))[char]
  31. }
  32. } else {
  33. localStorage.setItem("skillsets", JSON.stringify({}))
  34. }
  35. for(let i = 0; i < skillsets.length; i++){
  36. createButton2(i)
  37. }
  38. let apply = document.getElementById("tutapplyskills")
  39. flexer.addEventListener('click', (e) => {
  40. if(e.target.id.substring(1) == "skillset"){
  41. let index = parseInt(e.target.id.substring(0, 1))
  42. let btn = e.target
  43. if(e.shiftKey){
  44. skillsets.splice(index, 1)
  45. let charsets = JSON.parse(localStorage.getItem("skillsets"))
  46. charsets[char] = skillsets
  47. localStorage.setItem("skillsets", JSON.stringify(charsets))
  48. btn.remove()
  49. } else {
  50. for(let i = 0; i < skills.length; i++){
  51. let clicks = skills[i].getElementsByClassName("btn incbtn white svelte-e2mar4").length + skills[i].childNodes[1].getElementsByClassName("btn incbtn green svelte-e2mar4").length
  52. for(let j = 0; j < clicks; j++){
  53. skills[i].getElementsByClassName("btn incbtn grey svelte-e2mar4")[skills[i].getElementsByClassName("btn incbtn grey svelte-e2mar4").length - 1].click()
  54. }
  55. }
  56. let timeout = setTimeout(function(){
  57. for(let i = 0; i < skills.length; i++){
  58.  
  59. for(let j = 0; j < skillsets[index][i + 1]; j++){
  60. let plus = skills[i].getElementsByClassName("btn incbtn green svelte-e2mar4")
  61. if (plus.length > 0){
  62. plus[skills[i].getElementsByClassName("btn incbtn green svelte-e2mar4").length - 1].click()
  63. }
  64. }
  65. }
  66. apply.click()
  67. }, 100)
  68.  
  69. }
  70. }
  71. })
  72. apply.addEventListener('click', (e) => {
  73. if(e.shiftKey){
  74. createButton()
  75. skillsets = JSON.parse(localStorage.getItem("skillsets"))[char]
  76. }
  77. })
  78.  
  79.  
  80. }
  81. }, 10)
  82.  
  83. function createButton(){
  84. let char = localStorage.getItem("lastConnectedChar")
  85. let skillsets = []
  86. if(localStorage.getItem("skillsets") != null){
  87. if(JSON.parse(localStorage.getItem("skillsets"))[char] != null){
  88. skillsets = JSON.parse(localStorage.getItem("skillsets"))[char]
  89. }
  90. } else {
  91. localStorage.setItem("skillsets", JSON.stringify({}))
  92. }
  93. let elem = document.createElement("div")
  94. elem.className = "l-upperLeftModal container uiscaled svelte-voya4q"
  95. let elem2 = document.createElement("div")
  96. elem2.className = "window panel-black svelte-yjs4p5"
  97. elem.append(elem2)
  98. let input = document.createElement("input")
  99. input.placeholder = "Choose name"
  100. let btn = document.createElement("div")
  101. btn.className = "btn purp"
  102. btn.textContent = "Create"
  103. elem2.append(input, btn)
  104. document.getElementsByClassName("container svelte-1j9lddf")[0].append(elem)
  105. btn.addEventListener('click', function(){
  106. elem2.remove()
  107. let skillset = []
  108. let name = input.value
  109. skillset.push(name)
  110. document.getElementsByClassName("container svelte-1j9lddf")[0].append(elem)
  111. let skills = document.getElementsByClassName("panel-bright skillbox svelte-e2mar4")
  112. for(let i = 0; i < skills.length; i++){
  113. skillset.push(skills[i].getElementsByClassName("btn incbtn white svelte-e2mar4").length)
  114. }
  115. btn = document.createElement("div")
  116. btn.className = "btn navbtn grey"
  117. btn.textContent = name
  118. btn.id = skillsets.length + "skillset"
  119. skillsets.push(skillset)
  120. let charsets = JSON.parse(localStorage.getItem("skillsets"))
  121. charsets[char] = skillsets
  122. localStorage.setItem("skillsets", JSON.stringify(charsets))
  123. console.log()
  124. document.getElementById("skilllist").insertBefore(btn, document.getElementById("skilllist").lastChild)
  125. })
  126.  
  127. }
  128. function createButton2(n){
  129. let char = localStorage.getItem("lastConnectedChar")
  130. let skillsets = []
  131. if(localStorage.getItem("skillsets") != null){
  132. if(JSON.parse(localStorage.getItem("skillsets"))[char] != null){
  133. skillsets = JSON.parse(localStorage.getItem("skillsets"))[char]
  134. }
  135. } else {
  136. localStorage.setItem("skillsets", JSON.stringify({}))
  137. }
  138. let btn = document.createElement("div")
  139. btn.className = "btn navbtn grey"
  140. btn.textContent = skillsets[n][0]
  141. btn.id = n + "skillset"
  142. document.getElementsByClassName("scrollbar skilllist svelte-e2mar4")[0].insertBefore(btn, document.getElementsByClassName("scrollbar skilllist svelte-e2mar4")[0].lastChild)
  143. }
  144. });