Greasy Fork is available in English.

Silver Subscription - Sets of 10 Button

Dominion Games Silver Subscription - Add Sets of 10 it the lobby page (table creation)

// ==UserScript==
// @name         Silver Subscription - Sets of 10 Button
// @namespace    games.dominion.script
// @version      0.7
// @description  Dominion Games Silver Subscription - Add Sets of 10 it the lobby page (table creation)
// @author       barmkin
// @match        https://dominion.games/*
// @grant        none
// @require      https://code.jquery.com/jquery-3.5.1.min.js
// @license      MIT
// ==/UserScript==

/* --- Changelog 0.7 ---
  Add multilanguages support
*/
/* ------------------------------------------------------------------------------- */
/* --- Cards Sets ---------------------------------------------------------------- */
// You can edit this section, see README
var cardsSets = [
    /* Dominion + Silver Sub */
    {
        'name': 'Dominion Only',
        'img': ['images/elements/base-small-white.png'],
        'sets':
        [
            {'First Game': [
                'Cellar', 'Market', 'Merchant', 'Militia', 'Mine',
                'Moat', 'Remodel', 'Smithy', 'Village', 'Workshop'
            ]},
            {'Size Distortion': [
                'Artisan', 'Bandit', 'Bureaucrat', 'Chapel', 'Festival',
                'Gardens', 'Sentry', 'Throne Room', 'Witch', 'Workshop'
            ]},
            {'Deck Top': [
                'Artisan', 'Bureaucrat', 'Council Room', 'Festival', 'Harbinger',
                'Laboratory', 'Moneylender', 'Sentry', 'Vassal', 'Village'
            ]},
            {'Sleight of Hand': [
                'Cellar', 'Council Room', 'Festival', 'Gardens', 'Library',
                'Harbinger', 'Militia', 'Poacher', 'Smithy', 'Throne Room'
            ]},
            {'Improvements': [
                'Artisan', 'Cellar', 'Market', 'Merchant', 'Mine',
                'Moat', 'Moneylender', 'Poacher', 'Remodel', 'Witch'
            ]},
            {'Silver \& Gold': [
                'Bandit', 'Bureaucrat', 'Chapel', 'Harbinger', 'Laboratory',
                'Merchant', 'Mine', 'Moneylender', 'Throne Room', 'Vassal'
            ]}
        ]
    },
    {
        'name': 'Dominion \& Intrigue',
        'img': ['images/elements/base-small-white.png', 'images/elements/intrigue-small-white.png'],
        'sets':
        [
            {'Underlings': [
                'Cellar', 'Festival', 'Library', 'Sentry', 'Vassal',
                'Courtier', 'Diplomat', 'Minion', 'Nobles', 'Pawn'
            ]},
            {'Grand Scheme': [
                'Artisan', 'Council Room', 'Market', 'Militia', 'Workshop',
                'Bridge', 'Mill', 'Mining Village', 'Patrol', 'Shanty Town'
            ]},
            {'Deconstruction': [
                'Bandit', 'Mine', 'Remodel', 'Throne Room', 'Village',
                'Diplomat', 'Harem', 'Lurker', 'Replace', 'Swindler'
            ]}
        ]
    },
    {
        'name': 'Dominion \& Seaside',
        'img': ['images/elements/base-small-white.png', 'images/elements/seaside-small-white.png'],
        'sets':
        [
            {'Reach for Tomorrow': [
                'Artisan', 'Cellar', 'Council Room', 'Vassal', 'Village',
                'Cutpurse', 'Ghost Ship', 'Lookout', 'Sea Hag', 'Treasure Map'
            ]},
            {'Repetition': [
                'Festival', 'Harbinger', 'Militia', 'Workshop', 'Caravan',
                'Explorer', 'Outpost', 'Pearl Diver', 'Pirate Ship', 'Treasury'
            ]},
            {'Give and Take': [
                'Library', 'Market', 'Moneylender', 'Witch', 'Ambassador',
                'Fishing Village', 'Haven', 'Island', 'Salvager', 'Smugglers'
            ]}
        ]
    },
    {
        'name': 'Dominion \& Prosperity',
        'img': ['images/elements/base-small-white.png', 'images/elements/prosperity-small-white.png'],
        'sets':
        [
            {'Biggest Money': [
                'Artisan', 'Harbinger', 'Laboratory', 'Mine', 'Moneylender',
                'Bank', 'Grand Market', 'Mint', 'Royal Seal', 'Venture'
            ]},
            {'The King\'s Army': [
                'Bureaucrat', 'Council Room', 'Merchant', 'Moat', 'Village',
                'Expand', 'Goons', 'King\'s Court', 'Rabble', 'Vault'
            ]},
            {'The Good Life': [
                'Artisan', 'Bureaucrat', 'Cellar', 'Gardens', 'Village',
                'Contraband', 'Counting House', 'Hoard', 'Monument', 'Mountebank'
            ]}
        ]
    },
    {
        'name': 'Dominion \& Cornucopia',
        'img': ['images/elements/base-small-white.png', 'images/elements/cornucopia-small-white.png'],
        'sets':
        [
            {'Bounty of the Hunt': [
                'Cellar', 'Festival', 'Militia', 'Moneylender', 'Smithy',
                'Harvest', 'Horn of Plenty', 'Hunting Party', 'Menagerie', 'Tournament'
            ]},
            {'Bad Omens': [
                'Bureaucrat', 'Laboratory', 'Merchant', 'Poacher', 'Throne Room',
                'Fortune Teller', 'Hamlet', 'Horn of Plenty', 'Jester', 'Remake'
            ]},
            {'The Jester\'s Workshop': [
                'Artisan', 'Laboratory', 'Market', 'Remodel', 'Workshop',
                'Fairgrounds', 'Farming Village', 'Horse Traders', 'Jester', 'Young Witch'
            ]}
        ]
    },
    {
        'name': 'Dominion \& Hinterlands',
        'img': ['images/elements/base-small-white.png', 'images/elements/hinterlands-small-white.png'],
        'sets':
        [
            {'Highway Robbery': [
                'Cellar', 'Library', 'Moneylender', 'Throne Room', 'Workshop',
                'Highway', 'Inn', 'Margrave', 'Noble Brigand', 'Oasis'
            ]},
            {'Adventures Abroad': [
                'Festival', 'Laboratory', 'Remodel', 'Sentry', 'Vassal',
                'Crossroads', 'Farmland', 'Fool\'s Gold', 'Oracle', 'Spice Merchant'
            ]}
        ]
    },
    {
        'name': 'Dominion \& Guilds',
        'img': ['images/elements/base-small-white.png', 'images/elements/guilds-small-white.png'],
        'sets':
        [
            {'Arts and Crafts': [
                'Laboratory', 'Cellar', 'Workshop', 'Festival', 'Moneylender',
                'Stonemason', 'Advisor', 'Baker', 'Journeyman', 'Merchant Guild'
            ]},
            {'Clean Living': [
                'Bandit', 'Militia', 'Moneylender', 'Gardens', 'Village',
                'Butcher', 'Baker', 'Candlestick Maker', 'Doctor', 'Soothsayer'
            ]},
            {'Gilding the Lily': [
                'Library', 'Merchant', 'Remodel', 'Market', 'Sentry',
                'Plaza', 'Masterpiece', 'Candlestick Maker', 'Taxman', 'Herald'
            ]}
        ]
    },

    /* Intrigue  + Silver Sub */
    {
        'name': 'Intrigue Only',
        'img': ['images/elements/intrigue-small-white.png'],
        'sets':
        [
            {'Victory Dance': [
                'Baron', 'Courtier', 'Duke', 'Harem', 'Ironworks',
                'Masquerade', 'Mill', 'Nobles', 'Patrol', 'Replace'
            ]},
            {'The Plot Thickens': [
                'Conspirator', 'Ironworks', 'Lurker', 'Pawn', 'Mining Village',
                'Secret Passage', 'Steward', 'Swindler', 'Torturer', 'Trading Post'
            ]},
            {'Best Wishes': [
                'Baron', 'Conspirator', 'Courtyard', 'Diplomat', 'Duke',
                'Secret Passage', 'Shanty Town', 'Torturer', 'Upgrade', 'Wishing Well'
            ]}
        ]
    },
    {
        'name': 'Intrigue \& Seaside',
        'img': ['images/elements/intrigue-small-white.png', 'images/elements/seaside-small-white.png'],
        'sets':
        [
            {'A Star to Steer By': [
                'Secret Passage', 'Diplomat', 'Swindler', 'Wishing Well', 'Courtier',
                'Lookout', 'Treasure Map', 'Ghost Ship', 'Haven', 'Outpost'
            ]},
            {'Shore Patrol': [
                'Patrol', 'Replace', 'Shanty Town', 'Trading Post', 'Pawn',
                'Island', 'Wharf', 'Cutpurse', 'Lighthouse', 'Warehouse'
            ]},
            {'Bridge Crossing': [
                'Lurker', 'Nobles', 'Duke', 'Conspirator', 'Bridge',
                'Salvager', 'Embargo', 'Smugglers', 'Native Village', 'Treasury'
            ]}
        ]
    },
    {
        'name': 'Intrigue \& Prosperity',
        'img': ['images/elements/intrigue-small-white.png', 'images/elements/prosperity-small-white.png'],
        'sets':
        [
            {'Paths to Victory': [
                'Bishop', 'Counting House', 'Goons', 'Monument', 'Peddler',
                'Baron', 'Harem', 'Pawn', 'Shanty Town', 'Upgrade'
            ]},
            {'All Along the Watchtower': [
                'Hoard', 'Talisman', 'Trade Route', 'Vault', 'Watchtower',
                'Bridge', 'Mill', 'Mining Village', 'Pawn', 'Torturer'
            ]},
            {'Lucky Seven': [
                'Bank', 'Expand', 'Forge', 'King\'s Court', 'Vault',
                'Bridge', 'Lurker', 'Patrol', 'Swindler', 'Wishing Well'
            ]}
        ]
    },
    {
        'name': 'Intrigue \& Cornucopia',
        'img': ['images/elements/intrigue-small-white.png', 'images/elements/cornucopia-small-white.png'],
        'sets':
        [
            {'Last Laughs': [
                'Farming Village', 'Harvest', 'Horse Traders', 'Hunting Party', 'Jester',
                'Minion', 'Nobles', 'Pawn', 'Steward', 'Swindler'
            ]},
            {'The Spice of Life': [
                'Fairgrounds', 'Horn of Plenty', 'Remake', 'Tournament', 'Young Witch',
                'Courtier', 'Courtyard', 'Diplomat', 'Mining Village', 'Replace'
            ]},
            {'Small Victories': [
                'Fortune Teller', 'Hamlet', 'Hunting Party', 'Remake', 'Tournament',
                'Conspirator', 'Duke', 'Harem', 'Pawn', 'Secret Passage'
            ]}
        ]
    },
    {
        'name': 'Intrigue \& Hinterlands',
        'img': ['images/elements/intrigue-small-white.png', 'images/elements/hinterlands-small-white.png'],
        'sets':
        [
            {'Money for Nothing': [
                'Replace', 'Patrol', 'Pawn', 'Shanty Town', 'Torturer',
                'Cache', 'Cartographer', 'Jack of all Trades', 'Silk Road', 'Tunnel'
            ]},
            {'The Duke\'s Ball': [
                'Conspirator', 'Duke', 'Harem', 'Masquerade', 'Upgrade',
                'Duchess', 'Haggler', 'Inn', 'Noble Brigand', 'Scheme'
            ]}
        ]
    },
    {
        'name': 'Intrigue \& Guilds',
        'img': ['images/elements/intrigue-small-white.png', 'images/elements/guilds-small-white.png'],
        'sets':
        [
            {'Name That Card': [
                'Baker', 'Doctor', 'Plaza', 'Advisor', 'Masterpiece',
                'Courtyard', 'Harem', 'Nobles', 'Replace', 'Wishing Well'
            ]},
            {'Tricks of the Trade': [
                'Stonemason', 'Herald', 'Soothsayer', 'Journeyman', 'Butcher',
                'Conspirator', 'Masquerade', 'Mill', 'Nobles', 'Secret Passage'
            ]},
            {'Decisions, Decisions': [
                'Merchant Guild', 'Candlestick Maker', 'Masterpiece', 'Taxman', 'Butcher',
                'Bridge', 'Pawn', 'Mining Village', 'Upgrade', 'Duke'
            ]}
        ]
    },

    /* Seaside + Silver Sub */
    {
        'name': 'Seaside Only',
        'img': ['images/elements/seaside-small-white.png'],
        'sets':
        [
            {'High Seas': [
                'Bazaar', 'Caravan', 'Embargo', 'Explorer', 'Haven',
                'Island', 'Lookout', 'Pirate Ship', 'Smugglers', 'Wharf'
            ]},
            {'Buried Treasure': [
                'Ambassador', 'Cutpurse', 'Fishing Village', 'Lighthouse', 'Outpost',
                'Pearl Diver', 'Tactician', 'Treasure Map', 'Warehouse', 'Wharf'
            ]},
            {'Shipwrecks': [
                'Ghost Ship', 'Merchant Ship', 'Native Village', 'Navigator', 'Pearl Diver',
                'Salvager', 'Sea Hag', 'Smugglers', 'Treasury', 'Warehouse'
            ]}
        ]
    },
    {
        'name': 'Seaside \& Prosperity',
        'img': ['images/elements/seaside-small-white.png', 'images/elements/prosperity-small-white.png'],
        'sets':
        [
            {'Exploding Kingdom': [
                'Bishop', 'City', 'Grand Market', 'King\'s Court', 'Quarry',
                'Fishing Village', 'Lookout', 'Outpost', 'Tactician', 'Wharf'
            ]},
            {'Pirate Bay': [
                'Expand', 'Hoard', 'Mint', 'Trade Route', 'Watchtower',
                'Bazaar', 'Lighthouse', 'Pirate Ship', 'Smugglers', 'Warehouse'
            ]}
        ]
    },
    {
        'name': 'Seaside \& Cornucopia',
        'img': ['images/elements/seaside-small-white.png', 'images/elements/cornucopia-small-white.png'],
        'sets':
        [
            {'Collector': [
                'Embargo', 'Fishing Village', 'Merchant Ship', 'Navigator', 'Smugglers',
                'Fairgrounds', 'Farming Village', 'Fortune Teller', 'Harvest', 'Hunting Party'
            ]},
            {'Collider': [
                'Lighthouse', 'Salvager', 'Treasure Map', 'Treasury', 'Warehouse',
                'Menagerie', 'Horn of Plenty', 'Horse Traders', 'Jester', 'Tournament'
            ]}
        ]
    },
    {
        'name': 'Seaside \& Hinterlands',
        'img': ['images/elements/seaside-small-white.png', 'images/elements/hinterlands-small-white.png'],
        'sets':
        [
            {'Travelers': [
                'Cutpurse', 'Island', 'Lookout', 'Merchant Ship', 'Warehouse',
                'Cartographer', 'Crossroads', 'Farmland', 'Silk Road', 'Stables'
            ]},
            {'Diplomacy': [
                'Ambassador', 'Bazaar', 'Caravan', 'Embargo', 'Smugglers',
                'Embassy', 'Farmland', 'Ill-Gotten Gains', 'Noble Brigand', 'Trader'
            ]}
        ]
    },
    {
        'name': 'Seaside \& Guilds',
        'img': ['images/elements/seaside-small-white.png', 'images/elements/guilds-small-white.png'],
        'sets':
        [
            {'Ghosts \& Taxes': [
                'Cutpurse', 'Ghost Ship', 'Haven', 'Outpost', 'Smugglers',
                'Butcher', 'Candlestick Maker', 'Herald', 'Soothsayer', 'Taxman'
            ]},
            {'Island Builder': [
                'Island', 'Native Village', 'Salvager', 'Tactician', 'Treasury',
                'Baker', 'Doctor', 'Merchant Guild', 'Plaza', 'Stonemason'
            ]}
        ]
    },

    /* Prosperity + Silver Sub */
    {
        'name': 'Prosperity Only',
        'img': ['images/elements/prosperity-small-white.png'],
        'sets':
        [
            {'Beginners': [
                'Bank', 'Counting House', 'Expand', 'Goons', 'Monument',
                'Rabble', 'Royal Seal', 'Venture', 'Watchtower', 'Worker\'s Village'
            ]},
            {'Friendly Interactive': [
                'Bishop', 'City', 'Contraband', 'Forge', 'Hoard',
                'Peddler', 'Royal Seal', 'Trade Route', 'Vault', 'Worker\'s Village'
            ]},
            {'Big Actions': [
                'City', 'Expand', 'Grand Market', 'King\'s Court', 'Loan',
                'Mint', 'Quarry', 'Rabble', 'Talisman', 'Vault'
            ]}
        ]
    },
    {
        'name': 'Prosperity \& Cornucopia',
        'img': ['images/elements/prosperity-small-white.png', 'images/elements/cornucopia-small-white.png'],
        'sets':
        [
            {'Detours': [
                'Rabble', 'Peddler', 'Hoard', 'Trade Route', 'Venture',
                'Farming Village', 'Horn of Plenty', 'Jester', 'Remake', 'Tournament'
            ]}
        ]
    },
    {
        'name': 'Prosperity \& Hinterlands',
        'img': ['images/elements/prosperity-small-white.png', 'images/elements/hinterlands-small-white.png'],
        'sets':
        [
            {'Instant Gratification': [
                'Bishop', 'Expand', 'Hoard', 'Mint', 'Watchtower',
                'Farmland', 'Haggler', 'Ill-Gotten Gains', 'Noble Brigand', 'Trader'
            ]},
            {'Treasure Trove': [
                'Bank', 'Monument', 'Royal Seal', 'Trade Route', 'Venture',
                'Cache', 'Develop', 'Fool\'s Gold', 'Ill-Gotten Gains', 'Mandarin'
            ]}
        ]
    },
    {
        'name': 'Prosperity \& Guilds',
        'img': ['images/elements/prosperity-small-white.png', 'images/elements/guilds-small-white.png'],
        'sets':
        [
            {'Quarrymen': [
                'City', 'Expand', 'Grand Market', 'Mountebank', 'Quarry',
                'Baker', 'Merchant Guild', 'Soothsayer', 'Stonemason', 'Taxman'
            ]},
            {'Metal \& Meat': [
                'Forge', 'King\'s Court', 'Monument', 'Venture', 'Watchtower',
                'Butcher', 'Candlestick Maker', 'Plaza', 'Stonemason', 'Taxman'
            ]},
            {'Penny Pinching': [
                'Bank', 'Counting House', 'Goons', 'Peddler', 'Royal Seal',
                'Advisor', 'Doctor', 'Herald', 'Journeyman', 'Merchant Guild'
            ]}
        ]
    },

    /* Cornucopia + Silver Sub */
    {
        'name': 'Cornucopia \& Hinterlands',
        'img': ['images/elements/cornucopia-small-white.png', 'images/elements/hinterlands-small-white.png'],
        'sets':
        [
            {'Blue Harvest': [
                'Hamlet', 'Horn of Plenty', 'Horse Traders', 'Jester', 'Tournament',
                'Fool\'s Gold', 'Mandarin', 'Noble Brigand', 'Trader', 'Tunnel'
            ]},
            {'Traveling Circus': [
                'Fairgrounds', 'Farming Village', 'Hunting Party', 'Jester', 'Menagerie',
                'Border Village', 'Embassy', 'Fool\'s Gold', 'Nomad Camp', 'Oasis'
            ]}
        ]
    },
    {
        'name': 'Cornucopia \& Guilds',
        'img': ['images/elements/cornucopia-small-white.png', 'images/elements/guilds-small-white.png'],
        'sets':
        [
            {'Misfortune': [
                'Advisor', 'Candlestick Maker', 'Doctor', 'Fairgrounds', 'Farming Village',
                'Fortune Teller', 'Horse Traders', 'Jester', 'Soothsayer', 'Taxman'
            ]},
            {'Baking Contest': [
                'Baker', 'Farming Village', 'Harvest', 'Herald', 'Journeyman',
                'Masterpiece', 'Menagerie', 'Remake', 'Stonemason', 'Tournament'
            ]}
        ]
    },

    /* Cornucopia + Silver Sub */
    {
        'name': 'Hinterlands Only',
        'img': ['images/elements/hinterlands-small-white.png'],
        'sets':
        [
            {'Introduction': [
                'Cache', 'Crossroads', 'Develop', 'Haggler', 'Jack of all Trades',
                'Margrave', 'Nomad Camp', 'Oasis', 'Spice Merchant', 'Stables'
            ]},
            {'Fair Trades': [
                'Border Village', 'Cartographer', 'Develop', 'Duchess', 'Farmland',
                'Ill-Gotten Gains', 'Noble Brigand', 'Silk Road', 'Stables', 'Trader'
            ]},
            {'Bargains': [
                'Border Village', 'Cache', 'Duchess', 'Fool\'s Gold', 'Haggler',
                'Highway', 'Nomad Camp', 'Scheme', 'Spice Merchant', 'Trader'
            ]},
            {'Gambits': [
                'Cartographer', 'Crossroads', 'Embassy', 'Inn', 'Jack of all Trades',
                'Mandarin', 'Nomad Camp', 'Oasis', 'Oracle', 'Tunnel'
            ]}
        ]
    },
    {
        'name': 'Hinterlands \& Guilds',
        'img': ['images/elements/hinterlands-small-white.png', 'images/elements/guilds-small-white.png'],
        'sets':
        [
            {'Exchanges': [
                'Butcher', 'Herald', 'Masterpiece', 'Soothsayer', 'Stonemason',
                'Border Village', 'Develop', 'Ill-Gotten Gains', 'Stables', 'Trader'
            ]},
            {'Road to Riches': [
                'Advisor', 'Baker', 'Candlestick Maker', 'Journeyman', 'Merchant Guild',
                'Crossroads', 'Farmland', 'Highway', 'Spice Merchant', 'Tunnel'
            ]}
        ]
    }
];
/* ------------------------------------------------------------------------------- */

