Terraria Wiki
Terraria Wiki
1735
страниц
(Отмена правки 89050, сделанной Alex Great (обсуждение))
Метка: отмена
(обновление данных)
 
(не показано 40 промежуточных версий этого же участника)
Строка 1: Строка 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|{{options/get|item infobox|view}}}}}}}}}}}}}}}<!--
 
-->{{#switch:{{#var:viewname}}<!--
 
-->{{#switch:{{#var:viewname}}<!--
 
-->|infobox=<!--
 
-->|infobox=<!--
-->{{#arraydefine:extargs|float/css/style/boxwidth/imagebreak/showids/idshow/idbuffshow/idtileshow/projectileblock/projectilename/projectileimage/showenglishname/{{{extargs|{{item infobox/options|get|extargs}}}}}|/}}<!--
+
-->{{#arraydefine:extargs|float/css/style/boxwidth/imagebreak/showids/idshow/idtileshow/projectileblock/projectilename/projectileimage/showenglishname/{{{extargs|{{options/get|item infobox|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|{{options/get|item infobox|extargs}}}}}|/}}<!--
  +
-->{{#arraydefine:ii:table:cols|{{{cols|{{options/get|item infobox|cols}}}}}|{{{colsep|{{#or:{{options/get|item infobox|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|{{options/get|item infobox|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|{{options/get|item infobox|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|{{options/get|item infobox|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|{{options/get|item infobox|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:shopCustomPrice|}}<!--
 
-->{{#vardefine:ii:idtile|}}<!--
 
-->{{#vardefine:ii:idtilesub|}}<!--
 
-->{{#vardefine:ii:idwall|}}<!--
 
-->{{#vardefine:ii:idarmor|}}<!--
 
-->{{#vardefine:ii:idmount|}}<!--
 
-->{{#vardefine:ii:idprojectile|}}<!--
 
-->{{#vardefine:ii:consumable|}}<!--
 
-->{{#vardefine:ii:name|}}<!--
 
-->{{#vardefine:ii:lname|}}<!--
 
-->{{#vardefine:ii:internalName|}}<!--
 
-->{{#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|}}<!--
 
-->{{#vardefine:ii:material|}}<!--
 
-->{{#vardefine:ii:craftable|}}<!--
 
-->{{#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}}}}<!--
 
  +
Note: All "#lst*" parser functions ([[gphelp:Extension:ParserPower/List handling functions]]) will trim whitespace and discard empty elements.
-->{{#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}}<!--
 
  +
+++++++++++++ 1. Set types, listcats, and tags from parameter input +++++++++++++
-->{{#arraysearch:ii:listcats|broadswords|0|{{#arrayunion:ii:listcats|z|ii:listcats}}}}<!--
 
  +
-->{{#arraysearch:ii:listcats|shortswords|0|{{#arrayunion:ii:listcats|z|ii:listcats}}}}<!--
 
  +
// types: separated with "/".
Explosives -> weapon
 
-->{{#arraysearch:ii:listcats|explosives|0|{{#arraydefine:z|weapon}}{{#arrayunion:ii:types|z|ii:types}}}}<!--
+
-->{{#vardefine:ii:types|{{lcfirst:{{{type|}}}}}/{{lcfirst:{{{type2|}}}}}}}<!--
  +
// listcats: separated with "/".
summon weapons:
 
  +
-->{{#vardefine:ii:listcats|{{{listcat|}}}/{{{listcat2|}}}/{{{listcat3|}}}/{{{listcat4|}}}/{{{listcat5|}}}}}<!--
-->{{#arraysearch:ii:tags|minion|0|<!--
 
  +
// tags: separated with "/".
-->{{#arraysearch:ii:types|set|0|<!-- nothing; exclude armor sets -->|<!--
 
-->{{#arraydefine:z|weapon}}{{#arrayunion:ii:types|z|ii:types}}<!--
+
-->{{#vardefine:ii:tags|{{{tags|{{{tag|}}}}}}}}<!--
  +
-->{{#arraydefine:z|minion summon items}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
  +
// 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}}}}<!--
  +
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->{{#arraysearch:ii:tags|sentry|0|<!--
 
  +
-->{{#arraysearch:ii:types|set|0|<!-- nothing; exclude armor sets -->|<!--
 
  +
+++++++++++++ 2. Fetch automatic data +++++++++++++
-->{{#arraydefine:z|weapon}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
  +
-->{{#arraydefine:z|sentry summon items}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
  +
-->{{#vardefine:ii:auto_id|{{#if:{{{auto|}}}|<!--
  +
-->{{#if:{{isNumber|{{{auto|}}}}}|<!--
  +
-->{{{auto|}}}<!-- $auto is number, use it as-is
  +
-->|<!--
  +
-->{{{id|{{ItemIdFromName|{{{name|{{#var:itemnamefrompagename}}}}}}}}}}<!-- $id -> idFromName
 
-->}}<!--
 
-->}}<!--
-->}}<!--
+
-->}}}}<!--
  +
-->{{#vardefine:ii:auto_id|{{#var:ii:auto_id|0}}}}<!-- default to 0 if $auto is empty/unset or $id is empty/unset or idFromName failed
  +
-->{{#invoke:Iteminfo|getInfo|prefix=ii:info:|id={{#var:ii:auto_id}}}}<!-- fetch data or reset the data-filled vars
   
  +
//==auto vars==
 
  +
+++++++++++++ 3. Process auto data, overriding with manual input if necessary +++++++++++++
-->{{#if:{{{auto|}}}|<!--
 
  +
-->{{#vardefine:__auto_id|0}}<!-- 0 = reset/default
 
  +
---- id and name ----
-->{{#vardefine:__auto_id|<!--
 
  +
-->{{#vardefine:ii:id|{{{id|{{#ifexpr:{{#dplvar:ii:info:type}}|{{#dplvar:ii:info:type}}}}}}}}}<!--
-->{{#iferror:{{#expr:1+{{{auto|}}}}}|<!-- if not is_number($auto)
 
-->{{{id|{{ItemIdFromName|{{{name|{{#var:itemnamefrompagename}}}}}}}}}}<!-- $id -> idFromName
+
-->{{#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}}}}<!--
-->{{{auto|}}}<!-- //$auto is number.
 
-->}}<!--
+
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#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}}}}<!--
 
  +
---- pick-/hammerreq ----
-->{{#ifexpr:{{#var:ii:ammo}}|<!-- Ammo:
 
  +
-->{{#vardefine:ii:pickreq|{{{pickreq|}}}}}<!--
//add "Ammunition" to type.
 
-->{{#arraydefine:z|ammunition}}{{#arrayunion:ii:types|ii:types|z}}<!--
+
-->{{#vardefine:ii:hammerreq|{{{hammerreq|}}}}}<!--
  +
--------
//add ammo type to listcat: (by AmmoID )
 
  +
-->{{#arraydefine:z|{{#switch:{{#var:ii:ammo}}<!--
 
  +
---- ammo type ----
-->|40=arrows<!--
 
  +
-->{{#vardefine:ii:ammo|{{#dplvar:ii:info:ammo}}}}<!--
-->|71=coins<!--
 
  +
-->{{#ifexpr:{{#var:ii:ammo}}|<!-- Ammo type/cate
-->|97=bullets<!--
 
  +
// add "Ammunition" to type.
-->|169=sands<!--
 
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|ammunition}}}}<!--
-->|283=darts<!--
 
  +
// add ammo type to listcat: (by AmmoID)
-->|771=rockets<!--
 
  +
-->{{#vardefine:ii:listcats|{{#lstapp:{{#var:ii:listcats}}|/|{{#switch:{{#var:ii:ammo}}<!--
-->|780=solutions<!--
 
-->|931=flares<!--
 
-->}}}}<!--
 
-->{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
-->}}<!--
 
// use ammo type
 
-->{{#vardefine:ii:useammo|{{#switch:{{#dplvar:ii:info:useAmmo}}<!--
 
-->|23=gel<!--
 
 
-->|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:internalName|{{#dplvar:ii:info:internalName}}}}<!--
 
  +
-->|353=ale<!--
-->{{#vardefine:ii:autoswing|{{#dplvar:ii:info:autoReuse}}}}<!--
 
  +
-->|771=rockets<!--
-->{{#vardefine:ii:stack|{{#dplvar:ii:info:maxStack}}}}<!--
 
  +
-->|780=solutions<!--
-->{{#vardefine:ii:hammer|{{#dplvar:ii:info:hammer}}}}<!--
 
  +
-->|931=flares<!--
-->{{#vardefine:ii:pick|{{#dplvar:ii:info:pick}}}}<!--
 
  +
-->|949=snowball<!--
-->{{#vardefine:ii:axe|{{#expr:{{#dplvar:ii:info:axe}}*5}}}}<!--
 
  +
-->|1261=styngerBolt<!--
-->{{#vardefine:ii:fishing|{{#dplvar:ii:info:fishingPole}}}}<!--
 
  +
-->|1783=candyCorn<!--
-->{{#vardefine:ii:bait|{{#dplvar:ii:info:bait}}}}<!--
 
  +
-->|1785=jackOLantern<!--
-->{{#ifexpr:{{#var:ii:bait|0}}|<!-- bait?
 
  +
-->|1836=stake<!--
-->{{#arraydefine:z|bait}}{{#arrayunion:ii:types|ii:types|z}}<!--
 
  +
-->|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:{{#or:{{#dplvar:ii:info:hairDye}}|-1}}>-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|{{#dplvar:ii:info:fishingPole}}}}<!--
  +
-->{{#ifeq:{{{fishing|-unset}}}|{{{fishing|unset-}}}|<!-- allow "|fishing=" to suppress fishing power display
  +
-->{{#vardefine:ii:fishing|{{#rreplace:{{{fishing|}}}|@@@@|{{percent|{{#var:ii:fishing}}%}}}}}}<!--
  +
-->}}<!--
  +
-->{{#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:(0{{#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:0{{#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:
-->}}<!--
 
-->{{#if:{{#dplvar:ii:info:cartTrack}}|<!-- cart track
+
-->{{#vardefine:ii:damagetype|<!--
  +
-->{{#if:{{{damagetype|}}}|<!--
-->{{#arraydefine:z|Minecart track items}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
  +
-->{{#rreplace:{{{damagetype|}}}|@@@@|{{l10n|item_infobox|damagetype:{{lc:{{#var:ii:damagetype}}}}}}}}<!--
-->}}<!--
 
  +
-->|<!--
-->{{#ifexpr:{{#dplvar:ii:info:dye}}|<!-- is dye?
 
-->{{#arraydefine:z|dye}}{{#arrayunion:ii:types|z|ii:types}}<!--
+
-->{{#var:ii:damagetype}}<!--
-->}}<!--
 
-->{{#ifexpr:{{#dplvar:ii:info:hairDye}}>-1|<!-- is hair dye?
 
-->{{#arraydefine:z|hair dye}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->}}<!--
 
-->{{#if:{{#dplvar:ii:info:string}}|<!-- string?
 
-->{{#arraydefine:z|string}}{{#arrayunion:ii:tags|z|ii:tags}}<!--
 
-->}}<!--
 
-->{{#if:{{#dplvar:ii:info:vanity}}|<!-- vanity?
 
-->{{#arraydefine:z|vanity}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
-->}}<!--
 
-->{{#if:{{#dplvar:ii:info:mech}}|<!-- mech?
 
-->{{#arraydefine:z|mechanism}}{{#arrayunion:ii:types|ii:types|z}}<!--
 
-->}}<!--
 
-->{{#ifeq:{{#invoke:Iteminfo/idSets|value|IsFood|{{#var:ii:id}}}}|true|<!-- food?
 
-->{{#arraydefine:z|food}}{{#arrayunion:ii:types|ii:types|z}}<!--
 
-->}}<!--
 
-->{{#ifeq:{{#invoke:Iteminfo/idSets|value|IsAKite|{{#var:ii:id}}}}|true|<!-- IsAKite ?
 
-->{{#arraydefine:z|kite}}{{#arrayunion:ii:types|ii:types|z}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
  +
--------
   
  +
---- research ----
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}})|<!--
+
-->{{#vardefine:ii:sacrifices|{{{research|{{#ifexpr:0{{#dplvar:ii:info:sacrifices}}>0|{{#dplvar:ii:info:sacrifices}}}}}}}}}<!--
  +
--------
-->{{#arraydefine:z|tool}}{{#arrayunion:ii:types|z|ii:types}}<!--
 
  +
//hammer & hamaxe
 
  +
---- knockback ----
-->{{#ifexpr:{{#dplvar:ii:info:hammer}}|<!--
 
  +
// use kb if autokb>0, always use kb for all axe/hammer/pick tools, always use kb for all weapons
-->{{#ifexpr:{{#dplvar:ii:info:axe}}<!--
 
  +
-->{{#vardefine:ii:knockback|<!--
-->|{{#arraydefine:z|hamaxes}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
  +
-->{{#ifexpr:(0{{#dplvar:ii:info:knockBack}}>0) or 0{{#dplvar:ii:info:axe}} or 0{{#dplvar:ii:info:hammer}} or 0{{#dplvar:ii:info:pick}} or 0{{#lstind:weapon|{{#var:ii:types}}|/}}|{{#dplvar:ii:info:knockBack}}}}<!--
-->|{{#arraydefine:z|hammers}}{{#arrayunion:ii:listcats|z|ii:listcats}}<!--
 
  +
-->}}<!--
  +
-->{{#ifeq:{{{knockback|-unset}}}|{{{knockback|unset-}}}|<!-- allow "|knockback=" to suppress knockback display
  +
-->{{#vardefine:ii:knockback|{{#rreplace:{{{knockback|}}}|@@@@|{{knockback|{{#var:ii:knockback}}|full=y}}}}}}<!--
  +
-->}}<!--
  +
--------
  +
  +
---- defense ----
  +
-->{{#vardefine:ii:defense|{{#ifexpr:0{{#dplvar:ii:info:defense}}>0|<!--
  +
-->{{#dplvar:ii:info:defense}}<!--
  +
-->|<!--
  +
-->{{#if:{{#var:ii:isArmorSet}}|{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}||<!-- auto defense for non-vanity armor sets
  +
-->{{#ifexpr:{{#explode:{{#explode:{{getSetInfo|{{#var:ii:name}}|defense|raw=y}}|₪}}|¤|1}}|{{getSetInfo|{{#var:ii:name}}|defense}}}}<!--
  +
-->}}}}<!--
  +
-->}}}}<!--
  +
-->{{#if:{{{defense|}}}|<!--
  +
-->{{#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:0{{#dplvar:ii:info:mana}}>0|{{#dplvar:ii:info:mana}}}}}}<!--
  +
-->{{#if:{{{mana|}}}|<!--
  +
-->{{#vardefine:ii:mana|{{#rreplace:{{{mana|}}}|@@@@|{{#var:ii:mana}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:mheal|{{#ifexpr:0{{#dplvar:ii:info:healMana}}>0|{{#dplvar:ii:info:healMana}}}}}}<!--
  +
-->{{#if:{{{mheal|}}}|<!--
  +
-->{{#vardefine:ii:mheal|{{#rreplace:{{{mheal|}}}|@@@@|{{#var:ii:healMana}}}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:hheal|{{#ifexpr:0{{#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:0{{#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:0{{#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:(0{{#dplvar:ii:info:useAnimation}}<100) and (0{{#dplvar:ii:info:useTime}}<100) and 0{{#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:0{{#dplvar:ii:info:buffType}}>0|<!--
  +
-->{{#dplvar:ii:info:buffType}}<!--
  +
-->|<!--
  +
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:mountType}}|-1}}>-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:0{{#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}}<!-- falback for autobuff (this var is only already set to something if j==-1)
  +
-->}}}}}}}<!--
  +
-->{{#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}}}}<!--
  +
-->}}<!--
  +
// de-/buff vanity id
  +
-->{{#vardefine:ii:{{#var:bufftype}}{{#var:j}}:idshow|{{{id{{#var:bufftype}}show{{#var:k}}|}}}}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#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:0{{#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:{{#explode:{{getSetInfo|{{#var:ii:name}}|sell|raw=y}}|₪}}|¤|1}}|{{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:0{{#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:{{#replace:{{#explode:{{#explode:{{getSetInfo|{{#var:ii:name}}|buy|raw=y}}|₪}}|¤|1}}|_dm_|}}|<!--
  +
-->{{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
 
   
  +
---- ids ----
-->{{#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.
+
-->{{#vardefine:ii:idtile|{{{idtile|<!--
-->{{#vardefine:ii:shopCustomPrice|{{#dplvar:ii:info:shopCustomPrice}}}}<!--dm
+
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:createTile}}|-1}}>-1|{{#dplvar:ii:info:createTile}}}}<!--
  +
-->}}}}}<!--
-->{{#ifexpr:{{#dplvar:ii:info:value}}>0|<!--
 
-->{{#vardefine:ii:sell|{{#expr:floor({{#expr:{{#dplvar:ii:info:value}}/5}})}}}}<!-- divide by 5, round down, in cc.
+
-->{{#vardefine:ii:idtilesub|{{#if:{{{idtile|}}}||{{{idtilesub|<!--
-->{{#ifexpr:{{#var:ii:sell}}<1|{{#vardefine:ii:sell|1}}}}<!-- at least 1cc
+
-->{{#ifexpr:({{#or:{{#dplvar:ii:info:createTile}}|-1}}>-1) and (0{{#dplvar:ii:info:placeStyle}}>0)|{{#expr:{{#dplvar:ii:info:placeStyle}}+1}}}}<!--
  +
-->}}}}}}}<!--
  +
-->{{#vardefine:ii:idwall|{{{idwall|<!--
  +
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:createWall}}|-1}}>-1|<!-- item is a wall as defined by auto info
  +
-->{{#dplvar:ii:info:createWall}}<!--
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|wall}}}}<!-- add "wall" to types
 
-->}}<!--
 
-->}}<!--
  +
-->}}}}}<!--
-->{{#vardefine:ii:idtile|{{#ifexpr:{{#dplvar:ii:info:createTile}}>-1|{{#dplvar:ii:info:createTile}}}}}}<!--
 
-->{{#vardefine:ii:idtilesub|<!--
+
-->{{#vardefine:ii:idarmor|}}<!--
  +
-->{{#vardefine:ii:bodyslot|}}<!--
-->{{#ifexpr:({{#dplvar:ii:info:createTile}}>-1) and ({{#dplvar:ii:info:placeStyle}}>0)|{{#expr:{{#dplvar:ii:info:placeStyle}}+1}}}}<!--
 
  +
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:headSlot}}|-1}}>-1|<!-- head armor?
-->}}<!--
 
-->{{#vardefine:ii:idwall|{{#ifexpr:{{#dplvar:ii:info:createWall}}>-1|{{#dplvar:ii:info:createWall}}}}}}<!--
+
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:headSlot}}}}<!--
-->{{#if:{{#var:ii:idwall}}|<!-- wall?
+
-->{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}|<!--
-->{{#arraydefine:z|wall}}{{#arrayunion:ii:types|z|ii:types}}<!--
+
-->{{#vardefine:ii:bodyslot|social helmet}}<!-- vanity body slot
  +
-->|<!--
  +
-->{{#vardefine:ii:bodyslot|helmet}}<!-- armor body slot
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|armor}}}}<!-- add "armor" to types
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#ifexpr:{{#dplvar:ii:info:headSlot}}>-1|<!-- head armor?
 
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:headSlot}}}}<!--
+
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:bodySlot}}|-1}}>-1|<!-- body armor?
  +
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:bodySlot}}}}<!--
-->{{#arraysearch:ii:types|vanity|0|<!-- set body slot
 
-->{{#vardefine:ii:bodyslot|social helmet}}<!--
+
-->{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}|<!--
-->|<!--
+
-->{{#vardefine:ii:bodyslot|social shirt}}<!--
-->{{#vardefine:ii:bodyslot|helmet}}<!--
+
-->|<!--
-->{{#arraydefine:z|armor}}{{#arrayunion:ii:types|z|ii:types}}<!-- add "armor" to types
+
-->{{#vardefine:ii:bodyslot|shirt}}<!--
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|armor}}}}<!--
-->}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#ifexpr:{{#dplvar:ii:info:bodySlot}}>-1|<!-- body armor?
 
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:bodySlot}}}}<!--
+
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:legSlot}}|-1}}>-1|<!-- legs armor?
-->{{#arraysearch:ii:types|vanity|0|<!--
+
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:legSlot}}}}<!--
-->{{#vardefine:ii:bodyslot|social shirt}}<!--
+
-->{{#if:{{#lstind:vanity|{{#var:ii:types}}|/}}|<!--
-->|<!--
+
-->{{#vardefine:ii:bodyslot|social pants}}<!--
-->{{#vardefine:ii:bodyslot|shirt}}<!--
+
-->|<!--
-->{{#arraydefine:z|armor}}{{#arrayunion:ii:types|z|ii:types}}<!--
+
-->{{#vardefine:ii:bodyslot|pants}}<!--
  +
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|armor}}}}<!--
-->}}<!--
 
 
-->}}<!--
 
-->}}<!--
  +
-->}}<!--
-->{{#ifexpr:{{#dplvar:ii:info:legSlot}}>-1|<!-- legs armor?
 
-->{{#vardefine:ii:idarmor|{{#dplvar:ii:info:legSlot}}}}<!--
+
-->{{#vardefine:ii:idarmor|{{{idarmor|{{#var:ii:idarmor}}}}}}}<!--
-->{{#arraysearch:ii:types|vanity|0|<!--
+
-->{{#vardefine:ii:bodyslot|{{{body slot|{{#var:ii:bodyslot}}}}}}}<!--
-->{{#vardefine:ii:bodyslot|social pants}}<!--
+
-->{{#vardefine:ii:idmount|{{{idmount|<!--
  +
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:mountType}}|-1}}>-1|<!-- item is a mount summon as defined by auto info
-->|<!--
 
-->{{#vardefine:ii:bodyslot|pants}}<!--
+
-->{{#dplvar:ii:info:mountType}}<!--
-->{{#arraydefine:z|armor}}{{#arrayunion:ii:types|z|ii:types}}<!--
+
-->{{#vardefine:ii:types|{{#lstapp:{{#var:ii:types}}|/|mount summon}}}}<!-- add "mount summon" to type
  +
-->}}<!--
  +
-->}}}}}<!--
  +
-->{{#vardefine:ii:idbuff|<!--
  +
-->{{#lstmap:{{#var:ii:buffs}}|₪|@@@@|<esc><!--
  +
-->{{#var:ii:buff@@@@:mobile}}₰{{#var:ii:buff@@@@:id}}₰{{#var:ii:buff@@@@:idshow}}<!--
  +
--></esc>|₪}}<!--
  +
-->{{#listmap:intro=₪|list={{#var:ii:debuffs}}|insep=₪|token=@@@@|pattern=<esc><!--
  +
-->{{#var:ii:debuff@@@@:mobile}}₰{{#var:ii:debuff@@@@:id}}₰{{#var:ii:debuff@@@@:idshow}}<!--
  +
--></esc>|outsep=₪}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:idprojectile|{{{idprojectile|{{{shoot|{{#if:{{#var:ii:useammo}}||<!-- don't show default projectile id for items which use ammo.
  +
-->{{#ifexpr:0{{#dplvar:ii:info:shoot}}>0|{{#dplvar:ii:info:shoot}}}}<!--
  +
-->}}}}}}}}}}<!--
  +
--------
  +
  +
---- velocity ----
  +
// velocity & extraUpdate fix
  +
-->{{#vardefine:ii:velocity|<!--
  +
-->{{#ifexpr:0{{#dplvar:ii:info:shootSpeed}}>0|{{#dplvar:ii:info:shootSpeed}}}}<!--
  +
-->}}<!--
  +
-->{{#vardefine:ii:rawVelocity|{{#var:ii:velocity}}}}<!--
  +
-->{{#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:0{{#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)}}}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->}}}}<!--
-->{{#vardefine:ii:idmount|{{#ifexpr:{{#dplvar:ii:info:mountType}}>-1|{{#dplvar:ii:info:mountType}}}}}}<!--
 
  +
-->{{#ifeq:{{{velocity|{{{sspeed|-unset}}}}}}|{{{velocity|{{{sspeed|unset-}}}}}}|<!-- allow "|velocity=" to suppress velocity display
-->{{#if:{{#var:ii:idmount}}|<!-- mount
 
  +
-->{{#vardefine:ii:velocity|{{#rreplace:{{{velocity|{{{sspeed|}}}}}}|@@@@|{{#var:ii:velocity}}}}}}<!--
//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}}}}}}<!--
 
   
  +
---- tooltip ----
-->{{#vardefine:ii:material|{{#dplvar:ii:info:material}}}}<!--
 
-->{{#vardefine:ii:craftable|{{#dplvar:ii:info:craftable}}}}<!--
+
-->{{#vardefine:ii:tooltip|{{itemTooltip|{{#var:ii:auto_id}}|right={{l10n|item_infobox|rightclick}}}}}}<!--
  +
-->{{#ifeq:{{{tooltip|-unset}}}|{{{tooltip|unset-}}}|<!-- allow "|tooltip=" to suppress tooltip display
  +
-->{{#vardefine:ii:tooltip|{{#rreplace:{{{tooltip|}}}|@@@@|{{#var:ii:tooltip}}}}}}<!--
  +
-->}}<!--
  +
--------
   
  +
---- 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
 
-->}}<!--
 
-->}}<!--
  +
--------
   
  +
---- sounds ----
//== manual vars override and complete all fields. ==
 
  +
// sounds array (ii:sounds): "name1:sound1_1.wav,sound1_2.wav;name2:sound2_1.wav,sound2_2.wav; ..."
//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
 
  +
-->{{#vardefine:ii:sounds|<!--
  +
-->{{#vardefine:_tile_sound_mode|}}<!--
  +
-->{{#ifexpr:{{#or:{{#dplvar:ii:info:createWall}}|-1}}>-1|<!--
  +
-->{{#vardefine:_tile_sound_mode|wall}}<!--
  +
-->}}<!--
   
  +
// put all usesounds in the first element of the ii:sounds array
-->{{#vardefine:ii:id|{{{id|{{#var:ii:id}}}}}}}<!--
 
-->{{#vardefine:ii:name|{{{name|{{#var:ii:name|{{#var:itemnamefrompagename}}}}}}}}}<!--
+
-->{{#if:{{{sounduse|{{#dplvar:ii:info:UseSound}}}}}|<!--
-->{{#vardefine:ii:lname|{{{lname|{{tr|{{#var:ii:name|}}}}}}}}}<!--
+
-->{{l10n|item_infobox|th:use}}:{{{sounduse|{{#lstmap:{{#dplvar:ii:info:UseSound}}|,|@@|@@.wav|,}}}}};<!--
  +
-->}}<!--
-->{{#vardefine:ii:namesub|{{{namesub|{{#var:ii:namesub}}}}}}}<!--
 
-->{{#vardefine:ii:autoswing|{{{autoswing|{{#var:ii:autoswing}}}}}}}<!--
+
-->{{#if:{{{soundplaced|{{#var:_tile_sound_mode}}}}}|<!--
-->{{#vardefine:ii:stack|{{regex|{{{stack|}}}|/@@@@/|{{#var:ii:stack}}|{{{stack|{{#var:ii:stack}}}}}}}}}<!--
+
-->{{l10n|item_infobox|th:placed}}:{{{soundplaced|{{getWallInfo|{{#dplvar:ii:info:createWall}}|soundplaced}}}}};<!--
  +
-->}}<!--
-->{{#vardefine:ii:hammer|{{regex|{{{hammer|}}}|/@@@@/|{{#var:ii:hammer|0}}%|{{{hammer|{{#var:ii:hammer|0}}}}}}}}}<!--
 
-->{{#vardefine:ii:pick|{{regex|{{{pick|}}}|/@@@@/|{{#var:ii:pick|0}}%|{{{pick|{{#var:ii:pick|0}}}}}}}}}<!--
+
-->{{#if:{{{soundbreak|{{#var:_tile_sound_mode}}}}}|<!--
-->{{#vardefine:ii:axe|{{regex|{{{axe|}}}|/@@@@/|{{#var:ii:axe|0}}%|{{{axe|{{#var:ii:axe|0}}}}}}}}}<!--
+
-->{{l10n|item_infobox|th:broken}}:{{{soundbreak|{{getWallInfo|{{#dplvar:ii:info:createWall}}|soundbreak}}}}};<!--
-->{{#vardefine:ii:bait|{{{bait|{{#var:ii:bait}}}}}}}<!--
 
-->{{#vardefine:ii:fishing|{{{fishing|{{#var:ii:fishing}}}}}}}<!--
 
-->{{#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}}}}}}}<!-- "Melee" for tools.
 
 
-->}}<!--
 
-->}}<!--
-->}}}}<!--
 
// add "[damagetype] weapons" to listcat
 
-->{{#if:{{#var:ii:damagetype}}|{{#arraysearch:ii:types|weapon|0|{{#arraydefine:z|{{#var:ii:damagetype}} weapons}}{{#arrayunion:ii:listcats|ii:listcats|z}}}}}}<!--
 
-->{{#vardefine:ii:knockback|{{regex|{{{knockback|}}}|/@@@@/|{{kb|{{#var:ii:knockback}}}}|{{{knockback|{{#var:ii:knockback}}}}}}}}}<!--
 
-->{{#vardefine:ii:defense|{{#var:ii:defense|{{#arraysearch:ii:types|set|0|{{#arraysearch:ii:types|vanity|0||{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|defense|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|defense}}}}}}}}}}}}<!-- auto defense for armor sets
 
-->{{#vardefine:ii:defense|{{regex|{{{defense|}}}|/@@@@/|{{#var:ii:defense|0}}|{{{defense|{{#var:ii:defense}}}}}}}}}<!--
 
-->{{#vardefine:ii:tileboost|{{{tileboost|{{#var:ii:tileboost}}}}}}}<!--
 
-->{{#vardefine:ii:mana|{{regex|{{{mana|}}}|/@@@@/|{{#var:ii:mana}}|{{{mana|{{#var:ii:mana}}}}}}}}}<!--
 
-->{{#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:critical|{{regex|{{{critical|}}}|/@@@@/|{{#var:ii:critical}}%|{{{critical|{{#var:ii:critical|{{#if:{{#var:ii:damage}}|<!--
 
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|{{regex|{{{use|}}}|/@@@@/|{{#var:ii:use}} <small>{{use time|{{#var:ii:use}}}}</small>|{{{use|{{#var:ii:use}}}}}}}}}<!--
 
-->{{#vardefine:ii:velocity|{{{velocity|{{{sspeed|{{#var:ii:velocity}}}}}}}}}}<!--
 
-->{{#vardefine:ii:toolspeed|{{regex|{{{toolspeed|}}}|/@@@@/|{{#var:ii:toolspeed}}|{{{toolspeed|{{#var:ii:toolspeed}}}}}}}}}<!--
 
-->{{#vardefine:ii:idbuff|{{{idbuff|{{#var:ii:idbuff}}}}}}}<!--
 
-->{{#vardefine:ii:buffduration|{{regex|{{{duration|}}}|/@@@@/|{{duration|{{#var:ii:buffduration}}}}|{{{duration|{{#var:ii:buffduration}}}}}}}}}<!--in seconds.
 
-->{{#vardefine:ii:rare|{{#var:ii:rare|{{#arraysearch:ii:types|set|0|{{getSetInfo|{{#var:ii:name}}|rare|raw=y}}}}}}}}<!-- auto rarity for armor/vanity sets
 
-->{{#vardefine:ii:rare|{{regex|{{{rare|}}}|/@@@@/|{{rare|{{#var:ii:rare}}}}|{{{rare|{{#var:ii:rare}}}}}}}}}<!--
 
-->{{#vardefine:ii:idtile|{{{idtile|{{#var:ii:idtile}}}}}}}<!--
 
-->{{#vardefine:ii:idtilesub|{{{idtilesub|{{#var:ii:idtilesub}}}}}}}<!--
 
-->{{#vardefine:ii:idwall|{{{idwall|{{#var:ii:idwall}}}}}}}<!--
 
-->{{#vardefine:ii:idarmor|{{{idarmor|{{#var:ii:idarmor}}}}}}}<!--
 
-->{{#vardefine:ii:idmount|{{{idmount|{{#var:ii:idmount}}}}}}}<!--
 
-->{{#vardefine:ii:idprojectile|{{{idprojectile|{{{shoot|{{#var:ii:idprojectile}}}}}}}}}}<!--
 
-->{{#vardefine:ii:consumable|{{{consumable|{{#var:ii:consumable}}}}}}}<!--
 
-->{{#vardefine:ii:placeable|{{{placeable|{{#var:ii:placeable}}}}}}}<!--
 
-->{{#vardefine:ii:value|{{{value|{{#var:ii:value}}}}}}}<!--
 
// sell/buy
 
-->{{#arraysearch:ii:types|set|0|<!-- armor/vanity sets
 
-->{{#vardefine:ii:sell|{{regex|{{{sell|}}}|/@@@@/<!--
 
-->|{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|sell|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|sell}}}}<!--
 
-->|{{{sell|{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|sell|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|sell}}}}}}}<!--
 
-->}}}}<!--
 
-->|<!-- regular, single items
 
-->{{#vardefine:ii:sell|{{regex|{{{sell|}}}|/@@@@/<!--
 
-->|{{coin|{{#var:ii:sell|{{#ifexpr:{{#var:ii:value|0}}>0|{{#expr:floor({{#expr:{{#var:ii:value}}/5}})}}}}}}cc}}<!--
 
-->|{{{sell|{{#var:ii:sell|{{#ifexpr:{{#var:ii:value|0}}>0|{{#expr:floor({{#expr:{{#var:ii:value}}/5}})}}}}}}}}}<!--
 
-->}}}}<!--
 
 
-->}}<!--
 
-->}}<!--
-->{{#vardefine:ii:buy|<!--
+
-->{{#forargs:sound|k|v|<!--
-->{{#switch:{{lc:{{{buy|}}}}}<!--
+
-->{{#if:{{{soundcaption{{#var:k}}|}}}|<!--
-->|y|yes|true|show={{#ifexpr:{{#var:ii:value|0}}>0|{{#var:ii:value}}|{{#arraysearch:ii:types|set|0|{{getSetInfo|{{#var:ii:name}}|buy}}}}}}<!--
+
-->{{#vardefine:ii:sounds|{{#lstapp:{{#var:ii:sounds}}|;|<!--
  +
array element: "<caption n>:soundn_1.wav,soundn_2.wav, ..."
-->|#default={{#if:{{{buy|}}}|<!--
 
  +
-->{{{soundcaption{{#var:k}}|}}}:{{#var:v}}<!--
-->{{regex|{{{buy|}}}|/@@@@/|{{#ifexpr:{{#var:ii:value|0}}>0|{{coin|{{#var:ii:value}}cc}}}}|{{{buy|{{#arraysearch:ii:types|set|0|{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|buy|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|buy}}}}}}}}}}}<!--
 
-->|<!--
+
-->}}}}<!--
-->{{#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}}|{{#arraysearch:ii:types|set|0|{{#ifexpr:{{#explode:{{getSetInfo|{{#var:ii:name}}|buy|raw=y}}|§|1}}>0|{{getSetInfo|{{#var:ii:name}}|buy}}}}}}}}<!--
 
-->}}<!--
 
-->}}<!--
 
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
--------
-->{{#if:{{#var:ii:shopCustomPrice}}|<!--
 
  +
-->{{#vardefine:ii:buy|{{dm|{{#var:ii:shopCustomPrice}}}}}}<!--
 
  +
---- crafting type and listcat ----
-->|<!--
 
-->{{#if:{{#var:ii:buy}}|<!--
+
-->{{#vardefine:ii:material|{{#dplvar:ii:info:material}}}}<!--
-->{{#iferror:{{#expr:1+{{#var:ii:buy}}}}||{{#vardefine:ii:buy|{{coin|{{#var:ii:buy}}cc}}}}}}<!--
+
-->{{#vardefine:ii:craftable|{{#dplvar:ii:info:craftable}}}}<!--
  +
// crafting cate/type
-->}}<!--
 
-->}}<!--
 
-->{{#if:{{#var:ii:sell}}|<!--
 
-->{{#iferror:{{#expr:1+{{#var:ii:sell}}}}||{{#vardefine:ii:sell|{{coin|{{#var:ii:sell}}cc}}}}}}<!--
 
-->}}<!--
 
//ext buffinfo
 
-->{{#if:{{#var:ii:idbuff}}|<!--
 
-->{{#vardefine:ii:buff|{{{buff|{{getBuffInfo|{{#var:ii:idbuff}}|name}}}}}}}<!--
 
-->{{#vardefine:ii:bufftype|{{{bufftype|{{getBuffInfo|{{#var:ii:idbuff}}|type}}}}}}}<!--
 
-->{{#vardefine:ii:bufflink|{{{bufflink|{{getBuffInfo|{{#var:ii:idbuff}}|page}}}}}}}<!--
 
-->{{#vardefine:ii:bufftip|{{{bufftip|{{getBuffInfo|{{#var:ii:idbuff}}|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}}}}}}}<!--
 
-->}}<!--
 
-->{{#ifeq:{{#var:ii:bufflink}}|{{BASEPAGENAME}}|<!-- if is self link
 
//add "buffs" to cate.
 
-->{{#arraydefine:z|buffs}}{{#arrayunion:ii:listcats|ii:listcats|z}}<!--
 
-->}}<!--
 
-->{{#vardefine:ii:tooltip|{{regex|{{{tooltip|}}}|/@@@@/|{{#var:ii:tooltip}}|{{{tooltip|{{#var:ii:tooltip|{{itemTooltip|{{#var:ii:id}}}}}}}}}}}}}<!--
 
-->{{#vardefine:ii:pickreq|{{{pickreq|{{#var:ii:pickreq}}}}}}}<!--
 
-->{{#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}}}}}}}<!--
 
-->{{#vardefine:ii:bodyslot|{{{body slot|{{#var:ii:bodyslot}}}}}}}<!--
 
-->{{#vardefine:ii:bonus|{{{bonus|{{#var:ii:bonus}}}}}}}<!--
 
-->{{#vardefine:ii:setbonus|{{{setbonus|{{#arraysearch:ii:types|set|0|{{#arraysearch:ii:types|vanity|0||{{getSetInfo|{{#var:ii:name}}|setbonuslist|sep=<br/>}}}}}}}}}}}<!-- auto setbonus for armor sets
 
-->{{#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:{{#var:ii:id}}|{{#if:{{eversions|{{#var:ii:name}}|raw=y}}|<!--not all versions-->|y}}}}}}<!-- auto detected: tag -> id+eversions.
 
-->}}}}<!--
 
crafting cate/type
 
 
-->{{#if:{{#var:ii:name}}|<!--
 
-->{{#if:{{#var:ii:name}}|<!--
//Is crafting material ??
+
// is crafting material?
 
-->{{#if:{{#var:ii:material}}|<!--
 
-->{{#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:{{#var:ii:craftable}}|<!--
 
-->{{#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
  +
-->}}}}}}<!--
  +
-->{{#ifeq:{{{setbonus|-unset}}}|{{{setbonus|unset-}}}|<!-- allow "|setbonus=" to suppress set bonu display
  +
-->{{#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|}}}|<!--
Строка 589: Строка 712:
 
-->}}}}<!--
 
-->}}}}<!--
 
-->{{#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}}}}<!--
 
-->|<!--
 
-->|<!--
Строка 606: Строка 729:
 
-->[[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=}}<!--
Строка 614: Строка 737:
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
-->|<!-- else simple mode
// fallback if {{image}} failed (red link)
 
  +
// main image
-->{{#if:{{#var:ii:image}}||<!--
 
-->{{#vardefine:ii:image|[[File:{{#var:ii:name}}.png|{{l10n|item_infobox|imagealt: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|}}}|<!--
 
-->[[File:{{{imageold|}}}|{{l10n|item_infobox|imagealt:old|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->[[File:{{{imageold|}}}|{{l10n|item_infobox|imagealt:old|$name$={{#var:ii:lname}}}}|link=]]<!--
 
-->|<!--
 
-->|<!--
-->{{image|{{#var:ii:name}} (old)|{{l10n|item_infobox|imagealt:old|$name$={{#var:ii:lname}}}}|link=}}<!-- check .gif, then .png
+
-->{{#if:{{bool|{{{autoimageold|{{options/get|item infobox|autoimageold}}}}}|y}}|<!--
  +
-->{{image|{{#var:ii:name}} (old)|{{l10n|item_infobox|imagealt:old|$name$={{#var:ii:lname}}}}|link=}}<!-- check .gif, then .png
  +
-->|{{#if:{{#vardefineecho:ii:temp:extold|{{{extold|{{options/get|item infobox|extold}}}}}}}|<!--
  +
-->[[file:{{#var:ii:name}} (old).{{#var:ii:temp:extold}} |{{l10n|item_infobox|imagealt:old|$name$={{#var:ii:lname}}}}|link=]]<!--
  +
-->}}}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}}}}<!--
 
-->}}}}}<!--
  +
-->}}<!--
//placed image
 
  +
// placed image (full mode or (voidView and placeable))
  +
-->{{#if:{{#ifeq:{{#var:imagemode}}|full|y}}{{#ifeq:{{#var:viewname}}|void|{{#if:{{#var:ii:placeable}}|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=]]<!--
-->|<!--
+
-->|<!--
  +
-->{{#if:{{bool|{{{autoimageplaced|{{options/get|item infobox|autoimageplaced}}}}}|y}}|<!--
-->{{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
  +
-->|{{#if:{{#vardefineecho:ii:temp:extplaced|{{{extplaced|{{options/get|item infobox|extplaced}}}}}}}|<!--
  +
-->[[file:{{#var:ii:name}} (placed).{{#var:ii:temp:extplaced}} |{{l10n|item_infobox|imagealt:placed|$name$={{#var:ii:lname}}}}|link=]]<!--
  +
-->}}}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}}}}<!--
 
-->}}}}}<!--
  +
-->}}<!--
//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=]]<!--
 
-->|<!--
 
-->|<!--
  +
-->{{#if:{{bool|{{{autoimageequipped|{{options/get|item infobox|autoimageequipped}}}}}|y}}|<!--
-->{{image|{{#var:ii:name}} (equipped)|{{l10n|item_infobox|imagealt:equipped|$name$={{#var:ii:lname}}}}|link=}}<!-- check .gif, then .png
 
  +
-->{{image|{{#var:ii:name}} (equipped)|{{l10n|item_infobox|imagealt:equipped|$name$={{#var:ii:lname}}}}|link=}}<!-- check .gif, then .png
  +
-->|{{#if:{{#vardefineecho:ii:temp:extequipped|{{{extequipped|{{options/get|item infobox|extequipped}}}}}}}|<!--
  +
-->[[file:{{#var:ii:name}} (equipped).{{#var:ii:temp:extequipped}} |{{l10n|item_infobox|imagealt:equipped|$name$={{#var:ii:lname}}}}|link=]]<!--
  +
-->}}}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}}}}<!--
 
-->}}}}}<!--
-->|<!-- 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}}<!--
Строка 685: Строка 817:
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
 
-->}}<!--
  +
--------
  +
  +
---- 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:{{lc:@@@@}}}}|{{tr|{{ucfirst:@@@@}} items|link=y}}}}]]</esc>|}}<!--
== cates ==
 
  +
-->{{#lstmap:{{#var:ii:listcats}}|/|@@@@|<esc>[[Category:{{#or:{{l10n|item_infobox|listcat:{{lc:@@@@}}}}|{{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={{#var:ii: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}}}}}}}}<!--
 
-->|imagefile={{#var:ii:imagefile|{{{image|{{#var:ii:name}}.{{{ext|png}}}}}}}}<!--
  +
-->|imageplaced={{#var:ii:imageplaced}}<!--
  +
-->|imageequipped={{#var:ii:imageequipped}}<!--
 
-->|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}}<!--
Строка 740: Строка 879:
 
-->|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={{#var:ii:axe}}<!--
 
-->|axe={{#var:ii:axe}}<!--
Строка 746: Строка 885:
 
-->|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={{#iferror:{{#ifexpr:{{#var:ii:fishing}}|{{#var:ii:fishing}}}}|{{#var:ii:fishing}}}}<!--
 
-->|bonus={{#var:ii:tileboost}}<!--
 
-->|bonus={{#var:ii:tileboost}}<!--
 
-->|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}}<!--
Строка 758: Строка 897:
 
-->|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}}<!--
 
-->|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}}<!--
   
Строка 775: Строка 920:
 
--><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
+
| imagefile = String
  +
| imageplaced = Wikitext
|autoswing=Boolean
 
  +
| imageequipped = Wikitext
|stack=Integer
 
|consumable=Boolean
+
| autoswing = Boolean
  +
| stack = Wikitext (size=500)
|hardmode=Boolean
 
  +
| consumable = Boolean
|type = List (^) of String
 
  +
| hardmode = Boolean
|listcat = List (^) of String
 
|tag = List (^) of String
+
| type = List (^) of String
  +
| listcat = List (^) of String
|damage = Wikitext
 
|damagetype=String
+
| tag = List (^) of String
  +
| damage = Wikitext
|defense=Wikitext (size=1000)
 
  +
| damagetype = String
|velocity = Wikitext
 
|knockback = Wikitext
+
| defense = Wikitext (size=1000)
|rare = Wikitext
+
| velocity = Wikitext
|buy = Wikitext
+
| knockback = Wikitext
|sell = Wikitext
+
| rare = Wikitext
|axe = Wikitext (size=1000)
+
| buy = Wikitext
|pick = Wikitext (size=1000)
+
| sell = Wikitext
|hammer = Wikitext (size=1000)
+
| axe = Wikitext (size=1000)
  +
| pick = Wikitext (size=1000)
|fishing = Integer
 
  +
| hammer = Wikitext (size=1000)
|bait = Integer
 
|bonus = Wikitext
+
| fishing = Wikitext (size=1000)
  +
| bait = Integer
|toolspeed = Wikitext
 
|usetime = Wikitext
+
| bonus = Wikitext
  +
| toolspeed = Wikitext
|unobtainable = Boolean
 
  +
| usetime = Wikitext
|autoswing = Boolean
 
  +
| unobtainable = Boolean
|critical=Wikitext (size=1000)
 
  +
| autoswing = Boolean
|tooltip=Wikitext
 
  +
| critical = Wikitext (size=1000)
|placeable=Boolean
 
  +
| tooltip = Wikitext
|placedwidth=Integer
 
  +
| placeable = Boolean
|placedheight=Integer
 
|mana=Integer
+
| placedwidth = Integer
  +
| placedheight = Integer
|bodyslot=String
 
  +
| mana = Wikitext
|usetime=Integer
 
  +
| hheal = Wikitext
|toolspeed=Integer
 
  +
| mheal = Wikitext
|buff=Wikitext (size=1000)
 
  +
| bodyslot = String
|bufftype=Wikitext (size=1000)
 
  +
| buffs = List (^) of String
  +
| debuffs = List (^) of String
 
}}<!--
 
}}<!--
   
-->{{i18n-ready}}{{lua|Iteminfo}}{{doc}}</noinclude>
+
-->{{i18n-ready}}{{lua|Iteminfo}}{{doc|baddoc=Необходимо полностью обновить документацию шаблона}}</noinclude>

Текущая версия от 04:31, 1 мая 2021

Этот шаблон определяет таблицу «Items». Просмотр таблицы.

Этот шаблон интернационализирован (i18n) — это означает, что его легко переводить на другие языки.
Для более подробной информации см. шаблоны i18n и l10n (англ.)
Перевести этот шаблон можно на странице «Шаблон:Item infobox/l10n».
Этот шаблон использует Lua.
Этот шаблон использует Модуль:Iteminfo — скрипт, написанные на языке программирования Lua. Для более подробной информации о Lua, см. Википедия:Модули и mw:Extension:Scribunto/ru.
Template-badinfo Документация Документация, указанная ниже, находится на странице «Шаблон:Item infobox/док». (править | история)
См. также этот шаблон на английском языке: Template:Item infobox. В нём может содержаться более полная или подробная информация.
Icon-boilerplate
Документация этого шаблона была помечена как плохая, незаконченная или устаревшая. Пожалуйста, дополните или добавьте недостающую информацию.
Причины: Необходимо полностью обновить документацию шаблона
Как только исправите, удалите | baddoc = из {{doc}} на основной странице шаблона.

Шаблон используется в качестве карточки предмета, описывающий все его свойства.

Использование

Все параметры являются необязательными.

{{карточка предмета
| название = название предмета, по умолчанию название страницы
| картшир = ширина карточки, по умолчанию 21em, иначе подстраивается под размер изображения
| изобр = изображение в инвентаре; по умолчанию «название.png»
| изобр-тайл = изображение размещённого объекта; по умолчанию «название (placed).gif»; если GIF отсутствует, то по умолчанию «название (placed).png
| изобр-делит = если указано «да», то изображения сместятся под инвентарное; по умолчанию «нет»
| тип = например оружие, мебель, инструмент и т.д.
| тип2 = второстепенный тип
| урон = количество единиц урона, нанесённого за один удар
| типурона = ближний, дальний, магический или призывной
| авто = «да», если оружие/предмет имеет автоатаку/автовыстрел при удерживании клавиши/кнопки
| защита = количество единиц защиты
| бонус =
| кирка = мощность кирки, без символа %
| топор = мощность топора, без символа %
| молот = мощность молота, без символа %
| наживка = качество наживки, без символа %
| отбрасывание = коэффициент отбрасывания при ударе
| размещаемый = да/нет
| шир = ширина размещаемого объекта
| выс = высота размещаемого объекта
| ячейка = максимальное количество одного предмета, помещаемого в один слот инвентаря
| мана = количество маны, затрачиваемого за одно использование
| регенманы = скорость регенерации маны
| восманы = количество маны, восстанавливаемого за одно использование
| регенздор = скорость регенерации (восстановления) здоровья
| восздор = количество здоровья, восстанавливаемого за одно использование
| подсказка =
| расход = исчезает ли предмет после использования, да/нет
| скорость = скорость полёта выпущенного снаряда
| крит = если значение отсутствует и основной тип «Оружие», то по умолчанию отображается 4%
| редкость = уровень редкости, например «1» для синего, «2» для зелёного. Для янтарного (квестового) используйте «q», для эксклюзивных предметов экспертного режима — «радужный»
| слот = слот тела (голова, торс, ноги)
| время = время использования
| инструмент-скор =
| инструмент = инструмент, которым необходимо сломать объект, если он размещён (немного устаревший параметр)
| баф = накладываемый баф
| бафподсказка = подсказка бафа
| бафвремя = время действия бафа
| дебаф = накладываемый дебаф
| дебафподсказка = подсказка дебафа
| дебафвремя = время действия дебафа
| покупка = стоимость при покупке в монетах, используйте для этого ({{мм}}, {{см}}, {{зм}}, {{пм}})
| продажа = стоимость при продаже в монетах, используйте те же шаблоны, что при покупке
| id = внутренний ID предмета
| idбаф = внутренний ID бафа
| idтайл = внутренний ID тайла
| idстена = внутренний ID стены
| idпередвиг = внутренний ID средства передвижения
| катсписок = дополнительное название категории, которая включит этот предмет в список DPL, например "стрелы" заставит предмет отображать в "Стрелах"
| катсписок2 = аналогичен параметру "катсписок", ещё одно дополнительное название категории
| всеверсии = да (только содержимое ПК/консоли/мобильной версии, где выставляется шаблон "эксклюзив")
| мод = да/нет, если предмет из мода; используется для раздельной категоризации (по умолчанию «нет»)
}}

См. также