hwmOptimalRepairAtMarket

Оптимальный слом на рынке

当前为 2023-04-07 提交的版本,查看 最新版本

// ==UserScript==
// @name           hwmOptimalRepairAtMarket
// @author         Tamozhnya1
// @namespace      Tamozhnya1
// @description    Оптимальный слом на рынке
// @version        2.7
// @encoding        utf-8
// @include        *heroeswm.ru/auction.php*
// @include        *lordswm.com/auction.php*
// @include        *heroeswm.ru/art_info.php*
// @include        *lordswm.com/art_info.php*
// @include        *heroeswm.ru/mod_workbench.php*
// @include        *lordswm.com/mod_workbench.php*
// @include        *heroeswm.ru/inventory.php*
// @include        *lordswm.com/inventory.php*
// @include        *heroeswm.ru/shop.php*
// @include        *lordswm.com/shop.php*
// @grant          GM_deleteValue
// @grant          GM_getValue
// @grant          GM_listValues
// @grant          GM_setValue
// @grant          GM_addStyle
// @grant          GM_log
// @grant          GM_openInTab
// @license        MIT
// ==/UserScript==

var ScriptName = "hwmOptimalRepairAtMarket";
var windowObject = window.wrappedJSObject || unsafeWindow;
var CombatCostBestDeviation = parseInt(GM_getValue("CombatCostBestDeviation", 1)); // percent
var CombatCostGoodDeviation = parseInt(GM_getValue("CombatCostGoodDeviation", 10)); // percent
var ShowAfterRepairBattleCostInInventory = GM_getValue("ShowAfterRepairBattleCostInInventory", "true") == "true";
var SortType = { Text: 1, Number: 2 };
var Strings = {
            "ru": {
                Lot: ustring("Товар"),
                Cost: ustring("Цена"),
                TimeLeft: ustring("Завершение"),
                BattlePrice: ustring("Цена за бой"),
                Strength: ustring("Прочность"),
                OptimalStrength: ustring("До прочности"),
                Combats: ustring("Боев"),
                Options: ustring("Настройки"),
                BestApproach: ustring("Лучшее приближение к минимальной цене (%)"),
                GoodApproach: ustring("Хорошее приближение к минимальной цене (%)"),
                BuyInfo: ustring("Информация о покупке"),
                ShowAfterRepairBattleCostInInventory: ustring("Показывать в инвентаре стоимость боя после ремонта")
            },
            "en": {
                Lot: "Lot",
                Cost: "Cost",
                TimeLeft: "Time left",
                BattlePrice: "Battle price",
                Strength: "Strength",
                OptimalStrength: "Optimal strength",
                Combats: "Combats",
                Options: "Options",
                BestApproach: "Best approach to min price (%)",
                GoodApproach: "Good approach to min price (%)",
                BuyInfo: "Buy info",
                ShowAfterRepairBattleCostInInventory: "Show afterRepairBattleCost in inventory"
            }
        };
