(Modified with add pages) Heasley's Egg Navigator

Traverse every page in Torn in search for eggs

  1. // ==UserScript==
  2. // @name (Modified with add pages) Heasley's Egg Navigator
  3. // @namespace egg.traverse
  4. // @version 1.5.2
  5. // @description Traverse every page in Torn in search for eggs
  6. // @author Heasleys4hemp [1468764] Mod by SlikSteel [3143713]
  7. // @match https://www.torn.com/*
  8. // @grant GM.addStyle
  9. // @grant GM.registerMenuCommand
  10. // @run-at document-start
  11. // @license MIT
  12. // @require https://www.torn.com/js/script/lib/jquery-1.8.2.js
  13. // ==/UserScript==
  14. 'use strict';
  15. var ButtonFloat = parseInt(localStorage.getItem('eeh-float')) || 0;
  16. var ButtonFloatPos = parseInt(localStorage.getItem('eeh-float-pos')) || 0; //0 = bottom-left ; 1 = top-left; 2 = bottom-right; 3 = top-right
  17. var linkIndex = localStorage.getItem('eeh-index') || 0;
  18. var eeh_pressTimer, eeh_anim_pressTimer;
  19. var eeh_reset_time = 9800;
  20. var eeh_fade_in = 200;
  21. var eeh_is_disabled = false;
  22. var eeh_holding = false;
  23.  
  24.  
  25.  
  26. if (typeof GM == 'undefined') {
  27. window.GM = {};
  28. }
  29.  
  30. if (typeof GM.addStyle == "undefined") { //Add GM.addStyle for browsers that do not support it (e.g. TornPDA, Firefox+Greasemonkey)
  31. GM.addStyle = function (aCss) {
  32. 'use strict';
  33. let head = document.getElementsByTagName('head')[0];
  34. if (head) {
  35. let style = document.createElement('style');
  36. style.setAttribute('type', 'text/css');
  37. style.textContent = aCss;
  38. head.appendChild(style);
  39. return style;
  40. }
  41. return null;
  42. };
  43. }
  44.  
  45. if (typeof GM.registerMenuCommand != "undefined") {
  46. GM.registerMenuCommand('Toggle Floating Button', toggleFloatButton,
  47. {
  48. autoClose: false
  49. }
  50. );
  51.  
  52. GM.registerMenuCommand('Toggle Float Position', toggleFloatPosition,
  53. {
  54. autoClose: false
  55. }
  56. );
  57. }
  58.  
  59. const obs_ops = {attributes: false, childList: true, characterData: false, subtree:true};
  60.  
  61. const easteregg_svg = `<svg xmlns="http://www.w3.org/2000/svg" fill="#AFC372" stroke="transparent" stroke-width="0" width="13" height="17" viewBox="0 0 14 18"><path d="M1.68,16a5.6,5.6,0,0,0,.43.41A5.72,5.72,0,0,0,3,17a4.73,4.73,0,0,0,.74.39,5.08,5.08,0,0,0,.8.3,5.35,5.35,0,0,0,.69.17,8.62,8.62,0,0,0,.87.11h.84a8.46,8.46,0,0,0,.88-.11l.69-.17a7.14,7.14,0,0,0,.81-.31q.38-.18.72-.39a6.57,6.57,0,0,0,.9-.67,5.14,5.14,0,0,0,.41-.4A6.3,6.3,0,0,0,13,11.67a8.86,8.86,0,0,0-.09-1.21c0-.31-.1-.64-.17-1s-.2-.85-.33-1.29-.3-.93-.48-1.39-.33-.81-.51-1.2c-.1-.2-.19-.39-.29-.58L11,4.72c-.18-.33-.4-.69-.64-1s-.4-.55-.62-.82A4.41,4.41,0,0,0,6.5,1,4.41,4.41,0,0,0,3.29,2.86a9.15,9.15,0,0,0-.61.82c-.24.34-.44.68-.62,1L1.87,5l-.33.66c-.16.36-.32.72-.46,1.09S.74,7.7.61,8.16a13.14,13.14,0,0,0-.34,1.3,10,10,0,0,0-.18,1A8.47,8.47,0,0,0,0,11.67a6.29,6.29,0,0,0,.89,3.25A6.63,6.63,0,0,0,1.68,16ZM1.27,14.8a.7.7,0,0,1,.4.38,1.4,1.4,0,0,1,.09.29A6.38,6.38,0,0,1,1.27,14.8Zm1,1.15c.17-.14.46,0,.66.32a1.41,1.41,0,0,1,.14.31A5.55,5.55,0,0,1,2.22,16Zm1.41,1a.44.44,0,0,1,.2-.39c.22-.11.52.1.67.46a1.28,1.28,0,0,1,.09.32A6.22,6.22,0,0,1,3.63,16.94Zm1.58.55a.47.47,0,0,1,.27-.4c.22-.06.46.16.57.51A7.4,7.4,0,0,1,5.21,17.49ZM7,17.6c.11-.35.35-.57.57-.51a.49.49,0,0,1,.27.39A5.66,5.66,0,0,1,7,17.6Zm1.46-.28A1.18,1.18,0,0,1,8.52,17c.16-.36.46-.57.67-.46a.43.43,0,0,1,.2.38A7.27,7.27,0,0,1,8.44,17.32ZM10,16.56a.84.84,0,0,1,.13-.29c.19-.31.47-.44.65-.33A7.57,7.57,0,0,1,10,16.56Zm1.26-1.14a.75.75,0,0,1,.08-.24.72.72,0,0,1,.36-.37A6.76,6.76,0,0,1,11.28,15.42Zm1.06-6q.11.51.18,1a.73.73,0,0,1-.37-.4A.44.44,0,0,1,12.34,9.45ZM10.49,4.67l.3.54c.11.2.21.41.31.63a.85.85,0,0,1-.65-.4C10.24,5.12,10.26,4.78,10.49,4.67Zm-.41,2.2c-.25.09-.58-.12-.74-.46s-.09-.68.16-.76a.69.69,0,0,1,.74.46C10.4,6.45,10.33,6.79,10.08,6.87ZM7.22,1.49a3.3,3.3,0,0,1,1,.51.5.5,0,0,1-.14.59.68.68,0,0,1-.86-.28A.61.61,0,0,1,7.22,1.49Zm-2.39.45a3.34,3.34,0,0,1,1-.46.6.6,0,0,1,0,.83A.66.66,0,0,1,5,2.59.53.53,0,0,1,4.83,1.94ZM3.58,3.12a4.75,4.75,0,0,0,2.91.93A4.7,4.7,0,0,0,9.42,3.1c.24.3.47.62.68.92A4.5,4.5,0,0,1,6.49,5.39,4.46,4.46,0,0,1,2.9,4,9.35,9.35,0,0,1,3.58,3.12ZM7.93,7.54c-.29,0-.57-.25-.64-.64a.59.59,0,0,1,.38-.76c.29,0,.57.25.64.63S8.21,7.5,7.93,7.54Zm-2-.64c-.07.39-.36.67-.65.64s-.45-.38-.38-.77.36-.67.64-.63A.6.6,0,0,1,5.9,6.9Zm-3-.79a.69.69,0,0,1,.74-.46c.25.08.32.42.16.76s-.49.55-.74.46S2.78,6.45,2.94,6.11Zm-.73-.9c.08-.16.18-.33.28-.51.17.14.17.45,0,.74a.89.89,0,0,1-.57.39C2,5.62,2.1,5.41,2.21,5.21ZM1.38,7.08A7.89,7.89,0,0,0,6.52,8.7a7.91,7.91,0,0,0,5.11-1.6c.19.5.36,1,.5,1.52-1,1.2-3.11,2-5.61,2S1.83,9.8.88,8.58C1,8.09,1.19,7.58,1.38,7.08ZM11.55,11.5A.59.59,0,0,1,11,11a.46.46,0,0,1,.4-.57.59.59,0,0,1,.56.52A.47.47,0,0,1,11.55,11.5Zm-1.68.85a.6.6,0,0,1-.59-.5.45.45,0,0,1,.36-.59.62.62,0,0,1,.59.51A.45.45,0,0,1,9.87,12.35Zm-1.77,0a.56.56,0,0,1-.53.57.57.57,0,0,1-.51-.6.52.52,0,1,1,1,0Zm-2,0a.56.56,0,0,1-.5.6.59.59,0,0,1,0-1.17A.55.55,0,0,1,6.06,12.27Zm-2.21-.42a.61.61,0,0,1-.59.5.45.45,0,0,1-.36-.58.6.6,0,0,1,.59-.51A.46.46,0,0,1,3.85,11.85ZM2.13,11a.58.58,0,0,1-.56.52.46.46,0,0,1-.39-.57.59.59,0,0,1,.56-.52A.46.46,0,0,1,2.13,11ZM.65,9.48A.46.46,0,0,1,.78,10a.69.69,0,0,1-.29.36C.53,10.11.59,9.8.65,9.48ZM.38,11.67a4.84,4.84,0,0,1,0-.53c.74,1.68,3.19,3,6.1,3s5.33-1.32,6.09-3c0,.17,0,.35,0,.51a5.86,5.86,0,0,1-.39,2.11C11.21,15.09,9,16,6.51,16S1.75,15.06.75,13.73A5.84,5.84,0,0,1,.38,11.67Z"></path></svg>`;
  62. const EVERY_LINK = ["", "index.php","page.php?sid=ammo","page.php?sid=factionWarfare#/ranked","factions.php?step=your&type=12#/tab=controls&option=members","factions.php?step=your&type=5#/tab=territory","factions.php?step=your&type=12#/tab=rank","forums.php#/p=threads&f=67&t=16326854&b=0&a=0","city.php","jobs.php","gym.php","properties.php","page.php?sid=education",
  63. "crimes.php","loader.php?sid=missions","personalstats.php?ID=3143713&stats=useractivity&from=1%20month","newspaper.php","jailview.php","hospitalview.php",
  64. "casino.php","page.php?sid=education&category=4&course=35","page.php?sid=hof","factions.php","competition.php","page.php?sid=list&type=friends",
  65. "page.php?sid=list&type=enemies","page.php?sid=education&category=1&course=1","page.php?sid=list&type=targets","messages.php","page.php?sid=events","awards.php","points.php","rules.php",
  66. "staff.php","credits.php","dump.php#/trash","citystats.php","committee.php","bank.php","donator.php","messages.php#/p=ignorelist","item.php",
  67. "page.php?sid=stocks","fans.php","museum.php","loader.php?sid=racing","church.php",
  68. "dump.php","loan.php","page.php?sid=travel","joblisting.php","messages.php#/p=outbox","amarket.php","page.php?sid=education&category=9&course=87","bigalgunshop.php","shops.php?step=bitsnbobs",
  69. "shops.php?step=cyberforce","shops.php?step=docks","page.php?sid=education&category=6&course=53","shops.php?step=jewelry",
  70. "shops.php?step=nikeh","page.php?sid=report#/add","shops.php?step=pawnshop","shops.php?step=pharmacy","pmarket.php",
  71. "shops.php?step=postoffice","shops.php?step=super","shops.php?step=candy",
  72. "shops.php?step=clothes","shops.php?step=recyclingcenter","shops.php?step=printstore","page.php?sid=ItemMarket","estateagents.php","bazaar.php?userId=1",
  73. "calendar.php","token_shop.php","freebies.php","bringafriend.php","messages.php#/p=saved","comics.php","archives.php","joblist.php",
  74. "newspaper_class.php","personals.php","profiles.php?XID=3143713","page.php?sid=education&category=11&course=103","page.php?sid=education&category=12&course=112","newspaper.php#/archive",
  75. "profiles.php?XID=1",
  76. "bounties.php","page.php?sid=education&category=2&course=14","forums.php#!p=forums&f=999&b=1&a=48809","page.php?sid=education&category=8&course=71","usersonline.php","joblist.php?step=search#!p=corpinfo&ID=79286","page.php?sid=log","page.php?sid=ammo","playerreport.php",
  77. "loader.php?sid=itemsMods","displaycase.php","page.php?sid=education&category=10&course=89","trade.php",
  78. "crimes.php?step=criminalrecords","awards.php#/merits","awards.php#/medals","page.php?sid=factionWarfare#/dirty-bombs",
  79. "index.php?page=fortune","page.php?sid=bunker","church.php?step=proposals",
  80. "messageinc.php","preferences.php","messageinc2.php#!p=main","page.php?sid=gallery&XID=1","personalstats.php?ID=1",
  81. "properties.php?step=rentalmarket","pmarket.php","properties.php?step=sellingmarket","forums.php",
  82. "page.php?sid=slots",
  83. "page.php?sid=roulette","page.php?sid=education&category=3&course=22","page.php?sid=education&category=5&course=51","page.php?sid=highlow","page.php?sid=keno","page.php?sid=craps",
  84. "page.php?sid=bookie","page.php?sid=lottery","page.php?sid=blackjack",
  85. "page.php?sid=holdem","page.php?sid=russianRoulette","page.php?sid=spinTheWheel",
  86. "page.php?sid=spinTheWheelLastSpins","page.php?sid=slotsStats",
  87. "page.php?sid=slotsLastRolls","page.php?sid=rouletteStatistics","page.php?sid=rouletteLastSpins",
  88. "page.php?sid=highlowStats","page.php?sid=highlowLastGames",
  89. "page.php?sid=kenoStatistics","page.php?sid=kenoLastGames","page.php?sid=crapsStats",
  90. "page.php?sid=crapsLastRolls","page.php?sid=bookie#/stats/","page.php?sid=lotteryTicketsBought",
  91. "page.php?sid=lotteryPreviousWinners","page.php?sid=blackjackStatistics",
  92. "page.php?sid=blackjackLastGames","page.php?sid=holdemStats",
  93. "loader.php?sid=viewRussianRouletteLastGames","loader.php?sid=viewRussianRouletteStats",
  94. "messageinc2.php#!p=viewall","bazaar.php#/add",
  95. "bazaar.php#/personalize","factions.php?step=your#/tab=crimes",
  96. "factions.php?step=your#/tab=rank","page.php?sid=events#onlySaved=true",
  97. "factions.php?step=your#/tab=controls","factions.php?step=your#/tab=info","messages.php#/p=ignorelist",
  98. "messages.php#/p=outbox","factions.php?step=your#/tab=upgrades",
  99. "messages.php#/p=saved","messages.php#/p=compose","displaycase.php#add","displaycase.php#manage",
  100. "factions.php?step=your#/tab=armoury","bazaar.php#/manage","companies.php",
  101. "itemuseparcel.php","index.php?page=rehab","index.php?page=people","christmas_town.php",
  102. "christmas_town.php#/mymaps","christmas_town.php#/parametereditor","christmas_town.php#/npceditor",
  103. "page.php?sid=UserList","index.php?page=hunting","old_forums.php","donatordone.php","revive.php","pc.php",
  104. "loader.php?sid=attackLog","loader.php?sid=attack&user2ID=1","loader.php?sid=crimes","loader.php?sid=crimes#/searchforcash",
  105. "loader.php?sid=crimes#/bootlegging","loader.php?sid=crimes#/graffiti","loader.php?sid=crimes#/shoplifting",
  106. "loader.php?sid=crimes#/pickpocketing","loader.php?sid=crimes#/cardskimming","loader.php?sid=crimes#/burglary","loader.php?sid=crimes#/hustling",
  107. "loader.php?sid=crimes#/disposal","loader.php?sid=crimes#/cracking","loader.php?sid=crimes#/forgery","loader.php?sid=crimes#/scamming",
  108. "/war.php?step=rankreport&rankID=69","/war.php?step=warreport&warID=420","/war.php?step=raidreport&raidID=69",
  109. "/war.php?step=chainreport&chainID=69420", "page.php?sid=keepsakes",
  110. "page.php?sid=crimes2","authenticate.php"];
  111.  
  112. const eeeh_options_observer = new MutationObserver(function(mutations) {
  113. const url = window.location.href;
  114. if (url.includes("forums.php")) {
  115. if (url.includes("f=67&t=16326854") && $('li.parent-post[data-id="23383506"]').length) {
  116. if (!document.getElementsByClassName("eeh-options").length) {
  117. insertOptions();
  118. }
  119. eeeh_options_observer.disconnect();
  120. }
  121. } else {
  122. eeeh_options_observer.disconnect();
  123. }
  124. });
  125.  
  126. const eeeh_observer = new MutationObserver(function(mutations) {
  127. if (document.getElementById("eggTraverse")) {
  128. eeeh_observer.disconnect();
  129. return;
  130. }
  131.  
  132. if (ButtonFloat) {
  133. //insert floating button
  134. if (document.getElementsByTagName('body')[0]) {
  135. insertFloat();
  136. eeeh_observer.disconnect();
  137. return;
  138. }
  139. } else {
  140. // Insert into sidebar
  141. if (document.querySelector('#sidebar > div:first-of-type')) {
  142. insertNormal(); // Insert normal sidebar version
  143. eeeh_observer.disconnect();
  144. return;
  145. }
  146. }
  147. });
  148.  
  149.  
  150. window.addEventListener(
  151. "hashchange",
  152. () => {
  153. hashChanged();
  154. },
  155. false,
  156. );
  157.  
  158. eeeh_observer.observe(document, obs_ops);
  159. eeeh_options_observer.observe(document, obs_ops);
  160.  
  161. function hashChanged() {
  162. const url = window.location.href;
  163. if (url.includes("forums.php")) {
  164. eeeh_options_observer.observe(document, obs_ops);
  165. }
  166. if (eeh_is_disabled) {
  167. setTimeout(() => {
  168. eeh_is_disabled = false;
  169. }, "1000");
  170. }
  171. }
  172.  
  173. function getEggLabel(eggButtonType) {
  174. let eggLabel = `Egg Navigator (${linkIndex})`;
  175. if (eggButtonType == "float") {
  176. eggLabel = `#${linkIndex}`;
  177. }
  178. return eggLabel;
  179. }
  180.  
  181. function setEggTraverseClickEvent(eggButtonType) {
  182. var eggTraverse = $('#eggTraverse');
  183. var egg_icon = eggTraverse.find('.eeh-icon');
  184. eggTraverse.on('mousedown touchstart', function(e) {
  185. eeh_anim_pressTimer = window.setTimeout(function() {
  186. eeh_holding = true;
  187. egg_icon.fadeOut(eeh_reset_time);
  188.  
  189. eeh_pressTimer = window.setTimeout(function() {
  190. if (eeh_holding) {
  191. linkIndex = 0;
  192. egg_icon.fadeIn(eeh_fade_in);
  193. localStorage.setItem("eeh-index", linkIndex);
  194. eggTraverse.attr('href', EVERY_LINK[0]);
  195. eggTraverse.find('.eeh-name').text(getEggLabel(eggButtonType));
  196. }
  197. }, eeh_reset_time);
  198.  
  199. }, eeh_fade_in);
  200. }).on('mouseup touchend mouseleave', function(e){
  201. clearTimeout(eeh_anim_pressTimer);
  202. if (eeh_holding) {
  203. clearTimeout(eeh_pressTimer);
  204. eeh_holding = false;
  205. egg_icon.stop(true, true).fadeIn(eeh_fade_in);
  206. }
  207. }).contextmenu(function(e) {
  208. e.preventDefault();
  209. e.stopPropagation();
  210. e.stopImmediatePropagation();
  211. return false;
  212. }).on('click', function(e) {
  213. if (eeh_holding) {
  214. eeh_holding = false;
  215. egg_icon.stop(true, true).fadeIn(eeh_fade_in);
  216. }
  217. if (window.event.ctrlKey) {
  218. //ctrl was held down during the click
  219. incrementEggTraverse(eggButtonType);
  220. } else {
  221. //normal click
  222. if (!eeh_is_disabled) {
  223. eeh_is_disabled = true;
  224. incrementEggTraverse(eggButtonType);
  225. } else {
  226. e.preventDefault();
  227. }
  228. }
  229. });
  230. }
  231.  
  232. function incrementEggTraverse(eggButtonType) {
  233. var eggTraverse = $('#eggTraverse');
  234. linkIndex++;
  235. if (linkIndex >= EVERY_LINK.length) linkIndex = 0;
  236. localStorage.setItem("eeh-index", linkIndex);
  237. eggTraverse.attr('href', EVERY_LINK[linkIndex]);
  238. eggTraverse.find('.eeh-name').text(getEggLabel(eggButtonType));
  239. }
  240.  
  241. function insertNormal() {
  242. console.log("[Heasley][Egg Navigator] Inserting to sidebar...");
  243. if (!document.getElementById("eggTraverse")) {
  244. let href = EVERY_LINK[linkIndex];
  245.  
  246. let easterspans = `<div class="eeh-link">
  247. <a href="${href}" id="eggTraverse">
  248. <span class="eeh-icon">${easteregg_svg}</span>
  249. <span class="eeh-name">Egg Navigator (${linkIndex})</span>
  250. </a>
  251. </div>`;
  252.  
  253. const sidebar = document.getElementById('sidebar');
  254. if (sidebar.firstChild) {
  255. // Insert the easterspans HTML string after the first child element of sidebar
  256. $('#sidebar > *').first().after(easterspans);
  257. setEggTraverseClickEvent("sidebar");
  258. }
  259. insertStyle();
  260. }
  261. }
  262.  
  263. function insertFloat() {
  264. console.log("[Heasley][Egg Navigator] Inserting floating button...");
  265. if (!document.getElementById("eggTraverse")) {
  266. let href = EVERY_LINK[linkIndex];
  267. const eeh_float = `<a href="${href}" id="eggTraverse" class="eeh-float">
  268. <span class="eeh-icon">${easteregg_svg}</span>
  269. <span class="eeh-name"> #${linkIndex}</span>
  270. </a>`;
  271.  
  272. $('body').append(eeh_float);
  273.  
  274. setFloatPosition();
  275. setEggTraverseClickEvent("float");
  276. insertStyle();
  277. }
  278. }
  279.  
  280. function insertOptions() {
  281. console.log("[Heasley][Egg Navigator] Inserting options...");
  282. if (!document.getElementsByClassName("eeh-options").length) {
  283. const post = $('li.parent-post[data-id="23383506"]').find('div.post-container div.post');
  284. let enabled_float = ButtonFloat ? "enabled" : "disabled";
  285. let enabledClass_float = ButtonFloat ? "eeh-green" : "eeh-red";
  286.  
  287. let enabled_float_pos;
  288.  
  289. switch(ButtonFloatPos) {
  290. case 0:
  291. enabled_float_pos = "bottom left";
  292. break;
  293. case 1:
  294. enabled_float_pos = "top left";
  295. break;
  296. case 2:
  297. enabled_float_pos = "bottom right";
  298. break;
  299. case 3:
  300. enabled_float_pos = "top right";
  301. break;
  302. }
  303.  
  304. post.before(`
  305. <div class="eeh-options"><button id="eeh-float-toggle">Toggle floating button</button>
  306. <p>Floating button: <span id="eeh-float-toggle-label" class="${enabledClass_float}">${enabled_float}</span></p>
  307. </div>
  308. <div class="eeh-options"><button id="eeh-float-pos-toggle">Toggle float position</button>
  309. <p>Float position: <span id="eeh-float-pos-toggle-label">${enabled_float_pos}</span></p>
  310. </div>
  311. `);
  312.  
  313. $('#eeh-float-toggle').click(function() {
  314. let label = $('#eeh-float-toggle-label');
  315. if (toggleFloatButton()) {
  316. label.text("enabled");
  317. } else {
  318. label.text("disabled");
  319. }
  320. label.toggleClass('eeh-green eeh-red');
  321. });
  322.  
  323. $('#eeh-float-pos-toggle').click(function() {
  324. let label = $('#eeh-float-pos-toggle-label');
  325. switch(toggleFloatPosition()) {
  326. case 0:
  327. label.text("bottom left");
  328. break;
  329. case 1:
  330. label.text("top left");
  331. break;
  332. case 2:
  333. label.text("bottom right");
  334. break;
  335. case 3:
  336. label.text("top right");
  337. break;
  338. default:
  339. label.text("Float button is not enabled");
  340. }
  341.  
  342. });
  343. }
  344. }
  345.  
  346. function insertStyle() {
  347. GM.addStyle(`
  348. .eeh-link {
  349. background-color: var(--default-bg-panel-color);
  350. cursor: pointer;
  351. overflow: hidden;
  352. vertical-align: top;
  353. border-bottom-right-radius: 5px;
  354. border-top-right-radius: 5px;
  355. margin-top: 2px;
  356. height: 23px;
  357. margin-bottom: 2px;
  358. }
  359.  
  360. .eeh-link:hover {
  361. background-color: var(--default-bg-panel-active-color);
  362. }
  363.  
  364. .eeh-link a {
  365. display: flex;
  366. -ms-align-items: center;
  367. align-items: center;
  368. color: var(--default-color);
  369. text-decoration: none;
  370. height: 100%;
  371. }
  372.  
  373. .eeh-link a .eeh-icon {
  374. float: left;
  375. width: 34px;
  376. height: 23px;
  377. display: flex;
  378. -ms-align-items: center;
  379. align-items: center;
  380. justify-content: center;
  381. margin-left: 0;
  382. }
  383.  
  384. .eeh-link a .eeh-icon {
  385. stroke: transparent;
  386. stroke-width: 0;
  387. }
  388.  
  389. .eeh-link a .eeh-name {
  390. line-height: 22px;
  391. padding-top: 1px;
  392. overflow: hidden;
  393. max-width: 134px;
  394. }
  395.  
  396. .eeh-float.eeh-float-right .eeh-icon {
  397. order: 1;
  398. }
  399.  
  400. .eeh-float.eeh-float-left .eeh-icon {
  401. order: 2;
  402. }
  403.  
  404. .eeh-float.eeh-float-right .eeh-name {
  405. margin-left: 5px;
  406. order: 2;
  407. }
  408.  
  409. .eeh-float.eeh-float-left .eeh-name {
  410. margin-right: 5px;
  411. order: 1;
  412. }
  413.  
  414. .eeh-float .eeh-icon svg {
  415. width: 20px !important;
  416. height: 26px !important;
  417. }
  418.  
  419. #eggTraverse.eeh-float {
  420. z-index: 999999;
  421. height: 40px;
  422. width: 80px;
  423. cursor: pointer;
  424. padding: 10px 15px 10px 15px;
  425. box-sizing: border-box;
  426. border: 1px solid var(--default-panel-divider-outer-side-color);
  427. position: fixed;
  428. box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
  429. display: flex;
  430. align-items: center;
  431. text-shadow: var(--default-tabs-text-shadow);
  432. background: var(--info-msg-bg-gradient);
  433. box-shadow: var(--default-tabs-box-shadow);
  434. border-radius: 5px;
  435. overflow: hidden;
  436. font-size: 15px;
  437. font-weight: 700;
  438. line-height: 18px;
  439. font-family: arial;
  440. color: var(--default-color);
  441. text-decoration: none;
  442. }
  443.  
  444. #eggTraverse.eeh-float.eeh-float-top {
  445. top: 80px;
  446. }
  447.  
  448. #eggTraverse.eeh-float.eeh-float-bottom {
  449. bottom: 80px;
  450. }
  451.  
  452. #eggTraverse.eeh-float.eeh-float-left {
  453. left: -10px;
  454. padding-right: 5px;
  455. justify-content: right;
  456. }
  457.  
  458. #eggTraverse.eeh-float.eeh-float-right {
  459. right: -10px;
  460. padding-left: 5px;
  461. justify-content: left;
  462. }
  463.  
  464. [class*='topSection_'] .eeh-icon-svg-wrap {
  465. position: absolute;
  466. -ms-transform: translate(-120%, 10%);
  467. transform: translate(-120%, 10%);
  468. }
  469.  
  470. .content-wrapper > #easterrandom .eeh-icon-svg-wrap {
  471. position: absolute;
  472. -ms-transform: translate(-140%, 10%);
  473. transform: translate(-140%, 10%);
  474. }
  475.  
  476. .eeh-options {
  477. margin: 20px;
  478. margin-left: 0px;
  479. }
  480.  
  481. .eeh-options p {
  482. margin-top: 5px;
  483. margin-left: 2px;
  484. font-size: 15px;
  485. font-weight: 700;
  486. line-height: 18px;
  487. font-family: arial;
  488. }
  489.  
  490. .eeh-options button {
  491. background: transparent linear-gradient(180deg ,#CCCCCC 0%,#999999 60%,#666666 100%) 0 0 no-repeat;
  492. border-radius: 5px;
  493. font-family: Arial,sans-serif;
  494. font-size: 14px;
  495. font-weight: 700;
  496. text-align: center;
  497. letter-spacing: 0;
  498. color: #333;
  499. text-shadow: 0 1px 0 #ffffff66;
  500. text-decoration: none;
  501. text-transform: uppercase;
  502. margin: 0;
  503. border: none;
  504. outline: none;
  505. overflow: visible;
  506. box-sizing: border-box;
  507. line-height: 16px;
  508. padding: 4px 8px;
  509. height: auto;
  510. white-space: nowrap;
  511. cursor: pointer;
  512. margin-right: 5px;
  513. }
  514.  
  515. .eeh-green {
  516. color: var(--user-status-green-color);
  517. }
  518.  
  519. .eeh-red {
  520. color: var(--user-status-red-color);
  521. }
  522.  
  523.  
  524. @media screen and (max-width: 1000px) {
  525. html:not(.html-manual-desktop) [class*='topSection_'] #easterrandom span.eeh-text, .content-wrapper > #easterrandom span.eeh-text {
  526. display: none;
  527. }
  528.  
  529. [class*='topSection_'] .eeh-icon-svg-wrap {
  530. -ms-transform: translate(-140%, -110%);
  531. transform: translate(-140%, -110%);
  532. }
  533.  
  534. html:not(.html-manual-desktop) #eggTraverse.eeh-float.eeh-float-top {
  535. top: 170px !important;
  536. }
  537. }
  538.  
  539. /* SVG Colors */
  540. .eeh-link svg, .eeh-icon-svg svg {
  541. filter: drop-shadow(0px 0.7px 0.1px #fff);
  542. width: 13px !important;
  543. height: 17px !important;
  544. }
  545. .eeh-icon-svg svg path {
  546. fill: #AFC372 !important;
  547. }
  548. body.dark-mode .eeh-icon svg, body.dark-mode .eeh-icon-svg svg {
  549. filter: drop-shadow(0px 0px 1.3px #000);
  550. }
  551.  
  552. /* Torn Edits */
  553. .members-cont>.member-item>a[href="profiles.php?XID=1468764"]>.member>.member-header {
  554. color: #E0CE00 !important;
  555. }
  556.  
  557. .members-cont>.member-item>a[href="profiles.php?XID=1468764"]>.member>.member-cont>span::after {
  558. content: "👑 " url("https://profileimages.torn.com/ad324318-744c-c686-1468764.gif?v=1940629196397");
  559. }
  560. `);
  561. }
  562.  
  563. function killButton() {
  564. console.log("[Heasley][Egg Navigator] Killing button...");
  565. let eeh_button = document.getElementById("eggTraverse");
  566. if (eeh_button) {
  567. let parent = eeh_button.closest(`.eeh-link`);
  568. if (parent) {
  569. parent.remove();
  570. } else {
  571. eeh_button.remove();
  572. }
  573. }
  574. }
  575.  
  576. function toggleFloatButton() {
  577. killButton();
  578. if (ButtonFloat) {
  579. ButtonFloat = 0;
  580. insertNormal();
  581. } else {
  582. ButtonFloat = 1;
  583. insertFloat();
  584. }
  585. localStorage.setItem("eeh-float", ButtonFloat);
  586. return ButtonFloat;
  587. }
  588.  
  589. function toggleFloatPosition() {
  590. let float_button = document.querySelector("#eggTraverse.eeh-float");
  591. if (!float_button) return;
  592.  
  593. console.log("[Heasley][Egg Navigator] Changing float position...");
  594. ButtonFloatPos++;
  595. if (ButtonFloatPos >= 4) ButtonFloatPos = 0; //cycle back to 0=bottom-left
  596. setFloatPosition();
  597. return ButtonFloatPos;
  598. }
  599.  
  600. function setFloatPosition() {
  601. let float_button = document.querySelector("#eggTraverse.eeh-float");
  602. if (!float_button) return;
  603.  
  604. float_button.classList.remove("eeh-float-bottom", "eeh-float-top", "eeh-float-left", "eeh-float-right");
  605.  
  606. switch(ButtonFloatPos) {
  607. case 0:
  608. float_button.classList.add("eeh-float-bottom", "eeh-float-left");
  609. break;
  610. case 1:
  611. float_button.classList.add("eeh-float-top", "eeh-float-left");
  612. break;
  613. case 2:
  614. float_button.classList.add("eeh-float-bottom", "eeh-float-right");
  615. break;
  616. case 3:
  617. float_button.classList.add("eeh-float-top", "eeh-float-right");
  618. break;
  619. default:
  620. float_button.classList.add("eeh-float-bottom", "eeh-float-left");
  621. }
  622.  
  623. localStorage.setItem("eeh-float-pos", ButtonFloatPos);
  624. }