Greasy Fork is available in English.

zeeSpecialTypes

Show if physical or virtual for all special types.

اعتبارا من 08-05-2019. شاهد أحدث إصدار.

// ==UserScript==
// @name         zeeSpecialTypes
// @namespace    none
// @version      2019.05.07.2007.2ß
// @description  Show if physical or virtual for all special types.
// @author       technical13
// @supportURL   https://discord.me/TheShoeStore
// @updateURL
// @match        https://www.munzee.com/specials*
// @match        https://www.munzee.com/map*
// @grant        none
// ==/UserScript==
// jshint esversion: 6

var isDebug = false;
var intVerbosity = 0;
const ver = '2019.05.07.2007ß';
const scriptName = 'zeeSpecialTypes v' + ver;

function log( intV, strConsole, strLog, ...arrArgs ) {
    if ( strConsole === undefined ) { strConsole = 'log'; }
    if ( strLog === undefined ) { strLog = '%o'; }
    if ( intVerbosity >= intV && ( strConsole === 'groupEnd' ) ) { console[ strConsole ](); }
    if ( intV === 0 || ( isDebug && intVerbosity >= intV ) ) { console[ strConsole ]( '[%i]: %s: ' + strLog, intV, scriptName, ...arrArgs ); }
}

const intParamsStart = ( document.URL.indexOf( '?' ) + 1 );
const strParams = document.URL.substr( intParamsStart );
const arrParamSets = strParams.split( '&' );
var objParams = {};
arrParamSets.forEach( function( strParam ) {
    let arrParam = strParam.split( '=' );
    let strParamName = ( arrParam[ 0 ].toLowerCase() || '' );
    if ( strParamName === 'verbosity' ) {
        isDebug = toBoolean( arrParam[ 1 ] );
        intVerbosity = ( arrParam[ 1 ] ? ( parseInt( arrParam[ 1 ] ) < 0 ? 0 : ( parseInt( arrParam[ 1 ] ) > 9 ? 9 : parseInt( arrParam[ 1 ] ) ) ) : 9 );
    } else if ( strParamName === 'debug' ) {
        isDebug = toBoolean( arrParam[ 1 ] );
        intVerbosity = 1;
    }
} );

log( 1, 'warn', 'Debug mode is on with verbosity level: %o', intVerbosity );
log( 1, 'groupCollapsed', 'Verbosity options: (click to expand)' );
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.' );
log( 1, 'groupEnd' );

function toBoolean( val ) {
    const arrTrue = [ undefined, null, '', true, 'true', 1, '1', 'on', 'yes' ];
    val = ( typeof( val ) === 'string' ? val.toLowerCase() : val );

    log( 4, 'log', 'toBoolean() is returning: %o', ( arrTrue.indexOf( val ) !== -1 ? true : false ) );
    return ( arrTrue.indexOf( val ) !== -1 ? true : false );
}

