Item Filtering: Difference between revisions

Removed page from translation
(keywords for numbered attribute codes)
(Removed page from translation)
Line 1:
<translate>
<!--T:161-->
Item filtering allows players to filter out items they don't want to see, and also change the appearance of items that are not filtered out. While there are in-game options for simple item filtering, players can use item filters to customize this to their liking. [https://github.com/Project-Diablo-2/BH PD2's Filtering] is open-source and based on [https://github.com/planqi/slashdiablo-maphack BH 1.9.9].
 
<!--T:162-->
For other out-of-game customization options, see '''[[Customization]]'''.
 
<!--T:163-->
== Filters ==
Item filters (often called lootfilters) are text files which contain rules for describing how items should be displayed in-game. The default filter only has a few simple rules for adding descriptions to some items (map orbs and stackable gems/runes), and otherwise displays all items the same as they would be in vanilla.
 
<!--T:164-->
By default, filtering is done using '''default.filter''' in the ''ProjectD2'' directory - unless changed, it only has a few simple rules. If '''loot.filter''' is present in the same directory, it will be used instead of the default file. If a filter is selected from the launcher, it will be saved in ''ProjectD2\filters'' and be used instead via a '''loot.filter''' system link from the ''ProjectD2'' directory.
 
<!--T:165-->
These files will function if encoded in UTF-8 (default), but ANSI encoding is needed to allow [[Item_Filtering#Output|special characters]] to display properly.
 
 
<!--T:166-->
Filters can be selected from the [https://github.com/Project-Diablo-2/LootFilters#project-diablo-2-loot-filters launcher] and enabled via the in-game Settings menu.
 
<!--T:167-->
To install manually, download a filter file and save it to ''Diablo II\ProjectD2\filters\local'' and then select it from the launcher. Make sure the relevant in-game settings are enabled.
{{:Filter_Info}}
 
<!--T:168-->
<!-- End of "Filters" category -->
 
<!--T:185-->
== Filter Syntax ==
Filters contain rules for how items should be displayed in-game. Each rule has '''''Input''''' and '''''Output''''' and follows this basic format:
 
ItemDisplay[ '''''Input''''' ]: '''''Output'''''
<!--T:23-->
ItemDisplay[ '''''Input''''' ]: '''''Output'''''
 
<!--T:24-->
The '''''Input''''' specifies a set of ''conditions'' an item must satisfy for the rule to apply to it, and '''''Output''''' specifies the actions (''text'' or ''keywords'') used when a matching item is found.
 
<!--T:25-->
If a line doesn't follow this format, it won't be considered a rule, which means it won't affect how items will be displayed in-game. If a line is intentionally ignored like this, it should begin with '''''//''''' (double slash) so the computer can ignore it immediately rather than spend time checking the rest of the line to determine whether it's a rule or not.
 
 
<!--T:26-->
Filter rules are processed in-order from top to bottom. Items are displayed according to the output of the first rule whose conditions they satisfy. If the matching rule doesn't include '''''%CONTINUE%''''', the procedure is halted and no additional rules are checked. In this way, rules that are higher than others have higher priority. The only exception is for [[Item_Filtering#Notification_Keywords|notification keywords]], which apply regardless of where they are in the filter.
 
 
<!--T:27-->
The simplest rule is one without any conditions or output. Sans conditions, the rule will apply to all items. Sans output, nothing will be displayed for those items.
 
<!--T:28-->
<code>ItemDisplay[]:</code> <span style="color:gray;">''hides all items''</span>
 
 
<!--T:29-->
The next simplest rule is one that displays all items with their default appearances. The output keyword '''''%NAME%''''' refers to an item's default appearance, and varies depending on which item is being shown. All items are displayed by default - the game essentially adds this rule to the bottom of the filter before beginning to process the filter's rules.
 
<!--T:30-->
<code>ItemDisplay[]: %NAME%</code> <span style="color:gray;">''displays all items with their default appearances''</span>
 
<!--T:31-->
=== Conditions ===
Conditions describe which item(s) the rule should apply to.
 
<!--T:32-->
Many conditions refer to a single item or item group. These boolean conditions will be either true or false, depending on which item is being looked at.
 
<!--T:33-->
<code>ItemDisplay[key]:</code> <span style="color:gray;">''hides keys (they can still be purchased from merchants)''</span>
 
 
<!--T:34-->
Value conditions typically refer to the value of a specific property on the item being looked at. They each have three parts: code, comparison operator ('''<''','''>''','''='''), and value to compare against.
 
<!--T:35-->
<code>ItemDisplay[GOLD<100]:</code> <span style="color:gray;">''hides gold stacks if they are less than 100''</span>
 
 
<!--T:36-->
Rules with multiple conditions may use logic operators ('''AND''','''OR''','''!''') to specify how the conditions relate to each other. If no operator is used between conditions, '''AND''' will be assumed.
 
<!--T:37-->
<code>ItemDisplay[NMAG AND SOCK=1 AND CLVL>10]:</code> <span style="color:gray;">''hides regular 1-socket items if the character is above level 10''</span>
 
<!--T:38-->
<code>ItemDisplay[NMAG SOCK=1 CLVL>10]:</code> <span style="color:gray;">''hides regular 1-socket items if the character is above level 10''</span>
 
 
<!--T:39-->
To make a rule apply to any item from within a group of conditions, use '''OR''' and parentheses.
 
<!--T:40-->
<code>ItemDisplay[NMAG (BOOTS OR GLOVES OR BELT) CLVL>10]:</code> <span style="color:gray;">''hides regular boots/gloves/belts if the character is above level 10''</span>
 
<!--T:41-->
Parentheses can help combine conditions in other ways too.
 
<!--T:42-->
<code>ItemDisplay[(GOLD<100 OR (GOLD<1000 CLVL>50))]:</code> <span style="color:gray;">''hides gold stacks if they are less than 100, or less than 1000 if the character is above level 50''</span>
 
 
<!--T:43-->
Negation (sometimes called the "NOT" operator) makes conditions mean the opposite of what they would otherwise. To negate a condition, use "'''!'''" in front of it.
 
<!--T:44-->
<code>ItemDisplay[MAG ETH ARMOR !ID]:</code> <span style="color:gray;">''hides magic ethereal armor that is not identified''</span>
 
<!--T:45-->
Groups of conditions can be negated in the same way.
 
<!--T:46-->
<code>ItemDisplay[MAG !ID HELM !(BAR OR DRU OR ELT)]:</code> <span style="color:gray;">''hides magic unidentified helms that are not barbarian helms, druid pelts, or elite''</span>
 
<!--T:47-->
=== Output ===
A rule's output (text and keywords in the second part of the rule) describe how the matching item(s) should be displayed.
 
<!--T:48-->
An item's default name can be referenced with the '''''%NAME%''''' keyword and modified by adding text. To shorten a name or change it entirely, write-out the new name instead. Valid text characters include all those in the [https://en.wikipedia.org/wiki/List_of_Unicode_characters#Basic_Latin '''Basic Latin'''] and [https://en.wikipedia.org/wiki/List_of_Unicode_characters#Latin-1_Supplement '''Latin-1 Supplement'''] Unicode blocks (except '''·''' and '''¸''').
 
<!--T:182-->
{| class="wikitable"
|+ Valid Text Characters
Line 144 ⟶ 107:
 
 
<!--T:49-->
<code>ItemDisplay[hdm]: %NAME%</code> <span style="color:gray;">''Horadric Malus''</span>
 
<!--T:50-->
<code>ItemDisplay[hdm]: Charsi's %NAME%</code> <span style="color:gray;">''Charsi's Horadric Malus''</span>
 
<!--T:51-->
<code>ItemDisplay[hdm]: Charsi's Favorite Hammer</code> <span style="color:gray;">''Charsi's Favorite Hammer''</span>
 
<!--T:52-->
Text and keywords can be used together to add extra information, change parts of the name to be different colors, and more. See [[Item_Filtering#Output_Keywords | all keywords]] below.
 
<!--T:53-->
<code>ItemDisplay[SOCK>0]: %NAME% %GRAY%[%SOCKETS%]</code> <span style="color:gray;">''displays socketed items with '''[X]''' appended in gray, where X is the number of sockets''</span>
 
 
<!--T:54-->
As with elsewhere, the double slash ('''//''') functions as an in-file way to write comments that will be ignored by the computer.
 
<!--T:55-->
<code>ItemDisplay[NMAG (aqv OR cqv)]: // hides regular arrows/bolts</code>
 
<!--T:56-->
<code>ItemDisplay[tsc]: //%NAME% // Scroll of Town Portal</code> <span style="color:gray;">''this rule hides TP scrolls, but can be changed to display them instead by deleting the first '''//'''''</span>
 
<!--T:57-->
<code>//ItemDisplay[MAG cm2]: // hides magic large charms</code> <span style="color:gray;">''this "rule" is ignored, but can be quickly re-enabled by deleting the first '''//'''''</span>
 
 
<!--T:58-->
Items can be highlighted by adding spaces to either side of their name, so long as there is a keyword or non-space character between them and the edge of the name. Whitespace surrounding the '''''Output''''' of each rule gets removed prior to evaluation (spaces first, followed by tabs), so tabs are often the best non-space character to use.
 
<!--T:59-->
<code>ItemDisplay[RUNE>9]: %ORANGE% %NAME% %ORANGE%</code> <span style="color:gray;">''adds 1 space of highlighting for runes above #9 (tabs don't display properly on the wiki, so '''%ORANGE%''' is used instead)''</span>
 
 
<!--T:60-->
The '''''%CONTINUE%''''' keyword replaces the contents of '''''%NAME%''''' with the current rule's '''''Output''''' (overwriting the default name or previously stored output) and makes the program continue checking rules. This allows multiple rules to modify an item's appearance based on different conditions.
 
<!--T:61-->
<code>ItemDisplay[SOCK>0]: %NAME% [%SOCKETS%]%CONTINUE%</code> <span style="color:gray;">''appends '''[X]''' to socketed items, where X is the number of sockets (continues)''</span>
 
<!--T:62-->
<code>ItemDisplay[ETH]: eth %NAME%%CONTINUE%</code> <span style="color:gray;">''prepends '''eth''' to ethereal items (continues)''</span>
 
<!--T:63-->
<code>ItemDisplay[]: %NAME%</code> <span style="color:gray;">''displays all items (with modifications from previous rules)''</span>
 
<!--T:64-->
Without '''''%CONTINUE%''''', this would require a separate rule for every possible combination of different conditions, the number of rules growing exponentially with each additional condition:
 
<!--T:65-->
<code>ItemDisplay[ETH SOCK>0]: eth %NAME% [%SOCKETS%]</code>
 
<!--T:66-->
<code>ItemDisplay[!ETH SOCK>0]: %NAME% [%SOCKETS%]</code>
 
<!--T:67-->
<code>ItemDisplay[ETH SOCK=0]: eth %NAME%</code>
 
<!--T:68-->
<code>ItemDisplay[!ETH SOCK=0]: %NAME%</code>
 
 
 
<!--T:69-->
Item descriptions can be modified by using text and keywords within '''''{}''''' (braces). Anything outside the braces applies to the item name while anything inside the braces applies to the item description.
 
<!--T:70-->
[[File:DescEx1.png|thumb|Item Description Example]]<code>ItemDisplay[]: %NAME%{$DARK_GREEN%$%PRICE%}</code> <span style="color:gray;">''item price is shown in the description like '''$35000''''' in dark green''</span>
 
<!--T:71-->
Item descriptions aren't taken into account when hiding items, so descriptions can still be shown for hidden items if they have one.
 
<!--T:72-->
<code>ItemDisplay[]: %NAME%{%NAME%}</code> <span style="color:gray;">''items displayed with their descriptions''</span>
 
<!--T:73-->
<code>ItemDisplay[]: {%NAME%}</code> <span style="color:gray;">''items hidden but their descriptions still shown''</span>
 
<!--T:74-->
<code>ItemDisplay[]:</code> <span style="color:gray;">''items hidden and their descriptions hidden too''</span>
 
 
<!--T:75-->
The '''''%CONTINUE%''''' keyword only functions when used ''outside'' the braces and applies to both the item name and the item description.
 
<!--T:76-->
<code>ItemDisplay[]: %NAME%{Item Level: %ILVL%}%CONTINUE%</code> <span style="color:gray;">''Shows item level in description (continues)''</span>
 
<!--T:77-->
<code>ItemDisplay[]: %NAME%{%NAME%, Affix Level: %ALVL%}</code> <span style="color:gray;">''Appends affix level in description with comma separator''</span>
 
 
<!--T:78-->
The '''''%NL%''''' keyword adds a new line above the previous line and can only be used within item descriptions.
 
<!--T:79-->
<code>ItemDisplay[]: %NAME%{Affix Level: %ALVL%%NL%Item Level: %ILVL%}</code> <span style="color:gray;">''Shows item/affix levels on separate lines in description (same effect as '''Show iLvl''' setting)''</span>
 
<!--T:80-->
<!-- End of "Filter Syntax" category -->
 
<!--T:151-->
== Filter Strictness ==
[[File:filter_strictness_default.png|thumb|Default Filter Strictness Levels]]
Filter levels can be selected from the in-game settings menu and will change which rules/notifications are enabled based on the FILTLVL/TIER codes used in the filter. By default, there are two levels: "Standard" and "Show All Items". The "Standard" level is the normal filter behavior that would be seen without any filter level changes, whereas "Show All Items" will just prevent any items from being filtered out (hidden).
 
<!--T:153-->
To enable custom filter levels, use the following format at the top of the filter:
 
<!--T:154-->
<code>ItemDisplayFilterName[]: Custom Level 1</code> <span style="color:gray;">''Adds a new filter strictness level named "Custom Level 1"''</span>
 
<!--T:155-->
<code>ItemDisplayFilterName[]: Custom Level 2</code> <span style="color:gray;">''Adds a new filter strictness level named "Custom Level 2"''</span>
 
 
<!--T:156-->
In addition to level 0 ("Show All Items") which is always available, up to 9 other levels can be enabled and the order in which they're listed at the top of the filter determines which number will reference them when used with the FILTLVL/TIER codes (e.g. '''''FILTLVL=1''''' and '''''%TIER-1%''''' for the first custom level).
 
<!--T:178-->
These codes can be used to create separate versions of the same filter with varying levels of strictness, make separate versions which includes extra info so that players can more easily reference niche item info without it cluttering item tooltips during normal gameplay (the levels could be swapped to when needed), or even combine drastically different filters into one just so they can be more easily swapped between.
 
<!--T:157-->
<code>ItemDisplay[yps FILTLVL>1]:</code> <span style="color:gray;">''Hides Antidote Potions if filter level 2+ is selected''</span>
 
<!--T:158-->
<code>ItemDisplay[MAG !ID cm1]: %NAME%%TIER-2%%DOT-97%</code> <span style="color:gray;">''Shows notifications for unidentified magic small charms if filter level 2 or lower is selected (still shows map icons at all levels)''</span>
 
 
<!--T:179-->
If a rule doesn't include '''''FILTLVL''''' as a condition, it won't be restricted by whatever filter level is selected.
 
<!--T:180-->
If a rule includes a [[Item_Filtering#Notification_Keywords|notification keyword]] and ''doesn't'' include a TIER keyword, it'll act as if '''''%TIER-9%''''' is included - it'll notify at all filter levels instead of being restricted by whatever filter level is selected.
 
<!--T:159-->
<!-- End of "Filter Strictness" category -->
 
<!--T:81-->
== Filter Codes ==
=== Output Keywords ===
Line 327 ⟶ 246:
|}
 
<!--T:82-->
Some items have their default color built into '''''%NAME%''''', so their color won't change unless their name is rewritten completely. This is likely [[Bugs|unintended behavior]], and applies to runes, Standard of Heroes, and the PD2-specific non-equipment items other than map/arena scrolls and jewel fragments.
 
<!--T:83-->
<code>ItemDisplay[wss]: %RED%%NAME%</code> <span class="d2-purple">''Worldstone Shard''</span>
 
<!--T:84-->
<code>ItemDisplay[wss]: %RED%Worldstone Shard</code> <span class="d2-red">''Worldstone Shard''</span>
 
<!--T:186-->
==== Value References ====
{| class="wikitable"
Line 372 ⟶ 287:
|}
 
In addition to these, keywords for each [[Item_Filtering#Numbered_Attribute_Codes|numbered attribute code]] also exist. They should have a hyphen between ''STAT'' and the number, such as '''''%STAT-18%'''''.
 
<!--T:86-->
==== Notification Keywords ====
[[File:MapNotificationColors.png|thumb|Minimap Icon Colors]]
These keywords add the item to the notification list and create a minimap icon for it.
 
<!--T:87-->
The color of the minimap icon corresponds to the keyword's hexadecimal 2-digit color code. The icon may be black (00), green (84), red (62), or any of the other colors shown in the chart image. Note that '''%MAP%''' may be used without a 2-digit color code, in which case the icon will use the current text color (or white if no color has been set). The hexadecimal codes which correspond to the [[Item_Filtering#Colors|text colors]] are listed above.
 
<!--T:88-->
Multiple keywords can be used together to create multi-colored minimap icons.
 
<!--T:89-->
{| class="wikitable"
! Code !! Details
Line 398 ⟶ 307:
|}
 
<!--T:90-->
<br>
 
<!--T:91-->
The following keyword only applies if '''Detailed Notifications''' is disabled, which is not recommended. To disable text notifications for items while keeping their minimap icons, use '''%TIER-0%''' instead.
 
<!--T:92-->
{| class="wikitable"
! Code !! Details
Line 413 ⟶ 319:
|}
 
<!--T:93-->
The ''NOTIFY'' keyword may use a 1-digit color code (0-F) which corresponds to these colors in order: WHITE, RED, GREEN, BLUE, GOLD, GRAY, BLACK, TAN, ORANGE, YELLOW, DARK_GREEN, PURPLE, GREEN, WHITE, BLACK, WHITE. If ''DEAD'' is used instead of a color code, the item's notifications will be disabled instead.
 
<!--T:94-->
Most filters are made to be used with '''Detailed Notifications''', so ''NOTIFY'' is incompatible with them. Note that without '''Detailed Notifications''' enabled, '''Drop Notifications''' will only apply to items when they initially drop (prior to being picked up for the first time).
 
 
<!--T:95-->
All notification keywords seem to bypass the normal rule-handling procedure. Normally, the rules are processed top-to-bottom and this process halts when a matching rule (without '''%CONTINUE%''') is found. Notification keywords, however, can apply even after the process has halted. This may be [[Bugs|unintended behavior]].
 
<!--T:96-->
==== Special Keywords ====
{| class="wikitable"
Line 437 ⟶ 339:
|}
 
<!--T:97-->
<!-- End of "Output Keywords" category -->
 
<!--T:98-->
=== Boolean Conditions ===
==== Mutable Codes ====
Line 467 ⟶ 367:
<code>ItemDisplay[key ASSASSIN]:</code> <span style="color:gray;">''hides keys when playing as an Assassin''</span>
 
<!--T:183-->
Both '''SHOP''' and '''EQUIPPED''' behave as expected in most scenarios, but they each have a [[Bugs|bug]] associated with them. Most notably, '''EQUIPPED''' incorrectly applies to items that begin the game within the multiplayer shared stash.
 
<!--T:184-->
==== Item Group Codes ====
===== General Groups =====
Line 524 ⟶ 422:
</ul></div>
 
<!--T:99-->
===== Armor Groups =====
{| class="wikitable"
Line 546 ⟶ 443:
|}
 
<!--T:100-->
===== Weapon Groups =====
{| class="wikitable"
Line 585 ⟶ 481:
Since '''WP6''' overlaps entirely with both '''WP5''' and '''WP7''' (two very different kinds of weapons), it's rarely useful.
 
<!--T:181-->
The '''1H''' code is currently [[Bugs|bugged]] and doesn't include Hand Axe.
 
<!--T:101-->
===== Class-Restricted Item Groups =====
{| class="wikitable"
Line 608 ⟶ 502:
|}
 
<!--T:102-->
{{:Item Codes}}
 
<!--T:114-->
<!-- End of "Boolean Conditions" category -->
 
<!--T:187-->
=== Value Conditions ===
==== Info Codes ====
Line 657 ⟶ 548:
|}
 
<!--T:116-->
There is currently a [[Bugs|bug]] with hiding stacked gems/runes - if the lootfilter attempts to hide them, they'll usually be loaded regardless and appear with an empty name.
 
<!--T:117-->
==== Named Attribute Codes ====
{| class="wikitable"
Line 723 ⟶ 612:
Some attributes (STR, DEX, LIFE, MANA, FRES, CRES, LRES, PRES) can have addition applied between them prior to the condition being evaluated.
 
<!--T:118-->
<code>ItemDisplay[RARE FRES+CRES+LRES+PRES>79]: %NAME% %RED%!</code> <span style="color:gray;">''appends a red '''!''' to rares with 80+ total resistance''</span>
 
 
<!--T:119-->
It seems values get converted to unsigned integers '''before comparison'''. For negative values, this means that instead of counting backwards from 0, they count backwards from the maximum storeable value (a few billion). The following examples illustrate this point, but they're outdated since medium/heavy armors no longer have movement speed penalties.
 
<!--T:120-->
<code>ItemDisplay[NMAG !ELT (FRW=-5 OR FRW=-10)]:</code> <span style="color:gray;">''hides regular non-elite medium/heavy armors''</span>
 
<!--T:121-->
<code>ItemDisplay[NMAG !ELT FRW>1000]:</code> <span style="color:gray;">''hides regular non-elite medium/heavy armors''</span>
 
<!--T:122-->
<code>ItemDisplay[NMAG !ELT FRW>-20]:</code> <span style="color:gray;">''hides regular non-elite medium/heavy armors''</span>
 
<!--T:123-->
==== Numbered Attribute Codes ====
The relevant number for each code is shown as N. In many cases, if N is absent, it is either 0 or 1. For codes that refer to attributes which are based on character level, N is often a multiple of Y (+Y per Character Level) such as 8Y for STAT214 or 2Y for STAT224.
 
<!--T:124-->
Some numbered attribute codes (shown in <span style="color:gray;">gray</span>) refer to the same attributes as [[Item_Filtering#Named_Attribute_Codes|named attribute codes]] or other named codes, which can be used instead for better readability.
<div><ul style="margin-left:0px;">
Line 916 ⟶ 798:
<li style="display:inline-table; margin-left:0px; margin-right:8px;">
 
<!--T:125-->
===== Elements =====
{| class="wikitable"
Line 1,044 ⟶ 925:
<li style="display:inline-table; margin-left:0px; margin-right:0px;">
 
<!--T:126-->
===== Based on Character Level =====
{| class="wikitable"
Line 1,284 ⟶ 1,164:
|}
 
<!--T:127-->
==== Skill Codes ====
===== Group Skills =====
Line 1,361 ⟶ 1,240:
<ul></div>
 
<!--T:128-->
===== Individual Skills =====
In addition to these "SK" codes, there are equivalent "CHSK" codes for skill charges and "OS" codes for oskills. For example, '''CHSK54''' refers to skill charges for Teleport. "CHSK" codes for curse charges use separate 'proc' versions of those skills: '''CHSK445''' for Life Tap and '''CHSK447''' for Lower Resist.
 
<!--T:129-->
* Skills with gray names are not in the skill tree.
* Skills with gray codes do not appear on items as pointmods/staffmods under normal circumstances.
 
<!--T:130-->
<div><ul style="margin-left:0px;">
<li style="display:inline-table; margin-left:0px; margin-right:8px;">
Line 1,586 ⟶ 1,462:
<li style="display:inline-table; margin-left:0px; margin-right:8px;">
 
<!--T:131-->
====== Paladin ======
{| class="wikitable"
Line 1,866 ⟶ 1,741:
<li style="display:inline-table; margin-left:0px; margin-right:8px;">
 
<!--T:132-->
====== Other ======
{| class="wikitable"
Line 1,883 ⟶ 1,757:
<ul></div>
 
<!--T:133-->
=== Value Condition IDs ===
Certain value conditions (MAPID, PREFIX, SUFFIX, STAT360) are slightly different than most others, referring to distinct zone/affix/corruption IDs instead of the value for attributes or other item stats with value ranges. Some other value conditions such as [[Item_Filtering#Info_Codes|GEMLEVEL, GEMTYPE, RUNE, or DIFF]] behave in a similar fashion, but their IDs aren't listed in this section due to having relatively few possible values.
 
<!--T:134-->
==== MAPID IDs ====
MAPID refers to the [[Zones|zone]] (or [[Maps|map]]) the character is currently in. When using a portal, the zone ID [[Bugs|won't update immediately]] so any items within a screen length of the portal will be displayed as if the character was still in the previous zone. If the character walks a couple screen lengths away and returns, the ID will be updated and those items will be displayed as expected.
 
<!--T:135-->
<code>ItemDisplay[(MAPID=1 OR MAPID=40 OR MAPID=75 OR MAPID=103 OR MAPID=109)]: %NAME%{%NAME%}</code> <span style="color:gray;">''shows all items from towns, including shopped items and any items in character inventories/stashes when the game began''</span>
 
<!--T:136-->
<code>ItemDisplay[yps CLVL>89 !(MAPID>160 MAPID<164)]:</code> <span style="color:gray;">''hides antidotes at level 90+ unless they're found in Rathma zones''</span>
 
<!--T:137-->
<code>ItemDisplay[key !MAPID=39]:</code> <span style="color:gray;">''hides keys unless they were found within the cow level''</span>
 
<!--T:138-->
<code>ItemDisplay[ear (MAPID=157 OR MAPID=159)]:</code> <span style="color:gray;">''hides player ears found within the PvP duel arenas''</span>
 
<!--T:139-->
<div><ul style="margin-left:0px;">
<li style="display:inline-table; margin-left:0px; margin-right:8px;">
Line 2,287 ⟶ 2,154:
<ul></div>
 
<!--T:141-->
==== SUFFIX and PREFIX IDs ====
SUFFIX refers to the suffixes items have whereas PREFIX refers to the prefixes they have. They're similar to the [[Item_Filtering#Numbered_Attribute_Codes|numbered attribute codes]], but refer to affixes rather than affix attributes.
 
<!--T:142-->
Unlike other value conditions, IDs for SUFFIX and PREFIX are not all mutually exclusive with eachother. Rules can have multiple SUFFIX or PREFIX conditions and still match with valid items.
 
<!--T:143-->
<code>ItemDisplay[RARE SUFFIX=662 SUFFIX=158]:</code> <span style="color:gray;">''appends a red '''!''' to rare items that have a chance to cast Amplify Damage on hit and also have Ignore Target's Defense''</span>
 
 
<!--T:188-->
[https://docs.google.com/spreadsheets/d/1J5_V3bIloualyzb5_lDFueSSCcQyyPEkKYvoQR9Ve9Y/ Affix IDs]
 
<!--T:189-->
==== STAT360 IDs ====
[[Item_Filtering#General|STAT360]] refers to which corruption items have.
 
<!--T:148-->
<code>ItemDisplay[STAT360>0]: %RED%%NAME%</code> <span style="color:gray;">''changes corrupted items to be red''</span>
 
<!--T:149-->
<div><ul style="margin-left:0px;">
<li style="display:inline-table; margin-left:0px; margin-right:8px;">
Line 2,478 ⟶ 2,338:
<ul></div>
 
<!--T:170-->
<!-- spacing -->
 
<!--T:171-->
<!-- spacing -->
 
<!--T:172-->
<span class="emphasis">Source of Information on this Page</span>
 
<!--T:173-->
Corruption IDs can be determined from [https://github.com/Project-Diablo-2/BH/blob/587b7199ed07debbaf730bb4e1e4d8a1f2d76421/BH/Constants.h#L1162 PD2's BH files].
 
<!--T:174-->
See PD2's [https://github.com/BetweenWalls/PD2-Singleplayer/tree/main/Diablo%20II/ProjectD2/data/global/excel/modpacks/official text files] for updated info when game changes are made. The files are best viewed in table format since they are tab-delineated, so they should be opened with Microsoft Excel (or similar programs) or their text should be copy/pasted into a spreadsheet. For convenience, many of the game's text files are also saved on Google Drive: [https://drive.google.com/drive/folders/1kLTpnQ6NWD9G-9dki-4X8T_2ClGDik4o D2 Text File Tables].
 
<!--T:175-->
Prefix/suffix IDs can be determined from PD2's [https://github.com/BetweenWalls/PD2-Singleplayer/blob/main/Diablo%20II/ProjectD2/data/global/excel/modpacks/official/MagicPrefix.txt MagicPrefix.txt] and [https://github.com/BetweenWalls/PD2-Singleplayer/blob/main/Diablo%20II/ProjectD2/data/global/excel/modpacks/official/MagicSuffix.txt MagicSuffix.txt] files. All lines have their own ID except the line between the classic affixes and the expansion affixes, which is skipped. The suffix IDs begin counting from 1 and the prefix IDs continue from where the suffixes end.
 
<!--T:176-->
Zone IDs can be determined from PD2's [https://github.com/BetweenWalls/PD2-Singleplayer/blob/main/Diablo%20II/ProjectD2/data/global/excel/modpacks/official/Levels.txt Levels.txt] file.
 
<!--T:177-->
If the files in these locations are not updated by others, you can extract them yourself from ''patch_d2.mpq'' (found in ''Diablo II/ProjectD2'') using an [http://www.zezula.net/en/mpq/download.html MPQ editor and D2 listfile] - the text files will be in ''/data/global/excel''.
 
</translate>