Module:Sandbox/Aurelain/ArtifactsOverview

From Heroes of Might and Magic: Olden Era Official Wiki

This module renders a giant table with all artifacts. Scroll artifacts are consolidated into 3 generic scroll artifacts (normal, enchanted and mythic). Campaign artifacts are excluded.

A hyper parameter is supported. For more information, see Module:UtilHyper/doc.

Usage

Input: {{#invoke:Sandbox/Aurelain/ArtifactsOverview|display | lang=en | hyper=Attack=Hero_Basics#Attributes}}

Output:

idnameX
ambassadors_word_ambassadors_sash_artifactAmbassador's Sash大使の懸章
ambassadors_word_diplomatic_gifts_artifactDiplomatic Gifts外交の贈り物
ancient_idol_artifactAncient Idol古代の偶像
angelic_alliance_armor_of_wonder_artifactArmor of Wonder奇跡の鎧
angelic_alliance_celestial_sash_of_bliss_artifactCelestial Sash of Bliss天福のサッシュ
angelic_alliance_helm_of_heavenly_enlightenment_artifactHelm of Heavenly Enlightenment天啓の兜
angelic_alliance_lions_shield_of_courage_artifactLion's Shield of Courage勇猛なる獅子の盾
angelic_alliance_sandals_of_the_saint_artifactSandals of the Saint聖者のサンダル
angelic_alliance_sword_of_judgement_artifactSword of Judgement審判の剣
banner_of_four_winds_artifactBanner of Six Winds六風の紋章旗
beelzebubs_blessing_chitinous_shield_artifactChitinous Shield甲殻の盾
beelzebubs_blessing_demon_claw_artifactDemon Claw悪魔の爪
beelzebubs_blessing_demon_crest_artifactBeelzebub's Boonベルゼブブの恵み
beelzebubs_blessing_heartbeat_artifactHeartbeat鼓動の鎧
boreolos_foot_artifactBoreoloth's Tailボレオロスの尾
boreolos_hand_artifactBoreoloth's Handボレオロスの手
boreolos_head_artifactBoreoloth's Headボレオロスの頭部
boreolos_heart_artifactBoreoloth's Heartボレオロスの心臓
caduceus_artifactCaduceusカドゥケウス
campaign_M3_captured_priestesses_itemChained Priestesses鎖でつながれた修道女たち
campaign_M3_freed_priestesses_itemInjured Priestesses傷ついた修道女たち
campaign_M9_phoenix_egg_itemPhoenix Eggフェニックスの卵
campaign_ichor_itemBlob of Red紅の塊
cards_deck_artifactDeck of Spells呪文札
catechism_of_daylight_magic_artifactDaylight Tome光明の書
catechism_of_night_magic_artifactNightshade Tome暗黒の書
catechism_of_primal_magic_artifactPrimal Tome原初の書
catechism_of_spacetime_magic_artifactArcane Tome秘術の書
chain_link_artifactChain Link鎖の輪
chain_mail_artifactChain Mailチェインメイル
clothes_of_enlightenment_artifactRobe of Enlightenment悟りのローブ
crown_of_the_supreme_magi_artifactCrown of the Supreme Magi大賢者の王冠
demonic_heart_artifactDemonic Heart悪魔の心
duelists_pride_brass_knuckles_artifactBrass Knucklesブラスナックル
duelists_pride_buckler_artifactBucklerバックラー
duelists_pride_rapier_artifactRapierレイピア
eagle_armor_artifactEagle Armor鷲の鎧
elixir_of_life_flask_of_oblivion_artifactFlask of Oblivion忘却のフラスコ
elixir_of_life_lifeblood_fairy_artifactLifeblood Fae生き血の妖精
elixir_of_life_ring_of_life_artifactRing of Life生命の指輪
enchanted_magic_scroll_artifact_day_10_magic_second_songEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_11_magic_masterful_parryEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_12_magic_radiant_armorEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_13_magic_holy_armsEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_14_magic_vengeanceEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_15_magic_judgementEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_16_magic_arinas_chosenEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_17_magic_clear_viewEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_18_magic_farsightEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_1_magic_healing_waterEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_2_magic_sharp_edgeEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_3_magic_hasteEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_4_magic_favorable_windEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_5_magic_shorten_shadowEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_6_magic_cleansing_rayEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_7_magic_inner_lightEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_8_magic_tauntEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_day_9_magic_arinas_hymnEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_10_magic_silenceEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_11_magic_vulnerabilityEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_12_magic_summon_starchildEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_13_magic_berserkerEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_14_magic_nairas_kissEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_15_magic_deaths_callEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_16_magic_shadow_armyEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_17_magic_read_mindsEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_18_magic_nairas_veilEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_1_magic_unnatural_calmEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_2_magic_webEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_3_magic_enlarge_shadowEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_4_magic_despairEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_5_magic_shade_cloakEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_6_magic_deaths_gripEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_7_magic_fatal_decayEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_8_magic_sleepEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_night_9_magic_twilightEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_10_magic_primordial_purityEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_11_magic_armageddonEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_12_magic_chain_lightningEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_13_magic_avalancheEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_14_magic_hksmillas_rampageEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_15_magic_summon_primal_remnantEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_16_magic_stone_fangsEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_17_magic_groundsightEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_18_magic_primordial_chaosEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_1_magic_thunderboltEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_2_magic_thick_hideEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_3_magic_weanEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_4_magic_fire_globeEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_5_magic_crystal_crownEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_6_magic_ice_boltEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_7_magic_wall_of_flameEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_8_magic_cave_inEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_primal_9_magic_earths_rageEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_10_magic_mirror_copyEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_11_magic_decimateEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_12_magic_rewindEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_13_magic_black_holeEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_14_magic_doreaths_tideEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_15_magic_trap_snareEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_16_magic_reality_distortionEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_17_magic_reinforcementsEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_18_magic_assembleEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_1_magic_early_startEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_2_magic_energy_explosionEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_3_magic_energyzeEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_4_magic_optical_illusionEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_5_magic_trap_jawsEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_6_magic_blinkEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_7_magic_shacklesEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_8_magic_carapaceEnchanted Magic Scroll付呪されし魔法の巻物
enchanted_magic_scroll_artifact_space_9_magic_impending_fateEnchanted Magic Scroll付呪されし魔法の巻物
endless_bag_artifactEndless Bag無限の鞄
ethereal_knowledge_glass_dagger_artifactCrescent Dagger三日月の短剣
ethereal_knowledge_mirror_shoes_artifactMagic Slippers魔法のスリッパ
ethereal_knowledge_third_eye_artifactSeven Eyes七眼
ethereal_knowledge_vortex_dress_artifactVortex Robe旋風のローブ
excalibur_artifactExcaliburエクスカリバー
fallen_angel_wings_artifactFallen Angel Wings堕天使の翼
fine_wand_artifactFine Wand上質な杖
flag_of_truce_artifactFlag of Truce停戦の旗
garotte_artifactGarotte鉄環
gifts_of_dwarven_lords_automated_antimagic_shield_artifactAutomated Antimagic Shield自動式反魔法機構
gifts_of_dwarven_lords_crimson_resonance_controller_artifactCrimson Resonance Controller深紅の共鳴制御装置
gifts_of_dwarven_lords_emerald_resonance_controller_artifactEmerald Resonance Controller翡翠の共鳴制御装置
gifts_of_dwarven_lords_protective_belt_artifactProtective Belt保護用腰帯
golden_goose_egg_artifactGolden Goose Egg黄金のガチョウの卵
head_torch_artifactHead Torchヘッドランプ
holy_sigil_of_eridore_artifactHoly Sigil of Eridoreエリドアの聖印
holy_sigil_of_insara_artifactHoly Sigil of Insaraインサラの聖印
holy_sigil_of_mearea_artifactHoly Sigil of Meareaメアレアの聖印
holy_sigil_of_quix_artifactHoly Sigil of Quixクィクスの聖印
holy_sigil_of_roph_artifactHoly Sigil of Rophロフの聖印
holy_sigil_of_the_second_man_artifactHoly Sigil of The Second Man第二の男の聖印
holy_sigil_of_the_seven_magi_artifactHoly Sigil of The Seven Magi七魔道士の聖印
holy_sigil_of_uurdt_artifactHoly Sigil of Uurdtウルドゥの聖印
hourglass_of_protection_artifactPelagic Hourglass海原の砂時計
inner_song_fancy_mask_artifactFancy Mask豪華な仮面
inner_song_music_sheet_artifactMusic Sheet楽譜
inner_song_singing_pan_pipe_artifactSinging Pan-Pipe歌うパンパイプ
keepers_fortitude_keepers_oberegus_artifactKeeper's Amulet番人のアミュレット
keepers_fortitude_keepers_ring_artifactKeeper's Ring番人の指輪
knights_honor_armet_artifactArmetアーメット
knights_honor_drums_of_war_artifactDrum of War戦鼓
knights_honor_lance_artifactLance騎槍
knights_honor_misericorde_artifactMisericordeミゼリコルド
knights_honor_plate_armor_artifactPlate Armorプレートアーマー
legions_step_artifactLegion's Leg軍団の具足
living_arrows_light_and_shade_cloak_artifactLight-and-Shade Cloak明陰の外套
living_arrows_quivering_quiver_artifactQuivering Quiver胎動の矢筒
living_arrows_shroomwood_bow_artifactShroomwood Bow茸原木の弓
lords_ring_artifactLord's Ring君主の指輪
magic_key_ring_artifactMagic Key Ring魔法の鍵束
magic_scroll_artifact_day_10_magic_second_songMagic Scroll魔法の巻物
magic_scroll_artifact_day_11_magic_masterful_parryMagic Scroll魔法の巻物
magic_scroll_artifact_day_12_magic_radiant_armorMagic Scroll魔法の巻物
magic_scroll_artifact_day_13_magic_holy_armsMagic Scroll魔法の巻物
magic_scroll_artifact_day_14_magic_vengeanceMagic Scroll魔法の巻物
magic_scroll_artifact_day_15_magic_judgementMagic Scroll魔法の巻物
magic_scroll_artifact_day_16_magic_arinas_chosenMagic Scroll魔法の巻物
magic_scroll_artifact_day_17_magic_clear_viewMagic Scroll魔法の巻物
magic_scroll_artifact_day_18_magic_farsightMagic Scroll魔法の巻物
magic_scroll_artifact_day_1_magic_healing_waterMagic Scroll魔法の巻物
magic_scroll_artifact_day_2_magic_sharp_edgeMagic Scroll魔法の巻物
magic_scroll_artifact_day_3_magic_hasteMagic Scroll魔法の巻物
magic_scroll_artifact_day_4_magic_favorable_windMagic Scroll魔法の巻物
magic_scroll_artifact_day_5_magic_shorten_shadowMagic Scroll魔法の巻物
magic_scroll_artifact_day_6_magic_cleansing_rayMagic Scroll魔法の巻物
magic_scroll_artifact_day_7_magic_inner_lightMagic Scroll魔法の巻物
magic_scroll_artifact_day_8_magic_tauntMagic Scroll魔法の巻物
magic_scroll_artifact_day_9_magic_arinas_hymnMagic Scroll魔法の巻物
magic_scroll_artifact_night_10_magic_silenceMagic Scroll魔法の巻物
magic_scroll_artifact_night_11_magic_vulnerabilityMagic Scroll魔法の巻物
magic_scroll_artifact_night_12_magic_summon_starchildMagic Scroll魔法の巻物
magic_scroll_artifact_night_13_magic_berserkerMagic Scroll魔法の巻物
magic_scroll_artifact_night_14_magic_nairas_kissMagic Scroll魔法の巻物
magic_scroll_artifact_night_15_magic_deaths_callMagic Scroll魔法の巻物
magic_scroll_artifact_night_16_magic_shadow_armyMagic Scroll魔法の巻物
magic_scroll_artifact_night_17_magic_read_mindsMagic Scroll魔法の巻物
magic_scroll_artifact_night_18_magic_nairas_veilMagic Scroll魔法の巻物
magic_scroll_artifact_night_1_magic_unnatural_calmMagic Scroll魔法の巻物
magic_scroll_artifact_night_2_magic_webMagic Scroll魔法の巻物
magic_scroll_artifact_night_3_magic_enlarge_shadowMagic Scroll魔法の巻物
magic_scroll_artifact_night_4_magic_despairMagic Scroll魔法の巻物
magic_scroll_artifact_night_5_magic_shade_cloakMagic Scroll魔法の巻物
magic_scroll_artifact_night_6_magic_deaths_gripMagic Scroll魔法の巻物
magic_scroll_artifact_night_7_magic_fatal_decayMagic Scroll魔法の巻物
magic_scroll_artifact_night_8_magic_sleepMagic Scroll魔法の巻物
magic_scroll_artifact_night_9_magic_twilightMagic Scroll魔法の巻物
magic_scroll_artifact_primal_10_magic_primordial_purityMagic Scroll魔法の巻物
magic_scroll_artifact_primal_11_magic_armageddonMagic Scroll魔法の巻物
magic_scroll_artifact_primal_12_magic_chain_lightningMagic Scroll魔法の巻物
magic_scroll_artifact_primal_13_magic_avalancheMagic Scroll魔法の巻物
magic_scroll_artifact_primal_14_magic_hksmillas_rampageMagic Scroll魔法の巻物
magic_scroll_artifact_primal_15_magic_summon_primal_remnantMagic Scroll魔法の巻物
magic_scroll_artifact_primal_16_magic_stone_fangsMagic Scroll魔法の巻物
magic_scroll_artifact_primal_17_magic_groundsightMagic Scroll魔法の巻物
magic_scroll_artifact_primal_18_magic_primordial_chaosMagic Scroll魔法の巻物
magic_scroll_artifact_primal_1_magic_thunderboltMagic Scroll魔法の巻物
magic_scroll_artifact_primal_2_magic_thick_hideMagic Scroll魔法の巻物
magic_scroll_artifact_primal_3_magic_weanMagic Scroll魔法の巻物
magic_scroll_artifact_primal_4_magic_fire_globeMagic Scroll魔法の巻物
magic_scroll_artifact_primal_5_magic_crystal_crownMagic Scroll魔法の巻物
magic_scroll_artifact_primal_6_magic_ice_boltMagic Scroll魔法の巻物
magic_scroll_artifact_primal_7_magic_wall_of_flameMagic Scroll魔法の巻物
magic_scroll_artifact_primal_8_magic_cave_inMagic Scroll魔法の巻物
magic_scroll_artifact_primal_9_magic_earths_rageMagic Scroll魔法の巻物
magic_scroll_artifact_space_10_magic_mirror_copyMagic Scroll魔法の巻物
magic_scroll_artifact_space_11_magic_decimateMagic Scroll魔法の巻物
magic_scroll_artifact_space_12_magic_rewindMagic Scroll魔法の巻物
magic_scroll_artifact_space_13_magic_black_holeMagic Scroll魔法の巻物
magic_scroll_artifact_space_14_magic_doreaths_tideMagic Scroll魔法の巻物
magic_scroll_artifact_space_15_magic_trap_snareMagic Scroll魔法の巻物
magic_scroll_artifact_space_16_magic_reality_distortionMagic Scroll魔法の巻物
magic_scroll_artifact_space_17_magic_reinforcementsMagic Scroll魔法の巻物
magic_scroll_artifact_space_18_magic_assembleMagic Scroll魔法の巻物
magic_scroll_artifact_space_1_magic_early_startMagic Scroll魔法の巻物
magic_scroll_artifact_space_2_magic_energy_explosionMagic Scroll魔法の巻物
magic_scroll_artifact_space_3_magic_energyzeMagic Scroll魔法の巻物
magic_scroll_artifact_space_4_magic_optical_illusionMagic Scroll魔法の巻物
magic_scroll_artifact_space_5_magic_trap_jawsMagic Scroll魔法の巻物
magic_scroll_artifact_space_6_magic_blinkMagic Scroll魔法の巻物
magic_scroll_artifact_space_7_magic_shacklesMagic Scroll魔法の巻物
magic_scroll_artifact_space_8_magic_carapaceMagic Scroll魔法の巻物
magic_scroll_artifact_space_9_magic_impending_fateMagic Scroll魔法の巻物
milos_curse_golden_moth_artifactGolden Moth黄金の蛾
milos_curse_golden_pig_artifactGolden Pig黄金の豚
milos_curse_skull_of_milos_artifactSkull of Milosミロスの頭蓋骨
monster_head_artifactMonster Head怪物の生首
mythic_magic_scroll_artifact_neutral_magic_dimension_doorMythic Magic Scroll神話めいた魔法の巻物
mythic_magic_scroll_artifact_neutral_magic_light_gateMythic Magic Scroll神話めいた魔法の巻物
mythic_magic_scroll_artifact_neutral_magic_pocket_dimensionMythic Magic Scroll神話めいた魔法の巻物
mythic_magic_scroll_artifact_neutral_magic_second_sightMythic Magic Scroll神話めいた魔法の巻物
mythic_magic_scroll_artifact_neutral_magic_shadow_formMythic Magic Scroll神話めいた魔法の巻物
mythic_magic_scroll_artifact_neutral_magic_town_portalMythic Magic Scroll神話めいた魔法の巻物
ogres_club_of_havoc_artifactOgre's Club of Havocオーガの破砕棒
omencaller_artifactOmencaller凶兆招き
orb_of_destruction_artifactOrb of Destruction破壊のオーブ
orb_of_inhibition_artifactOrb of Inhibition抑止のオーブ
paupers_glory_dumb_club_artifactFish-to-the-Faceハリセン魚
paupers_glory_last_coin_artifactLast Coin最後の硬貨
paupers_glory_rags_artifactRagsぼろ布
paupers_glory_rope_belt_artifactRope Belt縄の帯
paupers_glory_straw_hat_artifactStraw Hat麦わら帽子
paupers_glory_wooden_ring_artifactWooden Ring木の指輪
pole_star_artifactPole Star極星
power_of_the_dragon_father_dragon_crest_artifactCrown of Dragontooth竜牙の王冠
power_of_the_dragon_father_dragon_scale_armor_artifactDragon Scale Armor竜鱗の鎧
power_of_the_dragon_father_dragon_scale_shield_artifactDragon Scale Shield竜鱗の盾
power_of_the_dragon_father_dragonbone_greaves_artifactDragonbone Greaves竜骨の脛当て

-- Usage: {{#invoke:ArtifactsOverview|display | lang=en}}
local p = {}
local f = mw.ustring.format

-- Note: The right side is just a fallback, it will seldom be used.
local TRANSLATION_IDS = {
    wiki_none = 'None'
}

-- Displays a variable
------------------------------------------------------------------------------------------------------------------------
local function dump(target)
    return '<pre>' .. mw.dumpObject(target) .. '</pre>'
end

-- Spawns a safe robotic url from an English name, fit for adding it before the visible name
------------------------------------------------------------------------------------------------------------------------
local function getUrl(nameEn, lang)
    if not nameEn then
        return ''
    end
    local url = nameEn
    if lang ~= 'en' then
        url = url .. '/' .. lang
    end
    return url
end

-- Retrieves the text for some specific ids from Cargo Translations.
------------------------------------------------------------------------------------------------------------------------
local function translateIds(ids, lang, extra)
    -- Key list
    local list = {}
    for key, _ in pairs(ids) do
        list[#list + 1] = key
    end
    local idListString = '"' .. table.concat(list, '", "') .. '"'

    -- Cargo
    local where = {}
    table.insert(where, 'target_id IN (' .. idListString .. ')')
    table.insert(where, 'language = "' .. lang .. '"')
    if extra then
        table.insert(where, extra)
    end
    local results = mw.ext.cargo.query('Translation', 'target_id, name', {
        where = table.concat(where, ' AND '),
        limit = 100
    })

    -- Dictionary
    local dictionary = mw.clone(ids)
    for key, value in pairs(dictionary) do
        --dictionary[key] = value .. '[[Data:WikiTranslations/' .. lang .. '#' .. key .. '|💬]]'
        dictionary[key] = value
    end
    for _, row in ipairs(results) do
        local name = row['name']
        if name and name ~= '' and not name:find('💬') then
            dictionary[row['target_id']] = name
        end
    end
    return dictionary
end

-- Converts a dictionary into a linear array
------------------------------------------------------------------------------------------------------------------------
local function flatten(hub)
    local list = {}
    for _, entry in pairs(hub) do
        list[#list + 1] = entry
    end
    return list
end

-- Interrogates the main Cargo table
------------------------------------------------------------------------------------------------------------------------
local function queryMain(lang)
    -- fields:
    local fields = {}
    table.insert(fields, 'Artifact.id = id');
    table.insert(fields, 'Translation.name = name');
    table.insert(fields, 'Translation.language = language');

    -- where:
    local where = {}
    table.insert(where, 'Translation.type = "artifact"')
    table.insert(where, '(Translation.language = "en" OR Translation.language = "' .. lang .. '")')

    -- query:
    return mw.ext.cargo.query('Artifact, Translation', table.concat(fields, ','), {
        join = 'Artifact.id = Translation.target_id',
        where = table.concat(where, ' AND '),
        limit = 500
    })
end

-- Folds all Cargo results into a single dictionary:
------------------------------------------------------------------------------------------------------------------------
local function consolidate(lang, results)
    local hub = {}
    for _, row in ipairs(results) do
        local id = row.id
        local entry = hub[id]
        if not entry then
            entry = {}
            entry.id = id or ''
            hub[id] = entry
        end
        if row.language == lang then
            entry.name = row.name or ''
        end
        if row.language == 'en' then
            entry.nameEn = row.name or ''
        end
    end
    return hub
end

------------------------------------------------------------------------------------------------------------------------
local function sortList(a, b)
    return a.id < b.id
end

-- Boilerplate for the header cells
------------------------------------------------------------------------------------------------------------------------
local function addTh(tr, text)
    return tr:tag('th'):wikitext(text)
end

-- Boilerplate for the body cells
------------------------------------------------------------------------------------------------------------------------
local function addTd(tr, content)
    if type(content) == "string" then
        return tr:tag('td'):wikitext(content)
    else
        return tr:tag('td'):node(content)
    end
end

-- Boilerplate for the separator rows
------------------------------------------------------------------------------------------------------------------------
local function addSeparator(htmlTable, className, content)
    htmlTable:tag('tr')
        :addClass('separator')
        :addClass(className)
        :tag('td'):attr('data-sort-value', ''):attr('colspan', 100):wikitext(content):done()
end

------------------------------------------------------------------------------------------------------------------------
local function createHeader(htmlTable)
    local tr = htmlTable:tag('tr')
    addTh(tr, 'id'):attr('colspan', 2)
    addTh(tr, 'nameX'):attr('colspan', 2)
end

------------------------------------------------------------------------------------------------------------------------
local function createBody(htmlTable, list)
    local currentType = list[1].param1
    local currentFaction = list[1].faction
    for _, item in ipairs(list) do
        -- separators
        if item.faction ~= currentFaction then
            currentFaction = item.faction
            currentType = item.class_type
            addSeparator(htmlTable, 'separator-large', '')
        elseif item.class_type ~= currentType then
            currentType = item.class_type
            addSeparator(htmlTable, 'separator-tiny', '')
        end

        local tr = htmlTable:tag('tr'):addClass('artifact')
        addTd(tr, item.id)
        addTd(tr, item.nameEn)
        addTd(tr, item.name)
    end
end

-- M A I N
------------------------------------------------------------------------------------------------------------------------
function p.display(frame)
    --do return dump(frame) end

    -- Args
    local args = frame.args
    local lang = args.lang ~= '' and args.lang or 'en'
    lang = 'ja'

    -- Language
    local words = translateIds(TRANSLATION_IDS, lang)

    -- Cargo
    local results = queryMain(lang)
    local hub = consolidate(lang, results)
    local list = flatten(hub);
    if #list == 0 then return words.none end

    -- Various manipulations
    table.sort(list, sortList)

    -- Table
    local htmlTable = mw.html.create('table')
    htmlTable:addClass('wikitable sortable')
    createHeader(htmlTable)
    createBody(htmlTable, list)

    -- Output
    local styleTag = frame:extensionTag('templatestyles', '', { src = frame:getTitle() .. '/styles.css' })
    return '<div class="artifacts-overview">' .. styleTag .. tostring(htmlTable) .. '</div>'
end

return p