zeeSpecialTypes

Show if physical or virtual for all special types.

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

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