Module:Item/config: Difference between revisions
Jump to navigation
Jump to search
(Removed defaults for help text and size. These are reliably exported by PyPoE; it's not necessary to include defaults for them.) |
Mefisto1029 (talk | contribs) No edit summary |
||
| (80 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ||
-- | -- | ||
-- Configuration for Module: | -- Configuration for Module:Item and submodules | ||
-- | -- | ||
------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ||
| Line 7: | Line 7: | ||
local m_util = require('Module:Util') | local m_util = require('Module:Util') | ||
local m_game = mw.loadData('Module:Game') | -- Should we use the sandbox version of our submodules? | ||
local use_sandbox = m_util.misc.maybe_sandbox('Item/config') | |||
local m_game = use_sandbox and mw.loadData('Module:Game/sandbox') or mw.loadData('Module:Game') | |||
local cfg = {} | local cfg = {} | ||
| Line 31: | Line 34: | ||
cargo_attach = 'Template:Item/cargo/%s/attach', | cargo_attach = 'Template:Item/cargo/%s/attach', | ||
} | } | ||
cfg.i18n.categories = { | cfg.i18n.categories = { | ||
| Line 45: | Line 46: | ||
sell_prices_override = 'Items with sell prices overrides', | sell_prices_override = 'Items with sell prices overrides', | ||
automatic_recipes_disabled = 'Items with automatic recipes disabled', | automatic_recipes_disabled = 'Items with automatic recipes disabled', | ||
deprecated_parameters = 'Pages using deprecated parameters for item module', | deprecated_parameters = 'Pages using deprecated parameters for item module', | ||
deprecated_skill_parameters = 'Pages using deprecated parameters for skill data', | deprecated_skill_parameters = 'Pages using deprecated parameters for skill data', | ||
| Line 56: | Line 56: | ||
unique_affix = 'Unique %s', | unique_affix = 'Unique %s', | ||
prophecies = 'Prophecies', | prophecies = 'Prophecies', | ||
liquid_emotions = 'Liquid emotions', | |||
talismans = 'Talismans', | talismans = 'Talismans', | ||
essences = 'Essences', | essences = 'Essences', | ||
| Line 66: | Line 66: | ||
maps_by_series = '%s series maps', | maps_by_series = '%s series maps', | ||
-- | -- gems | ||
skill_gems = '%s skill gems', | |||
support_gems = '%s support gems', | |||
meta_gems = '%s meta gems', | |||
} | |||
cfg.i18n.gems = { | |||
gem_tag_page = '%s (gem tag)', | |||
} | } | ||
| Line 95: | Line 101: | ||
cost = 'Cost: %s', | cost = 'Cost: %s', | ||
reservation = 'Reservation: %s', | reservation = 'Reservation: %s', | ||
additional_reservation = 'Additional Reservation: %s', | |||
cost_multiplier = 'Cost & Reservation Multiplier: %s', | cost_multiplier = 'Cost & Reservation Multiplier: %s', | ||
vaal_souls_per_use = 'Souls Per Use: %s', | vaal_souls_per_use = 'Souls Per Use: %s', | ||
| Line 119: | Line 126: | ||
attacks_per_second = 'Attacks per Second: %s', | attacks_per_second = 'Attacks per Second: %s', | ||
weapon_range = 'Weapon Range: %s', | weapon_range = 'Weapon Range: %s', | ||
map_level = ' | reload_time = 'Reload Time: %s', | ||
map_tier = ' | map_level = 'Area Level: %s', | ||
map_guild_character = m_util.html. | map_tier = 'Waystone Tier: %s', | ||
map_guild_character = m_util.html.tooltip('Guild Character', 'When used in guild creation, this map can be used for the listed character') .. ': %s', | |||
item_quantity = 'Item Quantity: %s', | item_quantity = 'Item Quantity: %s', | ||
item_rarity = 'Item Rarity: %s', | item_rarity = 'Item Rarity: %s', | ||
| Line 135: | Line 143: | ||
energy_shield = 'Energy Shield: %s', | energy_shield = 'Energy Shield: %s', | ||
ward = 'Ward: %s', | ward = 'Ward: %s', | ||
spirit = 'Spirit: %s', | |||
movement_speed = 'Movement Speed: %s', | movement_speed = 'Movement Speed: %s', | ||
talisman_tier = 'Talisman Tier: %s', | talisman_tier = 'Talisman Tier: %s', | ||
stack_size = 'Stack Size: %s', | stack_size = 'Stack Size: %s', | ||
crafting_mod_level_min = 'Minimum Modifier Level: %s', | |||
crafting_item_level_max = 'Maximum Item Level: %s', | |||
limit = 'Limit: %s', | |||
essence_level = 'Essence Tier: %s', | essence_level = 'Essence Tier: %s', | ||
liquid_emotion_tier = 'Emotion Tier: %s', | |||
monster_category = 'Monster Category: %s', | monster_category = 'Monster Category: %s', | ||
pack_size = 'Pack Size: %s Monsters', | |||
pack_contains_pack_leader = string.format('Pack contains %s', m_util.html.poe_color('value', 'Pack Leader')), | |||
pack_chance_to_contain_pack_leader = string.format('Pack chance to contain %s: %%s', m_util.html.poe_color('value', 'Pack Leader')), | |||
requires = 'Requires %s', | requires = 'Requires %s', | ||
requires_2 = 'Requires: %s', | |||
level_inline = 'Level %s', | level_inline = 'Level %s', | ||
level = 'Level: %s', | level = 'Level: %s', | ||
tier = 'Tier: %s', | |||
category = 'Category: %s', | |||
gem_quality_effect_bonus = 'Additional Effects From 1-20%% Quality: <br> %s', | gem_quality_effect_bonus = 'Additional Effects From 1-20%% Quality: <br> %s', | ||
variations = 'Variations', | variations = 'Variations', | ||
cannot_be_traded_or_modified = 'Cannot be traded or modified', | cannot_be_traded_or_modified = 'Cannot be traded or modified', | ||
account_bound = 'Account-bound', | account_bound = 'Account-bound', | ||
throw_time = 'Throw Time: %s', | |||
detonation_type = 'Detonation Type: %s', | |||
inherent_skill = 'Grants Skill: %s', | |||
inherent_skill_lvl = 'Grants Skill: Level %s %s', | |||
inherent_skill_lvl_range = 'Grants Skill: Level (%s-%s) %s', | |||
-- Gems | |||
support_requirements = 'Support Requirements: %s', | |||
-- Tattoos | -- Tattoos | ||
tattoo_target = 'Replaces a %s Passive Skill', | tattoo_target = 'Replaces a %s Passive Skill', | ||
| Line 155: | Line 181: | ||
tattoo_max_adjacent = 'Requires %s adjacent Passive Skill Allocated', | tattoo_max_adjacent = 'Requires %s adjacent Passive Skill Allocated', | ||
tattoo_maximum = 'maximum', | tattoo_maximum = 'maximum', | ||
-- harvest seeds | -- harvest seeds | ||
seed_tier = 'Seed Tier: %s', | seed_tier = 'Seed Tier: %s', | ||
| Line 201: | Line 227: | ||
seal_cost = 'Seal cost: %s', | seal_cost = 'Seal cost: %s', | ||
purchase_costs = m_util.html. | gemcutting_skill_gem = 'It can be obtained by [[Gemcutting|engraving]] an [[Uncut Skill Gem]].', | ||
sell_price = m_util.html. | gemcutting_spirit_gem = 'It can be obtained by [[Gemcutting|engraving]] an [[Uncut Spirit Gem]].', | ||
gemcutting_support_gem = 'It can be obtained by [[Gemcutting|engraving]] an [[Uncut Support Gem]].', | |||
purchase_costs = m_util.html.tooltip('Vendor Prices', 'Cost of purchasing this item from an NPC vendor when it is available in their inventory'), | |||
sell_price = m_util.html.tooltip('Vendor Offer', 'Offer given by an NPC vendor in exchange for this item when it is not used in a vendor recipe'), | |||
damage_per_second = 'Weapon DPS', | damage_per_second = 'Weapon DPS', | ||
| Line 232: | Line 261: | ||
['Bow'] = 'Bow', | ['Bow'] = 'Bow', | ||
['Wand'] = 'Wand', | ['Wand'] = 'Wand', | ||
['Two Hand Axe'] = 'Two | ['Two Hand Axe'] = 'Two Hand Axe', | ||
['Two Hand Sword'] = 'Two Hand Sword', | ['Two Hand Sword'] = 'Two Hand Sword', | ||
['Two Hand Mace'] = 'Two Hand Mace', | ['Two Hand Mace'] = 'Two Hand Mace', | ||
['Sceptre'] = 'Sceptre', | ['Sceptre'] = 'Sceptre', | ||
['One Hand Mace'] = 'One | ['One Hand Mace'] = 'One Hand Mace', | ||
['One Hand Axe'] = 'One | ['One Hand Axe'] = 'One Hand Axe', | ||
['One Hand Sword'] = ' | ['One Hand Sword'] = 'One Hand Sword', | ||
['Claw'] = 'Claw', | ['Claw'] = 'Claw', | ||
['Dagger'] = 'Dagger', | ['Dagger'] = 'Dagger', | ||
| Line 247: | Line 274: | ||
['HideoutDoodad'] = 'Hideout Item', | ['HideoutDoodad'] = 'Hideout Item', | ||
['AbyssJewel'] = 'Abyss', | ['AbyssJewel'] = 'Abyss', | ||
['Warstaff'] = 'Quartertaff', | |||
['Flail'] = 'Flail', | |||
['Spear'] = 'Spear', | |||
['Crossbow'] = 'Crossbow', | |||
['Trap'] = 'Trap', | |||
['Shield'] = 'Shield', | |||
['Buckler'] = 'Buckler', | |||
['Focus'] = 'Focus', | |||
} | } | ||
| Line 267: | Line 302: | ||
base_item_not_found = 'Base item could not be found in the database. Check for spelling mistakes or whether the base item page exists on the wiki. If the base item page exists on the wiki, but it can not be found please null-edit the page.', | base_item_not_found = 'Base item could not be found in the database. Check for spelling mistakes or whether the base item page exists on the wiki. If the base item page exists on the wiki, but it can not be found please null-edit the page.', | ||
base_item_wrong_rarity = 'The specified base item must be normal rarity', | base_item_wrong_rarity = 'The specified base item must be normal rarity', | ||
mod_not_found = 'Modifier(s) could not be found in the database: %s', | |||
invalid_acquisition_tag = '%s is not a valid acquisition tag', | invalid_acquisition_tag = '%s is not a valid acquisition tag', | ||
invalid_tag = '%s is not a valid tag', | invalid_tag = '%s is not a valid tag', | ||
| Line 281: | Line 317: | ||
invalid_cosmetic_type = '%s is not a valid cosmetic type', | invalid_cosmetic_type = '%s is not a valid cosmetic type', | ||
invalid_monster_category = '%s is not a valid monster category', | invalid_monster_category = '%s is not a valid monster category', | ||
} | } | ||
| Line 294: | Line 324: | ||
cfg.i18n.recipes = { | cfg.i18n.recipes = { | ||
reforging_bench_recipe = 'Reforging Bench recipe', | |||
-- Item names | -- Item names | ||
agate_amulet = 'Agate Amulet', | agate_amulet = 'Agate Amulet', | ||
| Line 307: | Line 339: | ||
granite_flask = 'Granite Flask', | granite_flask = 'Granite Flask', | ||
precursors_emblem = 'Precursor\'s Emblem', | precursors_emblem = 'Precursor\'s Emblem', | ||
grand_spectrum = 'Grand Spectrum', | |||
['Forge of the Phoenix Map'] = 'Forge of the Phoenix Map', | ['Forge of the Phoenix Map'] = 'Forge of the Phoenix Map', | ||
| Line 334: | Line 367: | ||
item = 'item', | item = 'item', | ||
shield = 'shield', | shield = 'shield', | ||
buckler= 'buckler', | |||
focus = 'focus', | |||
map = 'map', | map = 'map', | ||
gem = 'gem', | gem = 'gem', | ||
| Line 359: | Line 394: | ||
breachstone = 'breachstone', | breachstone = 'breachstone', | ||
scarab = 'scarab', | scarab = 'scarab', | ||
bestiary_scarab = 'Bestiary scarab', | |||
cartography_scarab = 'Cartography scarab', | |||
divination_scarab = 'Divination scarab', | |||
horned_scarab = 'Horned scarab', | |||
sulphite_scarab = 'Sulphite scarab', | |||
essence = 'essence', | essence = 'essence', | ||
deafening_essence = '"Deafening" (tier 7) essence', | deafening_essence = '"Deafening" (tier 7) essence', | ||
| Line 367: | Line 405: | ||
divination_card = 'divination card', | divination_card = 'divination card', | ||
body_armour = 'body armour', | body_armour = 'body armour', | ||
one_hand_weapon = 'one | one_hand_weapon = 'one hand weapon', | ||
two_hand_weapon = 'two | two_hand_weapon = 'two hand weapon', | ||
league_specific_item = 'league-specific item', | league_specific_item = 'league-specific item', | ||
quality_currency = 'quality currency', | quality_currency = 'quality currency', | ||
| Line 384: | Line 422: | ||
incubator = 'incubator', | incubator = 'incubator', | ||
oil = 'oil', | oil = 'oil', | ||
relic = 'relic', | |||
experimented_base_type = 'experimented base type', | experimented_base_type = 'experimented base type', | ||
experimented_two_hand_weapon = 'experimented two | experimented_two_hand_weapon = 'experimented two hand weapon', | ||
quartertaff = 'quartertaff', | |||
flail = 'flail', | |||
spear = 'spear', | |||
crossbow = 'crossbow', | |||
trap = 'trap', | |||
corrupted = m_util.html.poe_color('corrupted', 'corrupted'), | corrupted = m_util.html.poe_color('corrupted', 'corrupted'), | ||
| Line 437: | Line 481: | ||
random_three_synthesised_item_level_x = string.format('Random %s item level %%i %%s', m_util.html.poe_color('enchanted', 'three-implicit synthesised')), | random_three_synthesised_item_level_x = string.format('Random %s item level %%i %%s', m_util.html.poe_color('enchanted', 'three-implicit synthesised')), | ||
random_fractured_item_level_x = string.format('Random %s item level %%i %%s', m_util.html.poe_color('fractured', 'fractured')), | random_fractured_item_level_x = string.format('Random %s item level %%i %%s', m_util.html.poe_color('fractured', 'fractured')), | ||
random_variant = '%s (random variant)', | |||
tier_x = 'tier %i %s', | tier_x = 'tier %i %s', | ||
| Line 449: | Line 494: | ||
level_x_gem = 'level %i gem', | level_x_gem = 'level %i gem', | ||
level_x_trans_gem = 'level %i transfigured gem', | |||
level_x_y_gem = 'level %i %s gem', | level_x_y_gem = 'level %i %s gem', | ||
gem_quality = 'gem with 1–20% quality', | gem_quality = 'gem with 1–20% quality', | ||
| Line 455: | Line 501: | ||
x_gem_quality = '%s gem with 1–20%% quality', | x_gem_quality = '%s gem with 1–20%% quality', | ||
x_gem_y_quality = '%s gem with %i%% quality', | x_gem_y_quality = '%s gem with %i%% quality', | ||
level_x_trans_gem_y_quality = 'level %i transfigured gem with %i%% quality', | |||
level_x_y_gem_z_quality = 'level %i %s gem with %i%% quality', | level_x_y_gem_z_quality = 'level %i %s gem with %i%% quality', | ||
level_x_trans_y_gem_z_quality = 'level %i transfigured %s gem with %i%% quality', | |||
x_item = '%s item', | x_item = '%s item', | ||
} | } | ||
cfg.i18n.recipes.errors = { | cfg.i18n.recipes.errors = { | ||
| Line 475: | Line 517: | ||
-- Constants | -- Constants | ||
-- ---------------------------------------------------------------------------- | -- ---------------------------------------------------------------------------- | ||
-- Wrapper templates | |||
cfg.wrappers = { | |||
item = { | |||
'Template:Item', | |||
}, | |||
} | |||
cfg.image_size = 39 | cfg.image_size = 39 | ||
| Line 487: | Line 536: | ||
'rarity_id', 'rarity', 'name', 'name_list', 'size_x', 'size_y', | 'rarity_id', 'rarity', 'name', 'name_list', 'size_x', 'size_y', | ||
'drop_rarities_ids', 'drop_enabled', 'drop_level', 'drop_level_maximum', 'drop_text', 'required_level', 'required_level_final', | 'drop_rarities_ids', 'drop_enabled', 'drop_level', 'drop_level_maximum', 'drop_text', 'required_level', 'required_level_final', | ||
'flavour_text', | 'flavour_text', 'cannot_be_traded_or_modified', 'help_text', 'is_account_bound', 'tags', 'metadata_id', | ||
'influences', 'is_fractured', 'is_synthesised', 'is_searing_exarch_item', 'is_eater_of_worlds_item', 'is_veiled', 'is_replica', 'is_corrupted', 'is_mirrored', 'is_unmodifiable', | 'influences', 'is_fractured', 'is_synthesised', 'is_searing_exarch_item', 'is_eater_of_worlds_item', 'is_veiled', 'is_replica', 'is_corrupted', 'is_mirrored', 'is_unmodifiable', | ||
'purchase_costs', 'is_sellable', 'sell_prices_override | 'purchase_costs', 'is_sellable', 'sell_prices_override', | ||
'drop_areas', 'drop_monsters', | 'drop_areas', 'drop_monsters', | ||
'acquisition_tags', 'disable_automatic_recipes', | 'acquisition_tags', 'disable_automatic_recipes', | ||
'suppress_improper_modifiers_category', | 'suppress_improper_modifiers_category', | ||
'class', | 'class', | ||
} | } | ||
| Line 507: | Line 553: | ||
args = {'prophecy_id', 'prediction_text', 'seal_cost', 'prophecy_objective', 'prophecy_reward'}, | args = {'prophecy_id', 'prediction_text', 'seal_cost', 'prophecy_objective', 'prophecy_reward'}, | ||
}, | }, | ||
is_liquid_emotion = { | |||
args = {' | args = {'liquid_emotion_tier'}, | ||
}, | }, | ||
is_tattoo = { | is_tattoo = { | ||
| Line 527: | Line 573: | ||
cfg.class_groups = { | cfg.class_groups = { | ||
flasks = { | flasks = { | ||
keys = {['LifeFlask'] = true, ['ManaFlask'] = true, ['HybridFlask'] = true, ['UtilityFlask'] = true}, | keys = { | ||
['LifeFlask'] = true, | |||
['ManaFlask'] = true, | |||
['HybridFlask'] = true, | |||
['UtilityFlask'] = true, | |||
}, | |||
tables = {'flasks'}, | tables = {'flasks'}, | ||
args = {'quality', 'flask_duration', 'charges_max', 'charges_per_use'}, | args = {'quality', 'flask_duration', 'charges_max', 'charges_per_use'}, | ||
}, | }, | ||
weapons = { | weapons = { | ||
keys = {['Claw'] = true, ['Dagger'] = true, ['Wand'] = true, ['One Hand Sword'] = true, | keys = { | ||
tables = {'weapons'}, | ['Claw'] = true, | ||
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'critical_strike_chance', 'attack_speed', 'physical_damage_min', 'physical_damage_max', 'lightning_damage_min', 'lightning_damage_max', 'cold_damage_min', 'cold_damage_max', 'fire_damage_min', 'fire_damage_max', 'chaos_damage_min', 'chaos_damage_max', 'weapon_range'}, | ['Dagger'] = true, | ||
['Wand'] = true, | |||
['One Hand Sword'] = true, | |||
['One Hand Axe'] = true, | |||
['One Hand Mace'] = true, | |||
['Bow'] = true, | |||
['Staff'] = true, | |||
['Two Hand Sword'] = true, | |||
['Two Hand Axe'] = true, | |||
['Two Hand Mace'] = true, | |||
['Sceptre'] = true, | |||
['FishingRod'] = true, | |||
['Flail'] = true, | |||
['Warstaff'] = true, | |||
['Trap'] = true, | |||
['Spear'] = true, | |||
['Crossbow'] = true, | |||
}, | |||
tables = {'weapons', 'inherent_skills'}, | |||
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'critical_strike_chance', 'attack_speed', 'physical_damage_min', 'physical_damage_max', 'lightning_damage_min', 'lightning_damage_max', 'cold_damage_min', 'cold_damage_max', 'fire_damage_min', 'fire_damage_max', 'chaos_damage_min', 'chaos_damage_max', 'weapon_range', 'reload_time', 'spirit', 'inherent_skills_text', 'inherent_skills_ids'}, | |||
late_args = {'physical_damage_html', 'fire_damage_html', 'cold_damage_html', 'lightning_damage_html', 'chaos_damage_html', 'damage_avg', 'damage_html'}, | late_args = {'physical_damage_html', 'fire_damage_html', 'cold_damage_html', 'lightning_damage_html', 'chaos_damage_html', 'damage_avg', 'damage_html'}, | ||
}, | }, | ||
gems = { | gems = { | ||
keys = {['Active Skill Gem'] = true, ['Support Skill Gem'] = true}, | keys = { | ||
['Active Skill Gem'] = true, | |||
['Support Skill Gem'] = true, | |||
['Meta Skill Gem'] = true, | |||
}, | |||
tables = {'skill_gems'}, | tables = {'skill_gems'}, | ||
args = {'gem_description', 'dexterity_percent', 'strength_percent', 'intelligence_percent', 'primary_attribute', 'gem_tags'}, | args = {'gem_description', 'dexterity_percent', 'strength_percent', 'intelligence_percent', 'primary_attribute', 'gem_tags', 'gem_tier'}, | ||
}, | }, | ||
armor = { | armor = { | ||
keys = {['Gloves'] = true, ['Boots'] = true, ['Body Armour'] = true, ['Helmet'] = true, ['Shield'] = true}, | keys = { | ||
tables = {'armours'}, | ['Gloves'] = true, | ||
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'armour_min', 'armour_max', 'evasion_min', 'evasion_max', 'energy_shield_min', 'energy_shield_max', 'ward_min', 'ward_max', 'movement_speed'}, | ['Boots'] = true, | ||
['Body Armour'] = true, | |||
['Helmet'] = true, | |||
['Shield'] = true, | |||
['Buckler'] = true, | |||
['Focus'] = true, | |||
}, | |||
tables = {'armours', 'inherent_skills'}, | |||
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'armour_min', 'armour_max', 'evasion_min', 'evasion_max', 'energy_shield_min', 'energy_shield_max', 'ward_min', 'ward_max', 'movement_speed', 'inherent_skills_text', 'inherent_skills_ids'}, | |||
}, | }, | ||
stackable = { | stackable = { | ||
keys = {['StackableCurrency'] = true, ['DivinationCard'] = true, ['DelveStackableSocketableCurrency'] = true, ['IncubatorStackable'] = true, ['MapFragment'] = true, ['HarvestSeed'] = true, ['HarvestPlantBooster'] = true}, | keys = { | ||
['StackableCurrency'] = true, | |||
['DivinationCard'] = true, | |||
['DelveStackableSocketableCurrency'] = true, | |||
['IncubatorStackable'] = true, | |||
['MapFragment'] = true, | |||
['Breachstone'] = true, | |||
['HarvestSeed'] = true, | |||
['HarvestPlantBooster'] = true, | |||
['InstanceLocalItem'] = true, | |||
['SoulCore'] = true, | |||
['Omen'] = true, | |||
}, | |||
tables = {'stackables'}, | tables = {'stackables'}, | ||
args = {'stack_size', 'stack_size_currency_tab', 'description'}, | args = {'stack_size', 'stack_size_currency_tab', 'description'}, | ||
}, | }, | ||
heist_equipment = { | heist_equipment = { | ||
keys = {['HeistEquipmentWeapon'] = true, ['HeistEquipmentTool'] = true, ['HeistEquipmentUtility'] = true, ['HeistEquipmentReward'] = true}, | keys = { | ||
['HeistEquipmentWeapon'] = true, | |||
['HeistEquipmentTool'] = true, | |||
['HeistEquipmentUtility'] = true, | |||
['HeistEquipmentReward'] = true, | |||
}, | |||
tables = {'heist_equipment'}, | tables = {'heist_equipment'}, | ||
args = {'heist_required_job_id', 'heist_required_job_level', 'heist_data'}, | args = {'heist_required_job_id', 'heist_required_job_level', 'heist_data'}, | ||
}, | }, | ||
jewellery = { | jewellery = { | ||
keys = {['Amulet'] = true, ['Ring'] = true, ['Belt'] = true}, | keys = { | ||
['Amulet'] = true, | |||
['Ring'] = true, | |||
['Belt'] = true, | |||
}, | |||
tables = {'inherent_skills'}, | |||
args = {'inherent_skills_text', 'inherent_skills_ids'}, | |||
}, | }, | ||
jewels = { | jewels = { | ||
keys = {['Jewel'] = true, ['AbyssJewel'] = true}, | keys = { | ||
['Jewel'] = true, | |||
['AbyssJewel'] = true, | |||
}, | |||
}, | }, | ||
} | } | ||
| Line 585: | Line 693: | ||
}, | }, | ||
['Active Skill Gem'] = { | ['Active Skill Gem'] = { | ||
args = {'is_vaal_skill_gem', 'vaal_variant_id'}, | args = { | ||
'is_vaal_skill_gem', 'vaal_variant_id', 'equipment_requirement' | |||
}, | |||
defaults = { | |||
is_drop_restricted = true, | |||
}, | |||
frame_type = 'gem', | frame_type = 'gem', | ||
}, | }, | ||
['Support Skill Gem'] = { | ['Support Skill Gem'] = { | ||
args = { | args = { | ||
' | 'is_awakened_support_gem', 'awakened_variant_id', 'support_gem_category', | ||
}, | |||
defaults = { | |||
is_drop_restricted = true, | |||
}, | }, | ||
frame_type = 'gem', | frame_type = 'gem', | ||
}, | |||
['Meta Skill Gem'] = { | |||
args = { | |||
'equipment_requirement', | |||
}, | |||
defaults = { | |||
is_drop_restricted = true, | |||
}, | |||
frame_type = 'gem', | |||
}, | |||
['Quiver'] = { | |||
tables = {'inherent_skills'}, | |||
args = {'inherent_skills_text', 'inherent_skills_ids'}, | |||
}, | }, | ||
['Shield'] = { | ['Shield'] = { | ||
tables = {'shields'}, | |||
args = {'block'}, | |||
}, | |||
['Buckler'] = { | |||
tables = {'shields'}, | tables = {'shields'}, | ||
args = {'block'}, | args = {'block'}, | ||
| Line 636: | Line 768: | ||
}, | }, | ||
['MapFragment'] = { | ['MapFragment'] = { | ||
args = {'is_scarab'}, | tables = {'map_fragments'}, | ||
args = {'map_fragment_limit', 'is_scarab'}, | |||
}, | }, | ||
['StackableCurrency'] = { | ['StackableCurrency'] = { | ||
tables = {'essences', 'prophecies', ' | tables = {'essences', 'prophecies', 'liquid_emotions', 'tattoos'}, | ||
args = { | args = { | ||
'is_essence', 'is_prophecy', ' | 'is_essence', 'is_prophecy', 'is_liquid_emotion', 'is_tattoo', | ||
'is_fossil', 'is_delirium_orb', 'is_catalyst', | 'is_fossil', 'is_delirium_orb', 'is_catalyst', | ||
'crafting_mod_level_min', 'crafting_item_level_max', | |||
}, | }, | ||
frame_type = 'currency', | frame_type = 'currency', | ||
| Line 681: | Line 815: | ||
tables = {'divination_cards'}, | tables = {'divination_cards'}, | ||
args = {'card_art', 'card_background'}, | args = {'card_art', 'card_background'}, | ||
defaults = { | |||
is_drop_restricted = true, | |||
}, | |||
frame_type = 'divicard', | frame_type = 'divicard', | ||
}, | }, | ||
| Line 749: | Line 886: | ||
defaults = { | defaults = { | ||
is_drop_restricted = true, | is_drop_restricted = true, | ||
}, | }, | ||
}, | }, | ||
[' | ['Breachstone'] = { | ||
defaults = { | defaults = { | ||
is_drop_restricted = true, | is_drop_restricted = true, | ||
}, | }, | ||
}, | }, | ||
| Line 779: | Line 913: | ||
is_in_game = false, | is_in_game = false, | ||
}, | }, | ||
}, | |||
['InstanceLocalItem'] = { | |||
defaults = { | |||
is_sellable = false, | |||
}, | |||
frame_type = 'currency', | |||
}, | }, | ||
['SentinelDrone'] = { | ['SentinelDrone'] = { | ||
| Line 785: | Line 925: | ||
defaults = { | defaults = { | ||
is_in_game = false, | is_in_game = false, | ||
is_unmodifiable = true, | is_unmodifiable = true, | ||
}, | }, | ||
| Line 807: | Line 941: | ||
is_unmodifiable = true, | is_unmodifiable = true, | ||
}, | }, | ||
}, | |||
['NecropolisPack'] = { | |||
tables = {'allflame_embers'}, | |||
args = {'description', 'pack_id', 'pack_min_size', 'pack_max_size', 'pack_leader_chance'}, | |||
defaults = { | |||
is_drop_restricted = true, | |||
}, | |||
frame_type = 'necropolis', | |||
}, | |||
['UncutSkillGemStackable'] = { | |||
args = {'description'}, | |||
}, | |||
['UncutSupportGemStackable'] = { | |||
args = {'description'}, | |||
}, | |||
['UncutReservationGemStackable'] = { | |||
args = {'description'}, | |||
}, | |||
['VaultKey'] = { | |||
args = {'description'}, | |||
frame_type = 'currency', | |||
}, | }, | ||
} | } | ||
| Line 847: | Line 1,002: | ||
} | } | ||
end | end | ||
-- Exclude items of these classes from the category that tracks items that are | |||
-- missing a release version. | |||
cfg.missing_version_blacklist = { | |||
'Microtransaction', | |||
'HideoutDoodad', | |||
'InstanceLocalItem', | |||
} | |||
-- | -- | ||
| Line 853: | Line 1,016: | ||
-- An item's base level requirement is waived unless it is at least this value. | -- An item's base level requirement is waived unless it is at least this value. | ||
cfg.base_item_required_level_threshold = | cfg.base_item_required_level_threshold = 1 | ||
-- Item classes that may have their level requirement waived | -- Item classes that may have their level requirement waived | ||
| Line 863: | Line 1,026: | ||
-- Modifiers contribute this much of their level requirement to an item's level requirement. | -- Modifiers contribute this much of their level requirement to an item's level requirement. | ||
cfg.item_required_level_modifier_contribution = 0.8 | cfg.item_required_level_modifier_contribution = 0.8 | ||
-- Default max item level for outcome of divination card exchanges | |||
cfg.divination_card_exchange_default_max_ilvl = 80 | |||
return cfg | return cfg | ||
Latest revision as of 12:22, 11 November 2025
This is the configuration file for Module:Item. This file can be edited to allow easy translation/porting of the module to other wikis.
The above documentation is transcluded from Module:Item/config/doc.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
-------------------------------------------------------------------------------
--
-- Configuration for Module:Item and submodules
--
-------------------------------------------------------------------------------
local m_util = require('Module:Util')
-- Should we use the sandbox version of our submodules?
local use_sandbox = m_util.misc.maybe_sandbox('Item/config')
local m_game = use_sandbox and mw.loadData('Module:Game/sandbox') or mw.loadData('Module:Game')
local cfg = {}
-- ----------------------------------------------------------------------------
-- i18n
-- ----------------------------------------------------------------------------
cfg.i18n = {}
--
-- Main
--
cfg.i18n.files = {
inventory_icon = 'File:%s inventory icon.png',
status_icon = 'File:%s status icon.png',
divination_card_art = 'File:%s card art.png',
divination_card_background = 'File:Divination card bg %s.webm',
}
cfg.i18n.templates = {
cargo_attach = 'Template:Item/cargo/%s/attach',
}
cfg.i18n.categories = {
-- maintenance cats
improper_modifiers = 'Items with improper modifiers',
missing_release_version = 'Items without a release version',
invalid_recipe_parts = 'Items with invalid recipe parts',
duplicate_recipes = 'Items with duplicate recipes',
duplicate_query_area_ids = 'Items with duplicate area ids from queries',
base_items = 'Base items',
derived_items = 'Derived items',
sell_prices_override = 'Items with sell prices overrides',
automatic_recipes_disabled = 'Items with automatic recipes disabled',
deprecated_parameters = 'Pages using deprecated parameters for item module',
deprecated_skill_parameters = 'Pages using deprecated parameters for skill data',
-- regular cats
alternate_artwork = 'Items with alternate artwork',
implicit_modifier_override = 'Items with implicit modifier overrides',
-- subcategories
unique_affix = 'Unique %s',
prophecies = 'Prophecies',
liquid_emotions = 'Liquid emotions',
talismans = 'Talismans',
essences = 'Essences',
fossils = 'Fossils',
scarabs = 'Scarabs',
tattoos = 'Tattoos',
delirium_orbs = 'Delirium orbs',
catalysts = 'Catalysts',
maps_by_series = '%s series maps',
-- gems
skill_gems = '%s skill gems',
support_gems = '%s support gems',
meta_gems = '%s meta gems',
}
cfg.i18n.gems = {
gem_tag_page = '%s (gem tag)',
}
cfg.i18n.stat_skip_patterns = {
maps = {
'%d+%% increased Quantity of Items found in this Area',
'%d+%% increased Rarity of Items found in this Area',
'%+%d+%% Monster pack size',
-- ranges
'%(%d+%-%d+%)%% increased Quantity of Items found in this Area',
'%(%d+%-%d+%)%% increased Rarity of Items found in this Area',
'%+%(%d+%-%d+%)%% Monster pack size',
},
jewels = {
'Limited to %d+ %(Hidden%)',
'Jewel has a radius of %d+ %(Hidden%)',
},
}
-- Used by the item info box
cfg.i18n.tooltips = {
corrupted = 'Corrupted',
mirrored = 'Mirrored',
unmodifiable = 'Unmodifiable',
support_icon = 'Icon: %s',
radius = 'Radius: %s',
cost = 'Cost: %s',
reservation = 'Reservation: %s',
additional_reservation = 'Additional Reservation: %s',
cost_multiplier = 'Cost & Reservation Multiplier: %s',
vaal_souls_per_use = 'Souls Per Use: %s',
stored_uses = 'Can Store %s Use(s)',
stored_uses_singular = 'Can Store %s Use',
stored_uses_plural = 'Can Store %s Uses',
vaal_soul_gain_prevention_time = 'Soul Gain Prevention: %s',
cooldown_time = 'Cooldown Time: %s',
cast_time = 'Cast Time: %s',
use_time = 'Use Time: %s',
instant_cast_time = 'Instant',
attack_time = 'Attack Time: %s',
critical_strike_chance = 'Critical Strike Chance: %s',
attack_speed_multiplier = 'Attack Speed: %s',
damage_multiplier = 'Attack Damage: %s',
of_base_stat = 'of base',
damage_effectiveness = 'Effectiveness of Added Damage: %s',
projectile_speed = 'Projectile Speed: %s',
aoe_radius = 'AoE Radius: %s',
quality = 'Quality: %s',
physical_damage = 'Physical Damage: %s',
elemental_damage = 'Elemental Damage: %s',
chaos_damage = 'Chaos Damage: %s',
attacks_per_second = 'Attacks per Second: %s',
weapon_range = 'Weapon Range: %s',
reload_time = 'Reload Time: %s',
map_level = 'Area Level: %s',
map_tier = 'Waystone Tier: %s',
map_guild_character = m_util.html.tooltip('Guild Character', 'When used in guild creation, this map can be used for the listed character') .. ': %s',
item_quantity = 'Item Quantity: %s',
item_rarity = 'Item Rarity: %s',
monster_pack_size = 'Monster Pack Size: %s',
limited_to = 'Limited to: %s',
flask_mana_recovery = 'Recovers %s Mana over %s Seconds',
flask_life_recovery = 'Recovers %s Life over %s Seconds',
flask_duration = 'Lasts %s Seconds',
flask_charges_per_use = 'Consumes %s of %s Charges on use',
chance_to_block = 'Chance to Block: %s',
armour = 'Armour: %s',
evasion = 'Evasion: %s',
energy_shield = 'Energy Shield: %s',
ward = 'Ward: %s',
spirit = 'Spirit: %s',
movement_speed = 'Movement Speed: %s',
talisman_tier = 'Talisman Tier: %s',
stack_size = 'Stack Size: %s',
crafting_mod_level_min = 'Minimum Modifier Level: %s',
crafting_item_level_max = 'Maximum Item Level: %s',
limit = 'Limit: %s',
essence_level = 'Essence Tier: %s',
liquid_emotion_tier = 'Emotion Tier: %s',
monster_category = 'Monster Category: %s',
pack_size = 'Pack Size: %s Monsters',
pack_contains_pack_leader = string.format('Pack contains %s', m_util.html.poe_color('value', 'Pack Leader')),
pack_chance_to_contain_pack_leader = string.format('Pack chance to contain %s: %%s', m_util.html.poe_color('value', 'Pack Leader')),
requires = 'Requires %s',
requires_2 = 'Requires: %s',
level_inline = 'Level %s',
level = 'Level: %s',
tier = 'Tier: %s',
category = 'Category: %s',
gem_quality_effect_bonus = 'Additional Effects From 1-20%% Quality: <br> %s',
variations = 'Variations',
cannot_be_traded_or_modified = 'Cannot be traded or modified',
account_bound = 'Account-bound',
throw_time = 'Throw Time: %s',
detonation_type = 'Detonation Type: %s',
inherent_skill = 'Grants Skill: %s',
inherent_skill_lvl = 'Grants Skill: Level %s %s',
inherent_skill_lvl_range = 'Grants Skill: Level (%s-%s) %s',
-- Gems
support_requirements = 'Support Requirements: %s',
-- Tattoos
tattoo_target = 'Replaces a %s Passive Skill',
tattoo_limit = 'Limited to: %s',
tattoo_min_adjacent = 'Requires %s adjacent Passive Skills Allocated',
tattoo_max_adjacent = 'Requires %s adjacent Passive Skill Allocated',
tattoo_maximum = 'maximum',
-- harvest seeds
seed_tier = 'Seed Tier: %s',
seed_monster = 'Spawns a level ? Monster when Harvested',
seed_lifeforce_gained = 'Provides ? Units of Raw %s Lifeforce when Harvested',
seed_growth_cycles = 'Can be Harvested after %s Growth Cycles',
seed_lifeforce_consumed = 'Consumes (%s%%) %s Units of Condensed Lifeforce per Growth Cycle',
seed_required_seeds = 'Requires %s Adjacent %s Seeds of at least Tier %s to Grow',
-- harvest plant boosters, not used at the moment
plant_booster_extra_chances = 'Seeds in radius give the rarest of %s chosen Crafting Options when Harvested',
plant_booster_lifeforce = 'Seeds in radius produce %s more Lifeforce when Harvested',
plant_booster_additional_crafting_optioons = 'Seeds in radius have %s chance to generate additional Crafting Options when Harvested',
-- heist
heist_required_npc = 'This item can be equipped by: %s',
heist_required_job = 'Requires %s in %s',
heist_any_job = 'Any job',
-- sentinels
sentinel_duration = 'Duration: %s seconds',
sentinel_empowers = 'Empowers: %s enemies',
sentinel_empowerment = 'Empowerment: %s',
sentinel_charge = 'Charge: %s uses',
sentinel_can_only_empower = 'Can only Empower %s (Level %s)',
random_mod = '<<random modifier %s>>',
--
-- secondary infobox
--
extra_info = 'Additional Information',
header_overall = 'Region Upgrades Chart',
header_upgrades = 'Upgrade Level',
header_map_tier = 'Tier',
header_map_level = 'Map Level',
header_connections = 'Connections',
acquisition = 'Acquisition',
not_in_game = 'Not in game',
drop_level = 'Drop level: %s',
drop_disabled = '[[Drop disabled]]',
drop_restricted = '[[Drop-restricted item|Drop restricted]]',
seal_cost = 'Seal cost: %s',
gemcutting_skill_gem = 'It can be obtained by [[Gemcutting|engraving]] an [[Uncut Skill Gem]].',
gemcutting_spirit_gem = 'It can be obtained by [[Gemcutting|engraving]] an [[Uncut Spirit Gem]].',
gemcutting_support_gem = 'It can be obtained by [[Gemcutting|engraving]] an [[Uncut Support Gem]].',
purchase_costs = m_util.html.tooltip('Vendor Prices', 'Cost of purchasing this item from an NPC vendor when it is available in their inventory'),
sell_price = m_util.html.tooltip('Vendor Offer', 'Offer given by an NPC vendor in exchange for this item when it is not used in a vendor recipe'),
damage_per_second = 'Weapon DPS',
physical_dps = 'Physical: %s',
fire_dps = 'Fire: %s',
cold_dps = 'Cold: %s',
lightning_dps = 'Lightning: %s',
chaos_dps = 'Chaos: %s',
elemental_dps = 'Elemental: %s',
poison_dps = 'Phys+Chaos: %s',
dps = 'Total: %s',
metadata = 'Metadata',
item_class = 'Item class: %s',
metadata_id = 'Metadata ID: %s',
}
-- Default inventory icons for certain types of items
-- Used with cfg.i18n.files.inventory_icon
cfg.i18n.default_inventory_icons = {
['DivinationCard'] = 'Divination card',
['is_prophecy'] = 'Prophecy',
}
-- Keys are item class ids
cfg.i18n.item_class_map = {
['Staff'] = 'Staff',
['Bow'] = 'Bow',
['Wand'] = 'Wand',
['Two Hand Axe'] = 'Two Hand Axe',
['Two Hand Sword'] = 'Two Hand Sword',
['Two Hand Mace'] = 'Two Hand Mace',
['Sceptre'] = 'Sceptre',
['One Hand Mace'] = 'One Hand Mace',
['One Hand Axe'] = 'One Hand Axe',
['One Hand Sword'] = 'One Hand Sword',
['Claw'] = 'Claw',
['Dagger'] = 'Dagger',
['Rune Dagger'] = 'Rune Dagger',
['FishingRod'] = 'Fishing Rod',
['HideoutDoodad'] = 'Hideout Item',
['AbyssJewel'] = 'Abyss',
['Warstaff'] = 'Quartertaff',
['Flail'] = 'Flail',
['Spear'] = 'Spear',
['Crossbow'] = 'Crossbow',
['Trap'] = 'Trap',
['Shield'] = 'Shield',
['Buckler'] = 'Buckler',
['Focus'] = 'Focus',
}
-- Formatting
cfg.i18n.fmt = {
standard_damage_range = '%s-%s',
variable_damage_range = '%s to %s',
item_count = '%d×',
}
cfg.i18n.debug = {
invalid_argument_key = 'Invalid key or missing data for "%s"',
base_item_field_not_found = 'Base item property not found: %s.%s',
field_value_mismatch = 'Value for argument "%s" is set to something else then default: %s',
}
cfg.i18n.errors = {
missing_base_item = 'Rarity is set to above normal, but base item is not set. A base item for rarities above normal is required!',
duplicate_base_items = 'More then one result found for the specified base item. Consider using base_item_page or base_item_id to narrow down the results.',
base_item_not_found = 'Base item could not be found in the database. Check for spelling mistakes or whether the base item page exists on the wiki. If the base item page exists on the wiki, but it can not be found please null-edit the page.',
base_item_wrong_rarity = 'The specified base item must be normal rarity',
mod_not_found = 'Modifier(s) could not be found in the database: %s',
invalid_acquisition_tag = '%s is not a valid acquisition tag',
invalid_tag = '%s is not a valid tag',
generic_argument_parameter = 'Unrecognized %s parameter "%s"',
generic_required_parameter = 'The "%s" parameter is required.',
non_unique_flag = 'Only unique items can are egible for the flag "%s".',
duplicate_metadata = 'Duplicate metadata id "%s" on page "%s"',
invalid_influence = 'The influence "%s" is invalid. Acceptable values are "shaper", "elder", "crusader", "redeemer", "hunter" and "warlord".',
invalid_class_id = 'The item class id "%s" is invalid. Using the correct item class id is required for the template to work correctly.',
invalid_rarity_id = 'The rarity id "%s" is invalid. Acceptable values are "normal", "magic", "rare" and "unique".',
invalid_region_upgrade_count = 'atlas_connection%s_tier: Invalid amount (%s) of connections, only 5 are allowed',
no_results_found = 'No results found',
invalid_gem_tag = '%s is not a valid gem tag',
invalid_cosmetic_type = '%s is not a valid cosmetic type',
invalid_monster_category = '%s is not a valid monster category',
}
--
-- Recipes
--
cfg.i18n.recipes = {
reforging_bench_recipe = 'Reforging Bench recipe',
-- Item names
agate_amulet = 'Agate Amulet',
unset_ring = 'Unset Ring',
gold_ring = 'Gold Ring',
prismatic_ring = 'Prismatic Ring',
two_stone_ring = 'Two-Stone Ring',
crystal_sceptre = 'Crystal Sceptre',
rustic_sash = 'Rustic Sash',
['Leather Belt'] = 'Leather Belt',
nightmare_bascinet = 'Nightmare Bascinet',
timeless_jewel = 'Timeless Jewel',
granite_flask = 'Granite Flask',
precursors_emblem = 'Precursor\'s Emblem',
grand_spectrum = 'Grand Spectrum',
['Forge of the Phoenix Map'] = 'Forge of the Phoenix Map',
['Lair of the Hydra Map'] = 'Lair of the Hydra Map',
['Maze of the Minotaur Map'] = 'Maze of the Minotaur Map',
['Pit of the Chimera Map'] = 'Pit of the Chimera Map',
['Vaal Temple Map'] = 'Vaal Temple Map',
['Synthesised Map'] = 'Synthesised Map',
-- Namesakes
atziri = 'Atziri',
doedre = 'Doedre',
shavronne = 'Shavronne',
rigwald = 'Rigwald',
lioneye = 'Lioneye',
farrul = 'Farrul',
fenumus = 'Fenumus',
saqawal = 'Saqawal',
craiceann = 'Craiceann',
chayula = 'Chayula',
maven = 'Maven',
-- Strings used in notes
divination_card_set_exchange = 'Divination card set exchange: %s',
incubation = 'Incubation: %s',
item = 'item',
shield = 'shield',
buckler= 'buckler',
focus = 'focus',
map = 'map',
gem = 'gem',
belt = 'belt',
armour = 'armour',
weapon = 'weapon',
sword = 'sword',
jewellery = 'jewellery',
axe = 'axe',
flask = 'flask',
amulet = 'amulet',
ring = 'ring',
wand = 'wand',
staff = 'staff',
claw = 'claw',
dagger = 'dagger',
sceptre = 'sceptre',
bow = 'bow',
gloves = 'gloves',
boots = 'boots',
jewel = 'jewel',
talisman = 'talisman',
tier_1_talisman = 'tier 1 talisman',
breachstone_splinter = 'breachstone splinter',
breachstone = 'breachstone',
scarab = 'scarab',
bestiary_scarab = 'Bestiary scarab',
cartography_scarab = 'Cartography scarab',
divination_scarab = 'Divination scarab',
horned_scarab = 'Horned scarab',
sulphite_scarab = 'Sulphite scarab',
essence = 'essence',
deafening_essence = '"Deafening" (tier 7) essence',
shrieking_essence = '"Shrieking" (tier 6) essence',
harbinger_fragment = 'Harbinger unique item piece',
divination_card = 'divination card',
body_armour = 'body armour',
one_hand_weapon = 'one hand weapon',
two_hand_weapon = 'two hand weapon',
league_specific_item = 'league-specific item',
quality_currency = 'quality currency',
fossil = 'fossil',
scouting_report = 'scouting report',
fragment = 'fragment',
sacrifice_fragment = 'Sacrifice fragment',
mortal_fragment = 'Mortal fragment',
uber_elder_fragment = 'Uber Elder fragment',
helmet = 'helmet',
delirium_orb = 'delirium orb',
shaper_guardian_map = 'Shaper Guardian map',
vial = 'vial',
blueprint = 'blueprint',
incubator = 'incubator',
oil = 'oil',
relic = 'relic',
experimented_base_type = 'experimented base type',
experimented_two_hand_weapon = 'experimented two hand weapon',
quartertaff = 'quartertaff',
flail = 'flail',
spear = 'spear',
crossbow = 'crossbow',
trap = 'trap',
corrupted = m_util.html.poe_color('corrupted', 'corrupted'),
unidentified_corrupted = m_util.html.poe_color('corrupted', 'unidentified corrupted'),
two_implicit_corrupted = m_util.html.poe_color('corrupted', 'two-implicit corrupted'),
one_or_two_implicit_corrupted = m_util.html.poe_color('corrupted', '1-2 implicit corrupted'),
life = 'life',
primordial = 'Primordial',
fishing = 'fishing',
replica = 'replica',
support = 'support',
awakened_support = 'awakened support',
-- used within essences
essence_plus_one_level = string.format('+1 tier %s outcome', m_util.html.poe_color('corrupted', 'corruption')),
essence_type_change = string.format('type change %s outcome', m_util.html.poe_color('corrupted', 'corruption')),
-- The Void
the_void = 'Random divination card set exchange',
}
-- formatters
cfg.i18n.recipes.fmt = {
item_level_x = 'item level %i %s',
corrupted_x = string.format('%s %%s', cfg.i18n.recipes.corrupted),
random = 'Random %s',
random_corrupted = string.format('Random %s %%s', cfg.i18n.recipes.corrupted),
random_unidentified_corrupted = string.format('Random %s %%s', cfg.i18n.recipes.unidentified_corrupted),
random_corrupted_implicit = string.format('Random %s %%s – implicit: %%s', cfg.i18n.recipes.corrupted),
random_two_implicit_corrupted = string.format('Random %s %%s', cfg.i18n.recipes.two_implicit_corrupted),
random_one_or_two_implicit_corrupted = string.format('Random %s %%s', cfg.i18n.recipes.one_or_two_implicit_corrupted),
random_two_implicit_corrupted_two_influenced_item_level_x = string.format('Random %s level %%i %%s', cfg.i18n.recipes.two_implicit_corrupted),
random_item_level_x = 'Random item level %i %s',
random_x_quality = 'Random %s with %i%% quality',
random_x_link = 'Random %i-link %s',
random_x_link_item_level_y = 'Random %i-link item level %i %s',
random_x_link_item_level_y_random_influenced = 'Random %i-link item level %i influenced %s',
random_x_amount = 'Random %s x%i',
random_influenced = 'Random influenced %s',
random_influenced_x_elevated = 'Random influenced %s with elevated affix',
random_shaper = 'Random Shaper-influenced %s',
random_shaper_item_level_x = 'Random Shaper influenced item level %i %s',
random_elder_item_level_x = 'Random Elder influenced item level %i %s',
random_shaper_hunter_item_level_x = 'Random Shaper and Hunter influenced item level %i %s',
random_two_influenced_x = 'Random double-influenced %s',
random_two_influenced_item_level_x = 'Random double-influenced item level %i %s',
random_two_veiled = 'Random double-veiled %s',
random_labyrinth_enchantment = string.format('Random %%s with a %s', m_util.html.poe_color('enchanted', 'Labyrinth enchantment')),
random_eternal_labyrinth_enchantment = string.format('Random %%s with an %s', m_util.html.poe_color('enchanted', 'Eternal Labyrinth enchantment')),
random_three_synthesised_item_level_x = string.format('Random %s item level %%i %%s', m_util.html.poe_color('enchanted', 'three-implicit synthesised')),
random_fractured_item_level_x = string.format('Random %s item level %%i %%s', m_util.html.poe_color('fractured', 'fractured')),
random_variant = '%s (random variant)',
tier_x = 'tier %i %s',
tier_x_map = 'tier %i map',
tier_x_to_y_map = 'tier %i–%i map',
tier_x_map_with_y_modifiers = 'tier %i map with %i modifiers',
map_with_x_percent_delirium = '%s with %i%% delirium',
the_price_of_protection = '%s with 8 modifiers and occupied by an Elder Guardian',
triskaidekaphobia = '%s with 8 modifiers, 13%% quality and 100%% delirium',
fully_revealed_x_area_level_y = '%s with area level %i, fully revealed',
level_x_gem = 'level %i gem',
level_x_trans_gem = 'level %i transfigured gem',
level_x_y_gem = 'level %i %s gem',
gem_quality = 'gem with 1–20% quality',
gem_x_quality = 'gem with %i%% quality',
x_gem = '%s gem',
x_gem_quality = '%s gem with 1–20%% quality',
x_gem_y_quality = '%s gem with %i%% quality',
level_x_trans_gem_y_quality = 'level %i transfigured gem with %i%% quality',
level_x_y_gem_z_quality = 'level %i %s gem with %i%% quality',
level_x_trans_y_gem_z_quality = 'level %i transfigured %s gem with %i%% quality',
x_item = '%s item',
}
cfg.i18n.recipes.errors = {
missing_amount = 'Item amount is missing or not a number (%s)',
invalid_recipe_parts = 'Item reference in %1$s is broken (value: %2$s)',
duplicate_recipes = 'Automatic recipe is duplicated on page in recipe%s',
}
-- ----------------------------------------------------------------------------
-- Constants
-- ----------------------------------------------------------------------------
-- Wrapper templates
cfg.wrappers = {
item = {
'Template:Item',
},
}
cfg.image_size = 39
cfg.image_size_full = cfg.image_size * 2
-- Notes:
-- inventory_icon must always be before alternate_art_inventory_icons
-- drop_areas after tags
cfg.default_args = {
'is_in_game',
'rarity_id', 'rarity', 'name', 'name_list', 'size_x', 'size_y',
'drop_rarities_ids', 'drop_enabled', 'drop_level', 'drop_level_maximum', 'drop_text', 'required_level', 'required_level_final',
'flavour_text', 'cannot_be_traded_or_modified', 'help_text', 'is_account_bound', 'tags', 'metadata_id',
'influences', 'is_fractured', 'is_synthesised', 'is_searing_exarch_item', 'is_eater_of_worlds_item', 'is_veiled', 'is_replica', 'is_corrupted', 'is_mirrored', 'is_unmodifiable',
'purchase_costs', 'is_sellable', 'sell_prices_override',
'drop_areas', 'drop_monsters',
'acquisition_tags', 'disable_automatic_recipes',
'suppress_improper_modifiers_category',
'class',
}
-- Args to process when a particular flag is set
cfg.flagged_args = {
is_essence = {
args = {'essence_level_restriction', 'essence_level', 'essence_type', 'essence_category'},
},
is_prophecy = {
args = {'prophecy_id', 'prediction_text', 'seal_cost', 'prophecy_objective', 'prophecy_reward'},
},
is_liquid_emotion = {
args = {'liquid_emotion_tier'},
},
is_tattoo = {
args = {'tattoo_target', 'tattoo_tribe', 'tattoo_limit', 'tattoo_min_adjacent', 'tattoo_max_adjacent', 'tattoo_skill_id'},
},
}
-- frame_type is needed in stat_text
cfg.late_args = {
'inventory_icon', 'alternate_art_inventory_icons', 'frame_type',
'is_drop_restricted', 'drop_areas_html',
'implicit_stat_text', 'explicit_stat_text', 'stat_text',
}
cfg.tables = {'items'}
-- Certain item classes are grouped together
cfg.class_groups = {
flasks = {
keys = {
['LifeFlask'] = true,
['ManaFlask'] = true,
['HybridFlask'] = true,
['UtilityFlask'] = true,
},
tables = {'flasks'},
args = {'quality', 'flask_duration', 'charges_max', 'charges_per_use'},
},
weapons = {
keys = {
['Claw'] = true,
['Dagger'] = true,
['Wand'] = true,
['One Hand Sword'] = true,
['One Hand Axe'] = true,
['One Hand Mace'] = true,
['Bow'] = true,
['Staff'] = true,
['Two Hand Sword'] = true,
['Two Hand Axe'] = true,
['Two Hand Mace'] = true,
['Sceptre'] = true,
['FishingRod'] = true,
['Flail'] = true,
['Warstaff'] = true,
['Trap'] = true,
['Spear'] = true,
['Crossbow'] = true,
},
tables = {'weapons', 'inherent_skills'},
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'critical_strike_chance', 'attack_speed', 'physical_damage_min', 'physical_damage_max', 'lightning_damage_min', 'lightning_damage_max', 'cold_damage_min', 'cold_damage_max', 'fire_damage_min', 'fire_damage_max', 'chaos_damage_min', 'chaos_damage_max', 'weapon_range', 'reload_time', 'spirit', 'inherent_skills_text', 'inherent_skills_ids'},
late_args = {'physical_damage_html', 'fire_damage_html', 'cold_damage_html', 'lightning_damage_html', 'chaos_damage_html', 'damage_avg', 'damage_html'},
},
gems = {
keys = {
['Active Skill Gem'] = true,
['Support Skill Gem'] = true,
['Meta Skill Gem'] = true,
},
tables = {'skill_gems'},
args = {'gem_description', 'dexterity_percent', 'strength_percent', 'intelligence_percent', 'primary_attribute', 'gem_tags', 'gem_tier'},
},
armor = {
keys = {
['Gloves'] = true,
['Boots'] = true,
['Body Armour'] = true,
['Helmet'] = true,
['Shield'] = true,
['Buckler'] = true,
['Focus'] = true,
},
tables = {'armours', 'inherent_skills'},
args = {'quality', 'required_dexterity', 'required_intelligence', 'required_strength', 'armour_min', 'armour_max', 'evasion_min', 'evasion_max', 'energy_shield_min', 'energy_shield_max', 'ward_min', 'ward_max', 'movement_speed', 'inherent_skills_text', 'inherent_skills_ids'},
},
stackable = {
keys = {
['StackableCurrency'] = true,
['DivinationCard'] = true,
['DelveStackableSocketableCurrency'] = true,
['IncubatorStackable'] = true,
['MapFragment'] = true,
['Breachstone'] = true,
['HarvestSeed'] = true,
['HarvestPlantBooster'] = true,
['InstanceLocalItem'] = true,
['SoulCore'] = true,
['Omen'] = true,
},
tables = {'stackables'},
args = {'stack_size', 'stack_size_currency_tab', 'description'},
},
heist_equipment = {
keys = {
['HeistEquipmentWeapon'] = true,
['HeistEquipmentTool'] = true,
['HeistEquipmentUtility'] = true,
['HeistEquipmentReward'] = true,
},
tables = {'heist_equipment'},
args = {'heist_required_job_id', 'heist_required_job_level', 'heist_data'},
},
jewellery = {
keys = {
['Amulet'] = true,
['Ring'] = true,
['Belt'] = true,
},
tables = {'inherent_skills'},
args = {'inherent_skills_text', 'inherent_skills_ids'},
},
jewels = {
keys = {
['Jewel'] = true,
['AbyssJewel'] = true,
},
},
}
-- Parameters for specific item classes
cfg.class_specifics = {
['Amulet'] = {
tables = {'amulets'},
args = {'is_talisman', 'talisman_tier'},
},
['LifeFlask'] = {
args = {'flask_life'},
},
['ManaFlask'] = {
args = {'flask_mana'},
},
['HybridFlask'] = {
args = {'flask_life', 'flask_mana'},
},
['UtilityFlask'] = {
tables = {'item_buffs'},
args = {'buff_id', 'buff_values', 'buff_stat_text', 'buff_icon'},
},
['Active Skill Gem'] = {
args = {
'is_vaal_skill_gem', 'vaal_variant_id', 'equipment_requirement'
},
defaults = {
is_drop_restricted = true,
},
frame_type = 'gem',
},
['Support Skill Gem'] = {
args = {
'is_awakened_support_gem', 'awakened_variant_id', 'support_gem_category',
},
defaults = {
is_drop_restricted = true,
},
frame_type = 'gem',
},
['Meta Skill Gem'] = {
args = {
'equipment_requirement',
},
defaults = {
is_drop_restricted = true,
},
frame_type = 'gem',
},
['Quiver'] = {
tables = {'inherent_skills'},
args = {'inherent_skills_text', 'inherent_skills_ids'},
},
['Shield'] = {
tables = {'shields'},
args = {'block'},
},
['Buckler'] = {
tables = {'shields'},
args = {'block'},
},
['Map'] = {
tables = {'maps', 'atlas_maps'},
args = {
'quality',
'map_tier',
'map_guild_character',
'map_area_id',
'map_area_level',
'unique_map_area_id',
'unique_map_area_level',
'unique_map_guild_character',
'map_series',
'atlas_x',
'atlas_y',
'atlas_region_id',
'atlas_x0',
'atlas_x1',
'atlas_x2',
'atlas_x3',
'atlas_x4',
'atlas_y0',
'atlas_y1',
'atlas_y2',
'atlas_y3',
'atlas_y4',
'atlas_map_tier0',
'atlas_map_tier1',
'atlas_map_tier2',
'atlas_map_tier3',
'atlas_map_tier4',
'atlas_connections', -- pseudo to fill connections table
},
skip_stat_lines = cfg.i18n.stat_skip_patterns.maps,
},
['MapFragment'] = {
tables = {'map_fragments'},
args = {'map_fragment_limit', 'is_scarab'},
},
['StackableCurrency'] = {
tables = {'essences', 'prophecies', 'liquid_emotions', 'tattoos'},
args = {
'is_essence', 'is_prophecy', 'is_liquid_emotion', 'is_tattoo',
'is_fossil', 'is_delirium_orb', 'is_catalyst',
'crafting_mod_level_min', 'crafting_item_level_max',
},
frame_type = 'currency',
},
['Microtransaction'] = {
tables = {'cosmetic_items'},
args = {'description', 'cosmetic_type', 'cosmetic_target'},
defaults = {
is_sellable = false,
},
frame_type = 'currency',
},
['HideoutDoodad'] = {
tables = {'hideout_doodads'},
args = {'is_master_doodad', 'variation_count', 'description'},
defaults = {
is_sellable = false,
},
frame_type = 'currency',
},
['Jewel'] = {
tables = {'jewels'},
args = {'jewel_limit'},
late_args = {'jewel_radius_html'},
skip_stat_lines = cfg.i18n.stat_skip_patterns.jewels,
},
['AbyssJewel'] = {
skip_stat_lines = cfg.i18n.stat_skip_patterns.jewels,
},
['QuestItem'] = {
args = {'description'},
defaults = {
is_sellable = false,
},
frame_type = 'quest',
},
['DivinationCard'] = {
tables = {'divination_cards'},
args = {'card_art', 'card_background'},
defaults = {
is_drop_restricted = true,
},
frame_type = 'divicard',
},
['LabyrinthItem'] = {
defaults = {
is_sellable = false,
},
frame_type = 'currency',
},
['LabyrinthTrinket'] = {
tables = {'item_buffs'},
args = {'description', 'buff_icon'},
defaults = {
is_sellable = false,
},
frame_type = 'currency',
},
['PantheonSoul'] = {
defaults = {
cannot_be_traded_or_modified = true,
is_sellable = false,
is_drop_restricted = true,
},
frame_type = 'currency',
},
['IncursionItem'] = {
defaults = {
is_sellable = false,
},
frame_type = 'currency',
},
['DelveStackableSocketableCurrency'] = {
defaults = {
is_drop_restricted = true,
},
frame_type = 'currency',
},
['IncubatorStackable'] = {
defaults = {
is_drop_restricted = true,
},
frame_type = 'currency',
},
['AtlasUpgradeItem'] ={
args = {'description'},
defaults = {
is_drop_restricted = true,
},
frame_type = 'quest',
},
['HeistContract'] = {
defaults = {
is_drop_restricted = true,
},
},
['HeistBlueprint'] = {
defaults = {
is_drop_restricted = true,
},
},
['MemoryLine'] = {
defaults = {
is_drop_restricted = true,
is_unmodifiable = true,
},
},
['Relic'] = {
defaults = {
is_drop_restricted = true,
},
},
['Breachstone'] = {
defaults = {
is_drop_restricted = true,
},
},
['HarvestSeed'] = {
tables = {'harvest_seeds'},
args = {'seed_effect', 'seed_type_id', 'seed_effect', 'seed_type', 'seed_type_html', 'seed_tier', 'seed_growth_cycles', 'seed_required_nearby_seed_tier', 'seed_required_nearby_seed_amount', 'seed_consumed_wild_lifeforce_percentage', 'seed_consumed_vivid_lifeforce_percentage', 'seed_consumed_primal_lifeforce_percentage', 'seed_granted_craft_option_ids'},
defaults = {
is_in_game = false,
},
frame_type = 'currency',
},
['HarvestPlantBooster'] = {
tables = {'harvest_plant_boosters'},
args = {'plant_booster_radius', 'plant_booster_lifeforce', 'plant_booster_additional_crafting_options', 'plant_booster_extra_chances'},
defaults = {
is_in_game = false,
},
frame_type = 'currency',
},
['AtlasRegionUpgradeItem'] = {
defaults = {
is_in_game = false,
},
},
['InstanceLocalItem'] = {
defaults = {
is_sellable = false,
},
frame_type = 'currency',
},
['SentinelDrone'] = {
tables = {'sentinels'},
args = {'sentinel_duration', 'sentinel_empowers', 'sentinel_empowerment', 'sentinel_charge', 'sentinel_monster', 'sentinel_monster_level'},
defaults = {
is_in_game = false,
is_unmodifiable = true,
},
},
['ItemisedCorpse'] = {
tables = {'corpse_items'},
args = {'corpse_tier', 'monster_category', 'monster_category_html', 'monster_abilities'},
defaults = {
is_drop_restricted = true,
},
frame_type = 'currency',
},
['AnimalCharm'] = {
defaults = {
is_drop_restricted = true,
is_unmodifiable = true,
},
},
['NecropolisPack'] = {
tables = {'allflame_embers'},
args = {'description', 'pack_id', 'pack_min_size', 'pack_max_size', 'pack_leader_chance'},
defaults = {
is_drop_restricted = true,
},
frame_type = 'necropolis',
},
['UncutSkillGemStackable'] = {
args = {'description'},
},
['UncutSupportGemStackable'] = {
args = {'description'},
},
['UncutReservationGemStackable'] = {
args = {'description'},
},
['VaultKey'] = {
args = {'description'},
frame_type = 'currency',
},
}
-- Acquisition tags
cfg.acquisition_tags = {
['league-specific'] = {
name = 'League-specific',
page = 'League-specific item',
cat = 'League-specific items',
},
['fishing'] = {
name = 'Fishing',
page = 'Fishing',
},
['experimented base type'] = {
name = 'Experimented base type',
page = 'Experimented base type',
cat = 'Experimented base types',
},
['ritual base type'] = {
name = 'Ritual base type',
page = 'Ritual base type',
cat = 'Ritual base types',
},
['runic base type'] = {
name = 'Runic base type',
page = 'Runic base type',
cat = 'Runic base types',
},
['corruption transformation'] = {
name = 'Corruption transformation',
page = 'Corruption transformation',
},
}
for k, v in pairs(m_game.constants.leagues) do
cfg.acquisition_tags[k] = {
name = v.name,
page = string.format('%s league', v.name),
}
end
-- Exclude items of these classes from the category that tracks items that are
-- missing a release version.
cfg.missing_version_blacklist = {
'Microtransaction',
'HideoutDoodad',
'InstanceLocalItem',
}
--
-- Required level
--
-- An item's base level requirement is waived unless it is at least this value.
cfg.base_item_required_level_threshold = 1
-- Item classes that may have their level requirement waived
cfg.base_item_required_level_threshold_classes = m_util.table.merge(
cfg.class_groups.weapons.keys,
cfg.class_groups.armor.keys
)
-- Modifiers contribute this much of their level requirement to an item's level requirement.
cfg.item_required_level_modifier_contribution = 0.8
-- Default max item level for outcome of divination card exchanges
cfg.divination_card_exchange_default_max_ilvl = 80
return cfg