const objTypes = {
    0: 'physical',// munzee - greenie
    40: 'physical',// diamond
    52: 'physical',// mace
    53: 'physical',// longsword
    131: 'physical',// ruby
    140: 'physical',// battleaxe
    218: 'physical',// aquamarine
    242: 'physical',// topaz
    280: 'physical',// mystery
    290: 'virtual',// virtual_amethyst
    306: 'virtual',// crossbow
    535: 'virtual',// flatrob
    441: 'physical',// shamrock
    510: 'physical',// munzeemadnessreseller
    511: 'physical',// geostuffreseller
    512: 'physical',// geohobbiesreseller
    513: 'physical',// ddcardsreseller
    514: 'physical',// negsreseller
    515: 'physical',//geologgersreseller
    516: 'physical',// mmcocoabeachreseller
    532: 'physical',// firemystery
    550: 'physical',// rujareseller
    584: 'physical',// pinkdiamond
    651: 'physical',// icemystery
    681: 'virtual',// virtual_sapphire
    696: 'physical',// scgsreseller
    851: 'physical',// earthmystery
    998: 'physical',// hammer
    1015: 'virtual',// flatmatt
    1020: 'physical',// watermystery
    1057: 'physical',// treasurechest
    1086: 'virtual',// airmystery
    1248: 'virtual',// catapult
    1271: 'physical',// dogchinesezodiac
    1272: 'physical',// pigchinesezodiac
    1273: 'physical',// ratchinesezodiac
    1274: 'physical',// oxchinesezodiac
    1275: 'physical',// tigerchinesezodiac
    1276: 'physical',// rabbitchinesezodiac
    1277: 'physical',// dragonchinesezodiac
    1278: 'physical',// snakechinesezodiac
    1279: 'physical',// horsechinesezodiac
    1280: 'physical',// goatchinesezodiac
    1281: 'physical',// monkeychinesezodiac
    1282: 'physical',// roosterchinesezodiac
    1338: 'virtual',// flatlou
    1409: 'virtual',// virtual
    1410: 'virtual',// virtual_rainbow
    1411: 'virtual',// virtual_timberwolf
    1412: 'virtual',// virtual_silver
    1413: 'virtual',// virtual_gray
    1414: 'virtual',// virtual_black
    1415: 'utl',// virtual_color
    1416: 'utl',// virtual_color
    1417: 'virtual',// virtual_purple_mountains_majesty
    1418: 'virtual',// virtual_violet
    1419: 'virtual',// virtual_plum
    1420: 'virtual',// virtual_blue_violet
    1421: 'virtual',// virtual_blue
    1422: 'utl',// virtual_color
    1423: 'virtual',// virtual_cadet_blue
    1424: 'virtual',// virtual_periwinkle
    1425: 'virtual',// virtual_cornflower
    1426: 'virtual',// virtual_blue_green
    1427: 'virtual',// virtual_pacific_blue
    1428: 'virtual',// virtual_cerulean
    1429: 'virtual',// virtual_robin_egg_blue
    1430: 'virtual',// virtual_indigo
    1431: 'virtual',// virtual_turquoise_blue
    1432: 'virtual',// virtual_sea_green
    1433: 'virtual',// virtual_granny_smith_apple
    1434: 'virtual',// virtual_green
    1435: 'virtual',// virtual_forest_green
    1436: 'virtual',// virtual_asparagus
    1437: 'utl',// virtual_color
    1438: 'virtual',// virtual_yellow_green
    1439: 'virtual',// virtual_green_yellow
    1440: 'virtual',// virtual_spring_green
    1441: 'virtual',// virtual_gold
    1442: 'virtual',// virtual_yellow
    1443: 'virtual',// virtual_goldenrod
    1444: 'virtual',// virtual_dandelion
    1445: 'virtual',// virtual_orange
    1446: 'virtual',// virtual_burnt_orange
    1447: 'utl',// virtual_color
    1448: 'utl',// virtual_color
    1449: 'virtual',// virtual_pink
    1450: 'virtual',// virtual_carnation_pink
    1451: 'virtual',// virtual_mauvelous
    1452: 'utl',// virtual_color
    1453: 'utl',// virtual_color
    1454: 'virtual',// virtual_magenta
    1455: 'virtual',// virtual_wild_strawberry
    1456: 'virtual',// virtual_violet_red
    1457: 'virtual',// virtual_red_violet
    1458: 'virtual',// virtual_apricot
    1459: 'virtual',// virtual_peach
    1460: 'virtual',// virtual_macaroni_and_cheese
    1461: 'virtual',// virtual_tan
    1462: 'utl',// virtual_color
    1463: 'virtual',// virtual_bittersweet
    1464: 'virtual',// virtual_red_orange
    1465: 'virtual',// virtual_scarlet
    1466: 'virtual',// virtual_red
    1467: 'virtual',// virtual_brick_red
    1468: 'virtual',// virtual_mahogany
    1469: 'virtual',// virtual_chestnut
    1470: 'utl',// virtual_color
    1471: 'virtual',// virtual_raw_sienna
    1472: 'utl',// virtual_color
    1473: 'virtual',// virtual_brown
    1581: 'virtual'// flathammock
};
const arrUndefinedTypes = [
    'banshee',// Banshee
    'limebutterfly', 'monarchbutterfly', 'morphobutterfly',// Butterly
    'cyclops', 'ogre',// Cyclops
    'cherub',// Cherub
    'chinesedragon', 'wyverndragon',// Dragon
    'fairy', 'dryadfairy', 'wildfirefairy', 'fairygodmother',// Fairy
    //    'beachflatrob', 'coldflatrob', 'tuxflatrob',// haven't found the icon variants on the website yet.// Flat Rob
    'hadavale',// Hadaval
    'chimera',// Hydra
    'dwarfleprechaun', 'goblinleprechaun',// Leprechaun
    'melusinemermaid',// Mermaid
    'firepegasus',// Pegasus
    'pimedus'// Pimedus
];

