Greasy Fork is available in English.

GL_fast_choice

try to take over the world!

// ==UserScript==
// @name         GL_fast_choice
// @namespace    http://tampermonkey.net/
// @version      0.26
// @description  try to take over the world!
// @author       Something begins
// @license      none
// @match        https://www.heroeswm.ru/leader_army.php
// @match        https://my.lordswm.com/leader_army.php
// @match        https://www.lordswm.com/leader_army.php
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==
let chosen_creatures = [];
let available_creatures = {}
let army_pos_i = 1
function add_new_cre(cre_index, cre_count){
    let index;
    if (obj_army.filter(cre => cre.link == 0).length>=1) index = obj_army.filter(cre => cre.link != 0).length+1
    else {
        index = army_pos_i;
        army_pos_i++;
        if (army_pos_i>=8) army_pos_i = 1
    }
    obj_army[index].link = cre_index;
    obj_army[index].count = 1;
    show_details(cre_index)
    if (chosen_creatures.length>7){
        chosen_creatures = []
    }
}
document.querySelector("body > center > table:nth-child(2)").insertAdjacentHTML("beforebegin",
                                                                                `<div id="cre_select_div" style = "  position: absolute;
left: 10%;
top: 15%;
transform: translate(-50%, -50%);">
<input type="text" name="creature_choice" list="cre_select" id = "cre_select_input">
<datalist name="Выбрать существо" id="cre_select"></datalist>
</div>`
                                                                               )
const datalist = document.querySelector("#cre_select")
const input = document.querySelector("#cre_select_input")
for (const creature of obj){
    if (creature) {
        available_creatures[creature.name] = obj.indexOf(creature)
        datalist.insertAdjacentHTML(`beforeend`, `<option id = "cre_choice${obj.indexOf(creature)}" value="${creature.name}"></option>`);
    }
}
let eventSource = null;
input.addEventListener('keydown', (event) => {
    eventSource = event.key ? 'input' : 'list';
});
input.addEventListener('input', (event)=>{
    let chosen_creature;
    let possible_options = [...datalist.children].filter(option => option.value.toLowerCase().includes(input.value.toLowerCase()))
    if (eventSource === 'list') chosen_creature = available_creatures[event.target.value.trim()]
    if (possible_options.length === 1) chosen_creature = possible_options[0].id.match(/cre_choice(\d+)/)[1]
    if (chosen_creature !== undefined){
        if (chosen_creatures.includes(chosen_creature)) return
        add_new_cre(chosen_creature, 1)
        chosen_creatures.push(chosen_creature)
    }
})