Terraria Wiki
Terraria Wiki
m (en sync 946639)
Aucun résumé des modifications
(46 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
<includeonly><!--
 
<includeonly><!--
   
  +
==========================================================================================================================
//localization info in [[template:item_infobox/l10n]].(autoload)
 
  +
=========================================== INITIALIZATION ===========================================
  +
==========================================================================================================================
   
  +
//ext l10n info: how to get english item name from {{BASEPAGENAME}}?
 
  +
+++++++++++++ 1. Localization +++++++++++++
  +
  +
// localization info is autoloaded from Template:Item infobox/l10n
  +
  +
// additional l10n: how to get english item name from {{BASEPAGENAME}}?
 
-->{{#vardefine:itemnamefrompagename|{{pagename2en|{{#titleparts:{{ROOTPAGENAME}}}}}}}}<!--
 
-->{{#vardefine:itemnamefrompagename|{{pagename2en|{{#titleparts:{{ROOTPAGENAME}}}}}}}}<!--
   
=== l10n end ==========================================================================================================
 
   
  +
+++++++++++++ 2. View-related options +++++++++++++
//view name:
 
  +
 
-->{{#vardefine:viewname|{{lc:{{{mode|{{{output|{{{view|{{#var:_item_infobox_flag_view|infobox}}}}}}}}}}}}}}}<!--
 
-->{{#vardefine:viewname|{{lc:{{{mode|{{{output|{{{view|{{#var:_item_infobox_flag_view|infobox}}}}}}}}}}}}}}}<!--
 
-->{{#switch:{{#var:viewname}}<!--
 
-->{{#switch:{{#var:viewname}}<!--
 
-->|infobox=<!--
 
-->|infobox=<!--
-->{{#arraydefine:extargs|float/css/style/boxwidth/imagebreak/showids/idshow/idbuffshow/idtileshow/projectileblock/projectilename/projectileimage/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
+
-->{{#arraydefine:extargs|float/css/style/boxwidth/imagebreak/showids/idshow/idbuffshow/idtileshow/projectileblock/projectilename/projectileimage/showenglishname/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
-->{{#arrayprint:extargs||@@@@|{{#if:@@@@|{{#vardefine:ii:ext:@@@@|{{{@@@@|}}}}}}}}}<!-- e#xt parameters for view
 
-->{{#vardefine:imagemode|{{{imagemode|full}}}}}<!--
 
 
-->|table=<!--
 
-->|table=<!--
 
-->{{#arraydefine:extargs|cols/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
 
-->{{#arraydefine:extargs|cols/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
  +
-->{{#arraydefine:ii:table:cols|{{{cols|{{item infobox/options|get|cols}}}}}|{{{colsep|{{#or:{{item infobox/options|get|colsep}}|/}}}}}}}<!-- default cols value from options
-->{{#arrayprint:extargs||@@@@|{{#if:@@@@|{{#vardefine:ii:ext:@@@@|{{{@@@@|}}}}}}}}}<!-- ext parameters for view
 
-->{{#vardefine:colsep|{{item infobox/options|get|colsep}}}}<!--
 
-->{{#arraydefine:ii:table:cols|{{#var:ii:ext:cols|{{#var:_item_infobox_flag_cols}}}}|{{{colsep|{{#var:colsep|/}}}}}}}<!-- default cols value from options
 
 
// and pass all custom col values.
 
// and pass all custom col values.
-->{{#arrayprint:ii:table:cols||@@@@|{{#if:{{regex|@@@@|/^col:/}}|{{#vardefine:ii:@@@@|{{{@@@@|}}} }}}}}}<!--
+
-->{{#arrayprint:ii:table:cols||@@@@|{{#if:{{#rmatch:@@@@|/^col:/|y}}|{{#vardefine:ii:@@@@|{{{@@@@|}}} }}}}}}<!--
-->{{#vardefine:imagemode|{{{imagemode|{{item infobox/options|get|imagemode}}}}}}}<!--
 
 
-->|custom=<!--
 
-->|custom=<!--
 
-->{{#arraydefine:extargs|template/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
 
-->{{#arraydefine:extargs|template/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
-->{{#arrayprint:extargs||@@@@|{{#if:@@@@|{{#vardefine:ii:ext:@@@@|{{{@@@@|}}}}}}}}}<!-- ext parameters for view
 
-->{{#vardefine:imagemode|{{{imagemode|{{item infobox/options|get|imagemode}}}}}}}<!--
 
 
-->|item=<!--
 
-->|item=<!--
-->{{#arraydefine:extargs|mode/nolink/link/wrap/note/note2/showid/class/css/t/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
+
-->{{#arraydefine:extargs|mode/nolink/link/wrap/icons/note/note2/showid/class/css/t/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
-->{{#arrayprint:extargs||@@@@|{{#if:@@@@|{{#vardefine:ii:ext:@@@@|{{{@@@@|}}}}}}}}}<!-- ext parameters for view
 
-->{{#vardefine:imagemode|{{{imagemode|{{item infobox/options|get|imagemode}}}}}}}<!--
 
 
-->|#default=<!--
 
-->|#default=<!--
-->{{#arraydefine:extargs|{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!-- ext parameters for view
+
-->{{#arraydefine:extargs|{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
-->{{#arrayprint:extargs||@@@@|{{#if:@@@@|{{#vardefine:ii:ext:@@@@|{{{@@@@|}}}}}}}}}<!--
 
-->{{#vardefine:imagemode|{{{imagemode|{{item infobox/options|get|imagemode}}}}}}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
-->{{#arrayprint:extargs||@@@@|{{#if:@@@@|{{#vardefine:ii:ext:@@@@|{{{@@@@|}}}}}}}}}<!-- ext parameters for view
  +
-->{{#vardefine:imagemode|{{{imagemode|{{#ifeq:{{#var:viewname}}|infobox|full|{{item infobox/options|get|imagemode}}}}}}}}}<!-- image mode
   
======== DATA MODEL ========
 
   
//reset all fields. So they won't go wrong with multiple item infoboxes.
 
-->{{#vardefine:ii:id|}}<!--
 
-->{{#vardefine:ii:autoswing|}}<!--
 
-->{{#vardefine:ii:DD2Summon|}}<!--
 
-->{{#vardefine:ii:stack|}}<!--
 
-->{{#vardefine:ii:hammer|}}<!--
 
-->{{#vardefine:ii:pick|}}<!--
 
-->{{#vardefine:ii:axe|}}<!--
 
-->{{#vardefine:ii:fishing|}}<!--
 
-->{{#vardefine:ii:bait|}}<!--
 
-->{{#vardefine:ii:damage|}}<!--
 
-->{{#vardefine:ii:damagetype|}}<!--
 
-->{{#vardefine:ii:knockback|}}<!--
 
-->{{#vardefine:ii:defense|}}<!--
 
-->{{#vardefine:ii:tileboost|}}<!--
 
-->{{#vardefine:ii:mana|}}<!--
 
-->{{#vardefine:ii:mheal|}}<!--
 
-->{{#vardefine:ii:hheal|}}<!--
 
-->{{#vardefine:ii:critical|}}<!--
 
-->{{#vardefine:ii:use|}}<!--
 
-->{{#vardefine:ii:velocity|}}<!--
 
-->{{#vardefine:ii:toolspeed|}}<!--
 
-->{{#vardefine:ii:idbuff|}}<!--
 
-->{{#vardefine:ii:buff|}}<!--
 
-->{{#vardefine:ii:bufftype|}}<!--
 
-->{{#vardefine:ii:mobilebuff|}}<!-- if buff is mobile only
 
-->{{#vardefine:ii:buffduration|}}<!-- in seconds.
 
-->{{#vardefine:ii:bufflink|}}<!--
 
-->{{#vardefine:ii:bufftip|}}<!--
 
-->{{#vardefine:ii:buffchance|}}<!--
 
-->{{#vardefine:ii:debuffchance|}}<!--
 
-->{{#vardefine:ii:rare|}}<!--
 
-->{{#vardefine:ii:value|}}<!--in cc.
 
-->{{#vardefine:ii:sell|}}<!--divide by 5, round down, in cc.
 
-->{{#vardefine:ii:buy|}}<!--
 
-->{{#vardefine:ii:idtile|}}<!--
 
-->{{#vardefine:ii:idtilesub|}}<!--
 
-->{{#vardefine:ii:idwall|}}<!--
 
-->{{#vardefine:ii:idmount|}}<!--
 
-->{{#vardefine:ii:idprojectile|}}<!--
 
-->{{#vardefine:ii:consumable|}}<!--
 
-->{{#vardefine:ii:name|}}<!--
 
-->{{#vardefine:ii:lname|}}<!--
 
-->{{#vardefine:ii:tooltip|}}<!--
 
-->{{#vardefine:ii:namesub|}}<!--
 
-->{{#vardefine:ii:pickreq|}}<!--
 
-->{{#vardefine:ii:hammerreq|}}<!--
 
-->{{#vardefine:ii:placeable|}}<!--
 
-->{{#vardefine:ii:width|}}<!--
 
-->{{#vardefine:ii:height|}}<!--
 
-->{{#vardefine:ii:bodyslot|}}<!--
 
-->{{#vardefine:ii:bonus|}}<!--
 
-->{{#vardefine:ii:setbonus|}}<!--
 
-->{{#vardefine:ii:hardmodeonly|}}<!--
 
-->{{#vardefine:ii:allversions|}}<!--
 
-->{{#vardefine:ii:ammo|}}<!--
 
-->{{#vardefine:ii:useammo|}}<!--
 
-->{{#arraydefine:ii:sounds|}}<!--
 
//images:
 
-->{{#vardefine:ii:imagealt|}}<!-- //full image code for image area
 
-->{{#vardefine:ii:imagefile|}}<!-- //main image file
 
-->{{#vardefine:ii:image|}}<!-- //main image name.
 
-->{{#vardefine:ii:imageold|}}<!-- //oldimage.
 
-->{{#vardefine:ii:imagefemale|}}<!--
 
-->{{#vardefine:ii:imageplaced|}}<!--
 
-->{{#vardefine:ii:imageequipped|}}<!--
 
-->{{#vardefine:ii:imageext|}}<!-- //custom extra images. full image code.
 
//init types array:
 
-->{{#arraydefine:ii:types|{{lc:{{{type|}}}{{#if:{{{type2|}}}|/{{{type2}}}}}}}|/}}<!-- "/" seperated.
 
//init listcat array:
 
-->{{#arraydefine:ii:listcats|{{lc:{{{listcat|}}}{{#if:{{{listcat2|}}}|/{{{listcat2}}}}}{{#if:{{{listcat3|}}}|/{{{listcat3}}}}}{{#if:{{{listcat4|}}}|/{{{listcat4}}}}}{{#if:{{{listcat5|}}}|/{{{listcat5}}}}} }}|/}}<!-- "/" seperated.
 
ext tags: buy / allversions / hardmodeonly / drop / loot
 
-->{{#arraydefine:ii:tags|{{lc:{{{tags|{{{tag|}}}}}}}}|/}}<!-- "/" seperated.
 
other tags: drop / loot / fished / unobtainable / developer
 
-->{{#arraysearch:ii:tags|drop|0|{{#arraydefine:z|drop items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|loot|0|{{#arraydefine:z|loot items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|plunder|0|{{#arraydefine:z|plunder items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|fished|0|{{#arraydefine:z|fished items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|unobtainable|0|{{#arraydefine:z|unobtainable items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|developer|0|{{#arraydefine:z|developer items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|furniture|0|{{#arraydefine:z|furniture items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|storage|0|{{#arraydefine:z|storage items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|informational|0|{{#arraydefine:z|informational items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|quest rewards|0|{{#arraydefine:z|quest rewards}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|light source|0|{{#arraydefine:z|light source items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|novelty|0|{{#arraydefine:z|novelty items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|mechanism|0|{{#arraydefine:z|mechanism items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|potion ingredients|0|{{#arraydefine:z|Potion ingredients}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
   
  +
==========================================================================================================================
bagloot or bag loot
 
  +
============================================= DATA MODEL =============================================
-->{{#arraydefine:z|bag loot items}}<!--
 
  +
==========================================================================================================================
-->{{#arraysearch:ii:tags|bag loot|0|{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|bagloot|0|{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
-->{{#arraysearch:ii:tags|treasure bag loot|0|{{#arraydefine:z|Treasure Bag loot items}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}<!--
 
//Broadswords/Shortswords -> add swords
 
-->{{#arraydefine:z|swords}}<!--
 
-->{{#arraysearch:ii:listcats|broadswords|0|{{#arrayunion:ii:listcats|z|ii:listcats}}}}<!--
 
-->{{#arraysearch:ii:listcats|shortswords|0|{{#arrayunion:ii:listcats|z|ii:listcats}}}}<!--
 
Explosives -> weapon
 
-->{{#arraysearch:ii:listcats|explosives|0|{{#arraydefine:z|weapon}}{{#arrayunion:ii:types|z|ii:types}}}}<!--
 
summon weapons:
 
-->{{#arraysearch:ii:tags|minion|0|<!--
 
-->{{#arraydefine:z|weapon}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->{{#arraydefine:z|minion summon items}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
-->}}<!--
 
-->{{#arraysearch:ii:tags|sentry|0|<!--
 
-->{{#arraydefine:z|weapon}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->{{#arraydefine:z|sentry summon items}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
-->}}<!--
 
   
  +
Note: All "#lst*" parser functions ([[gphelp:Extension:ParserPower/List handling functions]]) will trim whitespace and discard empty elements.
//==auto vars==
 
  +
-->{{#if:{{{auto|}}}|<!--
 
  +
-->{{#vardefine:__auto_id|0}}<!-- 0 = reset/default
 
  +
+++++++++++++ 1. Set types, listcats, and tags from parameter input +++++++++++++
-->{{#vardefine:__auto_id|<!--
 
  +
-->{{#iferror:{{#expr:1+{{{auto|}}}}}|<!-- if not is_number($auto)
 
  +
// types: separated with "/".
-->{{{id|{{ItemIdFromName|{{{name|{{#var:itemnamefrompagename}}}}}}}}}}<!-- $id -> idFromName
 
  +
-->{{#vardefine:ii:types|{{lcfirst:{{{type|}}}}}/{{lcfirst:{{{type2|}}}}}}}<!--
-->|<!--
 
  +
// listcats: separated with "/".
-->{{{auto|}}}<!-- //$auto is number.
 
  +
-->{{#vardefine:ii:listcats|{{{listcat|}}}/{{{listcat2|}}}/{{{listcat3|}}}/{{{listcat4|}}}/{{{listcat5|}}}}}<!--
-->}}<!--
 
  +
// tags: separated with "/".
  +
-->{{#vardefine:ii:tags|{{{tags|{{{tag|}}}}}}}}<!--
  +
  +
// check for certain tags to add to listcats:
  +
* tag "xxx" -> add listcat "xxx items"
  +
-->{{#vardefine:ii:listcats|{{#lstjoin:{{#var:ii:listcats}}|/|{{#lstmap:{{#lstfltr:drop/loot/plunder/fished/unobtainable/developer/furniture/storage/informational/light source/novelty/mechanism/bag loot|/|{{#var:ii:tags}}|/|/}}|/|@@@|@@@ items|/}}|/|/}}}}<!--
  +
* tag "xxx" -> add listcat "xxx"
  +
-->{{#vardefine:ii:listcats|{{#lstjoin:{{#var:ii:listcats}}|/|{{#lstfltr:potion ingredients/quest rewards|/|{{#var:ii:tags}}|/|/}}|/|/}}}}<!--
  +
* custom mapping
  +
-->{{#if:{{#lstind:bagloot|{{#var:ii:tags}}|/}}|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|bag loot items}}}}}}<!--
  +
-->{{#if:{{#lstind:treasure bag loot|{{#var:ii:tags}}|/}}|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|Treasure Bag loot items}}}}}}<!--
  +
  +
// check for certain listcats:
  +
* listcat "Broadswords"/"Shortswords" -> add listcat "Swords"
  +
-->{{#if:{{#lstfltr:broadswords/shortswords|/|{{#var:ii:listcats}}|}}|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|swords}}}}}}<!--
  +
* listcat "Explosives" -> add type "weapon"
  +
-->{{#if:{{#lstind:explosives|{{#var:ii:listcats}}|/}}|{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|weapon}}}}}}<!--
  +
  +
// is armor/vanity set?
  +
-->{{#vardefine:ii:isArmorSet|{{#lstind:set|{{#var:ii:types}}|/}}}}<!--
  +
  +
// summon weapons:
  +
-->{{#if:{{#var:ii:isArmorSet}}||<!-- exclude armor sets (e.g. Stardust armor)
  +
-->{{#if:{{#lstfltr:minion/sentry|/|{{#var:ii:tags}}|/|/}}|<!--
  +
* tag "minion"/"sentry" -> add listcat "minion/sentry summon items"
  +
-->{{#vardefine:ii:listcats|{{#lstjoin:{{#var:ii:listcats}}|/|{{#lstmap:{{#lstfltr:minion/sentry|/|{{#var:ii:tags}}|/|/}}|/|@@@|@@@ summon items|/}}|/|/}}}}<!--
  +
* add type "weapon"
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|weapon}}}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#invoke:Iteminfo|getInfo|id={{#var:__auto_id}}|prefix=ii:info:}}<!-- fetch data or reset those data filed vars.
 
  +
// post process and save into "standard" vars:
 
  +
-->{{#vardefine:ii:ammo|{{#dplvar:ii:info:ammo}}}}<!--
 
  +
+++++++++++++ 2. Fetch automatic data +++++++++++++
-->{{#ifexpr:{{#var:ii:ammo}}|<!-- Ammo:
 
  +
//add "Ammunition" to type.
 
-->{{#arraydefine:z|ammunition}}{{#arrayunion:ii:types|ii:types|z}}<!--
+
-->{{#invoke:Iteminfo|getInfo|prefix=ii:info:|id={{#vardefineecho:ii:auto_id|{{#if:{{{auto|}}}|<!--
  +
-->{{#iferror:{{#expr:1+{{{auto|}}}}}|<!-- if not is_number($auto)
//add ammo type to listcat: (by AmmoID )
 
-->{{#arraydefine:z|{{#switch:{{#var:ii:ammo}}<!--
+
-->{{#or:{{{id|{{ItemIdFromName|{{{name|{{#var:itemnamefrompagename}}}}}}}}}}|0}}<!-- $id -> idFromName -> 0
-->|40=arrows<!--
+
-->|<!--
  +
-->{{{auto|}}}<!-- $auto is number, use it as-is
-->|71=coins<!--
 
-->|97=bullets<!--
 
-->|169=sands<!--
 
-->|283=darts<!--
 
-->|771=rockets<!--
 
-->|780=solutions<!--
 
-->|931=flares<!--
 
-->}}}}<!--
 
-->{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
-->|<!--
// use ammo type
 
  +
-->0<!-- not auto: 0
-->{{#vardefine:ii:useammo|{{#switch:{{#dplvar:ii:info:useAmmo}}<!--
 
  +
-->}}}}}}<!-- fetch data or reset the data-filled vars.
-->|23=gel<!--
 
  +
  +
  +
+++++++++++++ 3. Process auto data, overriding with manual input if necessary +++++++++++++
  +
  +
---- id and name ----
  +
-->{{#vardefine:ii:id|{{{id|{{#ifexpr:{{#dplvar:ii:info:type}}|{{#dplvar:ii:info:type}}}}}}}}}<!--
  +
-->{{#vardefine:ii:name|{{{name|{{#or:{{#dplvar:ii:info:name}}|{{#var:itemnamefrompagename}}}}}}}}}<!--
  +
-->{{#vardefine:ii:namesub|{{{namesub|}}}}}<!--
  +
-->{{#vardefine:ii:lname|{{{lname|{{tr|{{#var:ii:name|}}}}}}}}}<!--
  +
-->{{#vardefine:ii:internalName|{{#dplvar:ii:info:internalName}}}}<!--
  +
--------
  +
  +
---- autoswing and stack ----
  +
-->{{#vardefine:ii:autoswing|{{{autoswing|{{#dplvar:ii:info:autoReuse}}}}}}}<!--
  +
-->{{#vardefine:ii:stack|<!--
  +
-->{{#if:{{{stack|}}}<!--
  +
-->|{{#rreplace:{{{stack|}}}|@@@@|{{#dplvar:ii:info:maxStack}}}}<!--
  +
-->|{{#dplvar:ii:info:maxStack}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
--------
  +
  +
---- hammer, pick, axe power ----
  +
-->{{#vardefine:ii:hammer|{{#ifexpr:{{#dplvar:ii:info:hammer}}|{{#dplvar:ii:info:hammer}}%}}}}<!--
  +
-->{{#if:{{{hammer|}}}|<!--
  +
-->{{#vardefine:ii:hammer|{{#rreplace:{{{hammer|}}}|@@@@|{{#var:ii:hammer}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:pick|{{#ifexpr:{{#dplvar:ii:info:pick}}|{{#dplvar:ii:info:pick}}%}}}}<!--
  +
-->{{#if:{{{pick|}}}|<!--
  +
-->{{#vardefine:ii:pick|{{#rreplace:{{{pick|}}}|@@@@|{{#var:ii:pick}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:axe|{{#ifexpr:{{#dplvar:ii:info:axe}}|{{#expr:{{#dplvar:ii:info:axe}}*5}}%}}}}<!--
  +
-->{{#if:{{{axe|}}}|<!--
  +
-->{{#vardefine:ii:axe|{{#rreplace:{{{axe|}}}|@@@@|{{#var:ii:axe}}}}}}<!--
  +
-->}}<!--
  +
// add "tool" to types, and try to detect chainsaws/drills/hamaxes...
  +
-->{{#ifexpr:{{#dplvar:ii:info:axe}}{{#dplvar:ii:info:hammer}}{{#dplvar:ii:info:pick}}|<!-- if at least one of the three is non-zero
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|tool}}}}<!--
  +
// hammers and hamaxes
  +
-->{{#ifexpr:{{#dplvar:ii:info:hammer}}|<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:axe}}<!--
  +
-->|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|hamaxes}}}}<!--
  +
-->|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|hammers}}}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
// axes and chainsaws
  +
-->{{#ifexpr:{{#dplvar:ii:info:axe}}|<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:hammer}}||<!-- exclude hamaxes
  +
-->{{#ifexpr:{{#dplvar:ii:info:shoot}}<!--
  +
-->|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|chainsaws}}}}<!--
  +
-->|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|axes}}}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
// pickaxes and drills
  +
-->{{#ifexpr:{{#dplvar:ii:info:pick}}|<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:shoot}}<!--
  +
-->|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|drills}}}}<!--
  +
-->|{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|pickaxes}}}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
--------
  +
  +
---- pick-/hammerreq ----
  +
-->{{#vardefine:ii:pickreq|{{{pickreq|}}}}}<!--
  +
-->{{#vardefine:ii:hammerreq|{{{hammerreq|}}}}}<!--
  +
--------
  +
  +
---- ammo type ----
  +
-->{{#vardefine:ii:ammo|{{#dplvar:ii:info:ammo}}}}<!--
  +
-->{{#ifexpr:{{#var:ii:ammo}}|<!-- Ammo type/cate
  +
// add "Ammunition" to type.
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|ammunition}}}}<!--
  +
// add ammo type to listcat: (by AmmoID)
  +
-->{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|{{#switch:{{#var:ii:ammo}}<!--
 
-->|40=arrows<!--
 
-->|40=arrows<!--
 
-->|71=coins<!--
 
-->|71=coins<!--
-->|75=fallenStar<!--
 
 
-->|97=bullets<!--
 
-->|97=bullets<!--
 
-->|169=sands<!--
 
-->|169=sands<!--
 
-->|283=darts<!--
 
-->|283=darts<!--
-->|353=ale<!--
 
 
-->|771=rockets<!--
 
-->|771=rockets<!--
 
-->|780=solutions<!--
 
-->|780=solutions<!--
 
-->|931=flares<!--
 
-->|931=flares<!--
-->|949=snowball<!--
+
-->}}}}}}<!--
-->|1261=styngerBolt<!--
+
-->}}<!--
  +
// use ammo type
-->|1783=candyCorn<!--
 
  +
-->{{#vardefine:ii:useammo|{{#switch:{{#dplvar:ii:info:useAmmo}}<!--
-->|1785=jackOLantern<!--
 
-->|1836=stake<!--
+
-->|23=gel<!--
-->|3108=nailFriendly<!--
+
-->|40=arrows<!--
-->|#default=<!--
+
-->|71=coins<!--
-->}}}}<!--
+
-->|75=fallenStar<!--
  +
-->|97=bullets<!--
-->{{#vardefine:ii:id|{{#ifexpr:{{#dplvar:ii:info:type}}|{{#dplvar:ii:info:type}}}}}}<!--
 
  +
-->|169=sands<!--
-->{{#vardefine:ii:name|{{#dplvar:ii:info:name}}}}<!--
 
  +
-->|283=darts<!--
-->{{#vardefine:ii:autoswing|{{#dplvar:ii:info:autoReuse}}}}<!--
 
  +
-->|353=ale<!--
-->{{#vardefine:ii:stack|{{#dplvar:ii:info:maxStack}}}}<!--
 
  +
-->|771=rockets<!--
-->{{#vardefine:ii:hammer|{{#dplvar:ii:info:hammer}}}}<!--
 
  +
-->|780=solutions<!--
-->{{#vardefine:ii:pick|{{#dplvar:ii:info:pick}}}}<!--
 
  +
-->|931=flares<!--
-->{{#vardefine:ii:axe|{{#expr:{{#dplvar:ii:info:axe}}*5}}}}<!--
 
  +
-->|949=snowball<!--
-->{{#vardefine:ii:fishing|{{#dplvar:ii:info:fishingPole}}}}<!--
 
  +
-->|1261=styngerBolt<!--
-->{{#vardefine:ii:bait|{{#dplvar:ii:info:bait}}}}<!--
 
  +
-->|1783=candyCorn<!--
-->{{#ifexpr:{{#var:ii:bait|0}}|<!-- bait?
 
  +
-->|1785=jackOLantern<!--
-->{{#arraydefine:z|bait}}{{#arrayunion:ii:types|ii:types|z}}<!--
 
  +
-->|1836=stake<!--
  +
-->|3108=nailFriendly<!--
  +
-->}}}}<!--
  +
--------
  +
  +
---- various types, listcats, and tags ----
  +
-->{{#if:{{#dplvar:ii:info:accessory}}|<!-- accessory?
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|accessory}}}}<!--
  +
-->}}<!--
  +
-->{{#if:{{#dplvar:ii:info:cartTrack}}|<!-- cart track?
  +
-->{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|minecart track items}}}}<!--
  +
-->}}<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:dye}}|<!-- is dye?
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|dye}}}}<!--
  +
-->}}<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:hairDye}}>-1|<!-- is hair dye?
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|hair dye}}}}<!--
  +
-->}}<!--
  +
-->{{#if:{{#dplvar:ii:info:string}}|<!-- string?
  +
-->{{#vardefine:ii:tags|{{#lstapp:{{#var:ii:tags}}|/|string}}}}<!--
  +
-->}}<!--
  +
-->{{#if:{{#dplvar:ii:info:vanity}}|<!-- vanity?
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|vanity}}}}<!--
  +
-->}}<!--
  +
-->{{#if:{{#dplvar:ii:info:mech}}|<!-- mech?
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|mechanism}}}}<!--
  +
-->}}<!--
  +
-->{{#ifeq:{{#invoke:Iteminfo/idSets|value|IsFood|{{#var:ii:auto_id}}}}|true|<!-- food?
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|food}}}}<!--
  +
-->}}<!--
  +
  +
---- fishing power and bait ----
  +
-->{{#vardefine:ii:fishing|{{{fishing|{{#dplvar:ii:info:fishingPole}}}}}}}<!--
  +
-->{{#vardefine:ii:bait|{{{bait|{{#dplvar:ii:info:bait}}}}}}}<!--
  +
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:bait}}|0}}|<!-- bait?
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|bait}}}}<!--
  +
-->}}<!--
  +
  +
---- damage and damagetype ----
  +
// use damage if damage>0 or "weapon" in types
  +
-->{{#vardefine:ii:damage|{{#ifexpr:({{#dplvar:ii:info:damage}}>0) or {{#or:{{#lstind:weapon|{{#var:ii:types}}|/}}|0}}|{{#dplvar:ii:info:damage}}}}}}<!--
  +
-->{{#ifeq:{{{damage|-unset}}}|{{{damage|unset-}}}|<!-- allow "|damage=" to suppress damage display
  +
-->{{#vardefine:ii:damage|{{#rreplace:{{{damage|}}}|@@@@|{{#var:ii:damage}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:damagetype|{{#if:{{#var:ii:damage}}|{{#switch:1<!--
  +
-->|{{#dplvar:ii:info:melee}}=Melee<!--
  +
-->|{{#dplvar:ii:info:ranged}}=Ranged<!--
  +
-->|{{#dplvar:ii:info:magic}}=Magic<!--
  +
-->|{{#dplvar:ii:info:summon}}=Summon<!--
  +
-->|{{#dplvar:ii:info:thrown}}=Throwing<!--
  +
-->}}}}}}<!--
  +
// other, non-weapon items with autodamage
  +
-->{{#ifexpr:{{#dplvar:ii:info:damage}}>0|<!--
  +
-->{{#if:{{#lstind:tool|{{#var:ii:types}}|/}}|<!--
  +
-->{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|weapon items}}}}<!-- tools with damage need "weapon items" in listcat
  +
-->|<!-- else
  +
-->{{#if:{{#lstind:ammunition|{{#var:ii:types}}|/}}||<!-- is not ammo
  +
-->{{#if:{{#dplvar:ii:info:accessory}}||<!-- and is not accessory
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|weapon}}}}<!-- add "weapon" to types
  +
-->}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
// add "<auto damagetype> weapons" to listcats
  +
-->{{#if:{{#var:ii:damagetype}}|<!--
  +
-->{{#if:{{#lstind:weapon|{{#var:ii:types}}|/}}|<!--
  +
-->{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|{{#var:ii:damagetype}} weapons}}}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#if:{{#dplvar:ii:info:accessory}}|<!-- accessory?
 
  +
// NOTE: for all non-auto damage type (input by |damagetype=) including pre-1.4 throwing weapons, you should manually add "<damagetype> weapons" (e.g. "throwing weapons") to their listcats, because we've already added the auto damagetype to types (in consequence, listcats)
-->{{#arraydefine:z|accessory}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
  +
// manually override:
  +
-->{{#vardefine:ii:damagetype|<!--
  +
-->{{#if:{{{damagetype|}}}<!--
  +
-->|{{#rreplace:{{{damagetype|}}}|@@@@|{{l10n|item_infobox|damagetype:{{lc:{{#var:ii:damagetype}}}}}}}}<!--
  +
-->|{{#var:ii:damagetype}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#if:{{#dplvar:ii:info:cartTrack}}|<!-- cart track
 
  +
--------
-->{{#arraydefine:z|Minecart track items}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
  +
-->}}<!--
 
  +
---- research ----
-->{{#ifexpr:{{#dplvar:ii:info:dye}}|<!-- is dye?
 
  +
-->{{#vardefine:ii:sacrifices|{{{research|{{#ifexpr:{{#dplvar:ii:info:sacrifices}}>0|{{#dplvar:ii:info:sacrifices}}}}}}}}}<!--
-->{{#arraydefine:z|dye}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->}}<!--
+
--------
  +
-->{{#ifexpr:{{#dplvar:ii:info:hairDye}}>-1|<!-- is hair dye?
 
  +
---- knockback ----
-->{{#arraydefine:z|hair dye}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
  +
// use kb if autokb>0, always use kb for all axe/hammer/pick tools, always use kb for all weapons
-->}}<!--
 
-->{{#if:{{#dplvar:ii:info:string}}|<!-- string?
+
-->{{#vardefine:ii:knockback|<!--
  +
-->{{#ifexpr:({{#dplvar:ii:info:knockBack}}>0) or {{#dplvar:ii:info:axe}} or {{#dplvar:ii:info:hammer}} or {{#dplvar:ii:info:pick}} or {{#or:{{#lstind:weapon|{{#var:ii:types}}|/}}|0}}|{{#dplvar:ii:info:knockBack}}}}<!--
-->{{#arraydefine:z|string}}{{#arrayunion:ii:tags|z|ii:tags}}<!--
 
-->}}<!--
+
-->}}<!--
  +
-->{{#ifeq:{{{knockback|-unset}}}|{{{knockback|unset-}}}|<!-- allow "|knockback=" to suppress knockback display
-->{{#if:{{#dplvar:ii:info:vanity}}|<!-- vanity?
 
  +
-->{{#vardefine:ii:knockback|{{#rreplace:{{{knockback|}}}|@@@@|{{knockback|{{#var:ii:knockback}}|full=y}}}}}}<!--
-->{{#arraydefine:z|vanity}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->}}<!--
+
-->}}<!--
  +
--------
-->{{#if:{{#dplvar:ii:info:mech}}|<!-- mech?
 
  +
-->{{#arraydefine:z|mechanism}}{{#arrayunion:ii:types|ii:types|z}}<!--
 
-->}}<!--
+
---- defense ----
  +
-->{{#vardefine:ii:defense|{{#ifexpr:{{#dplvar:ii:info:defense}}>0<!--
add "tool" to types, and try to detect chainsaws/drills/hamaxes...
 
-->{{#ifexpr:({{#dplvar:ii:info:axe}} or {{#dplvar:ii:info:hammer}} or {{#dplvar:ii:info:pick}})|<!--
+
-->|{{#dplvar:ii:info:defense}}<!--
-->{{#arraydefine:z|tool}}{{#arrayunion:ii:types|z|ii:types}}<!--
+
-->|{{#if:{{#var:ii:isArmorSet}}|{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}||<!-- auto defense for non-vanity armor sets
  +
-->{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|defense|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|defense}}}}<!--
//hammer & hamaxe
 
-->{{#ifexpr:{{#dplvar:ii:info:hammer}}|<!--
+
-->}}}}<!--
-->{{#ifexpr:{{#dplvar:ii:info:axe}}<!--
+
-->}}}}<!--
-->|{{#arraydefine:z|hamaxes}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
+
-->{{#if:{{{defense|}}}|<!--
-->|{{#arraydefine:z|hammers}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
+
-->{{#vardefine:ii:defense|{{#rreplace:{{{defense|}}}|@@@@|{{#var:ii:defense|0}}}}}}<!--
  +
-->}}<!--
  +
--------
  +
  +
---- tile (range) boost ----
  +
-->{{#vardefine:ii:tileboost|{{{tileboost|{{#ifexpr:{{#dplvar:ii:info:tileBoost}}|{{#dplvar:ii:info:tileBoost}}}}}}}}}<!--
  +
--------
  +
  +
---- mana cost and mana and health heal ----
  +
-->{{#vardefine:ii:mana|{{#ifexpr:{{#dplvar:ii:info:mana}}>0|{{#dplvar:ii:info:mana}}}}}}<!--
  +
-->{{#if:{{{mana|}}}|<!--
  +
-->{{#vardefine:ii:mana|{{#rreplace:{{{mana|}}}|@@@@|{{#var:ii:mana}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:mheal|{{#ifexpr:{{#dplvar:ii:info:healMana}}>0|{{#dplvar:ii:info:healMana}}}}}}<!--
  +
-->{{#if:{{{mheal|}}}|<!--
  +
-->{{#vardefine:ii:mheal|{{#rreplace:{{{mheal|}}}|@@@@|{{#var:ii:healMana}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:hheal|{{#ifexpr:{{#dplvar:ii:info:healLife}}>0|{{#dplvar:ii:info:healLife}}}}}}<!--
  +
-->{{#if:{{{hheal|}}}|<!--
  +
-->{{#vardefine:ii:hheal|{{#rreplace:{{{hheal|}}}|@@@@|{{#var:ii:healLife}}}}}}<!--
  +
-->}}<!--
  +
--------
  +
  +
---- critical strike chance ----
  +
-->{{#vardefine:ii:critical|<!--
  +
-->{{#if:{{#var:ii:damage}}|<!-- if $damage
  +
-->{{#ifexpr:{{#dplvar:ii:info:crit}}>0|<!-- if auto critical
  +
-->{{#expr:{{#dplvar:ii:info:crit}}+4}}<!-- use autocrit+4
  +
-->|<!--
  +
-->{{#if:{{#lstfltr:weapon/tool|/|{{#var:ii:types}}|/}}|<!-- $type=(weapon or tool)
  +
if $damagetype and ("summon" not in $damagetype) then 4
  +
-->{{#if:{{#var:ii:damagetype}}|{{#if:{{#rmatch:{{#var:ii:damagetype}}|/summon/i|y}}||4}}}}<!--
 
-->}}<!--
 
-->}}<!--
-->}}<!--
 
//axe and chainsaws
 
-->{{#ifexpr:{{#dplvar:ii:info:axe}}|<!--
 
-->{{#ifexpr:{{#dplvar:ii:info:hammer}}||<!-- exclude hamaxe
 
-->{{#ifexpr:{{#dplvar:ii:info:shoot}}<!--
 
-->|{{#arraydefine:z|chainsaws}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
-->|{{#arraydefine:z|axes}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
//pickaxe and drills
 
-->{{#ifexpr:{{#dplvar:ii:info:pick}}|<!--
 
-->{{#ifexpr:{{#dplvar:ii:info:shoot}}<!--
 
-->|{{#arraydefine:z|drills}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
-->|{{#arraydefine:z|pickaxes}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
//if autodamage>0 then use, and always use damage for all weapons
 
-->{{#vardefine:ii:damage|{{#ifexpr:({{#dplvar:ii:info:damage}}>0) or {{#arraysearch:ii:types|weapon|0|1|0}}|{{#dplvar:ii:info:damage}}}}}}<!--
 
-->{{#vardefine:ii:damagetype|{{#if:{{#var:ii:damage}}|<!--
 
-->{{#if:{{#dplvar:ii:info:melee}}|Melee|<!--
 
-->{{#if:{{#dplvar:ii:info:ranged}}|Ranged|<!--
 
-->{{#if:{{#dplvar:ii:info:magic}}|Magic|<!--
 
-->{{#if:{{#dplvar:ii:info:summon}}|Summon|<!--
 
-->{{#if:{{#dplvar:ii:info:thrown}}|Throwing|<!--
 
-->}}}}}}}}}}<!--
 
-->}}}}<!--
 
//items with damage
 
-->{{#ifexpr:{{#dplvar:ii:info:damage}}>0|<!--
 
-->{{#arraysearch:ii:types|tool|0|<!--
 
-->{{#arraydefine:z|weapon items}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!-- // tool with damage need "weapon items" in listcat
 
-->|<!-- else
 
-->{{#arraysearch:ii:types|ammunition|0||<!-- is not ammo
 
-->{{#if:{{#dplvar:ii:info:accessory}}||<!-- and is not accessory
 
-->{{#arraydefine:z|weapon}}{{#arrayunion:ii:types|z|ii:types}}<!-- added "weapon" to types
 
-->}}<!--
 
-->}}<!--
 
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
// if autokb>0 then use it, always use kb for all axe/hammer/pick(/drill) tools, always use kb for all weapons
 
-->{{#vardefine:ii:knockback|<!--
+
-->{{#if:{{{critical|}}}|<!--
  +
-->{{#vardefine:ii:critical|{{#rreplace:{{{critical|}}}|@@@@|{{#var:ii:critical}}%}}}}<!--
-->{{#ifexpr:({{#dplvar:ii:info:knockBack}}>0) or {{#dplvar:ii:info:axe}} or {{#dplvar:ii:info:hammer}} or {{#dplvar:ii:info:pick}} or {{#arraysearch:ii:types|weapon|0|1|0}}|{{#dplvar:ii:info:knockBack}}}}<!--
 
  +
-->}}<!--
  +
--------
  +
  +
---- use time and tool speed ----
  +
-->{{#vardefine:ii:use|{{#ifexpr:{{#dplvar:ii:info:useAnimation}}<100|{{#dplvar:ii:info:useAnimation}}}}}}<!--
  +
-->{{#ifeq:{{{use|-unset}}}|{{{use|unset-}}}|<!-- allow "|use=" to suppress use time display
  +
-->{{#vardefine:ii:use|{{#rreplace:{{{use|}}}|@@@@|{{use time|{{#var:ii:use}}|full=y}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:toolspeed|<!--
  +
-->{{#ifexpr:({{#dplvar:ii:info:useAnimation}}<100) and ({{#dplvar:ii:info:useTime}}<100) and {{#dplvar:ii:info:axe}}{{#dplvar:ii:info:hammer}}{{#dplvar:ii:info:pick}}|<!--
  +
-->{{#dplvar:ii:info:useTime}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#vardefine:ii:defense|{{#ifexpr:{{#dplvar:ii:info:defense}}>0|{{#dplvar:ii:info:defense}}}}}}<!--
 
  +
-->{{#if:{{{toolspeed|}}}|<!--
-->{{#vardefine:ii:tileboost|{{#ifexpr:{{#dplvar:ii:info:tileBoost}}<>0|{{#dplvar:ii:info:tileBoost}}}}}}<!--
 
-->{{#vardefine:ii:mana|{{#ifexpr:{{#dplvar:ii:info:mana}}>0|{{#dplvar:ii:info:mana}}}}}}<!--
+
-->{{#vardefine:ii:toolspeed|{{#rreplace:{{{toolspeed|}}}|@@@@|{{#var:ii:toolspeed}}}}}}<!--
  +
-->}}<!--
-->{{#vardefine:ii:mheal|{{#ifexpr:{{#dplvar:ii:info:healMana}}>0|{{#dplvar:ii:info:healMana}}}}}}<!--
 
  +
--------
-->{{#vardefine:ii:hheal|{{#ifexpr:{{#dplvar:ii:info:healLife}}>0|{{#dplvar:ii:info:healLife}}}}}}<!--
 
  +
-->{{#vardefine:ii:critical|<!--
 
  +
---- buffs and debuffs ----
-->{{#ifexpr:{{#var:ii:damage|0}}>0|<!-- if autodamage exist
 
-->{{#ifexpr:{{#dplvar:ii:info:crit}}>0|<!--
+
-->{{#vardefine:ii:buffs|}}<!--
-->{{#expr:{{#dplvar:ii:info:crit}}+4}}<!-- use autocrit+4
+
-->{{#vardefine:ii:debuffs|}}<!--
-->|<!--
+
-->{{#vardefine:ii:buff-1:id|}}<!--
-->{{#if:{{#arraysearch:ii:types|weapon|0|y}}{{#arraysearch:ii:types|tool|0|y}}|<!--
+
-->{{#vardefine:ii:buff-1:duration|}}<!--
  +
-->{{#vardefine:ii:debuff-1:id|}}<!--
-->{{#if:{{#var:ii:damagetype}}|{{#ifeq:{{#var:ii:damagetype}}|Summon||4}}}}<!-- if $damagetype and $damagetype != summon then 4%
 
  +
-->{{#vardefine:ii:debuff-1:duration|}}<!--
-->}}<!--
 
  +
// auto buff info:
  +
-->{{#vardefine:ii:autobuff:id|{{#ifexpr:{{#dplvar:ii:info:buffType}}>0|<!--
  +
-->{{#dplvar:ii:info:buffType}}<!--
  +
-->|<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:mountType}}>-1|{{buffIdFromName|{{getMountInfo|{{#dplvar:ii:info:mountType}}|name}}}}}}<!--
  +
-->}}}}<!--
  +
-->{{#if:{{#var:ii:autobuff:id}}|<!--
  +
-->{{#vardefine:ii:autobuff:type|{{lc:{{getBuffInfo|{{#var:ii:autobuff:id}}|type}}}}}}<!--
  +
-->{{#vardefine:ii:autobuff:duration|{{#ifexpr:{{#dplvar:ii:info:buffTime}}>0|{{duration|{{#expr:{{#dplvar:ii:info:buffTime}}/60}}}}}}}}<!-- in seconds (autoduration is in millis)
  +
-->{{#vardefine:ii:{{#var:ii:autobuff:type}}-1:id|{{#var:ii:autobuff:id}}}}<!--
  +
-->{{#vardefine:ii:{{#var:ii:autobuff:type}}-1:duration|{{#var:ii:autobuff:duration}}}}<!--
  +
-->{{#vardefine:ii:{{#var:ii:autobuff:type}}s|-1}}<!--
  +
-->}}<!--
  +
  +
// loop: {{#var:bufftype}} is "buff" during first iteration and "debuff" during second iteration
  +
// (buff and debuff handling is identical, only the names are different)
  +
-->{{#loop:_i|0|2|{{#vardefine:bufftype|{{#ifexpr:{{#var:_i}}|de}}buff}}<!--
  +
// we have an ii:buffs and an ii:debuffs array ("ii:{{#var:bufftype}}s"), which hold the indices of all $de-/buff parameters
  +
// the unindexed "|buff=" / "|debuff=" parameters are represented by "-1", which is always the first element of these arrays, if those parameters are set
  +
// the "-1" is therefore also set if there is buff information in the autodata, since that auto information can be overwritten using the unindexed parameter
  +
-->{{#if:{{{ {{#var:bufftype}}|}}}|{{#vardefine:ii:{{#var:bufftype}}s|-1}}}}<!-- set first array element to -1
  +
-->{{#forargs:{{#var:bufftype}}|k|_|{{#if:{{#rmatch:{{#var:k}}|/^\d+$/|y}}|<!-- for all parameters: if parameter name is "{de-/buff}<integer>"
  +
-->{{#vardefine:ii:{{#var:bufftype}}s|{{#lstapp:{{#var:ii:{{#var:bufftype}}s}}|₪|{{#var:k}}}}}}<!-- then add buff index to de-/buffs array
  +
-->}}}}<!--
  +
-->{{#vardefine:ii:{{#var:bufftype}}s|{{#lstsrt:{{#var:ii:{{#var:bufftype}}s}}|₪|₪|numeric}}}}<!-- sort parameter indices
  +
-->{{#loop:i|1|{{#lstcnt:{{#var:ii:{{#var:bufftype}}s}}|₪}}|<!-- iterate over parameter indices
  +
-->{{#vardefine:j|{{#lstelem:{{#var:ii:{{#var:bufftype}}s}}|₪|{{#var:i}}}}}}<!-- j is the parameter index
  +
-->{{#vardefine:k|{{#ifeq:{{#var:j}}|-1||{{#var:j}}}}}}<!-- k=j, unless j=-1, in which case k=(empty), since we use "${de-/buff}" instead of "${de-/buff}-1"
  +
-->{{#arraydefine:buffinfo|{{{ {{#var:bufftype}}{{#var:k}}|}}}|/}}<!--
  +
// we store the information that the view needs in variables with a "ii:<bufftype><parameter index>:<stat>" format
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:mobile|}}<!--
  +
// buff id
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:id|{{{id{{#var:bufftype}}{{#var:k}}|{{#or:<!--
  +
-->{{buffIdFromName|{{#arrayindex:buffinfo|0}}}}<!-- buffinfo[0] will always contain the de-/buff name, regardless of whether compact mode was used or not
  +
-->|<!--
  +
-->{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}<!--
  +
-->}}}}}}}<!--
  +
-->{{#if:{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}|{{#ifeq:{{#sub:{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}|0|1}}|m|<!-- if is mobile id
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:id|{{#sub:{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}|1}}}}<!--
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:mobile|m}}<!--
  +
-->}}}}<!--
  +
// de-/buff name
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:name|<!--
  +
-->{{#if:{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}|<!--
  +
-->{{getBuffInfo|{{#var:ii:{{#var:bufftype}}{{#var:j}}:mobile}}{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}|ename}}<!--
  +
-->|<!--
  +
-->{{#arrayindex:buffinfo|0}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
  +
// de-/buff duration, chance, tooltip, and link
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:duration|{{#if:{{#var:k}}|<!-- in seconds
  +
// for ${de/buff}<integer>
  +
-->{{{ {{#var:bufftype}}duration{{#var:k}}|{{#arrayindex:buffinfo|1}}}}}<!--
  +
-->|<!--
  +
// for ${de-/buff} (potentially overriding auto data)
  +
// $duration -> ${de-/buff}duration -> ${de-/buff} compact mode -> auto data
  +
-->{{#rreplace:<!--
  +
-->{{#ifeq:{{{duration|-unset}}}|{{{duration|unset-}}}|<!-- allow "|duration=" to suppress duration display
  +
-->{{{duration|}}}<!--
  +
-->|{{#ifeq:{{{ {{#var:bufftype}}duration|-unset}}}|{{{ {{#var:bufftype}}duration|unset-}}}|<!-- allow "|{de-/buff}duration=" to suppress duration display
  +
-->{{{ {{#var:bufftype}}duration|}}}<!--
  +
-->|<!--
  +
-->{{#or:{{#arrayindex:buffinfo|1}}|@@@@}}<!--
  +
-->}}}}<!--
  +
-->|/@@@@/|{{#var:ii:{{#var:bufftype}}-1:duration}}}}<!--
  +
-->}}}}<!--
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:chance|{{{ {{#var:bufftype}}chance{{#var:k}}|{{#arrayindex:buffinfo|2}}}}}}}<!--
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:tooltip|{{{ {{#var:bufftype}}tip{{#var:k}}|{{getBuffInfo|{{#var:ii:{{#var:bufftype}}{{#var:j}}:mobile}}{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}|tooltip}}}}}}}<!--
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:link|{{{ {{#var:bufftype}}link{{#var:k}}|{{getBuffInfo|{{#var:ii:{{#var:bufftype}}{{#var:j}}:mobile}}{{#var:ii:{{#var:bufftype}}{{#var:j}}:id}}|page}}}}}}}<!--
  +
-->{{#ifeq:{{#var:ii:{{#var:bufftype}}{{#var:j}}:link}}|{{PAGENAME}}|<!-- if is self link (using PAGENAME instead of BASEPAGENAME/ROOTPAGENAME, to incorporate all languages)
  +
// add "de-/buffs" to listcat
  +
-->{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|{{#var:bufftype}}s}}}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#vardefine:ii:use|{{#ifexpr:{{#dplvar:ii:info:useAnimation}}<100|{{#dplvar:ii:info:useAnimation}}}}}}<!--
 
  +
--------
-->{{#vardefine:ii:velocity|{{#ifexpr:{{#dplvar:ii:info:shootSpeed}}>0|{{#dplvar:ii:info:shootSpeed}}}}}}<!--
 
  +
-->{{#vardefine:ii:toolspeed|<!--
 
  +
---- rarity ----
-->{{#ifexpr:({{#dplvar:ii:info:useAnimation}}<100) and ({{#dplvar:ii:info:useTime}}<100) and {{#arraysearch:ii:types|tool|0|1|0}}|{{#dplvar:ii:info:useTime}}}}<!--
 
  +
-->{{#vardefine:ii:rawrare|{{#dplvar:ii:info:rare}}}}<!--
  +
-->{{#if:{{#dplvar:ii:info:questItem}}<!-- quest
  +
-->|{{#vardefine:ii:rawrare|quest}}<!--
  +
-->|{{#ifeq:{{#dplvar:ii:info:rare}}|-11|{{#vardefine:ii:rawrare|quest}}}}<!--
  +
-->}}<!--
  +
//auto rarity for armor/vanity sets
  +
-->{{#if:{{#var:ii:isArmorSet}}|<!--
  +
-->{{#vardefine:ii:rawrare|{{getSetInfo|{{#var:ii:name}}|rare|raw=y}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:rare|<!--
  +
-->{{#ifeq:{{{rare|-unset}}}|{{{rare|unset-}}}<!-- allow "|rare=" to suppress rarity display
  +
-->|{{#vardefineecho:ii:rawrare|{{#rreplace:{{{rare|}}}|@@@@|{{#if:{{#var:ii:rawrare}}|{{rare|{{#var:ii:rawrare}}}}}}}}}}<!--
  +
-->|{{#if:{{#var:ii:rawrare}}|{{rare|{{#var:ii:rawrare}}}}}}<!--
 
-->}}<!--
 
-->}}<!--
-->{{#vardefine:ii:idbuff|<!--
+
-->}}<!--
  +
--------
-->{{#ifexpr:{{#dplvar:ii:info:buffType}}>0|<!--
 
  +
-->{{#dplvar:ii:info:buffType}}<!--
 
  +
---- buy price and sell value ----
  +
-->{{#vardefine:ii:shopCustomPrice|{{#dplvar:ii:info:shopCustomPrice}}}}<!-- defender medals (dm)
  +
-->{{#vardefine:ii:value|{{{value|{{#ifexpr:{{#dplvar:ii:info:value}}>0|{{#dplvar:ii:info:value}}}}}}}}}<!--
  +
// sell/buy VALUES
  +
-->{{#vardefine:ii:sell|}}<!--
  +
-->{{#if:{{#var:ii:isArmorSet}}|<!-- auto sell for armor/vanity set
  +
-->{{#vardefine:ii:sell|{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|sell|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|sell}}}}}}<!--
  +
-->|<!-- regular, single item
  +
-->{{#if:{{#var:ii:value}}|<!--
  +
-->{{#vardefine:ii:sell|{{#expr:floor({{#expr:{{#var:ii:value}}/5}})}}}}<!-- divide by 5, round down, in cc
  +
-->{{#ifexpr:{{#var:ii:sell}}<1|{{#vardefine:ii:sell|1}}}}<!-- never less than 1cc
  +
-->{{#vardefine:ii:sell|{{coin|{{#var:ii:sell}}}}}}<!-- convert to coins
  +
-->}}<!--
  +
-->}}<!--
  +
-->{{#ifeq:{{{sell|-unset}}}|{{{sell|unset-}}}|<!-- allow "|sell=" to suppress sell value display
  +
-->{{#vardefine:ii:sell|{{#rreplace:{{{sell|}}}|@@@@|{{#var:ii:sell}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:buy|<!--
  +
-->{{#if:{{#var:ii:shopCustomPrice}}|<!--
  +
-->{{dm|{{#var:ii:shopCustomPrice}}}}<!--
  +
-->|<!--
  +
//use buy if $buy or "buy"/"buyable"/"vendor" in tags
  +
-->{{#vardefine:ii:buy|{{#if:{{{buy|}}}{{#lstfltr:buy/buyable/vendor|/|{{#var:ii:tags}}|/|}}|<!--
  +
-->{{#ifexpr:{{#var:ii:value|0}}>0|<!--
  +
-->{{coin|{{#var:ii:value}}}}<!--
  +
-->|<!-- auto buy for armor/vanity set
  +
-->{{#if:{{#var:ii:isArmorSet}}|{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|buy|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|buy}}}}}}}}<!--
  +
-->}}}}<!--
  +
-->{{#if:{{#if:{{{buy|}}}|{{#switch:{{lc:{{{buy|}}}}}|y|yes|true|show=|#default=y}}}}|<!-- if $buy != ("y" or "yes" or "true" or "show")
  +
-->{{#rreplace:{{{buy|}}}|@@@@|{{#var:ii:buy}}}}<!--
 
-->|<!--
 
-->|<!--
  +
-->{{#var:ii:buy}}<!--
-->{{#ifexpr:{{#dplvar:ii:info:mountType}}>-1|{{BuffIdFromName|{{getMountInfo|{{#dplvar:ii:info:mountType}}|name}}}}}}<!--
 
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
-->{{#vardefine:ii:buffduration|{{#ifexpr:{{#dplvar:ii:info:buffTime}}>0|{{#expr:{{#dplvar:ii:info:buffTime}}/60}}}}}}<!-- in seconds.
 
-->{{#vardefine:ii:rare|{{#dplvar:ii:info:rare}}}}<!--
 
-->{{#ifeq:{{#dplvar:ii:info:rare}}|-11|{{#vardefine:ii:rare|quest}}}}<!--quest
 
-->{{#if:{{#dplvar:ii:info:questItem}}|{{#vardefine:ii:rare|quest}}}}<!--quest
 
-->{{#if:{{#dplvar:ii:info:expert}}|{{#vardefine:ii:rare|rainbow}}}}<!--rainbow.
 
-->{{#arraysearch:ii:tags|dd2|0|{{#vardefine:ii:DD2Summon|1}}|{{#vardefine:ii:DD2Summon|{{#dplvar:ii:info:DD2Summon}}}}}}<!--
 
-->{{#vardefine:ii:value|{{#ifexpr:{{#dplvar:ii:info:value}}>0|{{#dplvar:ii:info:value}}}}}}<!--in cc.
 
-->{{#ifexpr:{{#dplvar:ii:info:value}}>0|<!--
 
-->{{#vardefine:ii:sell|{{#expr:floor({{#expr:{{#dplvar:ii:info:value}}/5}})}}}}<!-- divide by 5, round down, in cc.
 
-->{{#ifexpr:{{#var:ii:sell}}<1|{{#vardefine:ii:sell|1}}}}<!-- at least 1cc
 
-->}}<!--
 
-->{{#vardefine:ii:idtile|{{#ifexpr:{{#dplvar:ii:info:createTile}}>-1|{{#dplvar:ii:info:createTile}}}}}}<!--
 
-->{{#vardefine:ii:idtilesub|<!--
 
-->{{#ifexpr:({{#dplvar:ii:info:createTile}}>-1) and ({{#dplvar:ii:info:placeStyle}}>0)|{{#expr:{{#dplvar:ii:info:placeStyle}}+1}}}}<!--
 
-->}}<!--
 
-->{{#vardefine:ii:idwall|{{#ifexpr:{{#dplvar:ii:info:createWall}}>-1|{{#dplvar:ii:info:createWall}}}}}}<!--
 
-->{{#if:{{#var:ii:idwall}}|<!-- wall?
 
-->{{#arraydefine:z|wall}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->}}<!--
 
-->{{#vardefine:ii:idmount|{{#ifexpr:{{#dplvar:ii:info:mountType}}>-1|{{#dplvar:ii:info:mountType}}}}}}<!--
 
-->{{#if:{{#var:ii:idmount}}|<!-- mount
 
//add "mount Summon" to type.
 
-->{{#arraydefine:z|mount summon}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->}}<!--
 
-->{{#if:{{#var:ii:useammo}}||{{#vardefine:ii:idprojectile|{{#ifexpr:{{#dplvar:ii:info:shoot}}>0|{{#dplvar:ii:info:shoot}}}}}}}}<!--don't show default projectile id for items which use ammo.
 
-->{{#if:{{#dplvar:ii:info:UseSound}}|<!--
 
-->{{#arraydefine:_usesounds|{{#dplvar:ii:info:UseSound}}}}<!--
 
-->{{#arraydefine:ii:sounds|{{l10n|item_infobox|th:use}}@@{{#arrayprint:_usesounds|,|##|##.wav}}|@@@}}<!-- put all usesounds in the first element of the ii:sounds array
 
-->}}<!--
 
-->{{#vardefine:ii:placeable|{{#if:{{#var:ii:idtile}}{{#var:ii:idwall}}|y}}}}<!--
 
-->{{#vardefine:ii:consumable|{{#dplvar:ii:info:consumable}}}}<!--
 
-->{{#vardefine:ii:tooltip|{{itemTooltip|{{#var:ii:id}}|right={{l10n|item_infobox|rightclick}}}}}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
--------
   
  +
---- ids ----
//== manual vars override and complete all fields. ==
 
  +
-->{{#vardefine:ii:idtile|{{{idtile|<!--
//as they are defined after the automatic variables, using these manual parameters always overwrites the respective automatic variable. if auto mode was not used, this ensures correct functioning of the template
 
  +
-->{{#ifexpr:{{#dplvar:ii:info:createTile}}>-1|{{#dplvar:ii:info:createTile}}}}<!--
 
-->{{#vardefine:ii:id|{{{id|{{#var:ii:id}}}}}}}<!--
+
-->}}}}}<!--
-->{{#vardefine:ii:autoswing|{{{autoswing|{{#var:ii:autoswing}}}}}}}<!--
+
-->{{#vardefine:ii:idtilesub|{{#if:{{{idtile|}}}||{{{idtilesub|<!--
-->{{#vardefine:ii:stack|{{regex|{{{stack|}}}|/@@@@/|{{#var:ii:stack}}|{{{stack|{{#var:ii:stack}}}}}}}}}<!--
+
-->{{#ifexpr:({{#dplvar:ii:info:createTile}}>-1) and ({{#dplvar:ii:info:placeStyle}}>0)|{{#expr:{{#dplvar:ii:info:placeStyle}}+1}}}}<!--
-->{{#vardefine:ii:hammer|{{{hammer|{{#var:ii:hammer|0}}}}}}}<!--
+
-->}}}}}}}<!--
-->{{#vardefine:ii:pick|{{{pick|{{#var:ii:pick|0}}}}}}}<!--
+
-->{{#vardefine:ii:idwall|{{{idwall|<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:createWall}}>-1|<!-- item is a wall as defined by auto info
-->{{#vardefine:ii:axe|{{{axe|{{#var:ii:axe|0}}}}}}}<!--
 
-->{{#vardefine:ii:bait|{{{bait|{{#var:ii:bait}}}}}}}<!--
+
-->{{#dplvar:ii:info:createWall}}<!--
-->{{#vardefine:ii:fishing|{{{fishing|{{#var:ii:fishing}}}}}}}<!--
+
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|wall}}}}<!-- add "wall" to types
-->{{#vardefine:ii:damage|{{regex|{{{damage|}}}|/@@@@/|{{#var:ii:damage}}|{{{damage|{{#var:ii:damage}}}}}}}}}<!--
 
-->{{#vardefine:ii:damagetype|{{#if:{{#var:ii:damage}}|<!--
 
-->{{#switch:{{lc:{{{damagetype|}}}}}<!-- // manual
 
-->|melee=Melee<!--
 
-->|ranged=Ranged<!--
 
-->|magic=Magic<!--
 
-->|summon=Summon<!--
 
-->|throwing|thrown=Throwing<!--
 
-->|#default={{#arraysearch:ii:types|tool|0|Melee|{{{damagetype|{{#var:ii:damagetype}}}}}}}<!-- "Meele" for tools.
 
 
-->}}<!--
 
-->}}<!--
-->}}}}<!--
+
-->}}}}}<!--
  +
-->{{#vardefine:ii:idarmor|}}<!--
// add "[damagetype] weapons" to listcat
 
  +
-->{{#vardefine:ii:bodyslot|}}<!--
-->{{#if:{{#var:ii:damagetype}}|{{#arraysearch:ii:types|weapon|0|{{#arraydefine:z|{{#var:ii:damagetype}} weapons}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}}}<!--
 
  +
-->{{#ifexpr:{{#dplvar:ii:info:headSlot}}>-1|<!-- head armor?
-->{{#vardefine:ii:knockback|{{regex|{{{knockback|}}}|/@@@@/|{{kb|{{#var:ii:knockback}}}}|{{{knockback|{{#var:ii:knockback}}}}}}}}}<!--
 
-->{{#vardefine:ii:defense|{{regex|{{{defense|}}}|/@@@@/|{{#var:ii:defense|0}}|{{{defense|{{#var:ii:defense}}}}}}}}}<!--
+
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:headSlot}}}}<!--
-->{{#vardefine:ii:tileboost|{{{tileboost|{{#var:ii:tileboost}}}}}}}<!--
+
-->{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}|<!--
-->{{#vardefine:ii:mana|{{regex|{{{mana|}}}|/@@@@/|{{#var:ii:mana}}|{{{mana|{{#var:ii:mana}}}}}}}}}<!--
+
-->{{#vardefine:ii:bodyslot|social helmet}}<!-- vanity body slot
  +
-->|<!--
-->{{#vardefine:ii:mheal|{{regex|{{{mheal|}}}|/@@@@/|{{#var:ii:mheal}}|{{{mheal|{{#var:ii:mheal}}}}}}}}}<!--
 
-->{{#vardefine:ii:hheal|{{regex|{{{hheal|}}}|/@@@@/|{{#var:ii:hheal}}|{{{hheal|{{#var:ii:hheal}}}}}}}}}<!--
+
-->{{#vardefine:ii:bodyslot|helmet}}<!-- armor body slot
-->{{#vardefine:ii:critical|{{regex|{{{critical|}}}|/@@@@/|{{#var:ii:critical}}%|{{{critical|{{#var:ii:critical|{{#if:{{#var:ii:damage}}|<!--
+
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|armor}}}}<!-- add "armor" to types
if $damage and ($type=weapon or =tool) and $damagetype!=summon then 4 end
 
-->{{#if:{{#arraysearch:ii:types|weapon|0|y}}{{#arraysearch:ii:types|tool|0|y}}|<!--
 
-->{{#if:{{#var:ii:damagetype}}|{{#ifeq:{{#var:ii:damagetype}}|Summon||4}}}}<!-- if $damagetype and $damagetype != summon then 4%
 
 
-->}}<!--
 
-->}}<!--
-->}}}}}}}}}}}<!--
+
-->}}<!--
-->{{#vardefine:ii:use|{{{use|{{#var:ii:use}}}}}}}<!--
+
-->{{#ifexpr:{{#dplvar:ii:info:bodySlot}}>-1|<!-- body armor?
-->{{#vardefine:ii:velocity|{{{velocity|{{{sspeed|{{#var:ii:velocity}}}}}}}}}}<!--
+
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:bodySlot}}}}<!--
-->{{#vardefine:ii:toolspeed|{{regex|{{{toolspeed|}}}|/@@@@/|{{#var:ii:toolspeed}}|{{{toolspeed|{{#var:ii:toolspeed}}}}}}}}}<!--
+
-->{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}|<!--
-->{{#vardefine:ii:idbuff|{{{idbuff|{{#var:ii:idbuff}}}}}}}<!--
+
-->{{#vardefine:ii:bodyslot|social shirt}}<!--
  +
-->|<!--
-->{{#vardefine:ii:buffduration|{{regex|{{{duration|}}}|/@@@@/|{{duration|{{#var:ii:buffduration}}}}|{{{duration|{{#var:ii:buffduration}}}}}}}}}<!--in seconds.
 
-->{{#vardefine:ii:rare|{{regex|{{{rare|}}}|/@@@@/|{{rare|{{#var:ii:rare}}|cat=y}}|{{{rare|{{#var:ii:rare}}}}}}}}}<!--
+
-->{{#vardefine:ii:bodyslot|shirt}}<!--
-->{{#vardefine:ii:idtile|{{{idtile|{{#var:ii:idtile}}}}}}}<!--
+
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|armor}}}}<!--
  +
-->}}<!--
-->{{#vardefine:ii:idtilesub|{{{idtilesub|{{#var:ii:idtilesub}}}}}}}<!--
 
  +
-->}}<!--
-->{{#vardefine:ii:idwall|{{{idwall|{{#var:ii:idwall}}}}}}}<!--
 
-->{{#vardefine:ii:idmount|{{{idmount|{{#var:ii:idmount}}}}}}}<!--
+
-->{{#ifexpr:{{#dplvar:ii:info:legSlot}}>-1|<!-- legs armor?
-->{{#vardefine:ii:idprojectile|{{{idprojectile|{{{shoot|{{#var:ii:idprojectile}}}}}}}}}}<!--
+
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:legSlot}}}}<!--
-->{{#vardefine:ii:consumable|{{{consumable|{{#var:ii:consumable}}}}}}}<!--
+
-->{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}|<!--
-->{{#vardefine:ii:placeable|{{{placeable|{{#var:ii:placeable}}}}}}}<!--
+
-->{{#vardefine:ii:bodyslot|social pants}}<!--
  +
-->|<!--
-->{{#vardefine:ii:value|{{{value|{{#var:ii:value}}}}}}}<!--
 
-->{{#vardefine:ii:sell|{{regex|{{{sell|}}}|/@@@@/<!--
+
-->{{#vardefine:ii:bodyslot|pants}}<!--
-->|{{coin|{{#var:ii:sell|{{#ifexpr:{{#var:ii:value|0}}>0|{{#expr:floor({{#expr:{{#var:ii:value}}/5}})}}}}}}cc}}<!--
+
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|armor}}}}<!--
  +
-->}}<!--
-->|{{{sell|{{#var:ii:sell|{{#ifexpr:{{#var:ii:value|0}}>0|{{#expr:floor({{#expr:{{#var:ii:value}}/5}})}}}}}}}}}<!--
 
-->}}}}<!--
+
-->}}<!--
-->{{#vardefine:ii:buy|<!--
+
-->{{#vardefine:ii:idarmor|{{{idarmor|{{#var:ii:idarmor}}}}}}}<!--
-->{{#switch:{{lc:{{{buy|}}}}}<!--
+
-->{{#vardefine:ii:bodyslot|{{{body slot|{{#var:ii:bodyslot}}}}}}}<!--
-->|y|yes|true|show={{#ifexpr:{{#var:ii:value|0}}>0|{{#var:ii:value}}}}<!--
+
-->{{#vardefine:ii:idmount|{{{idmount|<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:mountType}}>-1|<!-- item is a mount summon as defined by auto info
-->|#default={{#if:{{{buy|}}}|<!--
 
  +
-->{{#dplvar:ii:info:mountType}}<!--
-->{{regex|{{{buy|}}}|/@@@@/|{{#ifexpr:{{#var:ii:value|0}}>0|{{coin|{{#var:ii:value}}cc}}}}|{{{buy|}}}}}<!--
 
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|mount summon}}}}<!-- add "mount summon" to type
-->|<!--
 
-->{{#if:{{#arraysearch:ii:tags|buy|0|y}}{{#arraysearch:ii:tags|buyable|0|y}}{{#arraysearch:ii:tags|vendor|0|y}}|<!--
 
-->{{#ifexpr:{{#var:ii:value|0}}>0|{{#var:ii:value}}}}<!--
 
-->}}<!--
 
-->}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
-->}}}}}<!--
  +
-->{{#vardefine:ii:idbuff|<!--
  +
-->{{#lstmap:{{#var:ii:buffs}}|₪|@@@@|<esc><!--
  +
-->{{#var:ii:buff@@@@:mobile}}₰{{#var:ii:buff@@@@:id}}₰{{#var:ii:ext:idbuffshow@@@@}}<!--
  +
--></esc>|₪}}<!--
  +
-->{{#listmap:intro=₪|list={{#var:ii:debuffs}}|insep=₪|token=@@@@|pattern=<esc><!--
  +
-->{{#var:ii:debuff@@@@:mobile}}₰{{#var:ii:debuff@@@@:id}}₰{{#var:ii:ext:iddebuffshow@@@@}}<!--
  +
--></esc>|outsep=₪}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->{{#vardefine:ii:idprojectile|{{{idprojectile|{{{shoot|{{#if:{{#var:ii:useammo}}||<!-- don't show default projectile id for items which use ammo.
-->{{#if:{{#var:ii:buy}}|<!--
 
-->{{#iferror:{{#expr:1+{{#var:ii:buy}}}}||{{#vardefine:ii:buy|{{#if:{{#var:ii:DD2Summon}}|{{dm|{{#expr:{{#var:ii:buy}}/10000}}}}|{{coin|{{#var:ii:buy}}cc}}}}}}}}<!--
+
-->{{#ifexpr:{{#dplvar:ii:info:shoot}}>0|{{#dplvar:ii:info:shoot}}}}<!--
  +
-->}}}}}}}}}}<!--
  +
--------
  +
  +
---- velocity ----
  +
//velocity & extraUpdate fix
  +
-->{{#vardefine:ii:velocity|<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:shootSpeed}}>0|{{#dplvar:ii:info:shootSpeed}}}}<!--
 
-->}}<!--
 
-->}}<!--
-->{{#if:{{#var:ii:sell}}|<!--
+
-->{{#vardefine:ii:rawVelocity|{{#var:ii:velocity}}}}<!--
-->{{#iferror:{{#expr:1+{{#var:ii:sell}}}}||{{#vardefine:ii:sell|{{coin|{{#var:ii:sell}}cc}}}}}}<!--
+
-->{{#vardefine:ii:velocityMultiplier|}}<!--
  +
-->{{#if:{{#var:ii:idprojectile}}|{{#if:{{#var:ii:rawVelocity}}|<!--
  +
-->{{#vardefine:ii:extraUpdates|0{{getProjectileInfo|{{#explode:{{#var:ii:idprojectile}}|,|0}}|extraUpdates}}}}<!-- extra updates of first projectile in list
  +
-->{{#ifexpr:{{#var:ii:extraUpdates}}>0|<!--
  +
-->{{#if:{{#lstind:ammunition|{{#var:ii:types}}|/}}|<!-- ammo items
  +
-->{{#vardefine:ii:velocityMultiplier|{{#expr:{{#var:ii:extraUpdates}}+1}}}}<!--
  +
-->|<!-- other items
  +
-->{{#vardefine:ii:velocity|{{#expr:{{#var:ii:velocity}}*({{#var:ii:extraUpdates}}+1)}}}}<!--
  +
-->}}<!--
  +
-->}}<!--
  +
-->}}}}<!--
  +
-->{{#ifeq:{{{velocity|{{{sspeed|-unset}}}}}}|{{{velocity|{{{sspeed|unset-}}}}}}|<!-- allow "|velocity=" to suppress velocity display
  +
-->{{#vardefine:ii:velocity|{{#rreplace:{{{velocity|{{{sspeed|}}}}}}|@@@@|{{#var:ii:velocity}}}}}}<!--
 
-->}}<!--
 
-->}}<!--
  +
--------
//ext buffinfo
 
  +
-->{{#if:{{#var:ii:idbuff}}|<!--
 
  +
---- tooltip ----
-->{{#vardefine:ii:buff|{{{buff|{{getBuffInfo|{{#var:ii:idbuff}}|name}}}}}}}<!--
 
-->{{#vardefine:ii:bufftype|{{{bufftype|{{getBuffInfo|{{#var:ii:idbuff}}|type}}}}}}}<!--
+
-->{{#vardefine:ii:tooltip|{{#if:{{#var:ii:auto_id}}|{{itemTooltip|{{#var:ii:auto_id}}|right={{l10n|item_infobox|rightclick}}}}}}}}<!--
  +
-->{{#ifeq:{{{tooltip|-unset}}}|{{{tooltip|unset-}}}|<!-- allow "|tooltip=" to suppress tooltip display
-->{{#vardefine:ii:bufflink|{{{bufflink|{{getBuffInfo|{{#var:ii:idbuff}}|page}}}}}}}<!--
 
-->{{#vardefine:ii:bufftip|{{{bufftip|{{getBuffInfo|{{#var:ii:idbuff}}|tooltip}}}}}}}<!--
+
-->{{#vardefine:ii:tooltip|{{#rreplace:{{{tooltip|}}}|@@@@|{{#var:ii:tooltip}}}}}}<!--
-->|<!-- no idbuff, see if there is $buff or $debuff
 
-->{{#if:{{{debuff|}}}|<!--
 
-->{{#arraydefine:debuffinfo|{{{debuff|}}}|/}}<!--
 
-->{{#vardefine:ii:bufftype|Debuff}}<!--
 
-->{{#vardefine:ii:idbuff|{{buffIdFromName|{{#arrayindex:debuffinfo|0}}}}}}<!--
 
-->{{#if:{{#var:ii:idbuff}}|<!--
 
-->{{#ifeq:{{#sub:{{#var:ii:idbuff}}|0|1}}|m|<!-- is mobile exclusive?
 
-->{{#vardefine:ii:idbuff|{{#sub:{{#var:ii:idbuff}}|1}}}}<!--
 
-->{{#vardefine:ii:mobilebuff|m}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->{{#vardefine:ii:buff|{{#if:{{#var:ii:idbuff}}|{{getBuffInfo|{{#var:ii:mobilebuff}}{{#var:ii:idbuff}}|name}}|{{#arrayindex:debuffinfo|0}}}}}}<!--
 
-->{{#vardefine:ii:buffduration|{{{debuffduration|{{#arrayindex:debuffinfo|1}}}}}}}<!-- in seconds.
 
-->{{#vardefine:ii:debuffchance|{{#arrayindex:debuffinfo|2}}}}<!--
 
-->|{{#if:{{{buff|}}}|<!--
 
-->{{#arraydefine:buffinfo|{{{buff|}}}|/}}<!--
 
-->{{#vardefine:ii:bufftype|Buff}}<!--
 
-->{{#vardefine:ii:idbuff|{{buffIdFromName|{{#arrayindex:buffinfo|0}}}}}}<!--
 
-->{{#if:{{#var:ii:idbuff}}|<!--
 
-->{{#ifeq:{{#sub:{{#var:ii:idbuff}}|0|1}}|m|<!-- is mobile exclusive?
 
-->{{#vardefine:ii:idbuff|{{#sub:{{#var:ii:idbuff}}|1}}}}<!--
 
-->{{#vardefine:ii:mobilebuff|m}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->{{#vardefine:ii:buff|{{#if:{{#var:ii:idbuff}}|{{getBuffInfo|{{#var:ii:mobilebuff}}{{#var:ii:idbuff}}|name}}|{{#arrayindex:buffinfo|0}}}}}}<!--
 
-->{{#vardefine:ii:buffduration|{{{buffduration|{{#arrayindex:buffinfo|1}}}}}}}<!-- in seconds.
 
-->{{#vardefine:ii:buffchance|{{#arrayindex:buffinfo|2}}}}<!--
 
-->}}}}<!--
 
-->{{#vardefine:ii:bufflink|{{{debufflink|{{getBuffInfo|{{#var:ii:mobilebuff}}{{#var:ii:idbuff}}|page}}}}}}}<!--
 
-->{{#vardefine:ii:bufftip|{{{debufftip|{{getBuffInfo|{{#var:ii:mobilebuff}}{{#var:ii:idbuff}}|tooltip}}}}}}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
--------
-->{{#ifeq:{{lc:{{#var:ii:bufftype}}}}|debuff|<!--
 
  +
-->{{#vardefine:ii:debuffchance|{{{debuffchance|{{#var:ii:debuffchance}}}}}}}<!--
 
  +
---- consumable and placeable ----
  +
-->{{#vardefine:ii:consumable|{{{consumable|{{#dplvar:ii:info:consumable}}}}}}}<!--
  +
-->{{#vardefine:ii:placeable|{{{placeable|{{#if:{{#var:ii:idtile}}{{#var:ii:idwall}}|y}}}}}}}<!--
  +
-->{{#if:{{#lstfltr:block/brick|/|{{#var:ii:types}}|/}}<!--
  +
-->|{{#vardefine:ii:width|{{{width|1}}}}}{{#vardefine:ii:height|{{{height|1}}}}}<!-- default to 1×1 for blocks
  +
-->|{{#vardefine:ii:width|{{{width|}}}}}{{#vardefine:ii:height|{{{height|}}}}}<!-- don't default to anything for other items
 
-->}}<!--
 
-->}}<!--
  +
-->{{#ifeq:{{#var:ii:bufflink}}|{{BASEPAGENAME}}|<!-- if is self link
 
  +
---- sounds ----
//add "buffs" to cate.
 
  +
// sounds array (ii:sounds): "name1:sound1_1.wav,sound1_2.wav;name2:sound2_1.wav,sound2_2.wav; ..."
-->{{#arraydefine:z|buffs}}{{#arrayunion:ii:listcats|ii:listcats|z}}<!--
 
  +
-->{{#vardefine:ii:sounds|<!--
  +
-->{{#vardefine:_tile_sound_mode|}}<!--
  +
-->{{#ifexpr:{{#dplvar:ii:info:createWall}}>-1|<!--
  +
-->{{#vardefine:_tile_sound_mode|wall}}<!--
  +
-->}}<!--
  +
  +
// put all usesounds in the first element of the ii:sounds array
  +
-->{{#if:{{{sounduse|{{#dplvar:ii:info:UseSound}}}}}|<!--
  +
-->{{l10n|item_infobox|th:use}}:{{{sounduse|{{#lstmap:{{#dplvar:ii:info:UseSound}}|,|@@|@@.wav|,}}}}};<!--
  +
-->}}<!--
  +
-->{{#if:{{{soundplaced|{{#var:_tile_sound_mode}}}}}|<!--
  +
-->{{l10n|item_infobox|th:placed}}:{{{soundplaced|{{getWallInfo|{{#dplvar:ii:info:createWall}}|soundplaced}}}}};<!--
  +
-->}}<!--
  +
-->{{#if:{{{soundbreak|{{#var:_tile_sound_mode}}}}}|<!--
  +
-->{{l10n|item_infobox|th:broken}}:{{{soundbreak|{{getWallInfo|{{#dplvar:ii:info:createWall}}|soundbreak}}}}};<!--
  +
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->{{#forargs:sound|k|v|<!--
-->{{#vardefine:ii:tooltip|{{regex|{{{tooltip|}}}|/@@@@/|{{#var:ii:tooltip}}|{{{tooltip|{{#var:ii:tooltip|{{itemTooltip|{{#var:ii:id}}}}}}}}}}}}}<!--
 
-->{{#vardefine:ii:name|{{{name|{{#var:ii:name|{{#var:itemnamefrompagename}}}}}}}}}<!--
+
-->{{#if:{{{soundcaption{{#var:k}}|}}}|<!--
-->{{#vardefine:ii:lname|{{{lname|{{tr|{{#var:ii:name|}}}}}}}}}<!--
+
-->{{#vardefine:ii:sounds|{{#lstapp:{{#var:ii:sounds}}|;|<!--
  +
array element: "<caption n>:soundn_1.wav,soundn_2.wav, ..."
-->{{#vardefine:ii:namesub|{{{namesub|{{#var:ii:namesub}}}}}}}<!--
 
-->{{#vardefine:ii:pickreq|{{{pickreq|{{#var:ii:pickreq}}}}}}}<!--
+
-->{{{soundcaption{{#var:k}}|}}}:{{#var:v}}<!--
  +
-->}}}}<!--
-->{{#vardefine:ii:hammerreq|{{{hammerreq|{{#var:ii:hammerreq}}}}}}}<!--
 
  +
-->}}<!--
-->{{#arraysearch:ii:types|block|0|{{#vardefine:ii:width|1}}{{#vardefine:ii:height|1}}}}<!--
 
  +
-->}}<!--
-->{{#arraysearch:ii:types|brick|0|{{#vardefine:ii:width|1}}{{#vardefine:ii:height|1}}}}<!--
 
  +
--------
-->{{#vardefine:ii:width|{{{width|{{#var:ii:width}}}}}}}<!--
 
  +
-->{{#vardefine:ii:height|{{{height|{{#var:ii:height}}}}}}}<!--
 
  +
---- crafting type and listcat ----
-->{{#vardefine:ii:bodyslot|{{{body slot|{{#var:ii:bodyslot}}}}}}}<!--
 
-->{{#vardefine:ii:bonus|{{{bonus|{{#var:ii:bonus}}}}}}}<!--
+
-->{{#vardefine:ii:material|{{#dplvar:ii:info:material}}}}<!--
-->{{#vardefine:ii:setbonus|{{{setbonus|{{#var:ii:setbonus}}}}}}}<!--
+
-->{{#vardefine:ii:craftable|{{#dplvar:ii:info:craftable}}}}<!--
  +
//crafting cate/type
-->{{#vardefine:ii:hardmodeonly|{{{hardmode|{{#if:{{#arraysearch:ii:tags|hardmodeonly|0|y}}{{#arraysearch:ii:tags|hardmode|0|y}}|y|{{#var:ii:hardmodeonly}}}}}}}}}<!--
 
-->{{#vardefine:ii:allversions|{{#switch:{{lc:{{{allversions|}}}}}<!-- allversions?
 
-->|y|yes|true=y<!--
 
-->|n|no|false=<!--
 
-->|#default={{#arraysearch:ii:tags|allversions|0|y|{{#if:{{eversions|{{#var:ii:name}}|raw=y}}|<!--not all versions-->|y}}}}<!-- auto detected: tag -> eversions.
 
-->}}}}<!--
 
crafting cate/type
 
 
-->{{#if:{{#var:ii:name}}|<!--
 
-->{{#if:{{#var:ii:name}}|<!--
//Is crafting material ??
+
//is crafting material?
-->{{#if:{{Recipes/exist|ingredient={{#var:ii:name}}}}|<!--
+
-->{{#if:{{#var:ii:material}}|<!--
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|crafting material}}}}<!-- add "crafting material" to types
//add "Crafting material" to type.
 
-->{{#arraydefine:z|crafting material}}<!--
 
-->{{#arrayunion:ii:types|ii:types|z}}<!--
 
 
-->}}<!--
 
-->}}<!--
//Is craftable?
+
//is craftable?
-->{{#if:{{Recipes/exist|result={{#var:ii:name}}}}|<!--
+
-->{{#if:{{#var:ii:craftable}}|<!--
  +
-->{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|craftable items}}}}<!-- add "craftable items" to listcat
//add "Craftable items" to listcate.
 
-->{{#arraydefine:z|craftable items}}<!--
 
-->{{#arrayunion:ii:listcats|ii:listcats|z}}<!--
 
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
--------
//sounds:
 
  +
-->{{#if:{{{sounduse|}}}|{{#arraydefine:ii:sounds|{{l10n|item_infobox|th:use}}@@{{{sounduse|}}}|@@@@}}}}<!-- use delimiter "@@@@" to prevent multiple, comma-separated sounds to be stored as different array elements. ii:sounds should only have a single element at this point.
 
  +
---- dd2 sentry weapon ----
-->{{#arraydefine:z|<!-- // custom sounds (e.g. $sound1)
 
-->{{#forargs:sound|k|v|<!--
+
-->{{#vardefine:ii:DD2Summon|<!--
-->{{#if:{{{soundcaption{{#var:k}}|}}}|<!--
+
-->{{#if:{{#lstind:dd2|{{#var:ii:tags}}|/}}|1|{{#dplvar:ii:info:DD2Summon}}}}<!--
-->@@@@{{{soundcaption{{#var:k}}|}}}@@{{#var:v}}<!-- "@@" is the delimiter between caption and sound; "@@@@" the delimiter between array elements
 
-->}}<!--
 
-->}}<!--
 
-->|@@@@<!--
 
 
-->}}<!--
 
-->}}<!--
  +
--------
-->{{#arrayunique:z}}<!-- removing empty and duplicate elements
 
  +
-->{{#arrayunion:ii:sounds|ii:sounds|z}}<!--
 
  +
//images: There are some expensive calls in image auto detection, so run detection based on view mode.
 
  +
+++++++++++++ 4. Process additional parameter input, unrelated to auto data +++++++++++++
  +
  +
---- bonus and set bonus ----
  +
-->{{#vardefine:ii:bonus|{{{bonus|}}}}}<!--
  +
-->{{#vardefine:ii:setbonus|{{#if:{{#var:ii:isArmorSet}}|{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}||<!-- for armor sets:
  +
-->{{getSetInfo|{{#var:ii:name}}|setbonuslist|sep=<br/>}}<!-- auto setbonus
  +
-->}}}}}}<!--
  +
-->{{#if:{{{setbonus|}}}|<!--
  +
-->{{#vardefine:ii:setbonus|{{#rreplace:{{{setbonus|}}}|@@@@|{{#var:ii:setbonus}}}}}}<!--
  +
-->}}<!--
  +
--------
  +
  +
---- hardmode and allversions ----
  +
-->{{#vardefine:ii:hardmodeonly|{{{hardmode|{{#if:{{#lstfltr:hardmodeonly/hardmode|/|{{#var:ii:tags}}|/}}|y}}}}}}}<!--
  +
-->{{#vardefine:ii:allversions|{{#switch:{{lc:{{{allversions|}}}}}<!-- allversions?
  +
-->|y|yes|true=y<!--
  +
-->|n|no|false=<!--
  +
-->|#default=<!-- auto detect
  +
-->{{#if:{{#lstind:allversions|{{#var:ii:tags}}|/}}|y<!-- "allversions" in tags, or:
  +
-->|{{#if:{{#var:ii:id}}|{{#if:{{eversions|{{#var:ii:name}}|raw=y}}|<!--not all versions-->|y}}}}}}<!-- id and eversions
  +
-->}}}}<!--
  +
--------
  +
  +
---- images ----
  +
-->{{#vardefine:ii:imagealt|}}<!-- full image code for image area
  +
-->{{#vardefine:ii:imagefile|}}<!-- main image file
  +
-->{{#vardefine:ii:image|}}<!-- main image name
  +
-->{{#vardefine:ii:imageold|}}<!-- old image
  +
-->{{#vardefine:ii:imagefemale|}}<!--
  +
-->{{#vardefine:ii:imageplaced|}}<!--
  +
-->{{#vardefine:ii:imageequipped|}}<!--
  +
-->{{#vardefine:ii:imageext|}}<!-- custom extra images. full image code.
  +
// images: There are some expensive calls in image auto detection, so run detection based on view mode.
 
-->{{#vardefine:ii:imagealt|{{{imagealt|}}}}}<!-- custom full image code.
 
-->{{#vardefine:ii:imagealt|{{{imagealt|}}}}}<!-- custom full image code.
 
-->{{#if:{{#var:ii:imagealt}}||<!--
 
-->{{#if:{{#var:ii:imagealt}}||<!--
-->{{#ifeq:{{#var:imagemode}}|full|<!--full mode
+
-->{{#ifeq:{{#var:imagemode}}|full|<!-- full mode
//female image check first(used in equipped image)
+
// female image check first (used in equipped image)
 
-->{{#vardefine:ii:imagefemale|<!--
 
-->{{#vardefine:ii:imagefemale|<!--
 
-->{{#if:{{{imagefemale|}}}|<!--
 
-->{{#if:{{{imagefemale|}}}|<!--
Ligne 521 : Ligne 688 :
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->{{#vardefine:ii:imagefemale|{{#var:ii:imagefemale|<!-- second try to fetch female image (armor/vanity sets are named "<name> female.png"; regular items are named "<name> (equipped) female.png")
  +
-->{{image|{{#var:ii:name}} (equipped) female.{{{ext|png}}}|{{l10n|item_infobox|imagealt:female|$name$={{#var:ii:lname}}}}|link=}}<!-- check ext as main image
  +
-->}}}}<!--
 
-->{{#vardefine:_male_image_suffix|{{#if:{{#var:ii:imagefemale}}|y|}}}}<!--
 
-->{{#vardefine:_male_image_suffix|{{#if:{{#var:ii:imagefemale}}|y|}}}}<!--
//main image
+
// main image
 
-->{{#vardefine:ii:image|<!--
 
-->{{#vardefine:ii:image|<!--
 
-->{{#vardefine:alttext|<!--
 
-->{{#vardefine:alttext|<!--
-->{{#arraysearch:ii:types|set|0|<!--
+
-->{{#if:{{#var:ii:isArmorSet}}|<!--
-->{{#if:{{#var:ii:imagefemale}}|<!-- //if there is a female image, the main(male) image need a suffix
+
-->{{#if:{{#var:ii:imagefemale}}|<!-- if there is a female image, the main (male) image needs a suffix
 
-->{{l10n|item_infobox|imagealt:equipped_suffixed|$name$={{#var:ii:lname}}}}<!--
 
-->{{l10n|item_infobox|imagealt:equipped_suffixed|$name$={{#var:ii:lname}}}}<!--
 
-->|<!--
 
-->|<!--
Ligne 539 : Ligne 709 :
 
-->[[File:{{{image|}}}|{{#var:alttext}}|link=]]<!--
 
-->[[File:{{{image|}}}|{{#var:alttext}}|link=]]<!--
 
-->|<!--
 
-->|<!--
-->{{#vardefine:ii:imagefile|{{regex|{{#var:ii:name}}|/:\s*/|_|{{#var:ii:name}}}}.{{{ext|png}}}}}<!--replace ":" and ": " in filename with "_",
+
-->{{#vardefine:ii:imagefile|{{#rreplace:{{#var:ii:name}}|/:\s*/|_}}.{{{ext|png}}}}}<!-- replace ":" and ": " in filename with "_"
 
-->{{#ifeq:{{{imageinfo|}}}|no|<!--
 
-->{{#ifeq:{{{imageinfo|}}}|no|<!--
-->[[file:{{#var:ii:imagefile}}|{{#var:alttext}}|link=]]<!--
+
-->[[File:{{#var:ii:imagefile}}|{{#var:alttext}}|link=]]<!--
 
-->|<!--
 
-->|<!--
 
-->{{image|{{#var:ii:imagefile}}|{{#var:alttext}}|link=}}<!--
 
-->{{image|{{#var:ii:imagefile}}|{{#var:alttext}}|link=}}<!--
Ligne 547 : Ligne 717 :
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->|<!-- else simple mode
// fallback if {{image}} failed (red link)
 
  +
// main image
-->{{#if:{{#var:ii:image}}||<!--
 
-->{{#vardefine:ii:image|[[File:{{#var:ii:name}}.png|file is missing|link=]]}}<!--
+
-->{{#vardefine:ii:image|<!--
  +
-->{{#if:{{{image|}}}|<!--
  +
-->{{#vardefine:ii:imagefile|{{{image|}}}}}<!--
  +
-->[[File:{{{image|}}}|{{l10n|item_infobox|imagealt:default|$name$={{#var:ii:lname}}}}|link=]]<!--
  +
-->|<!--
  +
-->{{#vardefine:ii:imagefile|{{#rreplace:{{#var:ii:name}}|/:\s*/|_}}.{{{ext|png}}}}}<!-- replace ":" and ": " in filename with "_"
  +
-->{{#ifeq:{{{imageinfo|}}}|no|<!--
  +
-->[[File:{{#var:ii:imagefile}}|{{l10n|item_infobox|imagealt:default|$name$={{#var:ii:lname}}}}|link=]]<!--
  +
-->|<!--
  +
-->{{image|{{#var:ii:imagefile}}|{{l10n|item_infobox|imagealt:default|$name$={{#var:ii:lname}}}}|link=}}<!--
  +
-->}}<!--
  +
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
//old image
 
  +
// fallback if {{image}} failed (red link)
  +
-->{{#if:{{#var:ii:image}}||<!--
  +
-->{{#vardefine:ii:image|[[File:{{#var:ii:name}}.png|{{l10n|item_infobox|imagealt:missing}}|link=]]}}<!--
  +
-->}}<!--
  +
// old, placed, and equipped images: always fetch if using full mode, else only if respective mode is set
  +
// old image
  +
-->{{#if:{{#ifeq:{{#var:imagemode}}|full|y}}{{#pos:{{#var:imagemode}}|old}}|<!--
 
-->{{#vardefine:ii:imageold|{{{imageoldalt|<!--
 
-->{{#vardefine:ii:imageold|{{{imageoldalt|<!--
 
-->{{#if:{{{imageold|}}}|<!--
 
-->{{#if:{{{imageold|}}}|<!--
Ligne 559 : Ligne 747 :
 
-->}}<!--
 
-->}}<!--
 
-->}}}}}<!--
 
-->}}}}}<!--
  +
-->}}<!--
//placed image
 
  +
// placed image
  +
-->{{#if:{{#ifeq:{{#var:imagemode}}|full|y}}{{#pos:{{#var:imagemode}}|placed}}|<!--
 
-->{{#vardefine:ii:imageplaced|{{{imageplacedalt|<!--
 
-->{{#vardefine:ii:imageplaced|{{{imageplacedalt|<!--
 
-->{{#if:{{{imageplaced|}}}|<!--
 
-->{{#if:{{{imageplaced|}}}|<!--
 
-->[[File:{{{imageplaced|}}}|{{l10n|item_infobox|imagealt:placed|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->[[File:{{{imageplaced|}}}|{{l10n|item_infobox|imagealt:placed|$name$={{#var:ii:lname}}}}|link=]]<!--
-->|<!--
+
-->|<!--
 
-->{{image|{{#var:ii:name}} (placed)|{{l10n|item_infobox|imagealt:placed|$name$={{#var:ii:lname}}}}|link=}}<!-- check .gif, then .png
 
-->{{image|{{#var:ii:name}} (placed)|{{l10n|item_infobox|imagealt:placed|$name$={{#var:ii:lname}}}}|link=}}<!-- check .gif, then .png
 
-->}}<!--
 
-->}}<!--
 
-->}}}}}<!--
 
-->}}}}}<!--
  +
-->}}<!--
//equipped image
 
  +
// equipped image
  +
-->{{#if:{{#ifeq:{{#var:imagemode}}|full|y}}{{#pos:{{#var:imagemode}}|equipped}}|<!--
 
-->{{#vardefine:ii:imageequipped|{{{imageequippedalt|<!--
 
-->{{#vardefine:ii:imageequipped|{{{imageequippedalt|<!--
-->{{#if:{{{imageequipped|}}}|<!--
+
-->{{#if:{{{imageequipped|}}}|<!--
 
-->[[File:{{{imageequipped|}}}|{{l10n|item_infobox|imagealt:equipped|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->[[File:{{{imageequipped|}}}|{{l10n|item_infobox|imagealt:equipped|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->|<!--
 
-->|<!--
Ligne 575 : Ligne 767 :
 
-->}}<!--
 
-->}}<!--
 
-->}}}}}<!--
 
-->}}}}}<!--
-->|<!-- else simple mode
 
//main image
 
-->{{#vardefine:ii:image|<!--
 
-->{{#if:{{{image|}}}|<!--
 
-->{{#vardefine:ii:imagefile|{{{image|}}}}}<!--
 
-->[[File:{{{image|}}}|{{l10n|item_infobox|imagealt:default|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->|<!--
 
-->{{#vardefine:ii:imagefile|{{regex|{{#var:ii:name}}|/:\s*/|_|{{#var:ii:name}}}}.{{{ext|png}}}}}<!--replace ":" and ": " in filename with "_",
 
-->{{#ifeq:{{{imageinfo|}}}|no|<!--
 
-->[[File:{{#var:ii:imagefile}}|{{l10n|item_infobox|imagealt:default|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->|<!--
 
-->{{image|{{#var:ii:imagefile}}|{{l10n|item_infobox|imagealt:default|$name$={{#var:ii:lname}}}}|link=}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
// fallback if {{image}} failed (red link)
 
-->{{#if:{{#var:ii:image}}||<!--
 
-->{{#vardefine:ii:image|[[File:{{#var:ii:name}}.png|file is missing|link=]]}}<!--
 
-->}}<!--
 
//placed image
 
-->{{#if:{{#pos:{{#var:imagemode}}|placed}}|<!--
 
-->{{#vardefine:ii:imageplaced|{{{imageplacedalt|<!--
 
-->{{#if:{{{imageplaced|}}}|<!--
 
-->[[File:{{{imageplaced|}}}|{{l10n|item_infobox|imagealt:placed|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->|<!--
 
-->{{image|{{#var:ii:name}} (placed)|{{l10n|item_infobox|imagealt:placed|$name$={{#var:ii:lname}}}}|link=}}<!-- check .gif, then .png
 
-->}}<!--
 
-->}}}}}<!--
 
-->}}<!--
 
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
--------
   
  +
===== cate and cargo ======
 
  +
+++++++++++++ 5. Categorize and store to cargo +++++++++++++
  +
  +
---- determine validity of categorization ----
 
-->{{#vardefine:cate|}}<!--
 
-->{{#vardefine:cate|}}<!--
 
-->{{#switch:{{{cate|}}}<!--
 
-->{{#switch:{{{cate|}}}<!--
-->|yes|force={{#vardefine:cate|y}}<!--
+
-->|1|y|yes|true|force={{#vardefine:cate|y}}<!--
-->|no={{#vardefine:cate|}}<!--
+
-->|0|n|no|false={{#vardefine:cate|}}<!--
 
-->|#default={{#ifeq:{{NAMESPACE}}|{{ns:0}}|<!-- only in main ns
 
-->|#default={{#ifeq:{{NAMESPACE}}|{{ns:0}}|<!-- only in main ns
 
-->{{#switch:{{#var:viewname}}<!--
 
-->{{#switch:{{#var:viewname}}<!--
Ligne 618 : Ligne 785 :
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
--------
  +
  +
---- categorize ----
  +
-->{{#vardefine:ii:types|{{#lstuniq:{{#var:ii:types}}|/|/}}}}<!--
 
-->{{#if:{{#var:cate}}|<!--
 
-->{{#if:{{#var:cate}}|<!--
  +
-->{{#lstmap:{{#var:ii:types}}|/|@@@@|<esc>[[Category:{{#or:{{l10n|item_infobox|typecate:@@@@}}|{{tr|{{ucfirst:@@@@}} items|link=y}}}}]]</esc>|}}<!--
== cates ==
 
  +
-->{{#lstmap:{{#var:ii:listcats}}|/|@@@@|<esc>[[Category:{{#or:{{l10n|item_infobox|listcat:@@@@}}|{{tr|{{ucfirst:@@@@}}|link=y}}}}]]</esc>|}}<!--
-->{{#ifeq:{{{cate|}}}|no|<!-- nothing -->|{{#ifeq:{{{listexclude|no}}}|yes|<!-- nothing -->|<!-- only if $cate != no
 
  +
-->{{#if:{{#var:ii:isArmorSet}}|<!--
//cate
 
-->{{#arrayprint:ii:types||@@@@|[[Category:{{#if:{{l10n|item_infobox|typecate:@@@@}}|{{l10n|item_infobox|typecate:@@@@}}|{{tr|{{ucfirst:@@@@}} items|link=y}}}}]]}}<!--
+
-->{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}|[[Category:{{l10n|item_infobox|cate:vanitysets}}]]}}<!--
  +
-->{{#if:{{#lstind:armor|{{#var:ii:types}}|/}}|<!--
-->{{#arrayprint:ii:listcats||@@@@|[[Category:{{#if:{{l10n|item_infobox|listcat:@@@@}}|{{l10n|item_infobox|listcat:@@@@}}|{{tr|{{ucfirst:@@@@}}|link=y}}}}]]}}<!--
 
  +
-->[[Category:{{l10n|item_infobox|cate:armorsets}}]]<!--
-->{{#arraysearch:ii:types|set|0|<!--
 
-->{{#arraysearch:ii:types|vanity|0|[[Category:{{l10n|item_infobox|cate:vanitysets}}]]}}<!--
+
-->{{#if:{{#var:ii:setbonus}}||[[Category:{{l10n|item_infobox|cate:nosetbonus}}]]}}<!--
-->{{#arraysearch:ii:types|armor|0|<!--
+
-->}}<!--
  +
-->}}<!--
-->[[Category:{{l10n|item_infobox|cate:armorsets}}]]<!--
 
-->{{#if:{{#var:ii:setbonus}}||[[Category:{{l10n|item_infobox|cate:nosetbonus}}]]}}<!--
+
-->{{#if:{{#var:ii:consumable}}|[[Category:{{l10n|item_infobox|cate:consumableitem}}]]}}<!--
  +
-->{{#if:{{#var:ii:buy}}|[[Category:{{l10n|item_infobox|cate:vendoritem}}]]}}<!--
-->}}<!--
 
  +
-->{{#if:{{#var:ii:hardmodeonly}}|[[Category:{{l10n|item_infobox|cate:hardmodeonlyitem}}]]}}<!--
  +
-->{{#if:{{#var:ii:autoswing}}|<!--
  +
-->{{#if:{{#lstind:furniture|{{#var:ii:types}}|/}}||<!-- don't categorize placeable weapons as autoswing
  +
-->{{#if:{{#lstfltr:weapon/tool|/|{{#var:ii:types}}|/}}|[[Category:{{l10n|item_infobox|cate:autoswingitem}}]]}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#if:{{#var:ii:consumable}}|[[Category:{{l10n|item_infobox|cate:consumableitem}}]]}}<!--
 
-->{{#if:{{#var:ii:buy}}|[[Category:{{l10n|item_infobox|cate:vendoritem}}]]}}<!--
+
-->{{#if:{{#var:ii:allversions}}|{{all versions}}}}<!--
-->{{#if:{{#var:ii:hardmodeonly}}|[[Category:{{l10n|item_infobox|cate:hardmodeonlyitem}}]]}}<!--
 
-->{{#if:{{#var:ii:autoswing}}|<!--
 
-->{{#arraysearch:ii:types|furniture|0|<!-- nothing, don't categorize placeable weapons -->|<!--
 
-->{{#arraysearch:ii:types|weapon|0|<!--
 
-->[[Category:{{l10n|item_infobox|cate:autoswingitem}}]]<!--
 
-->|{{#arraysearch:ii:types|tool|0|<!--
 
-->[[Category:{{l10n|item_infobox|cate:autoswingitem}}]]}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->{{#if:{{#var:ii:allversions}}|{{all versions}}}}<!--
 
@todo: buff part--><!-- {{void|#ifeq:{{{bufflink|}}}|no|[[Category:Buffs]]}} --><!--
 
-->}}}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
--------
   
  +
---- determine validity of cargo storage ----
 
-->{{#vardefine:cargo|}}<!--
 
-->{{#vardefine:cargo|}}<!--
-->{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{#ifeq:{{PAGENAME}}|{{ROOTPAGENAME}}|{{#vardefine:cargo|y}}}}}}<!--
+
-->{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{#ifeq:{{PAGENAME}}|{{ROOTPAGENAME}}|{{#vardefine:cargo|y}}}}}}<!-- default: only main ns, only root pages (e.g. no translation subpages)
-->{{#if:{{{cargo|}}}|{{#ifeq:{{{cargo|}}}|force|{{#vardefine:cargo|y}}|{{#vardefine:cargo|}}}}}}<!--
+
-->{{#if:{{{cargo|}}}|<!--
  +
-->{{#switch:{{{cargo|}}}<!--
  +
-->|1|y|yes|true|force|on={{#vardefine:cargo|y}}<!-- on
  +
-->|0|n|no|false|off={{#vardefine:cargo|}}<!-- off
  +
-->|#default=<!-- keep it unchanged.
  +
-->}}<!--
  +
-->}}<!--
  +
-->{{#if:{{langList|isOnWiki|{{lang}}}}|{{#vardefine:cargo|}}}}<!-- never store for non-english languages on mainwiki
  +
--------
  +
  +
---- store to cargo ----
 
-->{{#if:{{#var:cargo}}|<!--
 
-->{{#if:{{#var:cargo}}|<!--
  +
-->{{#cargo_store:_table=Items<!--
== cargo store ==
 
//new table:
 
-->{{#cargo_store:_table=Items_new<!--
 
 
-->|itemid={{#var:ii:id}}<!--
 
-->|itemid={{#var:ii:id}}<!--
 
-->|name={{#var:ii:name}}<!--
 
-->|name={{#var:ii:name}}<!--
-->|internalname={{#dplvar:ii:info:internalName}}<!--
+
-->|internalname={{#var:ii:internalName}}<!--
-->|image={{#var:ii:imagealt|{{#var:ii:image|{{#var:ii:imageplaced|{{#var::ii::imageequipped}}}}}}}}<!--
+
-->|image={{#var:ii:imagealt|{{#var:ii:image|{{#var:ii:imageplaced|{{#var:ii:imageequipped}}}}}}}}<!--
  +
-->|imagefile={{#var:ii:imagefile|{{{image|{{#var:ii:name}}.{{{ext|png}}}}}}}}<!--
 
-->|autoswing={{#var:ii:autoswing}}<!--
 
-->|autoswing={{#var:ii:autoswing}}<!--
 
-->|stack={{#var:ii:stack}}<!--
 
-->|stack={{#var:ii:stack}}<!--
-->|type={{#arrayprint:ii:types|^}}<!--
+
-->|type={{#lstsep:{{#var:ii:types}}|/|^}}<!--
-->|listcat={{#arrayprint:ii:listcats|^}}<!--
+
-->|listcat={{#lstsep:{{#var:ii:listcats}}|/|^}}<!--
-->|tag={{#arrayprint:ii:tags|^}}<!--
+
-->|tag={{#lstsep:{{#var:ii:tags}}|/|^}}<!--
 
-->|buy={{#var:ii:buy}}<!--
 
-->|buy={{#var:ii:buy}}<!--
 
-->|consumable={{#var:ii:consumable}}<!--
 
-->|consumable={{#var:ii:consumable}}<!--
Ligne 672 : Ligne 845 :
 
-->|velocity={{#var:ii:velocity}}<!--
 
-->|velocity={{#var:ii:velocity}}<!--
 
-->|knockback={{#var:ii:knockback}}<!--
 
-->|knockback={{#var:ii:knockback}}<!--
-->|rare={{#var:ii:rare}}<!--
+
-->|rare={{#var:ii:rawrare}}<!--
 
-->|sell={{#var:ii:sell}}<!--
 
-->|sell={{#var:ii:sell}}<!--
-->|axe={{#ifexpr:{{#var:ii:axe}}|{{#var:ii:axe}}}}<!--
+
-->|axe={{#var:ii:axe}}<!--
-->|pick={{#ifexpr:{{#var:ii:pick}}|{{#var:ii:pick}}}}<!--
+
-->|pick={{#var:ii:pick}}<!--
-->|hammer={{#ifexpr:{{#var:ii:hammer}}|{{#var:ii:hammer}}}}<!--
+
-->|hammer={{#var:ii:hammer}}<!--
 
-->|bait={{#ifexpr:{{#var:ii:bait}}|{{#var:ii:bait}}}}<!--
 
-->|bait={{#ifexpr:{{#var:ii:bait}}|{{#var:ii:bait}}}}<!--
 
-->|fishing={{#ifexpr:{{#var:ii:fishing}}|{{#var:ii:fishing}}}}<!--
 
-->|fishing={{#ifexpr:{{#var:ii:fishing}}|{{#var:ii:fishing}}}}<!--
Ligne 682 : Ligne 855 :
 
-->|toolspeed={{#var:ii:toolspeed}}<!--
 
-->|toolspeed={{#var:ii:toolspeed}}<!--
 
-->|usetime={{#var:ii:use}}<!--
 
-->|usetime={{#var:ii:use}}<!--
-->|unobtainable={{#arraysearch:ii:listcats|unobtainable items|0|y|}}<!--
+
-->|unobtainable={{#if:{{#lstind:unobtainable items|{{#var:ii:listcats}}|/}}|y}}<!--
 
-->|autoswing={{#var:ii:autoswing}}<!--
 
-->|autoswing={{#var:ii:autoswing}}<!--
 
-->|critical={{#var:ii:critical}}<!--
 
-->|critical={{#var:ii:critical}}<!--
Ligne 690 : Ligne 863 :
 
-->|placedheight={{#var:ii:height}}<!--
 
-->|placedheight={{#var:ii:height}}<!--
 
-->|mana={{#var:ii:mana}}<!--
 
-->|mana={{#var:ii:mana}}<!--
  +
-->|hheal={{#var:ii:hheal}}<!--
  +
-->|mheal={{#var:ii:mheal}}<!--
 
-->|bodyslot={{#var:ii:bodyslot}}<!--
 
-->|bodyslot={{#var:ii:bodyslot}}<!--
-->|usetime={{#var:ii:use}}<!--
 
 
-->|toolspeed={{#var:ii:toolspeed}}<!--
 
-->|toolspeed={{#var:ii:toolspeed}}<!--
-->|buff={{#var:ii:buff}}<!--
+
-->|buffs={{#lstmap:{{#var:ii:buffs}}|₪|@|{\{#var:ii:buff@:name}\}|^}}<!--
-->|bufftype={{#var:ii:bufftype}}<!--
+
-->|debuffs={{#lstmap:{{#var:ii:debuffs}}|₪|@|{\{#var:ii:debuff@:name}\}|^}}<!--
 
-->}}<!--
 
-->}}<!--
//CARGO END
 
 
-->}}<!--
 
-->}}<!--
end===== cate and cargo ======
 
   
  +
===== OUTPUT VIEW ======
 
  +
select view base on viewname. e.g. mode=table means {{item infobox/tableView}}, default is {{item infobox/infoboxView}}
 
  +
==========================================================================================================================
  +
============================================= DATA VIEW ==============================================
  +
==========================================================================================================================
  +
  +
  +
// select view based on viewname, e.g. "|mode=table" means {{item infobox/tableView}}, default is {{item infobox/infoboxView}}
 
-->{{item infobox/{{#var:viewname}}View}}<!--
 
-->{{item infobox/{{#var:viewname}}View}}<!--
   
Ligne 708 : Ligne 886 :
 
--><noinclude><!--
 
--><noinclude><!--
   
-->{{#cargo_declare:_table=Items_new
+
-->{{#cargo_declare:_table=Items
|itemid=Integer
+
| itemid = Integer
|name = String
+
| name = String
|internalname=String
+
| internalname = String
|image = Wikitext
+
| image = Wikitext
  +
| imagefile = String
|autoswing=Boolean
 
  +
| autoswing = Boolean
|stack=Integer
 
  +
| stack = Wikitext (size=500)
|buy=Boolean
 
|consumable=Boolean
+
| consumable = Boolean
|hardmode=Boolean
+
| hardmode = Boolean
|type = List (^) of String
+
| type = List (^) of String
|listcat = List (^) of String
+
| listcat = List (^) of String
|tag = List (^) of String
+
| tag = List (^) of String
|damage = Wikitext
+
| damage = Wikitext
|damagetype=String
+
| damagetype = String
|defense=Wikitext (size=1000)
+
| defense = Wikitext (size=1000)
|velocity = Wikitext
+
| velocity = Wikitext
|knockback = Wikitext
+
| knockback = Wikitext
|rare = Wikitext
+
| rare = Wikitext
|sell = Wikitext
+
| buy = Wikitext
  +
| sell = Wikitext
|axe = Integer
 
  +
| axe = Wikitext (size=1000)
|pick = Integer
 
  +
| pick = Wikitext (size=1000)
|hammer = Integer
 
  +
| hammer = Wikitext (size=1000)
|fishing = Integer
 
|bait = Integer
+
| fishing = Integer
  +
| bait = Integer
|bonus = Wikitext
 
|toolspeed = Wikitext
+
| bonus = Wikitext
|usetime = Wikitext
+
| toolspeed = Wikitext
  +
| usetime = Wikitext
|unobtainable = Boolean
 
|autoswing = Boolean
+
| unobtainable = Boolean
  +
| autoswing = Boolean
|critical=Wikitext (size=1000)
 
|tooltip=Wikitext
+
| critical = Wikitext (size=1000)
  +
| tooltip = Wikitext
|placeable=Boolean
 
  +
| placeable = Boolean
|placedwidth=Integer
 
|placedheight=Integer
+
| placedwidth = Integer
|mana=Integer
+
| placedheight = Integer
  +
| mana = Wikitext
|bodyslot=String
 
  +
| hheal = Wikitext
|usetime=Integer
 
  +
| mheal = Wikitext
|toolspeed=Integer
 
  +
| bodyslot = String
|buff=Wikitext (size=1000)
 
  +
| buffs = List (^) of String
|bufftype=Wikitext (size=1000)
 
  +
| debuffs = List (^) of String
 
}}<!--
 
}}<!--
   

Version du 2 janvier 2021 à 23:59

Ce modèle définit la table « Items ». Afficher la table.

Ce modèle est considéré comme prêt pour i18n, signifiant qu'il est facile à régionaliser pour les différentes langues. Veuillez regarder i18n & l10n pour les modèles (en) pour en apprendre plus.
Voir Modèle:Item infobox/l10n pour la localisation de ce modèle.
Ce modèle utilise Lua.
Ce modèle utilise Module:Iteminfo, un script écrit dans le language de programmation Lua. Pour en apprendre plus à propos Lua, visiter Terraria Wiki:Lua (en).
Template-info Documentation La documentation ci-dessous est transcluse de Modèle:Item infobox/doc. (modifier | historique)

This template is used for displaying the infobox for an item. It is one of the most important and most powerful infobox templates.

Usage

While the template is extremely versatile, its main functionality is to display the standard infobox.

The data which is to be displayed can be manually entered when calling the template, but thanks to {{iteminfo}}, the vast majority of data is generated automatically. To enable automatic data, use the parameter auto and set it to the ID of the item (alternatively: auto=yes and either id=<item ID>, name=<item name>, or nothing else – the latter two methods will cause the template to automatically generate the ID using {{itemNameFromId}}, with the last method using the page title for name reference). This way, all relevant item parameters are set automatically. See the table below for affected parameters. However, they can still be overridden and manually entered parameters always take precedence over the automatic ones.

Basic parameters

Notes:
  • The dollar sign ($) is used to signify that the word after it is the name of a template parameter.
  • All parameters which have a default value listed can usually be omitted. Note that this does not mean that parameters which do not have a default value listed should always be filled in.
Parameter Description Auto Example Default value
(if omitted)
Note
{{item infobox

Box-related parameters

Box-related parameters
| boxwidth Width of the infobox 27em 21em Number with unit. Default is 21em or stretching to image width
| float Position of the infobox left right
| css
 or
| style
CSS style affecting the entire infobox Any width or float properties defined here will override the template's $boxwidth and $float parameters, respectively.
| auto Enables automatic data 465 Can also be yes (see text above).
| id ID of the item ✔️ 465 The automatic data gathering for $tooltip is based on this.
| name Name of the item ✔️ Wood Page name Will be displayed as heading of the infobox.
| lname Localized name of the item ✔️ Legno
(Italian for "Wood")
{{tr|$name}} Will be displayed as heading of the infobox; only to be used if $name is not existent in the {{tr}} database of the specific language.
| showenglishname Display of English name of this item yes
no
Defaults to no for languages that have an in-game translation (en, de (allemand), es (espagnol), fr (français), it (italien), pl (polonais), pt (portugais), ru (russe), zh (chinois)), and to yes for all other languages.
| namesub Name sub-heading Additional information directly underneath the title of the infobox; rarely useful for item infoboxes.

Image-related parameters

Image-related parameters
| imagealt Complete custom control over the entire image display [[File:Wood.png]] Overrides all image parameters in this parameter category (except for $imagebreak).

If intending to manually reproduce the gray border that the infobox places automatically between $image, $imageold. etc., a simple <hr/> should not be used. Instead, enclose the different images that should be separated in <li> tags (except for the first image). The $imagebreak parameter will also still work as expected in this case and create vertical breaks at the separators. See Sensors for a simple example and Fish Bowls for a more elaborate, fully customized example.

| ext File extension of $image gif png
| image Main image of the inventory icon or equipped item/set Wood.png $name.$ext
| imageold Variant image of the older versions Compass (old).png $name (old) Default value: First checks for the .gif and then for the .png. Due to the way the automatic image detection is handled internally, it will likely fail on items whose name contains a dot (e.g. S.D.M.G.). It is necessary to explicitly specify the image in that case. (This applies to all image-related parameters.)
| imageplaced Image of the placed item Wood (placed).png $name (placed)
| imageequipped Image of the equipped item/set Shackle (equipped).png $name (equipped)
| imagefemale Image of the female equipped item/set Robe (equipped) female.png $name female.$ext
| imageoldalt Complete custom control over the "old" image display [[File:Compass (old).png]]
| imageplacedalt Complete custom control over the "placed" image display [[File:Wood (placed).png]]
| imageequippedalt Complete custom control over the "equipped" image display [[File:Shackle (equipped).png]]
| imagebreak Arranges multiple images in rows rather than in columns yes Causes the main/"old", "placed", "equipped", and "female" images to all take up a separate row, with small horizontal bars in between (example: Book). Note that the main and "old" images will always be displayed in the same row. Also note that this effect is enabled regardless of what $imagebreak is set to (i.e, setting it to no will also enable it – so refrain from doing that).
| imagemode Controls image selection placed/equipped full If set to full (which will only be the default for the infobox $view), the template will attempt to display all different types of images mentioned above. If not set to full, it will only attempt to display the main image (which will be the case for other $views by default, e.g. table), for performance reasons. It is possible, however, to enable (attempted) display of certain image types even if the mode is not full: Set the parameter to old, placed, equipped, or any combination of these three to cause the template to fetch these images as well.
| imageinfo Prevents the internal usage of {{image}} no Setting it to no will cause the template to use the standard [[File:]] syntax instead of {{image}}. {{image}} will increase the expensive function count, so if there are many item infoboxes on one page, the expensive function count limit may be exceeded. Using imageinfo=no can reduce the count to avoid exceeding it. In the vast majority of cases, this is not necessary.

Statistics-related parameters

Statistics-related parameters
| autoswing Auto-use capability ✔️ yes Displays Autoswing, Autofire, or Auto-use in the top-right corner of the infobox. Hover text is determined by $damagetype ("Autoswing" for melee, "Autofire" for ranged and magic, and "Auto-use" for anything else).
| stack Maximum possible stack size ✔️[1] 99 1 Maximum quantity of this item that can be stacked in a single inventory slot.
| pick Pickaxe power ✔️[1] 100 Without percentage sign (%), unless more complex wikitext is used. If any of the three parameters is used, all three symbols will always be displayed: Pickaxe icon Hammer icon Axe icon
| hammer Hammer power ✔️[1] 75
| axe Axe power ✔️[1] 50
| pickreq Required pickaxe power for destroying 150 Without percentage sign (%)!
| hammerreq Required hammer power for destroying 80 Without percentage sign (%)! Prints the following behind it: "(seulement en Hardmode)"
| type
 (deprecated:
| type2)
Classification and categorization ✔️ Weapon/Tool Broad classifications like "Weapon", "Tool", "Furniture", etc. Separate multiple values with a slash (/). Many types, such as "Crafting material", will be added automatically.
| fishing Fishing power ✔️[1] Without percentage sign (%)!
| bait Bait power ✔️ Without percentage sign (%)!
| damage Damage ✔️[1]
| damagetype Damage type ✔️[1] Possible values: melee, ranged, magic, summon, and throwing. The infobox will automatically categorize the page in the appropriate weapon type category, but only for the automatically generated damage type. For any additional, manually added damage type, a |listcat=<damage type> weapons will be necessary.
| knockback Knockback ✔️[1] @@@@ / {{kb|5}} If more than one value is needed, wrap the individual values with {{kb}} in order to ensure correct styling. The @@@@ string does not need {{}}.
| defense Defense ✔️[1]
| tileboost Tile range boost ✔️
| bonus Miscellaneous bonuses
| setbonus Set bonus ✔️[1] For armor sets, where $type contains Set. Note that because this parameter is only sensible for set item infoboxes – which don't use $auto since it doesn't work with sets – its data will always be generated automatically (instead of only when $auto is set). Set this parameter to an empty value to hide the automatically generated set bonus.
| placeable Placeable ✔️ yes no
| width Width when placed In tiles. Defaults to 1 for blocks.
| height Height when placed
| consumable Consumable ✔️ True if the item leaves the player's inventory with Utiliser / Attaquer; includes placeable items. It is found in the game's source code.
| mana Mana cost ✔️[1]
| mheal Mana restoration ✔️[1]
| hheal Health restoration ✔️[1]
| critical Critical strike chance ✔️[1] 11 Without percentage sign (%), unless more complex wikitext is used. If no value is entered and the main $type is Weapon, a default value of 4 will be used.
| body slot Body slot ✔️
| use Use time ✔️[1] @@@@ / {{ut|30}} If more than one value is needed, wrap the individual values with {{ut}} in order to ensure correct styling. The @@@@ string does not need {{}}.
| velocity
 (deprecated:
| sspeed)
Velocity ✔️[1]
| toolspeed Tool speed ✔️[1]
| tooltip Tooltip ✔️[1]
| rare Rarity ✔️[1] @@@@ / {{rare|0}} Use the {{rare}} template.
| research Research required ✔️ 5
| buy Buy value ✔️[1] Enter the value using the coin template ({{coin}}). If using $auto, use buy=y/yes/true/show to enable display of automatic buy price (disabled by default, since many items that can be sold cannot be bought). Alternatively, add buy, buyable, or vendor to $tags.
| sell Sell value ✔️[1] Also enter the value using the coin template.
| value Value ✔️ Mostly used internally. Will not be displayed directly, but serves as the base for $buy and $sell. It can be used to suppress buy and sell value display entirely by setting it to a blank value (|value=).

Buff- & debuff-related parameters

Buff- & debuff-related parameters
| buff Buff provided ✔️ Name of the buff. As a shortcut for $buffduration and $buffchance, they can be appended to this value, separated with a slash: | buff = <name> / <duration> / <chance>. Chance may also be omitted.
| idbuff Buff ID ✔️
| bufflink Buff link target ✔️
| bufftip Buff tooltip ✔️
| buffchance Buff chance ✔️
| buffduration Buff duration ✔️[1] Enter the value using the {{duration}} template.
| buff<n> Additional buff provided Can be continued nearly infinitely, e.g. buff2, buff3, etc.
| idbuff<n> Buff ID
| bufflink<n> Buff link target
| bufftip<n> Buff tooltip
| buffchance<n> Buff chance
| buffduration<n> Buff duration
| debuff Debuff inflicted ✔️ Name of the debuff. As a shortcut for $debuffduration and $debuffchance, they can be appended to this value, separated with a slash: | debuff = <name> / <duration> / <chance>. Chance may also be omitted.
| iddebuff Debuff ID ✔️
| debufflink Debuff link target ✔️
| debufftip Debuff tooltip ✔️
| debuffchance Debuff chance ✔️
| debuffduration Debuff duration ✔️[1] Enter the value using the {{duration}} template.
| debuff<n> Additional debuff provided Can be continued nearly infinitely, e.g. debuff2, debuff3, etc.
| iddebuff<n> Debuff ID
| debufflink<n> Debuff link target
| debufftip<n> Debuff tooltip
| debuffchance<n> Debuff chance
| debuffduration<n> Debuff duration

Sound-related parameters

Sound-related parameters
| sounduse Use sound effect ✔️ Item_1.wav Can be a comma-separated list for multiple sounds. Caption is "Utilisation".
| sound1 Custom additional sound effect Can be a comma-separated list for multiple sounds.
| soundcaption1 Caption for the sound effect
| sound2 Custom additional sound effect Can be a comma-separated list for multiple sounds.
| soundcaption2 Caption for the sound effect
| sound<n> Custom additional sound effect Can be continued nearly infinitely. Sounds will only be displayed if there is a sound<n> parameter with a corresponding soundcaption<n> parameter.
| soundcaption<n> Caption for the sound effect

Mount-related parameter

Mount-related parameter
| idmount Mount ID ✔️

Projectile-related parameters

Projectile-related parameters
| idprojectile
 (deprecated:
| shoot)
Projectile ID ✔️ Can be a comma-separated list for multiple IDs.
| projectilename Projectile name ✔️
| projectileimage Projectile image ✔️
| projectileblock Projectile images arrangement Operates similarly to $imagebreak.

ID-related parameters

ID-related parameters
| showids Display of ID section no ID section is not hidden by default.
| idshow Vanity item ID
| idtile Tile ID ✔️
| idtileshow Vanity tile ID
| idtilesub Tile sub-ID ✔️ Internally known as placeStyle in Terraria.
| idwall Wall ID ✔️
| idarmor Armor ID ✔️
| idbuffshow Vanity buff ID 170–172 The values of these parameters require to be escaped, i.e., wikitext like templates or parser functions will need to be wrapped with <esc> and </esc>.
| idbuffshow<n> Vanity buff ID 1007 <esc>{{3DS}}</esc>
| iddebuffshow Vanity debuff ID
| iddebuffshow<n> Vanity debuff ID

Back-end-related parameters

Back-end-related parameters
| cate Toggles categorization no Set to yes to force categorization when it is disabled by default (on non-mainspace pages). Set to no to disable categorization.
| listexclude Toggles categorization yes no Set to yes to disable categorization. Overrides cate=yes, but not cate=no.
| cargo Toggles cargo data storage no Set to force to force cargo data storage when it is disabled by default (on non-mainspace pages). Set to no to disable cargo data storage. Note that setting it to anything else (e.g. yes) also disables cargo data storage, so please stick to the unambiguous no.
| listcat Categorization ✔️ Supplemental category names to include the current item in a DPL list, e.g. arrows causes the item to display at the Arrows page. Separate multiple categories with a slash character (/). The following categories will be added automatically:
| tag
 or
| tags
Categorization ✔️ Supplemental category names to appropriately categorize the item. Can contain any of the following (separate multiple with a slash character (/):
  • buy/buyable/vendor (implies buy=yes)
    • vendor:<NPC name>
  • hardmodeonly/hardmode (implies hardmode=yes)
  • allversions (implies allversions=yes)
  • dd2 (means that this item is to be purchased with Médaille de défenseur.)
  • drop (implies listcat=drop items)
  • loot (implies listcat=loot items)
  • plunder (implies listcat=plunder items)
    • plunder:<location>
  • fished (implies listcat=fished items)
  • unobtainable (implies listcat=unobtainable items)
  • developer (implies listcat=developer items).
  • storage (implies listcat=storage items).
  • informational (implies listcat=informational items).
  • quest rewards (implies listcat=quest rewards).
  • light source (implies listcat=light source items).
  • novelty (implies listcat=novelty items).
  • mechanism (implies listcat=mechanism items).
  • potion ingredients (implies listcat=potion ingredients).
  • bag loot/bagloot (implies listcat=bag loot items).
  • treasure bag loot (implies listcat=Treasure Bag loot items).
  • minion (implies type=weapon and listcat=minion summon items).
  • sentry (implies type=weapon and listcat=sentry summon items).

All other values will have no effect. All tags will be stored to cargo for querying.

| allversions Platform version availability ✔️ Set to yes to assert that the item is available on all platforms of Terraria. This is only to be used if no {{exclusive}} banner is on the page. If omitted and if $tags does not contain allversions, it will be detected automatically based on the result of {{eversions|<item name>}} (even though $auto might not be set!). Categorizes the page in all five version content categories (with the exception of Japanese console content), if yes is determined.
| hardmode Hardmode-exclusivity ✔️ yes Set to yes to assert that the item is not available in pre-Hardmode, but only becomes available in Hardmode. Categorizes the page in Category:Objets obtenables uniquement en Hardmode.

View-related parameters

By default, an item infobox is displayed in the standard infobox style, a boxed, table-like listing of stats on the right of the article text. It is possible to change the display format (called "view"), however – there are four other views available: custom, item, table, and void (additionally test). They can be selected via the $view (aliases: $mode, $output) parameter. Each view has an own subpage which contains the code for the respective output.

View Description Subpage
custom Completely custom output. /customView
infobox
(default)
Standard infobox-style output. /infoboxView
item Displays the item as formatted by {{item}}. /itemView
table Displays an entire table row (including the row separator, |-). /tableView
void Does not display anything. This is useful when it is necessary to store item information to the Cargo database, but an own infobox for the item is unwanted (e.g. on group pages, where there is a main infobox for all items of the group). /voidView

Some views enable additional, view-exclusive parameters:

Parameter Description Example Default value
(if omitted)
Note
{{item infobox

Custom view

Custom view
| template Name of the formatting template This parameter is required when using the custom view. It is to be set to the name of the template that contains the custom code for the output. (For instance, |view=custom|template=item infobox/infoboxView could also be used for a standard infobox style, because {{item infobox/infoboxView}} contains the code for the infobox output.)
| extargs Additional custom parameters Enable additional, custom parameters for the {{}} call that are handled by the formatting template. Separate multiple parameter names with a slash character (/). This parameter should only be used if the parameters specified in it are used in the {{}} call.

Item view

Item view
(all {{item}} parameters) The following additional {{item}} parameters will be processed as if the template itself was called:
  • mode
  • nolink
  • link
  • wrap
  • icons
  • note
  • note2
  • showid
  • class
  • css
  • t

See {{item}} for documentation.

Table view

Table view
| cols Columns to display item2cells/sell This parameter defines which columns/cells are to be displayed in the resulting table row. The content and formatting of those cells is handled by the respective subpage of Template:Item infobox/tableView, by default. The following values are predefined:

However, it is also possible to include another page name, e.g. Moss/Placed on bricks (via |cols=:Moss/Placed on bricks) for a custom formatting for that cell.

In addition, it is possible to include columns for which the content is set in the same {{}} call. These column names begin with col: (e.g. |cols=col:notes) and the content can be set in the parameter of the same name (i.e. |col:notes=This is the note).

| colsep Separator for $cols \ / Specify the character that separates the column names in $cols. This is useful when using column names that include slashes, since the default separator is a slash and would thus treat that column name as two different columns.
| extargs Additional custom parameters Enable additional, custom parameters for the {{}} call that are handled by the column formatting page. Separate multiple parameter names with a slash character (/). For instance, the item2cells column formatting page is able to process three exclusive parameters, $anchor, $nolink, and $rowspan. These parameters can be specified in the {{}} call to influence the formatting carried out by item2cells, but they will have no effect unless explicitly specified via |extargs=anchor/nolink/rowspan. This parameter should only be used if the parameters specified in it are used in the {{}} call.
  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 1,14 1,15 1,16 1,17 1,18 1,19 1,20 1,21 et 1,22 Any occurrence of the string @@@@ in the parameter value will be replaced by the automatically generated data. This can be used to mix automatic and manual data.

Options

This template supports options through {{options}} template. All valid options are listed below, see {{options}} for usage and other infomation.

See Template:item infobox/initOptions for the initial options setting of this template.

NameAliasInitial ValueValue Mapping[1]Note
viewoutput
mode
infobox
cols(empty)
colsep(empty)
extargs(empty)
imagemode(empty)
imageinfo(empty)y(empty)
yes(empty)
on(empty)
non
offn
autoimageold(empty)y(empty)
yes(empty)
on(empty)
non
offn
autoimageplaced(empty)y(empty)
yes(empty)
on(empty)
non
offn
autoimageequipped(empty)y(empty)
yes(empty)
on(empty)
non
offn
extold(empty)
extplaced(empty)
extequipped(empty)
item2cell:anchor(empty)yesy
ony
n(empty)
no(empty)
off(empty)
item2cell:nolink(empty)yesy
ony
n(empty)
no(empty)
off(empty)
  1. Values with mapping will be stored and loaded as mapped value. Other values without mapping will be stored and loaded as-is.

Subpages

There are numerous supplemental subpages which are mainly used for formatting certain data:

See also