( function() {
    'use strict';

    setTimeout( () => {
        for ( var ndxMarker in mapMarkers ) {
            var intBaseType = mapMarkers[ ndxMarker ].capture_type_id;
            var arrMarkerType = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.match( /"https:\/\/((.*)?\/([\w]*)\.([\a-z0-9]{3,4}))\"/i );
            var strMarkerType = arrMarkerType[ 3 ];
            if ( arrUndefinedTypes.indexOf( strMarkerType ) !== -1 ) {
                let strDefinedType = '';
                switch ( objTypes[ intBaseType ] ) {
                    case 'physical':
                    case 'virtual':
                        strDefinedType = strMarkerType + '_' + objTypes[ intBaseType ];
                        break;
                    case 'utl':
                        strDefinedType = 'maintenance';
                        console.info( 'base: %i;Marker: %s', intBaseType, strMarkerType );
                        break;
                    default:
                        strDefinedType = 'owned';
                        console.error( 'base: %i;Marker: %s', intBaseType, strMarkerType );
                }

                mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.replace( strMarkerType, strDefinedType );
            }
        }
    }, 2500 );

    map.on( 'move', mapChanged => {
        log( 2, 'log', 'map.changed: %o', mapChanged );
        setTimeout( () => {
            for ( var ndxMarker in mapMarkers ) {
                var intBaseType = mapMarkers[ ndxMarker ].capture_type_id;
                var arrMarkerType = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.match( /"https:\/\/((.*)?\/([\w]*)\.([\a-z0-9]{3,4}))\"/i );
                var strMarkerType = arrMarkerType[ 3 ];
                if ( arrUndefinedTypes.indexOf( strMarkerType ) !== -1 ) {
                    let strDefinedType = '';
                    switch ( objTypes[ intBaseType ] ) {
                        case 'physical':
                        case 'virtual':
                            strDefinedType = strMarkerType + '_' + objTypes[ intBaseType ];
                            break;
                        case 'utl':
                            strDefinedType = 'maintenance';
                            console.info( 'base: %i;Marker: %s', intBaseType, strMarkerType );
                            break;
                        default:
                            strDefinedType = 'owned';
                            console.error( 'base: %i;Marker: %s', intBaseType, strMarkerType );
                    }

                    mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.replace( strMarkerType, strDefinedType );
                }
            }
        }, 1300 );
    } );

    map.on( 'zoom', mapChanged => {
        log( 2, 'log', 'map.changed: %o', mapChanged );
        setTimeout( () => {
            for ( var ndxMarker in mapMarkers ) {
                var intBaseType = mapMarkers[ ndxMarker ].capture_type_id;
                var arrMarkerType = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.match( /"https:\/\/((.*)?\/([\w]*)\.([\a-z0-9]{3,4}))\"/i );
                var strMarkerType = arrMarkerType[ 3 ];
                if ( arrUndefinedTypes.indexOf( strMarkerType ) !== -1 ) {
                    let strDefinedType = '';
                    switch ( objTypes[ intBaseType ] ) {
                        case 'physical':
                        case 'virtual':
                            strDefinedType = strMarkerType + '_' + objTypes[ intBaseType ];
                            break;
                        case 'utl':
                            strDefinedType = 'maintenance';
                            console.info( 'base: %i;Marker: %s', intBaseType, strMarkerType );
                            break;
                        default:
                            strDefinedType = 'owned';
                            console.error( 'base: %i;Marker: %s', intBaseType, strMarkerType );
                    }

                    mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue = mapMarkers[ ndxMarker ]._element.attributes.style.nodeValue.replace( strMarkerType, strDefinedType );
                }
            }
        }, 1300 );
    } );
} )();