Template:Item/doc: Difference between revisions

From Path of Exile 2 Wiki
Jump to navigation Jump to search
>OmegaK2
No edit summary
(→‎Base parameters: Supertype)
Line 57: Line 57:
| items.class_id
| 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.
| 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
| {{no}}
| {{no}}
| {{no}}
| items.supertype
| Supertype of the item, one of:
* shaper
* elder
* veiled
* fractured
* synthesised
|-
|-
| rarity
| rarity

Revision as of 20:34, 10 March 2019

This subpage provides documentation for Template:Item.

Lua logo

This template uses the following modules:

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 Yes Yes No 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 No No No items.supertype Supertype of the item, one of:
  • shaper
  • elder
  • veiled
  • fractured
  • synthesised
rarity str Yes Yes No items.rarity rarity of the item, one of:
  • Normal
  • Magic
  • Rare
  • Unique
name str Yes Yes No items.name Name of the item
name_list str No No No 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 No Yes No items.size_x x-size in inventory units, i.e. the width
size_y int No Yes No items.size_y y-size in inventory units, i.e. the height
drop_enabled bool No
*
No 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 No Yes No items.drop_level At which level the item starts dropping at (may differ from required_level)
drop_level_maximum int No Yes No items.drop_level_maximum Up to which level the item drops
drop_leagues list[str] No No No 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] No No No 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] No No No 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 No No No 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 No Yes Yes items.required_level Which level is required to use the item (may differ from drop_level)
required_dexterity int No Yes Yes items.required_dexterity The dexterity requirement of the item if any
required_intelligence int No Yes Yes items.required_intelligence The intelligence requirement of the item if any
required_strength int No Yes Yes items.required_strength The strength requirement of the item if any
flavour_text str No Yes No items.flavour_text Flavour text if any (i.e. for unique items, vaal fragments, divination cards, etc)
help_text str No Yes No 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] No Yes No items.tags List of internal tags
metadata_id str No Yes No items.metadata_id Internal metadata id of the item
is_corrupted bool No No No items.is_corrupted Set to true if the item is always corrupted (i.e. drops in a corrupted state).
is_relic bool No No No 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 No No No 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 No No No 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 No No No 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] No No No 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 No No No 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 No No No 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 No No items.base_item Base item name
base_item_id str No Yes items.base_item_id Base item metadata id.
base_item_page str No Yes 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 or unique, will be added to item_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 Yes Yes item_purchase_costs.name The item name which is used for purchasing this item of the specified rarity
purchase_cost_<rarity><i>_amount int Yes Yes 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:

  1. setting the mod id
  2. 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 No Yes item_mods.id Id of the implicit or explicit modifier at index i
<implicit/explicit><i>_text str No Yes item_mods.text Text of the implicit or explicit modifier at index i

If the mod id at the same index is:

  • set: Will override the text of the modifier with the specified one. If set to any false value the text will be hidden entirely.
  • not set: Will simply set a line. The page will also be added to Category:Items with improper modifiers
<implicit/explicit><i>_random_list list[str] No Yes 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:

Error: Table spawn_weights not found.

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.
  • 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 Adds (1-2) to (3-4) Physical Damage values mod_stats.min=1 AND mod_stats.max=2 or mod_stats.min=3 AND mod_stats.max=4 are appropriate. Mixing these will yield no results.
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 No the value of a stat if it isn't a range.
extra_stat<i>_min str Yes minimum range value of a stat
extra_stat<i>_max str Yes 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.

Yes
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.

Yes
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.

Yes
upgraded_from_set<i>_group<j>_amount int Amount of items of this type used/consumed in the recipe. Yes
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.

