Template:Item/doc
This subpage provides documentation for Template:Item.
This template is used on a large number of pages.
To avoid major disruption and server load, do not make unnecessary edits to this template. Test changes to this template first using its /sandbox and /testcases subpages or your user space. All of the changes can then be applied to this template in a single edit.
Consider discussing changes on the talk page or on Discord before implementing them.
Item is a template that creates an infobox on the page, then sets categories and semantic properties to the page. This allows the items to be searched for and displayed in advanced item tables that stays up-to-date, which can be difficult in a game that is constantly evolving.
Overview
This template should be used for all items on the wiki and it will take of setting semantic properties, creating an infobox as well as setting categories.
It is meant for usage on permanent pages, do not use it on user pages.
Maintenance categories
Maintenance categories will be set when the template is incorrectly used or some parameters should be filled out.
Category | Variable | Description |
---|---|---|
Category:Items without a release version | release_version | Items that do not have a release version set. |
Category:Items with improper modifiers | implicit<i>_text or
explicit<i>_text |
Items that use explicit text instead of proper references to modifiers. |
Category:Items with broken item references in upgraded from parameters | upgraded_from_set<i>_group<j>_item_id or
upgraded_from_set<i>_group<j>_item_page or upgraded_from_set<i>_group<j>_item_name |
Items that have a broken item reference in one of the ingredient groups; i.e. either no matches or too many matches. |
Base parameters
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
class_id | str | items.class_id | A valid internal item class id. This is used to determine further properties of the item and thus is required in all cases. | |||
supertype | str | items.supertype | Supertype of the item, one of:
| |||
rarity | str | items.rarity | rarity of the item, one of:
| |||
name | str | items.name | Name of the item | |||
name_list | str | items.name_list | List of aliases for this item; this should be used carefully and only for legacy versions of the item (i.e. Caustic Arrow vs Poison Arrow).
The current item name is always added to this list automatically | |||
size_x | int | items.size_x | x-size in inventory units, i.e. the width | |||
size_y | int | items.size_y | y-size in inventory units, i.e. the height | |||
drop_enabled | bool | items.drop_enabled | Whether the item is drop enabled; this defaults to true.
Specify false for legacy items that do not drop anymore. | |||
drop_level | int | items.drop_level | At which level the item starts dropping at (may differ from required_level) | |||
drop_level_maximum | int | items.drop_level_maximum | Up to which level the item drops | |||
drop_leagues | list[str] | items.drop_leagues | A comma-separated list of leagues the item can drop it.
Generally this should specified for items that are only obtainable as long the league flag is active (i.e. through the league itself, though zana mods, or other conditions). | |||
drop_areas | list[str] | items.drop_areas
item.drop_areas_html |
A comma-separated list of area ids the item can drop in.
The field should be specified for items that can only drop in specific areas, but not for instances where specific monsters drop this item (even if the monster only appears in the specific area - this is because the drop restriction is related to the monster, not the area in those cases). See Finding areas section on this page for more details. | |||
drop_areas_html | list[str] | item.drop_areas_html | Overrides the automatically generated text form the drop_areas parameter. This should only be specified in cases where a lot of areas are specified and it would reduce visibility. | |||
drop_text | str | items.drop_text | Parameter to handle any restrictions to obtaining an item that are not covered by more specific parameters.
Always use a specific parameter if possible | |||
required_level | int | items.required_level | Which level is required to use the item (may differ from drop_level) | |||
required_dexterity | int | items.required_dexterity | The dexterity requirement of the item if any | |||
required_intelligence | int | items.required_intelligence | The intelligence requirement of the item if any | |||
required_strength | int | items.required_strength | The strength requirement of the item if any | |||
flavour_text | str | items.flavour_text | Flavour text if any (i.e. for unique items, vaal fragments, divination cards, etc) | |||
help_text | str | items.help_text | Help text if any
For some item classes such as gems a default string is inserted if this value is missing. | |||
tags | list[str] | items.tags | List of internal tags | |||
metadata_id | str | items.metadata_id | Internal metadata id of the item | |||
is_corrupted | bool | items.is_corrupted | Set to true if the item is always corrupted (i.e. drops in a corrupted state). | |||
is_relic | bool | items.is_relic | Set to true if the item is a relic. Rarity of the item must be "Unique" for this to work. | |||
release_version | str | items.release_version | The version number of when this item was initially released; when an item has legacy variants the date of the original release of the legacy variant should be used. The version must a be a valid version number and there must be a version page or the template will return an error.
Items that have no release version set will also be added to the category Items without a release version. | |||
removal_version | str | items.removal_version | The version number of when this item was removed. The version must a be a valid version number and there must be a version page or the template will return an error. | |||
inventory_icon | str | items.inventory_icon | This parameter only needs to be specified if the item name does not match the wiki page name.
When specified, the specified text will be used instead of the item name in front of the "inventory icon.png" suffix. For example: name = Baller inventory_icon = Test item (cold and fire) -> File:Test item (cold and fire) inventory icon.png | |||
alternate_art_inventory_icons | list[str] | items.alternate_art_inventory_icons | This parameter takes a comma-separated list of alternate art icon names, which each be inserted into the name of the item (or the provided override) and the "inventory icon.png" suffix.
The order of the item matters; if using the item link template, the items will can accessed in that order. The list items should be named after where they were retrieved from (for example, which race season) and ordered by the date they were added. Example: name = Test item alternate_art_inventory_icons = race season 1, emberwake -> File:Test item race season 1 inventory icon.png, File:Test item 1 emberwake inventory icon.png | |||
quality | int | item_stats.id = "quality"
item_stats.value = <value> |
Quality of the item. This arguments only works for item classes that can have quality (i.e. Maps, all Flasks, all Weapons and all armour pieces)
For unique weapons and armours this defaults to Q20. | |||
cannot_be_traded_or_modified | boolean | — | Whether the item can be traded or modified.
Defaults to true. |
Base item
Items with a rarity above normal (i.e. magic/rare/unique) can have a base item set.
When a base item is set, most of the attributes will be copied over to the item and only attributes that differ from the base item need to be set, due to that the base item **must** exist.
There should only be one of the following base item parameters be set; if possible consider using a base item that is guaranteed to be unique.
Note that regardless of which setting was used, all properties will be populated.
Parameter | Value | PyPoE Export |
Unique | Field | Field on the base item | Description |
---|---|---|---|---|---|---|
base_item | str | items.base_item | Base item name | |||
base_item_id | str | items.base_item_id | Base item metadata id. | |||
base_item_page | str | items.base_item_page | — | Base item wiki page. |
Purchase costs
Items of Normal rarity support setting purchase costs at NPC vendors for each of the rarities.
In the following table replace these parameters accordingly:
<rarity>
- replace with the current rarity, i.e.normal
,magic
,rare
orunique
, will be added toitem_purchase_costs.rarity
<i>
- replace with the order of the mod starting at 1.
Please note that multiple entries will all be assumed to be necessary for the purchase.
Parameter | Value | Required | PyPoE Export |
Field | Description |
---|---|---|---|---|---|
purchase_cost_<rarity><i>_name | str | item_purchase_costs.name | The item name which is used for purchasing this item of the specified rarity | ||
purchase_cost_<rarity><i>_amount | int | item_purchase_costs.amount | How many of the specified item name are required for purchasing this item of the specified rarity |
For example, to set the purchase cost of an item to 5x Scroll of WisdomScroll of WisdomStack Size: 40Identifies an itemRight click this item then left click an unidentified item to apply it. and 1x Module Error: No results found for item using search term "item_name = Orb of Alteration" you'll need to specify the following in the parameters:
purchase_cost_normal1_name = Scroll of Wisdom purchase_cost_normal1_amount = 5 purchase_cost_normal2_name = Orb of Alteration purchase_cost_normal2_amount = 1
Setting mods
Mods can be set on any item type.
Generally there are two ways of doing this:
- setting the mod id
- setting the mod text
The order of the mods does matter - it's how the mod's stats will appear on the item.
Mod id and mod text can mixed up.
Mod parameters
Replace the <i>
with the order of the mod starting at 1.
Replace the <implicit/explicit>
according to whether the modifier is an implicit or explicit. Please note that unique items will receive their implicits from base items and do not require their implicits to be set. In the data base table, this value will correspond to item_mods.is_implicit
.
Parameter | Value | Required | PyPoE Export |
Field(s) | Description |
---|---|---|---|---|---|
<implicit/explicit><i> | str | item_mods.id | Id of the implicit or explicit modifier at index i | ||
<implicit/explicit><i>_text | str | item_mods.text | Text of the implicit or explicit modifier at index i
If the mod id at the same index is:
| ||
<implicit/explicit><i>_random_list | list[str] | item_mods.id
item_mods.is_random |
Should be a set to a comma-separated list of modifiers that can randomly appear on the item. All the modifiers will be added to the infoboxes and item tables, but they will not be included in the inline infoboxes. Unlike regular modifiers, stats here will not affect the visible item stats in the infoboxes (so for example, a random armour modifier will not increase the armour value shown).
If the text parameter is set for this index, the given text will be shown as a summary instead of the default. This parameter should be used for unique items that can choose from a pool of random modifiers. |
When to use mod id and mod text
The mod id must correspond to an existing mod id. please note the mod id may be different from the page itself, look on the particular mod page for the id itself (also see Template:Mod)
The template will calculate adjustments to the base values of the item based on the mods. Make sure that any values on the item itself are set to the **base value** (before applying the stats) and not the final values.
If a base item is supplied for the item, any implicit mods will be copied over. Explicit mods will not be copied.
Finding the appropriate mods for unique items
Mods are exposed with several properties by {{Mod}}
, as a result mods can be searched through ask queries.
If you have an unique item where the minimum and maximum rolls are known, or even just the stat texts, you can search those properties through queries.
For example, Module Error: No results found for item using search term "item_name = Brightbeak" has 5 different stat lines which rolls are known, finding the mod for
(50 to 75)% increased Physical Damage
can be done through a query like this:
{{#cargo_query: |tables=mods, mod_stats, spawn_weights, _pageData |join on=mods._pageName=mod_stats._pageName, mods._pageName=spawn_weights._pageName, mods._pageName=_pageData._pageName |fields=mods._pageName, mods.id, mods.stat_text, _pageData._creationDate, _pageData._modificationDate |where= mods.stat_text LIKE "%Physical Damage%" AND mods.generation_type=3 AND mod_stats.min=50 AND mod_stats.max=75 |limit=5000 |order by=mods.stat_text |group by=mods._pageName, mod_stats._pageName, spawn_weights._pageName |format=template |template=Mod table with items |intro={{Mod table with items/intro}} |outro={{Mod table with items/outro}} }}
This may yield multiple possible mods:
As you can see there is only 1 acceptable mod id in this case that has a matching stat text.
If several mods have the same stat text:
- Avoid having multiple items with the same mod.
- If that's the case try to assign the highest numbered mod id to the newest released item. The
{{Mod table with items}}
result template helps with this.
- If that's the case try to assign the highest numbered mod id to the newest released item. The
- Consider the internal id of the mod (
mods.id
).- UniqueOneHandMace1 does fit what we're searching for: a modifier for an unique one hand mace
- In addition once you have found multiple mods for the different stat texts, they may be named in a similar fashion (they should refer to a UniqueOneHandMace1 in this case).
Let's say only 66% increased Physical Damage is known, then the maximum and minimum values are not known but the fields can still be used by replacing that part with:
AND mod_stats.min<=66 AND mod_stats.max>=66
Notes:
- Cargo has similar syntax to SQL.
- Stat text can include linked words. The
[[linked page|linked word]]
will be included and since the linked word sometimes differ to the linked page it's not to easy figure out the correct stat text. - Stat text may change between updates of the game, so searching for the values and not the text might be a good idea.
- Using wildcards can make your life easier.
- The page name and mod id aren't always the same. Use
mods.id
] when adding to the item.
Notes about specific stats:
Type | Description | Values |
---|---|---|
"per second" values | These are generally handled by minute. So 2% Life regenerated per second equals a stat value of 120
|
x*60 |
duration values | These are generally handled in milliseconds. So Gain Onslaught for 3 seconds equals a stat value of 3000
|
x*1000 |
reduced/less | These are generally negated values. So 30% reduced life equals a stat value of -30
|
x*-1 |
x-y | These are generally two separate stats, you want to search for min/max for x or min/max for y.
So for |
x or y not both |
Permyriad | Percentage values are sometimes rewritten as a permyriad stat value. | x*100 |
If you fail to find any mods
Generally using mod text should be avoided, since it doesn't handle any automated updating of the values.
However if there is no appropriate mod on the wiki yet (for example, for upcoming unique items!), you may want to use the <implicit/explicit><i>_text
parameter.
To address the system not updating the values on the item properly, you can also manually set stats on an item:
Parameter | Value | Range | Description |
---|---|---|---|
extra_stat<i>_id | str | — | Identifier of the stat. Consider checking Module:Item2 source code to see which ones are handled. |
extra_stat<i>_value | str | the value of a stat if it isn't a range. | |
extra_stat<i>_min | str | minimum range value of a stat | |
extra_stat<i>_max | str | maximum range value of a stat |
Vendor recipes and upgrade paths
Vendor recipes and upgrade paths can be represented by using the upgraded_from parameters. Any item can have an arbitrary number of sets that produce the item with each set containing a number of groups that represent a single or multiple items of the same type with a specific condition.
Set parameters
Replace the <i>
with the order of the set starting at 1.
Parameter | Type | Description |
---|---|---|
upgraded_from_set<i>_text | str | A descriptive text that applies to the entire set.
For example, this could be used in vendor recipes to mention that all items need to be quality 20 in order for the set to work. |
Group parameters
Replace the <i>
with the order of the set starting at 1.
Replace the <j>
with the order of the group starting at 1.
The item_
parameters used to look up the item in the wiki database, if no item is found, the set will be considered invalid. An exact error message is output to the log which can be shown under Lua logs when hitting the preview button upon saving the page and the page will be added to Category:Items with broken item references in upgraded from parameters.
Parameter | Type | Description | Required |
---|---|---|---|
upgraded_from_set<i>_group<j>_item_id | str | Metadata id of the ingredient item.
Use this if possible. |
|
upgraded_from_set<i>_group<j>_item_page | str | Page of the ingredient item.
Use this to avoid ambiguous item names. Please note as the page name changes the reference here will be invalid, so it isn't as robust as using ids. |
|
upgraded_from_set<i>_group<j>_item_name | str | Exact, case-sensitive name of the item consumed.
Item names can be used for multiple items which can cause this option to fail. |
|
upgraded_from_set<i>_group<j>_amount | int | Amount of items of this type used/consumed in the recipe. | |
upgraded_from_set<i>_group<j>_notes | str | Extra notes about the item types.
For example, the rarity required of the item could be described here. |
Item sell price overrides
In general these parameters should not be set since the item sell price is derived from the modifiers on the item or special vendor recipes. If the sell price is only sightly different from the ingame price (e.x. 2 alchemy shards less then ingame) this indicates that modifiers are missing or wrongfully chosen and should NOT be fixed with sell prices overrides.
Items that have this set will be added to the maintenance category Category:Item with sell prices overrides.
Sell price parameters
Replace the <i>
with the order of the set starting at 1.
Parameter | Type | Description |
---|---|---|
sell_price<i>_name | str | Name of the sell price item |
sell_price<i>_amount | str | How many of the specified item this item sells for |
Parameters available to groups of item classes
Parameters that apply to various groups of item classes.
Flasks
Eligible item classes:
Life Flasks, Mana Flasks, Hybrid Flasks, Utility Flasks, Critical Utility Flasks
Parameter | Value | Required | PyPoE Export |
Range | Properties | Description |
---|---|---|---|---|---|---|
flask_duration | int | flasks.duration | How long the flask lasts | |||
charges_max | int | flasks.charges_max | Maximum number of charges the flask holds | |||
charges_per_use | int | flasks.charges_per_use | Charges consumed when the flask is used |
Utility Flasks
Eligible item classes:
Utility Flasks, Critical Utility Flasks
Parameter | Value | Required | PyPoE Export |
Properties | Description |
---|---|---|---|---|---|
buff_id | str | item_buffs.id | Internal ID of the associated buff (compare to Template:Buff and Buff namespace) | ||
buff_stat_text | str | item_buffs.stat_text | Buff stat text as it would appear on the flask | ||
buff_value | int | item_buffs.values | Values to use for the buff. Order matters; replace <i> with the ordinal number starting at 1.
| ||
buff_icon | str | item_buffs.icon | Icon of the buff effect |
Weapons
Eligible item classes:
'Claws', 'Daggers', 'Wands', 'One Hand Swords', 'Thrusting One Hand Swords', 'One Hand Axes', 'One Hand Maces', 'Bows', 'Staves', 'Two Hand Swords', 'Two Hand Axes', 'Two Hand Maces', 'Sceptres'
Parameter | Value | Required | PyPoE Export |
Range | Properties | Description |
---|---|---|---|---|---|---|
critical_strike_chance | float | weapons.critical_strike_chance | Base critical strike chance of the weapon | |||
attack_speed | float | weapons.attack_speeed | Base attack speed of the weapon | |||
damage_min | int | weapons.physical_damage_max | Minimum base physical damage of the weapon | |||
damage_max | int | weapons.physical_damage_min | Maximum base physical damage of the weapon | |||
range | int | weapons.range | Range in game units of the weapon |
Additionally, the following values are set in the data base as long other parameters are specified:
Value | Range | Properties | Description |
---|---|---|---|
int | weapons.lightning_damage_min | Minimum lightning damage of the weapon | |
int | weapons.lightning_damage_max | Maximum lightning damage of the weapon | |
int | weapons.cold_damage_min | Minimum cold damage of the weapon | |
int | weapons.cold_damage_max | Maximum cold damage of the weapon | |
int | weapons.fire_damage_min | Minimum fire damage of the weapon | |
int | weapons.fire_damage_max | Maximum fire damage of the weapon | |
int | weapons.chaos_damage_min | Minimum chaos damage of the weapon | |
int | weapons.chaos_damage_max | Maximum chaos damage of the weapon | |
float | weapons.physical_dps | Damage per second based on physical damage and attack speed | |
float | weapons.lightning_dps | Damage per second based on lightning damage and attack speed | |
float | weapons.cold_dps | Damage per second based on cold damage and attack speed | |
float | weapons.fire_dps | Damage per second based on fire damage and attack speed | |
float | weapons.chaos_dps | Damage per second based on chaos damage and attack speed | |
float | weapons.poison_dps | Damage per second based on physical damage, chaos damage and attack speed | |
float | weapons.elemental_dps | Damage per second based on lightning damage, cold damage, fire damage and attack speed | |
float | weapons.physical_dps | Damage per second based on physical damage, lightning damage, cold damage, fire damage, chaos damage and attack speed | |
str | weapons.damage_html | All damage values as HTML |
Armour
Eligible item classes:
'Gloves', 'Boots', 'Body Armours', 'Helmets', 'Shields'
Parameter | Value | Required | PyPoE Export |
Range | Properties | Description |
---|---|---|---|---|---|---|
armour | int | armours.armour | Armour of the armour | |||
energy_shield | int | armours.energy_shield | Energy Shield of the armour | |||
evasion | int | armours.evasion | Evasion Rating of the armour |
Gems
Eligible item classes:
'Active Skill Gems', 'Support Skill Gems'
They also inherit all parameters from the Skill template.
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
gem_tags | list[str] | skill_gems.gem_tags | List of gem tags. | |||
dexterity_percent | int | skill_gems.dexterity_percent | Dexterity portion of the gem stat distribution.
For pure gems, this is usually 100 for the primary attribute and 0 for the other attribute. For hybrid gems, this is usually 60 for the primary attribute, 40 for the secondary attribute, and 0 for the remaining attribute. | |||
strength_percent | int | skill_gems.strength_percent | Strength portion of the gem stat distribution. | |||
intelligence_percent | int | skill_gems.intelligence_percent | Intelligence portion of the gem stat distribution. |
With all arguments supplied, these properties will also be set:
Field | Description |
---|---|
skill_gems.primary_attribute | Will be set to the primary attribute (highest percentage) |
Stackables
Eligible item classes:
'Currency', 'Stackable Currency', 'Hideout Doodads', 'Microtransactions', 'Divination Card'
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
stack_size | int | stackables.stack_size | Maximum stack size of the item |
Parameters specific to a single item class
Parameters specific to item classes
Class | Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|---|
Life Flasks
Hybrid Flasks |
flask_life | int | flasks.life | How much Life the flask recovers | |||
Mana Flasks
Hybrid Flasks |
flask_mana | int | flasks.mana | How much Mana the flask recovers | |||
Shields | block | int | shields.block | The base chance to block on shields | |||
Amulets | is_talisman | bool | amulets.is_talisman | Whether the amulet is a talisman (defaults to no) | |||
Divination Cards | card_art | str | divination_cards.card_art | Can be used to define alternate name for the divination card background art.
By default, the name of the card is used. |
Hideout Doodads
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
is_master_doodad | bool | hideout_doodads.is_master_doodad | Whether this doodad is a doodad that can be bought from a master | |||
master | str | hideout_doodads.master | Name of the forsaken master who sells this doodad, if any | |||
master_level_requirement | int | hideout_doodads.master_level_requirement | Which master level the forsaken master sell the doodad at, if any | |||
master_favour_cost | int | hideout_doodads.master_favour_cost | How master favour the doodad costs, if any | |||
variation_count | int | hideout_doodads.variation_count | Number of available variations for this doodad |
Maps
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
map_tier | int | maps.tier | Tier of the map | |||
map_guild_character | str | maps.guild_character | Character used when using the map for creating a guild | |||
map_area_id | int | maps.area_id | Area id of the map | |||
map_area_level | int | maps.area_level | Area level of the map | |||
unique_map_guild_character | str | maps.unique_guild_character | Character used when using the unique version of the map for creating a guild | |||
unique_map_area_id | int | maps.unique_area_id | Area id of the unique version of the map | |||
unique_map_area_level | int | maps.unique_area_level | Area level of the map |
Stackable Currency
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
is_essence | bool | — | Whether the currency item is an essence | |||
essence_level_restriction | int | essences.level_restriction | Up to which item level the essence can be used | |||
essence_level | int | essence.level | Level of the essence |
Jewel
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
item_limit | int | jewels.item_limit | Maximum amount of jewels that can be equipped at once. | |||
— | str | jewels.radius_html | HTML text of the jewels radius, if any specified via mods |
Other specific parameters
Prophecies
Prophecies are a special case which require the base_item
to be set to "Prophecy" with rarity
"Normal" and class
"Stackable Currency":
{{Item |rarity = Normal |class = Stackable Currency |base_item = Prophecy ... }}
In addition, the following parameters are exclusive to prophecies:
Parameter | Value | Required | PyPoE Export |
Range | Field | Description |
---|---|---|---|---|---|---|
prophecy_id | str | prophecies.prophecy_id | Internal (unique) identifier of the prophecy. | |||
prediction_text | str | prophecies.prediction_text | The prediction text of the prophecy (i.e. the white text that tells you what will happen). | |||
seal_cost | int | prophecies.seal_cost | How many Module Error: No results found for item using search term "item_name = Silver Coin" are required to seal the prophecy. | |||
objective | str | prophecies.objective | Text detailing what is required to successfully complete the prophecy | |||
reward | str | prophecies.reward | Text detailing what the prophecy rewards (please also specify upgraded_from if it upgrades an item) |
Examples
Finding areas
For the drop_areas
parameter you'll need to specify the area ids; the id is required instead of the name of the area, because multiple areas can share the same name. There are a couple of ways to find area ids:
- In the main area page there is a infobox that shows the id.
- You can also use SMW to find ids using a simple query such as:
{{#cargo_query: |tables=areas |fields=areas.id, areas.name, areas.act, areas.main_page |where=areas.name="The Twilight Strand" |group by=areas._pageID }}
Yields:
- So if you meant the act 1 area you'd use
drop_areas = 1_1_1
, if you meant the act 6 area, you'd usedrop_areas = 2_6_1
or if you actually want both you can just use them bothdrop_areas = 1_1_1, 2_6_1
.
See also