// Global variables
var inLobbyFlag = false;
var cardNumber = 0;
var lastSelectedMatch = 'Dominion Online';


(function() {
    'use strict';
	waitMatchLobby(2500);
})();

function waitMatchLobby(checkFrequencyInMs) {
  (function loopSearch() {
    // Load title
    document.title = lastSelectedMatch;
    // Add buttons
    if (document.evaluate(
			'//button[contains(@class, \'kingdom-selection\') and contains(@ng-click, \'$ctrl.showKingdomSelection()\')]',
			document.body, null, XPathResult.BOOLEAN_TYPE, null).booleanValue) {
      loadMatchButtons();
      inLobbyFlag = true;
	  setTimeout(function () {
        loopSearch();
      }, 5000);
    } else {
      inLobbyFlag = false;
      cardNumber = 0;
      setTimeout(function () {
        loopSearch();
      }, 2500);
    }
  })();
}

function loadMatchButtons() {
    if(inLobbyFlag) return; // Already loaded

	console.log("Loading Sets of 10...");

    let rulesEditor = document.querySelector('.rules-editor');

    for (let sets = 0; sets < cardsSets.length; sets+=1) {

        // Loading Header...
        let lineBreak = document.createElement('br');
        rulesEditor.appendChild(lineBreak);
        let h = document.createElement("h2");

        // Loading Image (if present)
        let imgVals = cardsSets[sets].img;
        if (imgVals != undefined) {
            for (let imgI = 0; imgI < imgVals.length; imgI+=1) {
                let imgEl = document.createElement('img');
                imgEl.src = imgVals[imgI];
                imgEl.style = 'width: 7%; ';
                h.appendChild(imgEl);
            }
        }
        let t = document.createTextNode(' ' + cardsSets[sets].name);
        h.appendChild(t);
        rulesEditor.appendChild(h);

        // Loading Buttons
        let button;
        let buttonText;
        for (let i = 0; i < cardsSets[sets].sets.length; i+=1) {
            button = document.createElement('button');
            button.classList.add('lobby-button');
            button.title = cardsSets[sets].sets[i][Object.getOwnPropertyNames(cardsSets[sets].sets[i])].toString();
            buttonText = document.createTextNode(Object.getOwnPropertyNames(cardsSets[sets].sets[i]).toLocaleString());

            if (Object.getOwnPropertyNames(cardsSets[sets].sets[i]).toLocaleString() == lastSelectedMatch) {
                button.style = 'background-color: green !important;';
            }
            button.onclick = function(){
                setTimeout(loadMatch(cardsSets[sets].sets[i]), 1000);
                var target = document.querySelectorAll('.lobby-button');
                Array.prototype.forEach.call(target, function(element){
                    element.removeAttribute('style');
                });
                this.style = 'background-color: blue !important;'
            };

            button.appendChild(buttonText);
            rulesEditor.appendChild(button);
        }
    }
}