No

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 No Yes Yes flasks.duration How long the flask lasts
charges_max int No Yes Yes flasks.charges_max Maximum number of charges the flask holds
charges_per_use int No Yes Yes 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 No Yes item_buffs.id Internal ID of the associated buff (compare to Template:Buff and Buff namespace)
buff_stat_text str No Yes item_buffs.stat_text Buff stat text as it would appear on the flask
buff_value int No Yes item_buffs.values Values to use for the buff. Order matters; replace <i> with the ordinal number starting at 1.
buff_icon str No No 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 No Yes Yes weapons.critical_strike_chance Base critical strike chance of the weapon
attack_speed float No Yes Yes weapons.attack_speeed Base attack speed of the weapon
damage_min int No Yes Yes weapons.physical_damage_max Minimum base physical damage of the weapon
damage_max int No Yes Yes weapons.physical_damage_min Maximum base physical damage of the weapon
range int No Yes Yes 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 Yes weapons.lightning_damage_min Minimum lightning damage of the weapon
int Yes weapons.lightning_damage_max Maximum lightning damage of the weapon
int Yes weapons.cold_damage_min Minimum cold damage of the weapon
int Yes weapons.cold_damage_max Maximum cold damage of the weapon
int Yes weapons.fire_damage_min Minimum fire damage of the weapon
int Yes weapons.fire_damage_max Maximum fire damage of the weapon
int Yes weapons.chaos_damage_min Minimum chaos damage of the weapon
int Yes weapons.chaos_damage_max Maximum chaos damage of the weapon
float Yes weapons.physical_dps Damage per second based on physical damage and attack speed
float Yes weapons.lightning_dps Damage per second based on lightning damage and attack speed
float Yes weapons.cold_dps Damage per second based on cold damage and attack speed
float Yes weapons.fire_dps Damage per second based on fire damage and attack speed
float Yes weapons.chaos_dps Damage per second based on chaos damage and attack speed
float Yes weapons.poison_dps Damage per second based on physical damage, chaos damage and attack speed
float Yes weapons.elemental_dps Damage per second based on lightning damage, cold damage, fire damage and attack speed
float Yes weapons.physical_dps Damage per second based on physical damage, lightning damage, cold damage, fire damage, chaos damage and attack speed
str No 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 No Yes Yes armours.armour Armour of the armour
energy_shield int No Yes Yes armours.energy_shield Energy Shield of the armour
evasion int No Yes Yes 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] No Yes No skill_gems.gem_tags List of gem tags.
dexterity_percent int No Yes No 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 No Yes No skill_gems.strength_percent Strength portion of the gem stat distribution.
intelligence_percent int No Yes No 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 No Yes No 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 No Yes Yes flasks.life How much Life the flask recovers
Mana Flasks

Hybrid Flasks

flask_mana int No Yes Yes flasks.mana How much Mana the flask recovers
Shields block int No Yes Yes shields.block The base chance to block on shields
Amulets is_talisman bool No Yes No amulets.is_talisman Whether the amulet is a talisman (defaults to no)
Divination Cards card_art str No No No 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 No Yes No hideout_doodads.is_master_doodad Whether this doodad is a doodad that can be bought from a master
master str No Yes No hideout_doodads.master Name of the forsaken master who sells this doodad, if any
master_level_requirement int No Yes No hideout_doodads.master_level_requirement Which master level the forsaken master sell the doodad at, if any
master_favour_cost int No Yes No hideout_doodads.master_favour_cost How master favour the doodad costs, if any
variation_count int No Yes No hideout_doodads.variation_count Number of available variations for this doodad

Maps

Parameter Value Required PyPoE
Export
Range Field Description
map_tier int No Yes No maps.tier Tier of the map
map_guild_character str No Yes No maps.guild_character Character used when using the map for creating a guild
map_area_id int No Yes No maps.area_id Area id of the map
map_area_level int No Yes No maps.area_level Area level of the map
unique_map_guild_character str No Yes No maps.unique_guild_character Character used when using the unique version of the map for creating a guild
unique_map_area_id int No Yes No maps.unique_area_id Area id of the unique version of the map
unique_map_area_level int No Yes No maps.unique_area_level Area level of the map

Stackable Currency

Parameter Value Required PyPoE
Export
Range Field Description
is_essence bool No Yes No Whether the currency item is an essence
essence_level_restriction int No Yes No essences.level_restriction Up to which item level the essence can be used
essence_level int No Yes No essence.level Level of the essence

Jewel

Parameter Value Required PyPoE
Export
Range Field Description
item_limit int No No No jewels.item_limit Maximum amount of jewels that can be equipped at once.
str No No No 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 No Yes No prophecies.prophecy_id Internal (unique) identifier of the prophecy.
prediction_text str No Yes No prophecies.prediction_text The prediction text of the prophecy (i.e. the white text that tells you what will happen).
seal_cost int No Yes No 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 No No No prophecies.objective Text detailing what is required to successfully complete the prophecy
reward str No No No 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:

  1. In the main area page there is a infobox that shows the id.
  2. 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:

Error: Table areas not found.
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 use drop_areas = 2_6_1 or if you actually want both you can just use them both drop_areas = 1_1_1, 2_6_1.

See also