var LocalizedString = Strings[document.documentElement.lang];
var StockArtifactStrength = { "finecl": 80, "super_dagger": 75, "sun_staff": 85, "cold_sword2014": 85, "wind_boots": 85, "wind_helm": 85, "cold_shieldn": 85, "coldring_n": 75, "coldamul": 75, "sun_boots": 85, "sun_armor": 85, "sun_helm": 85, "sun_ring": 75, "clover_amul": 75, "lbow": 85 };
var SmithRecoveryEfficiency = [10, 20, 30, 40, 50, 60, 70, 80, 90, 90];
var ArtifactRepairCost = { "staff": 2527, "sword18": 17755, "wood_sword": 133, "long_bow": 6317, "dagger_dex": 3230, "dagger": 912, "dagger20": 9291, "dagger16": 9120, "shortbow": 342, "gnome_hammer": 294, "bow14": 9946, "bow17": 10108, "power_sword": 9775, "requital_sword": 2527, "firsword15": 17670, "ssword16": 6051, "ssword8": 3838, "ssword10": 4854, "broad_sword": 4721, "def_sword": 1292, "dagger_myf": 8626, "mif_sword": 16957, "mif_staff": 16387, "ssword13": 5985, "mstaff13": 4797, "mstaff8": 2888, "smstaff16": 4883, "staff18": 17746, "sor_staff": 6118, "ffstaff15": 17679, "mstaff10": 3781, "mm_sword": 17195, "mm_staff": 16986, "composite_bow": 8246, "steel_blade": 465, "large_shield": 9576, "hauberk": 2289, "boots2": 1026, "armor15": 9310, "marmor17": 9310, "sarmor16": 4351, "armor17": 9490, "leather_shiled": 266, "leatherhat": 171, "leatherboots": 199, "leatherplate": 1358, "hunter_boots": 912, "leather_helm": 627, "wizard_cap": 1596, "chain_coif": 1539, "xymhelmet15": 6612, "mhelmetzh13": 6384, "round_shiled": 104, "mif_light": 6251, "mif_lboots": 7153, "mif_lhelmet": 5244, "sarmor9": 2479, "miff_plate": 9842, "sarmor13": 4322, "boots13": 8502, "zxhelmet13": 6384, "shield13": 10174, "mage_armor": 4465, "robewz15": 9310, "wiz_robe": 9376, "sboots12": 2992, "shelm12": 2660, "sboots16": 3239, "boots15": 8559, "boots17": 8683, "mboots17": 8683, "mboots14": 8825, "sboots9": 2137, "ciras": 4455, "steel_helmet": 3676, "s_shield": 266, "full_plate": 9243, "steel_boots": 5785, "shoe_of_initiative": 2384, "wiz_boots": 8008, "mif_hboots": 7752, "mif_hhelmet": 6298, "shelm16": 2774, "mage_helm": 3277, "shelm8": 1197, "myhelmet15": 6583, "helmet17": 7239, "mhelmet17": 7239, "knowledge_hat": 978, "dragon_shield": 8778, "shield16": 10298, "sshield17": 4018, "shield19": 10469, "sshield5": 2888, "sshield11": 3876, "defender_shield": 1130, "sshield14": 3923, "wzzamulet16": 10972, "mmzamulet16": 10972, "smamul17": 4389, "bafamulet15": 10811, "amulet_of_luck": 959, "samul14": 4370, "wzzamulet13": 9975, "warring13": 10279, "ring19": 11305, "wwwring16": 11238, "dring5": 3496, "warriorring": 6697, "mmmring16": 11238, "i_ring": 171, "smring10": 2859, "dring18": 14820, "mring19": 11390, "circ_ring": 6507, "dring15": 14534, "powerring": 5187, "bring14": 10374, "sring4": 579, "doubt_ring": 1064, "dring21": 15104, "rashness_ring": 1928, "darkring": 8379, "sring17": 2907, "warrior_pendant": 8046, "mamulet19": 11039, "power_pendant": 7381, "amulet19": 11039, "magic_amulet": 8379, "cloack17": 9975, "cloackwz15": 9614, "scroll18": 10307, "scloack8": 2052, "bravery_medal": 560, "mmzamulet13": 9975, "dring12": 13356, "soul_cape": 1197, "wiz_cape": 8711, "samul17": 4389, "smamul14": 4370, "verve_ring": 1577, "dring9": 10032, "smring17": 2907, "magring13": 10279, "scloack16": 3192, "powercape": 5339, "scoutcloack": 304, "energy_scroll": 9044, "samul8": 3391, "sring10": 2859, "antiair_cape": 2926, "antimagic_cape": 4949, "d_spray": 3325, "bfly": 49875, "bril_pendant": 23275, "warmor": 16625, "flowers3": 3325, "flowers1": 332, "flowers4": 4987, "flowers2": 332, "roses": 8312, "flowers5": 4987, "half_heart_m": 4987, "half_heart_w": 4987, "venok": 332, "defender_dagger": 1330, "goldciras": 13300, "koltsou": 23275, "bril_ring": 33250, "wboots": 16625, "flower_heart": 1662, "protazan": 8312, "whelmet": 16625, "shpaga": 26600, "coldamul": 11000, "sun_armor": 9500, "super_dagger": 10400, "clover_amul": 11000, "ring2013": 800, "sun_ring": 6400, "coldring_n": 6400, "lbow": 10100, "cold_sword2014": 17600, "finecl": 10000, "sun_boots": 8700, "sun_helm": 7400, "wshield": 4000, "shield_14y": 14000, "cold_shieldn": 10400, "n_amul": 2000, "n_boots": 2000, "n_armor": 2000, "n_ringa": 2000, "n_ringd": 2000, "n_sword": 2000, "n_clk": 2000, "n_helmet": 2000, "n_shield": 2000, "neut_amulet": 10000, "forest_armor": 10000, "forest_dagger": 20000, "forest_blade": 20000, "neut_ring": 10000, "les_cl": 10000, "forest_bow": 10000, "forest_boots": 10000, "forest_helm": 10000, "shieldofforest": 10000, "hunter_pendant1": 400, "hunter_bow1": 400, "hunter_gloves1": 400, "hunter_jacket1": 400, "hunter_boots1": 400, "hunter_sword1": 400, "hunter_hat1": 400, "hunter_shield1": 400, "hunter_amulet1": 800, "hunter_armor1": 800, "hunterdagger": 800, "hunter_ring2": 800, "hunter_ring1": 800, "hunter_roga1": 800, "huntersword2": 800, "hunter_boots3": 800, "hunter_bow2": 800, "hunter_mask1": 800, "hunterdsword": 800, "hunter_boots2": 800, "hunter_arrows1": 800, "hunter_helm": 800, "huntershield2": 800, "gm_amul": 1200, "gm_arm": 1200, "gm_rring": 1200, "gm_kastet": 1200, "gm_sring": 1200, "gm_abow": 1200, "gm_protect": 1200, "gm_sword": 1200, "gm_spdb": 1200, "gm_3arrows": 1200, "gm_hat": 1200, "gm_defence": 1200, "sh_amulet2": 2400, "sh_armor": 2400, "sh_ring1": 2400, "sh_ring2": 2400, "sh_spear": 2400, "sh_bow": 2400, "sh_cloak": 2400, "sh_sword": 2400, "sh_boots": 2400, "sh_4arrows": 2400, "sh_helmet": 2400, "sh_shield": 2400, "thief_neckl": 8000, "thief_arb": 8000, "thief_goodarmor": 8000, "thief_ml_dagger": 8000, "ring_of_thief": 8000, "thief_msk": 8000, "thief_cape": 8000, "thief_fastboots": 8000, "tm_amulet": 24000, "tm_arb": 24000, "tm_armor": 24000, "tm_knife": 24000, "tm_mring": 24000, "tm_wring": 24000, "tm_msk": 24000, "tm_cape": 24000, "tm_boots": 24000, "r_warriorsamulet": 36000, "r_m_amulet": 36000, "r_zarmor": 36000, "r_dagger": 36000, "r_magicsring": 36000, "r_warring": 36000, "r_bow": 36000, "r_bigsword": 36000, "r_clck": 36000, "r_magy_staff": 36000, "r_bootsmb": 36000, "r_goodscroll": 36000, "r_helmb": 36000, "tact1w1_wamulet": 40000, "tactcv1_armor": 40000, "tactsm0_dagger": 40000, "tactspw_mring": 40000, "tactwww_wring": 40000, "tact765_bow": 40000, "tactms1_mamulet": 40000, "tactpow_cloack": 40000, "tactmag_staff": 40000, "tactzl4_boots": 40000, "tactaz_axe": 40000, "tacthapp_helmet": 40000, "tactdff_shield": 40000, "v_1armor": 48000, "verb11_sword": 48000, "verbboots": 48000, "ve_helm": 48000, "vrb_shild": 48000, "tl_medal1": 32000, "tl_medal2": 16000, "tl_medal3": 6000, "bwar1": 60000, "kwar1": 60000, "gnomewar1": 60000, "bwar2": 48000, "kwar2": 48000, "gnomewar2": 48000, "kwar3": 36000, "gnomewar3": 36000, "bwar3": 36000, "bwar4": 28000, "kwar4": 28000, "gnomewar4": 28000, "bwar5": 20000, "kwar5": 20000, "gnomewar5": 20000, "bwar6": 16000, "kwar6": 16000, "gnomewar6": 16000, "bwar7": 12000, "kwar7": 12000, "gnomewar7": 12000, "bunt_medal1": 40000, "bunt_medal2": 20000, "bunt_medal3": 10000, "bwar_splo": 28000, "gnomewar_splo": 28000, "kwar_splo": 28000, "kwar_stoj": 28000, "bwar_stoj": 28000, "gnomewar_stoj": 28000, "bwar_takt": 28000, "gnomewar_takt": 28000, "kwar_takt": 28000, "necrwar1st": 56000, "necrwar2st": 36000, "necrwar3st": 20000, "necrwar4st": 10000, "necrwar5st": 4000, "warthief_medal1": 18000, "warthief_medal2": 14000, "warthief_medal3": 10000, "warthief_medal4": 6000, "warthief_medal5": 2000, "elfwar1": 60000, "elfwar2": 40000, "elfwar3": 32000, "elfwar4": 20000, "elfwar5": 10000, "elfwar6": 4000, "magewar1": 52000, "magewar2": 40000, "magewar3": 32000, "magewar4": 20000, "magewar5": 12000, "demwar1": 60000, "demwar2": 44000, "demwar3": 36000, "demwar4": 24000, "demwar5": 16000, "demwar6": 8000, "barb_armor": 40000, "barb_club": 40000, "barb_boots": 40000, "barb_helm": 40000, "barb_shield": 40000, "necr_amulet": 40000, "necr_helm": 40000, "necr_staff": 40000, "necr_robe": 40000, "merc_armor": 40000, "merc_dagger": 40000, "merc_sword": 40000, "merc_boots": 40000, "elfamulet": 50000, "elfbow": 50000, "elfshirt": 50000, "elfboots": 50000, "darkelfkaska": 50000, "darkelfciras": 50000, "darkelfpendant": 50000, "darkelfcloack": 50000, "darkelfstaff": 50000, "darkelfboots": 50000, "dem_amulet": 50000, "dem_armor": 50000, "dem_bootshields": 50000, "dem_axe": 50000, "dem_helmet": 50000, "dem_shield": 50000, "mage_cape": 60000, "mage_staff": 60000, "mage_robe": 60000, "mage_boots": 60000, "mage_scroll": 60000, "mage_hat": 60000, "gnomearmor": 44000, "gnomehammer": 44000, "gnomeboots": 44000, "gnomehelmet": 44000, "gnomeshield": 44000, "gnomem_amulet": 64000, "gnomem_armor": 64000, "gnomem_hammer": 64000, "gnomem_boots": 64000, "gnomem_helmet": 64000, "gnomem_shield": 64000, "gmage_crown": 64000, "gmage_cloack": 64000, "gmage_staff": 64000, "gmage_armor": 64000, "gmage_boots": 64000, "gmage_scroll": 64000, "welfarmor": 44000, "welfbow": 44000, "welfsword": 44000, "welfboots": 44000, "welfhelmet": 44000, "welfshield": 44000, "druid_amulet": 64000, "druid_cloack": 64000, "druid_staff": 64000, "druid_armor": 64000, "druid_boots": 64000, "knightarmor": 44000, "knightsword": 44000, "knightboots": 44000, "knighthelmet": 44000, "knightshield": 44000, "paladin_bow": 64000, "paladin_armor": 64000, "paladin_sword": 64000, "paladin_boots": 64000, "paladin_helmet": 64000, "paladin_shield": 64000, "sv_arb": 64000, "sv_body": 64000, "sv_weap": 64000, "sv_boot": 64000, "sv_helm": 64000, "sv_shield": 64000, "nv_body": 56000, "nv_weap": 56000, "nv_boot": 56000, "nv_helm": 56000, "nv_shield": 56000, "kn_body": 44000, "kn_weap": 44000, "kn_helm": 44000, "kn_shield": 44000, "inq_body": 64000, "inq_cl": 64000, "inq_weap": 64000, "inq_boot": 64000, "inq_helm": 64000, "amf_body": 64000, "amf_cl": 64000, "amf_boot": 64000, "amf_weap": 64000, "amf_scroll": 64000, "amf_helm": 64000, "8amul_inf": 12000, "quest_pendant1": 600, "9amu_let": 18000, "trinitypendant": 6400, "sunart2": 28000, "a_mallet": 40, "buben2": 12800, "totem1": 9600, "icesphere1": 16000, "mechanic_glasses1": 8000, "buben1": 16000, "anomal_ring1": 20000, "mart8_ring1": 400, "mart8_flowers1": 8000, "wolfjacket": 800, "sharik": 4000, "thief_paper": 0, "magneticarmor": 36000, "dragonstone": 12000, "dubina": 40000, "ogre_bum": 36000, "gdubina": 14000, "lizard_armor": 800, "hopesh1": 10000, "mgear": 9600, "5years_star": 5000, "mirror": 16000, "znamya1": 8000, "krest2": 9000, "znamya2": 8000, "kznamya1": 10000, "kznamya2": 10000, "ankh1": 12000, "zub": 40000, "tunnel_kirka": 4000, "bludgeon": 28000, "brush": 19824, "windsword": 22000, "pit_sword1": 16000, "pit_sword2": 13200, "kniga": 9600, "skill_book11": 40000, "anomal_ring2": 18000, "commander_ring": 20000, "testring": 40000, "thief_premiumring1": 24000, "thief_premiumring2": 18000, "thief_premiumring3": 12000, "ttring": 10800, "blackring": 8000, "student_armor": 2000, "pegaskop": 36000, "sunart1": 14000, "kopie": 28000, "pika": 28000, "trogloditkop": 5600, "dragon_crown": 6800, "necrohelm2": 16000, "dem_kosa": 40000, "pouch": 12000, "cubed": 4800, "bal_cube": 4800, "cubes": 6400, "cubeg": 9600, "bshield3": 8000, "icesphere2": 14400, "goblin_bow": 16000, "centaurbow": 16000, "sniperbow": 36000, "totem3": 8400, "10scroll": 40000, "sunart3": 32000, "sword5": 4000, "blacksword": 20000, "sunart4": 36000, "dem_dmech": 14000, "blacksword1": 10000, "slayersword": 40000, "meshok": 2012, "meshok2": 2012, "molot_tan": 40000, "13coin": 40000, "snowjinka": 4000, "sosulka": 4000, "obereg": 20000, "castle_orden": 16000, "order_griffin": 16000, "order_manticore": 16000, "eg_order1": 22000, "eg_order2": 20000, "eg_order3": 16000, "ord_light": 18000, "ord_dark": 18000, "mechanic_glasses2": 7400, "pen": 19824, "sandglass": 12000, "inq_ring1": 16000, "battlem_cape": 28000, "stalkercl": 8000, "totem2": 9600, "2year_amul_lords": 4000, "7ka": 4000, "3year_amul": 4000, "icesphere3": 12800, "inq_ring2": 12000, "krest3": 8400, "anomal_ring3": 16000, "buben3": 9600, "mechanic_glasses3": 6800, "rog_demon": 40000, "runkam": 9600, "lizard_boots": 800, "torg_boots": 20000, "krest1": 9600, "thief_unique_secretops": 0, "ankh2": 10000, "compass": 8000, "statue": 12000, "nefrit2": 9000, "nefrit3": 8400, "nefrit1": 9600, "cat_statue": 8000, "bear_statue": 8000, "ru_statue": 2009, "dog_statue": 8000, "msphere": 9600, "3year_art": 4000, "znak5": 10000, "znak8": 10000, "znak7": 10000, "znak3": 10000, "znak2": 10000, "znak1": 10000, "znak6": 10000, "znak9": 10000, "znak4": 10000, "firehammer": 32000, "topor_drov": 16000, "dem_dtopor": 48000, "taskaxe": 10000, "orc_axe": 28000, "topor_skelet": 14000, "sea_trident": 4000, "bshield1": 16000, "dudka": 6000, "flyaga": 60000, "antifire_cape": 16000, "hopesh2": 7200, "12hron": 40000, "4year_klever": 4000, "6ring": 15000, "lizard_helm": 800, "ogre_helm": 24000, "orc_hat": 20000, "necrohelm3": 24000, "necrohelm1": 10000, "gargoshield": 16000, "bshield2": 12000, "e_shield2": 7200, "e_shield1": 10000, "elfdagger": 36000, "dun_amul2": 16000, "dun_bow2": 16000, "drak_armor1": 20000, "dun_boots1": 20000, "dun_amul1": 20000, "dun_bow1": 20000, "dun_armor1": 20000, "dun_dagger1": 20000, "dun_sword1": 20000, "dun_ring1": 20000, "dun_cloak1": 18000, "dung_axe1": 18000, "hm2": 20000, "dun_shield1": 20000, "dun_armor2": 16000, "dun_dagger2": 16000, "dering": 24000, "drak_armor2": 16000, "dun_boots3": 12000, "dun_armor3": 12000, "dun_shield3": 12000, "drak_armor3": 12000, "dun_bow3": 12000, "dun_dagger3": 12000, "dun_sword3": 12000, "dung_axe3": 12000, "dun_sword2": 16000, "dun_ring2": 16000, "dun_cloak2": 15000, "crystal": 16000, "dun_amul3": 12000, "dun_cloak3": 12000, "dun_ring3": 12000, "dun_boots2": 16000, "dung_axe2": 15000, "hm1": 14400, "dun_shield2": 16000, "ramul1": 16000, "rarmor1": 16000, "rdagger1": 16000, "rogring1": 16000, "rarmor2": 8000, "rboots2": 8000, "rhelm2": 8000, "rsword2": 8000, "raxe2": 8000, "rbow1": 16000, "rsword1": 16000, "rcloak1": 16000, "rogring2": 8000, "ramul2": 8000, "rdagger2": 8000, "rbow2": 8000, "rcloak2": 8000, "rshield2": 8000, "rboots1": 16000, "sumka": 12000, "raxe1": 16000, "rhelm1": 16000, "rshield1": 16000, "surv_halberdzg": 24000, "surv_wamuletik": 28000, "surv_crossbowsurv": 32000, "surv_armorsu": 28000, "surv_wring2o": 20000, "surv_daggermd": 36000, "surv_sword2sd": 20000, "surv_mring2fpg": 20000, "surv_wring1my": 28000, "surv_mbootsbb": 28000, "surv_mamulka": 28000, "surv_marmoroz": 28000, "surv_mhelmetcv": 28000, "surv_mring1fd": 28000, "surv_mcloacksv": 28000, "surv_sword_surv": 36000, "surv_cloacksrv": 28000, "surv_staffik": 36000, "surv_bootsurv": 28000, "surv_scrollcd": 28000, "surv_axes": 36000, "surv_helmetpi": 28000, "surv_shieldvv": 28000, "tj_magam2": 20000, "mtcloak1": 24000, "tmarmor1": 24000, "sph1": 24000, "tj_mtuf1": 24000, "vbow1": 24000, "mhelmv1": 24000, "vtmsword1": 24000, "vtjcloak1": 24000, "staff_v1": 24000, "vscroll-1": 24000, "vtmaxe1": 24000, "vmring1": 24000, "tjarmor2": 20000, "vrdagger2": 20000, "v-ring2": 20000, "tjam2": 20000, "mtcloak3": 16000, "vtjcloak3": 16000, "staff_v3": 16000, "tmarmor3": 16000, "tj_vboots3": 16000, "tj_mtuf3": 16000, "tjarmor3": 16000, "vrdagger3": 16000, "vbow3": 16000, "mhelmv3": 16000, "vtmsword3": 16000, "vtmaxe3": 16000, "tj_helmet3": 16000, "tj-shield3": 16000, "vbow2": 20000, "mhelmv2": 20000, "vmring2": 20000, "v-ring3": 16000, "tj_magam3": 16000, "tjam3": 16000, "vbolt3": 16000, "vscroll-3": 16000, "mtcloak2": 20000, "vtmsword2": 20000, "v-ring1": 24000, "tj_magam1": 24000, "vrdagger1": 24000, "tjam1": 24000, "vbolt1": 24000, "vbolt2": 20000, "vtjcloak2": 20000, "staff_v2": 20000, "sph3": 16000, "vmring3": 16000, "tmarmor2": 20000, "tj_vboots2": 20000, "vscroll-2": 20000, "sph2": 20000, "vtmaxe2": 20000, "tj_mtuf2": 20000, "tj_vboots1": 24000, "tjarmor1": 24000, "tj_helmet1": 24000, "tj-shield1": 24000, "tj_helmet2": 20000, "tj-shield2": 20000, "p_amulet2": 16000, "p_amulet1": 20000, "piratehat3": 12000, "pir_armor1": 20000, "p_dag2": 16000, "p_dag1": 20000, "p_sword3": 12000, "pn_ring2": 16000, "pn_ring1": 20000, "p_compas2": 16000, "p_compas1": 20000, "pn_ring3": 12000, "piring2": 16000, "piring1": 20000, "pir_armor3": 12000, "pir_armor2": 16000, "p_pistol2": 16000, "p_pistol1": 16000, "p_cloak2": 16000, "p_cloak1": 20000, "p_amulet3": 12000, "p_dag3": 12000, "p_compas3": 12000, "piring3": 12000, "p_pistol3": 12000, "p_cloak3": 12000, "p_sword2": 16000, "p_boots2": 16000, "p_boots1": 20000, "p_boots3": 12000, "piratehat2": 16000, "piratehat1": 20000, "p_sword1": 20000, "polk_sword1": 16000, "polk_armor2": 12000, "gring": 24000, "polk_armor3": 8000, "polkboots3": 8000, "polk_sword3": 8000, "polk__helm3": 8000, "polk_sword2": 12000, "gringd": 24000, "polkboots2": 12000, "polk_armor1": 16000, "polkboots1": 16000, "polk__helm1": 16000, "polk__helm2": 12000, "m_amul2": 16000, "ocean_boots1": 20000, "m_amul1": 20000, "m_armor1": 20000, "ocean_dgr1": 20000, "ocean_bw1": 20000, "ocean_sword1": 20000, "ocean_per1": 20000, "ocean_cl1": 20000, "ocean_hlm1": 20000, "ocean_m_shield1": 20000, "ocean_ring1": 20000, "ocean_eye1": 20000, "m_armor2": 16000, "ocean_dgr2": 16000, "ocean_ring2": 16000, "m_armor3": 12000, "ocean_boots3": 12000, "ocean_dgr3": 12000, "ocean_sword3": 12000, "ocean_hlm3": 12000, "ocean_m_shield3": 12000, "ocean_bw2": 16000, "ocean_sword2": 16000, "ocean_eye2": 16000, "ocean_per2": 16000, "ocean_cl2": 16000, "ocean_ring3": 12000, "ocean_eye3": 12000, "m_amul3": 12000, "ocean_bw3": 12000, "ocean_per3": 12000, "ocean_cl3": 12000, "ocean_boots2": 16000, "ocean_hlm2": 16000, "ocean_m_shield2": 16000, "adv_neck1": 16000, "adv_armor1": 16000, "a_dagger1": 16000, "adv_fring1": 16000, "adv_armor2": 10000, "adv_boot2": 10000, "adv_hm2": 10000, "adv_shild2": 10000, "adv_saber2": 10000, "adv_longbow1": 16000, "adv_clk1": 16000, "adv_sumk2": 10000, "adv_fring2": 10000, "adv_neck2": 10000, "adv_longbow2": 10000, "a_dagger2": 10000, "adv_clk2": 10000, "adv_boot1": 16000, "adv_sumk1": 16000, "adv_hm1": 16000, "adv_shild1": 16000, "adv_saber1": 16000, "mir_am2": 20000, "mir_am1": 24000, "mh_sword1": 24000, "mir_armor2": 20000, "mir_armor3": 16000, "mir_boots3": 16000, "mh_sword3": 16000, "mir_shld3": 16000, "mh_sword2": 20000, "mir_am3": 16000, "mir_boots2": 20000, "mir_armor1": 24000, "mir_shld1": 24000, "mir_boots1": 24000, "mir_shld2": 20000, "ed_mbook1": 16000, "ed_armr1": 16000, "ed_elfbow1": 16000, "ed_bsword1": 16000, "ed_ring1": 16000, "ed_armr2": 14000, "ed_mbook2": 14000, "ed_ring2": 14000, "ed_armr3": 12000, "ed_bsword3": 12000, "ed_elfbow2": 14000, "ed_bsword2": 14000, "ed_mbook3": 12000, "ed_ring3": 12000, "ed_elfbow3": 12000, "stalker_crsb2": 12800, "stalker_crsb1": 16000, "stalker_hlm1": 16000, "stalker_dagger1": 16000, "stalker_hlm2": 12800, "stalker_dagger2": 12800, "stalker_crsb3": 10000, "stalker_hlm3": 10000, "stalker_dagger3": 10000, "imp_amul": 60000, "imp_crossbow": 40000, "imp_armor": 36000, "imp_dagger": 36000, "imp_ring": 28000, "imp_sword": 40000, "imp_cloak": 36000, "imp_boots": 36000, "imp_helmet": 36000, "imp_shield": 36000, "dark_amul": 60000, "dark_armor": 36000, "dark_dagger": 36000, "dark_ring": 28000, "dark_bow": 40000, "dark_cloak": 36000, "dark_boots": 36000, "dark_axe": 40000, "dark_helmet": 36000, "dark_shield": 36000, "heaven_helm": 36000, "heaven_clk": 36000, "heaven_bts": 36000, "heaven_armr": 36000, "heaven_staff": 40000, "potion01": 0, "potion02": 0, "potion03": 0, "potion04": 0, "potion05": 0, "potion06": 0, "potion07": 0, "potion08": 0, "16amul": 16161, "forest_crossbow": 10000, "icecr1": 16000, "drak_crown1": 20000, "ed_pendant1": 16000, "arm_armor1": 16000, "arm_cap1": 16000, "eddem_ring1": 16000, "stalker_cl1": 16000, "arm_armor2": 12800, "arm_cap2": 12800, "drak_crown2": 16000, "arm_cap3": 10000, "mir_helmt3": 16000, "icecr2": 14400, "icecr3": 12800, "eddem_ring2": 14000, "stalker_cl2": 12800, "ed_pendant2": 14000, "sun_staff": 17600, "drak_crown3": 12000, "ed_pendant3": 12000, "arm_armor3": 10000, "eddem_ring3": 12000, "stalker_cl3": 10000, "wind_boots": 8700, "mir_helmt1": 24000, "wind_helm": 7400, "mir_helmt2": 20000 };
function uchar(s) {
    switch (s[0]) {case "А": return "\u0410"; case "Б": return "\u0411"; case "В": return "\u0412"; case "Г": return "\u0413"; case "Д": return "\u0414"; case "Е": return "\u0415"; case "Ж": return "\u0416"; case "З": return "\u0417"; case "И": return "\u0418"; case "Й": return "\u0419"; case "К": return "\u041a"; case "Л": return "\u041b"; case "М": return "\u041c"; case "Н": return "\u041d"; case "О": return "\u041e"; case "П": return "\u041f"; case "Р": return "\u0420"; case "С": return "\u0421"; case "Т": return "\u0422"; case "У": return "\u0423"; case "Ф": return "\u0424"; case "Х": return "\u0425"; case "Ц": return "\u0426"; case "Ч": return "\u0427"; case "Ш": return "\u0428"; case "Щ": return "\u0429"; case "Ъ": return "\u042a"; case "Ы": return "\u042b"; case "Ь": return "\u042c"; case "Э": return "\u042d"; case "Ю": return "\u042e"; case "Я": return "\u042f"; case "а": return "\u0430"; case "б": return "\u0431"; case "в": return "\u0432"; case "г": return "\u0433"; case "д": return "\u0434"; case "е": return "\u0435"; case "ж": return "\u0436"; case "з": return "\u0437"; case "и": return "\u0438"; case "й": return "\u0439"; case "к": return "\u043a"; case "л": return "\u043b"; case "м": return "\u043c"; case "н": return "\u043d"; case "о": return "\u043e"; case "п": return "\u043f"; case "р": return "\u0440"; case "с": return "\u0441"; case "т": return "\u0442"; case "у": return "\u0443"; case "ф": return "\u0444"; case "х": return "\u0445"; case "ц": return "\u0446"; case "ч": return "\u0447"; case "ш": return "\u0448"; case "щ": return "\u0449"; case "ъ": return "\u044a"; case "ы": return "\u044b"; case "ь": return "\u044c"; case "э": return "\u044d"; case "ю": return "\u044e"; case "я": return "\u044f"; case "Ё": return "\u0401"; case "ё": return "\u0451"; default: return s[0];}}