function loadMatch(selectedMatch) {
    console.log('Load cards for ' + Object.getOwnPropertyNames(selectedMatch).toLocaleString());
    lastSelectedMatch = Object.getOwnPropertyNames(selectedMatch).toLocaleString();

    document.evaluate('//button[contains(@class, \'lobby-button\') and contains(@ng-click, \'$ctrl.showKingdomSelection()\')]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();

    document.body.style.cursor='progress';
    // Print waiting...
    let selectedCardsDiv = document.querySelector('.kingdom-choices');
    let loadingCardsEl = document.createElement("p");
    loadingCardsEl.style.color = "#FFFFFF";
    let loadingCardsText = document.createTextNode('Loading Cards');
    loadingCardsEl.appendChild(loadingCardsText);
    selectedCardsDiv.insertBefore(loadingCardsEl, selectedCardsDiv.firstChild);

    waitCardsLoadThenPickCards(500, selectedMatch, loadingCardsEl);
}


function waitCardsLoadThenPickCards(checkFrequencyInMs, selectedMatch, loadingCardsEl) {
  (function loopSearch() {
    let currentNumber = document.evaluate('//div[contains(@class, \'mini-card\')]', document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength;

    if (currentNumber > cardNumber) { // waiting page finish load
        cardNumber = currentNumber;
        setTimeout(function () {
            loopSearch();
        }, checkFrequencyInMs);
    } else if (currentNumber != 0 && currentNumber == cardNumber) { // page load all cards
        document.body.style.cursor='auto';
        pickCards(selectedMatch);
        return;
    } else { // not loading ?
      if (cardNumber <= 5) {
          console.error('Sorry, there is a script error or the page does not load cards...')
          return; // Break loop
      }
      cardNumber -= 1;
      console.info('Waiting page to load...');
      loadingCardsEl.innerText += '.';
      setTimeout(function () {
        loopSearch();
      }, checkFrequencyInMs);
    }
  })();
}

function pickCards(selectedMatch) {
    console.log('Cards are loaded, pickings....');
    let cards = selectedMatch[Object.getOwnPropertyNames(selectedMatch)];

    // Clear previous selected cards
    document.querySelector('.clear-kingdom').click()

    // Pick Cards
    for (let c = 0; c < cards.length; c+=1) {
        pickCard(cards[c]);
    }

    // Push Done
    document.evaluate('//input[contains(@class, \'lobby-button close\')]', document.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();
}

function pickCard(cardName) {
    console.log("Picking " + cardName);
    let kebabCaseCardName = cardName.replaceAll(' ','-').replaceAll('\'','').toLowerCase();

    if (cardName == 'Random') {
        document.evaluate('//selection-set', document.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.click();
		return;
    }

    let miniCards = document.querySelectorAll('.mini-card');
    for(let i=0; i < miniCards.length; i++) {
        let miniCard = miniCards[i];
        // find mini-card-art
        for (let j=0; j < miniCard.childElementCount; j++) {
            let miniCardImage = miniCard.children[j];
            if (miniCard.children[1].classList.value == "mini-card-art") {
                if (miniCard.children[1].style.backgroundImage.includes(kebabCaseCardName)) {
                    miniCards[i].click();
                }
                break;
            }
        }
    }
}