zeeSpecialTypes

Show if physical or virtual for all special types.

当前为 2019-05-20 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name zeeSpecialTypes
  3. // @namespace none
  4. // @version 2019.05.20.1532ß
  5. // @description Show if physical or virtual for all special types.
  6. // @author technical13
  7. // @supportURL https://discord.me/TheShoeStore
  8. // @match https://www.munzee.com/specials*
  9. // @match https://www.munzee.com/map*
  10. // @grant none
  11. // ==/UserScript==
  12. // jshint esversion: 6
  13.  
  14. var isDebug = false;
  15. var intVerbosity = 0;
  16. const ver = '2019.05.20.1532ß';
  17. const scriptName = 'zeeSpecialTypes v' + ver;
  18.  
  19. function log( intV, strConsole, strLog, ...arrArgs ) {
  20. if ( strConsole === undefined ) { strConsole = 'log'; }
  21. if ( strLog === undefined ) { strLog = '%o'; }
  22. if ( intVerbosity >= intV && ( strConsole === 'groupEnd' ) ) { console[ strConsole ](); }
  23. if ( intV === 0 || ( isDebug && intVerbosity >= intV ) ) { console[ strConsole ]( '[%i]: %s: ' + strLog, intV, scriptName, ...arrArgs ); }
  24. }
  25.  
  26. const intParamsStart = ( document.URL.indexOf( '?' ) + 1 );
  27. const strParams = document.URL.substr( intParamsStart );
  28. const arrParamSets = strParams.split( '&' );
  29. var objParams = {};
  30. arrParamSets.forEach( function( strParam ) {
  31. let arrParam = strParam.split( '=' );
  32. let strParamName = ( arrParam[ 0 ].toLowerCase() || '' );
  33. if ( strParamName === 'verbosity' ) {
  34. isDebug = toBoolean( arrParam[ 1 ] );
  35. intVerbosity = ( arrParam[ 1 ] ? ( parseInt( arrParam[ 1 ] ) < 0 ? 0 : ( parseInt( arrParam[ 1 ] ) > 9 ? 9 : parseInt( arrParam[ 1 ] ) ) ) : 9 );
  36. } else if ( strParamName === 'debug' ) {
  37. isDebug = toBoolean( arrParam[ 1 ] );
  38. intVerbosity = 1;
  39. }
  40. } );
  41.  
  42. log( 1, 'warn', 'Debug mode is on with verbosity level: %o', intVerbosity );
  43. log( 1, 'groupCollapsed', 'Verbosity options: (click to expand)' );
  44. log( 1, 'log', '1) Summary\n2) Parameters retrieved from URL\n3) Variables set to objParams\n4) Function returns\n9) ALL debugging info and this notice.' );
  45. log( 1, 'groupEnd' );
  46.  
  47. function toBoolean( val ) {
  48. const arrTrue = [ undefined, null, '', true, 'true', 1, '1', 'on', 'yes' ];
  49. val = ( typeof( val ) === 'string' ? val.toLowerCase() : val );
  50.  
  51. log( 4, 'log', 'toBoolean() is returning: %o', ( arrTrue.indexOf( val ) !== -1 ? true : false ) );
  52. return ( arrTrue.indexOf( val ) !== -1 ? true : false );
  53. }
  54.  
  55. const objTypes = {
  56. 0: 'physical',// munzee - greenie
  57. 40: 'physical',// diamond
  58. 52: 'physical',// mace
  59. 53: 'physical',// longsword
  60. 131: 'physical',// ruby
  61. 140: 'physical',// battleaxe
  62. 218: 'physical',// aquamarine
  63. 242: 'physical',// topaz
  64. 280: 'physical',// mystery
  65. 290: 'virtual',// virtual_amethyst
  66. 306: 'virtual',// crossbow
  67. 535: 'virtual',// flatrob
  68. 441: 'physical',// shamrock
  69. 510: 'physical',// munzeemadnessreseller
  70. 511: 'physical',// geostuffreseller
  71. 512: 'physical',// geohobbiesreseller
  72. 513: 'physical',// ddcardsreseller
  73. 514: 'physical',// negsreseller
  74. 515: 'physical',//geologgersreseller
  75. 516: 'physical',// mmcocoabeachreseller
  76. 532: 'physical',// firemystery
  77. 550: 'physical',// rujareseller
  78. 584: 'physical',// pinkdiamond
  79. 651: 'physical',// icemystery
  80. 681: 'virtual',// virtual_sapphire
  81. 696: 'physical',// scgsreseller
  82. 851: 'physical',// earthmystery
  83. 998: 'physical',// hammer
  84. 1015: 'virtual',// flatmatt
  85. 1020: 'physical',// watermystery
  86. 1057: 'physical',// treasurechest
  87. 1086: 'virtual',// airmystery
  88. 1248: 'virtual',// catapult
  89. 1271: 'physical',// dogchinesezodiac
  90. 1272: 'physical',// pigchinesezodiac
  91. 1273: 'physical',// ratchinesezodiac
  92. 1274: 'physical',// oxchinesezodiac
  93. 1275: 'physical',// tigerchinesezodiac
  94. 1276: 'physical',// rabbitchinesezodiac
  95. 1277: 'physical',// dragonchinesezodiac
  96. 1278: 'physical',// snakechinesezodiac
  97. 1279: 'physical',// horsechinesezodiac
  98. 1280: 'physical',// goatchinesezodiac
  99. 1281: 'physical',// monkeychinesezodiac
  100. 1282: 'physical',// roosterchinesezodiac
  101. 1338: 'virtual',// flatlou
  102. 1409: 'virtual',// virtual
  103. 1410: 'virtual',// virtual_rainbow
  104. 1411: 'virtual',// virtual_timberwolf
  105. 1412: 'virtual',// virtual_silver
  106. 1413: 'virtual',// virtual_gray
  107. 1414: 'virtual',// virtual_black
  108. 1415: 'utl',// virtual_color
  109. 1416: 'utl',// virtual_color
  110. 1417: 'virtual',// virtual_purple_mountains_majesty
  111. 1418: 'virtual',// virtual_violet
  112. 1419: 'virtual',// virtual_plum
  113. 1420: 'virtual',// virtual_blue_violet
  114. 1421: 'virtual',// virtual_blue
  115. 1422: 'utl',// virtual_color
  116. 1423: 'virtual',// virtual_cadet_blue
  117. 1424: 'virtual',// virtual_periwinkle
  118. 1425: 'virtual',// virtual_cornflower
  119. 1426: 'virtual',// virtual_blue_green
  120. 1427: 'virtual',// virtual_pacific_blue
  121. 1428: 'virtual',// virtual_cerulean
  122. 1429: 'virtual',// virtual_robin_egg_blue
  123. 1430: 'virtual',// virtual_indigo
  124. 1431: 'virtual',// virtual_turquoise_blue
  125. 1432: 'virtual',// virtual_sea_green
  126. 1433: 'virtual',// virtual_granny_smith_apple
  127. 1434: 'virtual',// virtual_green
  128. 1435: 'virtual',// virtual_forest_green
  129. 1436: 'virtual',// virtual_asparagus
  130. 1437: 'utl',// virtual_color
  131. 1438: 'virtual',// virtual_yellow_green
  132. 1439: 'virtual',// virtual_green_yellow
  133. 1440: 'virtual',// virtual_spring_green
  134. 1441: 'virtual',// virtual_gold
  135. 1442: 'virtual',// virtual_yellow
  136. 1443: 'virtual',// virtual_goldenrod
  137. 1444: 'virtual',// virtual_dandelion
  138. 1445: 'virtual',// virtual_orange
  139. 1446: 'virtual',// virtual_burnt_orange
  140. 1447: 'utl',// virtual_color
  141. 1448: 'utl',// virtual_color
  142. 1449: 'virtual',// virtual_pink
  143. 1450: 'virtual',// virtual_carnation_pink
  144. 1451: 'virtual',// virtual_mauvelous
  145. 1452: 'utl',// virtual_color
  146. 1453: 'utl',// virtual_color
  147. 1454: 'virtual',// virtual_magenta
  148. 1455: 'virtual',// virtual_wild_strawberry
  149. 1456: 'virtual',// virtual_violet_red
  150. 1457: 'virtual',// virtual_red_violet
  151. 1458: 'virtual',// virtual_apricot
  152. 1459: 'virtual',// virtual_peach
  153. 1460: 'virtual',// virtual_macaroni_and_cheese
  154. 1461: 'virtual',// virtual_tan
  155. 1462: 'utl',// virtual_color
  156. 1463: 'virtual',// virtual_bittersweet
  157. 1464: 'virtual',// virtual_red_orange
  158. 1465: 'virtual',// virtual_scarlet
  159. 1466: 'virtual',// virtual_red
  160. 1467: 'virtual',// virtual_brick_red
  161. 1468: 'virtual',// virtual_mahogany
  162. 1469: 'virtual',// virtual_chestnut
  163. 1470: 'utl',// virtual_color
  164. 1471: 'virtual',// virtual_raw_sienna
  165. 1472: 'utl',// virtual_color
  166. 1473: 'virtual',// virtual_brown
  167. 1581: 'virtual'// flathammock
  168. };
  169. const arrUndefinedTypes = [
  170. 'banshee', 'gorgon',// Banshee
  171. 'limebutterfly', 'monarchbutterfly', 'morphobutterfly',// Butterly
  172. 'cyclops', 'ogre', 'retiredcyclops',// Cyclops
  173. 'cherub',// Cherub
  174. 'chinesedragon', 'wyverndragon',// Dragon
  175. 'fairy', 'dryadfairy', 'wildfirefairy', 'fairygodmother',// Fairy
  176. // 'beachflatrob', 'coldflatrob', 'tuxflatrob',// haven't found the icon variants on the website yet.// Flat Rob
  177. 'hadavale',// Hadaval
  178. 'chimera',// Hydra
  179. 'dwarfleprechaun', 'goblinleprechaun',// Leprechaun
  180. 'melusinemermaid',// Mermaid
  181. 'firepegasus',// Pegasus
  182. 'pimedus'// Pimedus
  183. ];
  184.  
  185. ( function() {
  186. 'use strict';
  187.  
  188. setTimeout( () => {
  189. for ( var ndxMarker in mapMarkers ) {
  190. var intBaseType = mapMarkers[ ndxMarker ].capture_type_id;
  191. var arrMarkerType = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.match( /"https:\/\/((.*)?\/([\w]*)\.([\a-z0-9]{3,4}))\"/i );
  192. var strMarkerType = arrMarkerType[ 3 ];
  193. if ( arrUndefinedTypes.indexOf( strMarkerType ) !== -1 ) {
  194. let strDefinedType = '';
  195. switch ( objTypes[ intBaseType ] ) {
  196. case 'physical':
  197. case 'virtual':
  198. strDefinedType = strMarkerType + '_' + objTypes[ intBaseType ];
  199. break;
  200. case 'utl':
  201. strDefinedType = 'maintenance';
  202. console.info( 'base: %i;Marker: %s', intBaseType, strMarkerType );
  203. break;
  204. default:
  205. strDefinedType = 'owned';
  206. console.error( 'base: %i;Marker: %s', intBaseType, strMarkerType );
  207. }
  208.  
  209. mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.replace( strMarkerType, strDefinedType );
  210. }
  211. }
  212. }, 2500 );
  213.  
  214. map.on( 'move', mapChanged => {
  215. log( 2, 'log', 'map.changed: %o', mapChanged );
  216. setTimeout( () => {
  217. for ( var ndxMarker in mapMarkers ) {
  218. var intBaseType = mapMarkers[ ndxMarker ].capture_type_id;
  219. var arrMarkerType = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.match( /"https:\/\/((.*)?\/([\w]*)\.([\a-z0-9]{3,4}))\"/i );
  220. var strMarkerType = arrMarkerType[ 3 ];
  221. if ( arrUndefinedTypes.indexOf( strMarkerType ) !== -1 ) {
  222. let strDefinedType = '';
  223. switch ( objTypes[ intBaseType ] ) {
  224. case 'physical':
  225. case 'virtual':
  226. strDefinedType = strMarkerType + '_' + objTypes[ intBaseType ];
  227. break;
  228. case 'utl':
  229. strDefinedType = 'maintenance';
  230. console.info( 'base: %i;Marker: %s', intBaseType, strMarkerType );
  231. break;
  232. default:
  233. strDefinedType = 'owned';
  234. console.error( 'base: %i;Marker: %s', intBaseType, strMarkerType );
  235. }
  236.  
  237. mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.replace( strMarkerType, strDefinedType );
  238. }
  239. }
  240. }, 1300 );
  241. } );
  242.  
  243. map.on( 'zoom', mapChanged => {
  244. log( 2, 'log', 'map.changed: %o', mapChanged );
  245. setTimeout( () => {
  246. for ( var ndxMarker in mapMarkers ) {
  247. var intBaseType = mapMarkers[ ndxMarker ].capture_type_id;
  248. var arrMarkerType = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.match( /"https:\/\/((.*)?\/([\w]*)\.([\a-z0-9]{3,4}))\"/i );
  249. var strMarkerType = arrMarkerType[ 3 ];
  250. if ( arrUndefinedTypes.indexOf( strMarkerType ) !== -1 ) {
  251. let strDefinedType = '';
  252. switch ( objTypes[ intBaseType ] ) {
  253. case 'physical':
  254. case 'virtual':
  255. strDefinedType = strMarkerType + '_' + objTypes[ intBaseType ];
  256. break;
  257. case 'utl':
  258. strDefinedType = 'maintenance';
  259. console.info( 'base: %i;Marker: %s', intBaseType, strMarkerType );
  260. break;
  261. default:
  262. strDefinedType = 'owned';
  263. console.error( 'base: %i;Marker: %s', intBaseType, strMarkerType );
  264. }
  265.  
  266. mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.replace( strMarkerType, strDefinedType );
  267. }
  268. }
  269. }, 1300 );
  270. } );
  271. } )();