function ustring(s) {
    s = String(s);
    var result = "";
    for (var i = 0; i < s.length; i++)
        result += uchar(s[i]);
    return result;
}
function round00(value) { return Math.round(value * 100) / 100; }
function getAfterRepairRestStrength(strength, smithLevel) {  return Math.floor(strength * SmithRecoveryEfficiency[smithLevel || 9] / 100); }
function optimalRepair(marketPrice, repairCost, strength, restStrength) {
    restStrength = restStrength || strength;
    let totalSpending = marketPrice;
    let currentRestStrength = restStrength;
    let totalCombatsAmount = currentRestStrength;
    let currentStrength = strength;
    
    let currentCombatCost = totalSpending / totalCombatsAmount; // Начальная стоимость боя
    //console.log(`currentStrength: ${currentStrength}, currentRestStrength: ${currentRestStrength}, totalSpending: ${totalSpending}, totalCombatsAmount: ${totalCombatsAmount}, newCombatCost: ${currentCombatCost}`);
    for(currentStrength = strength; currentStrength > 0; currentStrength--) {
        currentRestStrength = getAfterRepairRestStrength(currentStrength);
        totalSpending += repairCost;
        
        let newCombatCost = totalSpending / (totalCombatsAmount + currentRestStrength);
        //console.log(`currentStrength: ${currentStrength}, currentRestStrength: ${currentRestStrength}, totalSpending: ${totalSpending}, totalCombatsAmount: ${totalCombatsAmount + currentRestStrength}, newCombatCost: ${newCombatCost}`); 
        if(newCombatCost > currentCombatCost) {
            break;
        }
        totalCombatsAmount += currentRestStrength;
        currentCombatCost = newCombatCost;
    }
    return { Strength: currentStrength, CombatCost: round00(currentCombatCost), CombatsAmount: totalCombatsAmount };
}
function addElement(type, parent, data, style) {
    let el = createElement(type, data, style);
    if(parent) {
        parent.appendChild(el);
    }
    return el;
}
function createElement(type, data, style) {
    let el = document.createElement(type);
    if(data) {
        for(let key in data) {
            if(key == "innerText") {
                el.innerText = data[key];
            } else {
                el.setAttribute(key, data[key]);
            }
        }
    }
    if(style && el.id) {
        let styleStr = "";
        if(typeof(style) == "string") {
            styleStr = style;
        } else {
            for (let key in style) {
                styleStr += key + ": " + style[key] + "; ";
            }
        }
        GM_addStyle("#" + el.id + "{" + styleStr + "}");
    }
    return el;
}
function hideScriptOptions() {
    let bg = document.getElementById(ScriptName + "1");
    let bgc = document.getElementById(ScriptName + "2");
    bg.style.display = bgc.style.display = 'none';
}
function showScriptOptions() {
    let bg = document.getElementById(ScriptName + "1");
    let bgc = document.getElementById(ScriptName + "2");
    if(bg) {
        bg.style.display = bgc.style.display = 'block';
        return;
    }
    bg = addElement("div", document.body, {id: ScriptName + "1"}, "position: absolute; left: 0pt; width: 100%; background: none repeat scroll 0% 0% gray; opacity: 0.5; top: 0px; height: 100%; display: block; z-index: 200;");
    bg.addEventListener("click", hideScriptOptions, false);
 
    bgc = addElement("div", document.body, {id: ScriptName + "2"}, "position: absolute; width: 650px; background: none repeat scroll 0% 0% rgb(246, 243, 234); left: " +
    ((document.body.offsetWidth - 650) / 2) + "px; top: 150px; display: block; z-index: 200;");
    let div1 = addElement("div", bgc, {id: ScriptName + "3"}, "border: 1px solid #abc; padding: 5px; margin: 2px;");
    
    let divClose = addElement("div", div1, {id: ScriptName + "close", title: "Close", innerText: "x"}, "float:right;border:1px solid #abc;width:15px;height:15px;text-align:center;cursor:pointer;");
    divClose.addEventListener("click", hideScriptOptions, false);
    
    
    // Script specific part
    addElement("b", div1, { innerText: LocalizedString.Options, style: "text-align: center;" });
    addElement("br", div1);

    addElement("label", div1, { for: "combatCostBestDeviationInput", innerText: LocalizedString.BestApproach + "\t", style: "background-color: #becb10;" });
    let combatCostBestDeviationInput = addElement("input", div1, { id: "combatCostBestDeviationInput", type: "number", value: CombatCostBestDeviation });
    combatCostBestDeviationInput.addEventListener("change", function() { GM_setValue("CombatCostBestDeviation", parseInt(this.value)); CombatCostBestDeviation = parseInt(this.value); }, false);
    
    addElement("br", div1);
    
    addElement("label", div1, { for: "combatCostGoodDeviationInput", innerText: LocalizedString.GoodApproach + "\t", style: "background-color: #90EE90;" });
    let combatCostGoodDeviationInput = addElement("input", div1, { id: "combatCostGoodDeviationInput", type: "number", value: CombatCostGoodDeviation });
    combatCostGoodDeviationInput.addEventListener("change", function() { GM_setValue("CombatCostGoodDeviation", parseInt(this.value)); CombatCostGoodDeviation = parseInt(this.value); }, false);

    addElement("br", div1);
    
    addElement("label", div1, { for: "showAfterRepairBattleCostInInventoryInput", innerText: LocalizedString.ShowAfterRepairBattleCostInInventory + "\t" });
    let showAfterRepairBattleCostInInventoryInput = addElement("input", div1, { id: "showAfterRepairBattleCostInInventoryInput", type: "checkbox" });
    showAfterRepairBattleCostInInventoryInput.checked = ShowAfterRepairBattleCostInInventory;
    showAfterRepairBattleCostInInventoryInput.addEventListener("change", function() { GM_setValue("ShowAfterRepairBattleCostInInventory", this.checked); ShowAfterRepairBattleCostInInventory = this.checked; }, false);

    addElement("br", div1);
    
}
function sortTable(tableElement, columnIndex, sortType) {
    sortType = sortType || SortType.Text;
  let rows, switching, i, x, y, shouldSwitch;
  switching = true;
  while (switching) { /* Make a loop that will continue until no switching has been done: */
    switching = false; // Start by saying: no switching is done:
    rows = tableElement.rows;
    for (i = 1; i < (rows.length - 1); i++) { /* Loop through all table rows (except the first, which contains table headers): */
      shouldSwitch = false; // Start by saying there should be no switching:
      x = rows[i].cells[columnIndex]; /* Get the two elements you want to compare, one from current row and one from the next: */
      y = rows[i + 1].cells[columnIndex];
      if (sortType == SortType.Text && x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { // Check if the two rows should switch place:
        shouldSwitch = true; // If so, mark as a switch and break the loop:
        break;
      }
      if (sortType == SortType.Number && parseFloat(x.innerHTML) > parseFloat(y.innerHTML)) { // Check if the two rows should switch place:
        shouldSwitch = true; // If so, mark as a switch and break the loop:
        break;
      }
    }
    if (shouldSwitch) {
      rows[i].parentNode.insertBefore(rows[i + 1], rows[i]); /* If a switch has been marked, make the switch and mark that a switch has been done: */
      switching = true;
    }
  }
}
function extendLotsTable() {
    let tableHeaderRow;
    for(const tr of document.querySelectorAll("tr")) {
      if(tr.nextElementSibling && tr.textContent.includes(LocalizedString.Lot) && tr.textContent.includes(LocalizedString.Cost) && tr.textContent.includes(LocalizedString.TimeLeft)) {
          tableHeaderRow = tr;
          break;
      }
    }
    if(tableHeaderRow) {
        let td = addElement("td", tableHeaderRow, { style: "text-align: center;", innerText: LocalizedString.BattlePrice });
        td.addEventListener("click", showScriptOptions, false);
        
        let sortDiv = addElement("div", td, { style: "float: right; border: 1px solid; cursor: pointer;", innerText: "v", title: "Sort" });
        sortDiv.addEventListener("click", function(e) { sortTable(tableHeaderRow.parentNode, 5, SortType.Number); e.stopPropagation(); }, false);
        
        td = addElement("td", tableHeaderRow, { style: "text-align: center;", innerText: LocalizedString.OptimalStrength });
        td.addEventListener("click", showScriptOptions, false);
        
        td = addElement("td", tableHeaderRow, { style: "text-align: center;", innerText: LocalizedString.Combats });
        td.addEventListener("click", showScriptOptions, false);
        
        logNewArtifactsIds(tableHeaderRow.previousElementSibling);
        
        let currentRow = tableHeaderRow;
        let arts = [];
        while(currentRow = currentRow.nextElementSibling) {
            let art = addOptimalRepairDataToLotRow(currentRow);
            arts.push(art);
        }
        if(arts.length > 0) {
            let firstArt = arts[0];
            let minCombatCost = arts.reduce((c, e) => Math.min(c, e.OptimalRepairCombatCost), firstArt.OptimalRepairCombatCost);
            for(const art of arts) {
                if(art.OptimalRepairCombatCost <= minCombatCost * (100 + CombatCostBestDeviation) / 100) {
                    art.RowElement.cells[5].style.backgroundColor = "#becb10";
                } else if(art.OptimalRepairCombatCost <= minCombatCost * (100 + CombatCostGoodDeviation) / 100) {
                    art.RowElement.cells[5].style.backgroundColor = "#90EE90";
                }
            }
            // Запомним цену акционных артефактов
            if(firstArt.Id in StockArtifactStrength) {
                let strength = StockArtifactStrength[firstArt.Id];
                let fullArs = [];
                for(const art of arts) {
                    if(art.Id == firstArt.Id && art.LotStrength == strength && art.RestLotStrength == strength) {
                        fullArs.push(art);
                    }
                }
                if(fullArs.length > 0) {
                    let minPrice = fullArs.reduce((c, e) => Math.min(c, e.LotPrice), fullArs[0].LotPrice);
                    let minPriceArt;
                    for(const art of fullArs) {
                        if(art.LotPrice == minPrice) {
                            minPriceArt = art;
                            break;
                        }
                    }
                    GM_setValue("StockArtifactLastMarketMinPrice_" + firstArt.Id, `${minPriceArt.LotPrice}_${minPriceArt.OptimalRepairCombatCost}`);
                }
            }
        }
    }
}
function addOptimalRepairDataToLotRow(rowElement) {
    if(!rowElement || rowElement.nodeName != "TR") {
        return;
    }
    let goldImageElement = rowElement.querySelector("img[src*='gold.png']");
    let lotPrice = parseFloat(goldImageElement.parentNode.nextElementSibling.innerText.replace(/,/g, ""));
    
    let artImageRefElement = rowElement.querySelector("a[href*='art_info.php']");
    let hrefParametersData = artImageRefElement.href.split("?")[1];
    let hrefParameters = hrefParametersData.split("&");
    let artId = hrefParameters[0].split("=")[1];
    let artUid;
    if(hrefParameters.length > 1) {
        artUid = hrefParameters[1].split("=")[1];
    }
    let artRepairCost = ArtifactRepairCost[artId];
    
    let strengthData = rowElement.innerText.match(/\d+\/\d+/);
    let restStrength = parseInt(strengthData[0].split("/")[0]);
    let strength = parseInt(strengthData[0].split("/")[1]);
    
    let optimalRepairData = optimalRepair(lotPrice, artRepairCost, strength, restStrength);
    let td = addElement("td", rowElement, { style: "text-align: center;" });
    td.innerText = `${optimalRepairData.CombatCost}`;
    td = addElement("td", rowElement, { style: "text-align: center;" });
    td.innerText = `${optimalRepairData.Strength}`;
    td = addElement("td", rowElement, { style: "text-align: center;" });
    td.innerText = `${optimalRepairData.CombatsAmount}`;
    
    let artefact = new Artefact(artUid, artId, strength, restStrength, lotPrice, optimalRepairData.CombatCost, optimalRepairData.Strength, optimalRepairData.CombatsAmount, rowElement);
    if(artefact.Uid) {
        let buyHrefElement = rowElement.querySelector("a[onclick*='show_js_button']");
        buyHrefElement.addEventListener("click", function() { GM_setValue(artefact.Uid, JSON.stringify(artefact)); }, false);
    }
    return artefact;
}
function Artefact(uid, id, strength, restStrength, lotPrice, optimalRepairCombatCost, optimalRepairStrength, optimalRepairCombatsAmount, rowElement) {
  this.Uid = uid;
  this.Id = id;
  this.LotStrength = strength;
  this.RestLotStrength = restStrength;
  this.LotPrice = lotPrice;
  this.OptimalRepairCombatCost = optimalRepairCombatCost;
  this.OptimalRepairStrength = optimalRepairStrength;
  this.OptimalRepairCombatsAmount = optimalRepairCombatsAmount;
  this.RowElement = rowElement;
  this.GetLotInfo = function() {
    return `${LocalizedString.BuyInfo}: ${LocalizedString.Cost}: ${this.LotPrice}, ${LocalizedString.Strength}: ${this.RestLotStrength}/${this.LotStrength}, ${LocalizedString.BattlePrice}: ${this.OptimalRepairCombatCost}, ${LocalizedString.Strength}: ${this.OptimalRepairStrength}, ${LocalizedString.Combats}: ${this.OptimalRepairCombatsAmount}`;
  }
}
function logNewArtifactsIds(containsRow) {
    if(!containsRow) {
        return;
    }
    let newArtIds = [];
    let options = containsRow.getElementsByTagName("option");
    //alert(options.length) = 979
    for(const constoptionElement of options) {
        let valueParts = constoptionElement.value.split("#");
        if(valueParts.length >= 2) {
            let artId = valueParts[1];
            if(!(artId in ArtifactRepairCost)) {
                newArtIds.push(artId);
            }
        }
    }
    if(newArtIds.length > 0) {
        var el = document.createElement("TEXTAREA");
        document.body.appendChild(el);
        el.innerText = newArtIds.reduce((t, e) => t + `, "${e}": `, "");
    }
}
function AppendLotInfo(parentElement, artUid) {
    if(parentElement && artUid && artUid != "") {
        let artefactData = GM_getValue(artUid);
        if(artefactData && artefactData != "") {
            let artefact = Object.assign(new Artefact, JSON.parse(artefactData));
            addElement("b", parentElement, { innerText: artefact.GetLotInfo() });
        }
    }    
}
function AddAfterRepairCombatCostToInventory() {
    let artInfoDivs = document.querySelectorAll("div.inventory_item_div.inventory_item2");
    for(const artInfoDiv of artInfoDivs) {
        let artIndex = parseInt(artInfoDiv.getAttribute("art_idx"));
        let artInfo = windowObject.arts[artIndex];
        if(artInfo.art_id in ArtifactRepairCost) {
            let repairCost = ArtifactRepairCost[artInfo.art_id];
            let afterRepairCombatCost = round00(repairCost / getAfterRepairRestStrength(artInfo.durability2));
            if(!isNaN(afterRepairCombatCost)) {
                let overlapInfoDiv = artInfoDiv.querySelector("div.art_durability_hidden");
                overlapInfoDiv.innerText = `${overlapInfoDiv.innerText}\n${afterRepairCombatCost}`;
            }
        }
    }
}
function addShopArtPriceAndBattleCost() {
    let artInfoDivs = document.querySelectorAll("div.s_art");
    for(const artInfoDiv of artInfoDivs) {
        let artPropDiv = artInfoDiv.querySelector("div.s_art_prop");
        let price = 0;
        let strength;
        let battlePrice = 0;
        let goldImage = artInfoDiv.querySelector("img[src*='gold']");
        if(goldImage) {
            price += parseInt(goldImage.nextSibling.textContent.replace(/,/g, ""));
        }
        let woodImage = artInfoDiv.querySelector("img[src*='wood']");
        if(woodImage && woodImage.nextSibling) {
            price += parseInt(woodImage.nextSibling.textContent) * 180;
        }
        let oreImage = artInfoDiv.querySelector("img[src*='ore']");
        if(oreImage) {
            price += parseInt(oreImage.nextSibling.textContent) * 180;
        }
        let mercuryImage = artInfoDiv.querySelector("img[src*='mercury']");
        if(mercuryImage) {
            price += parseInt(mercuryImage.nextSibling.textContent) * 360;
        }
        let sulfurImage = artInfoDiv.querySelector("img[src*='sulfur']");
        if(sulfurImage) {
            price += parseInt(sulfurImage.nextSibling.textContent) * 360;
        }
        let crystalsImage = artInfoDiv.querySelector("img[src*='crystals']");
        if(crystalsImage) {
            price += parseInt(crystalsImage.nextSibling.textContent) * 360;
        }
        let gemsImage = artInfoDiv.querySelector("img[src*='gems']");
        if(gemsImage) {
            price += parseInt(gemsImage.nextSibling.textContent) * 360;
        }

        let artPropDivs = artInfoDiv.querySelectorAll("div.s_art_prop_amount");
        let artStrengthDiv;
        for(artStrengthDiv of artPropDivs) {
            if(artStrengthDiv.previousSibling.textContent == "Прочность: ") {
                strength = parseInt(artStrengthDiv.innerText);
                battlePrice = round00(price / strength);
                break;
            }
        }

        if(price == 0) {
            let art_infoRef = artInfoDiv.querySelector("a[href*='art_info.php']"); // Попробуем взять рыночную цену акционных артефактов
            let artId = art_infoRef.href.split("?")[1].split("=")[1];
            if(artId in StockArtifactStrength) {
                let priceData = GM_getValue("StockArtifactLastMarketMinPrice_" + artId, "");
                if(priceData && priceData != "") {
                    price = parseFloat(priceData.split("_")[0]);
                    battlePrice = parseFloat(priceData.split("_")[1]);
                }
            }
        }

        if(price > 0) {
            addElement("label", artPropDiv, { innerText: ` = ${price} (${battlePrice})` });
        }
    }    
}
function main() {
    if(location.pathname=='/auction.php') {
        extendLotsTable();
    }
    if(location.pathname=='/art_info.php') {
        let hrefParametersData = location.href.split("?")[1];
        let hrefParameters = hrefParametersData.split("&");
        let artId = hrefParameters[0].split("=")[1];
        let artUid;
        if(hrefParameters.length > 1) {
            artUid = hrefParameters[1].split("=")[1];
            let s_art_insideDiv = document.querySelector("div.s_art_inside");
            AppendLotInfo(s_art_insideDiv, artUid);
        }
    }
    if(location.pathname=='/mod_workbench.php') {
        let formElement = document.querySelector("form[name='fmain']");
        if(formElement) {
            let idInput = formElement.querySelector("input[name='art_id2']");
            if(idInput && idInput.value != "") {
                AppendLotInfo(formElement, idInput.value);
            }
        }
    }
    if(location.pathname=='/inventory.php' && ShowAfterRepairBattleCostInInventory) {
        AddAfterRepairCombatCostToInventory();
    }
    if(location.pathname=='/shop.php') {
        addShopArtPriceAndBattleCost();
    }
}

// Start
if(!this.GM_getValue) {
    this.GM_getValue = function(key, def) {
        return localStorage[key] || def;
    };
    this.GM_setValue = function(key, value) {
        localStorage[key] = value;
    };
    this.GM_deleteValue = function(key) {
        return delete localStorage[key];
    };
}
if(!this.GM_addStyle) {
    this.GM_addStyle = function(key) {
        let style = document.createElement('style');
        style.textContent = key;
        document.querySelector("head").appendChild(style);
    }
}
if(!this.GM_listValues) {
    this.GM_listValues = function() {
        let values = [];
        for (let i = 0; i < localStorage.length; i++) {
            values.push(localStorage.key(i));
        }
        return values;
    }
}
// let rr = artefacts.reduce((t, a) => t + `, "${a.id}": ${a.repair_cost}`, "");// var el = document.createElement("TEXTAREA");// document.body.appendChild(el);// el.innerText = rr;
//alert(Object.keys(ArtifactRepairCost).length)
main();