Skip to content

BH 1.9.9 Pre release Notes

youbetterdont edited this page May 13, 2020 · 5 revisions

New Features

Item Descriptions

Item descriptions allow users to add custom descriptions to items. For example, we can set a line describing how to make a Hoto runeword with an eligible flail (below).

Item descriptions are added using curly braces {}. The above description was created with the following line.

ItemDisplay[NMAG !RW (fla OR 9fl OR 7fl) SOCK=4]: {%WHITE%Heart of the Oak: %ORANGE%KoVexPulThul}

It is also valid to set the description in the same line as the item name or item MAP actions. For example:

ItemDisplay[NMAG !RW (fla OR 9fl OR 7fl) SOCK=4]: %NAME%%MAP%{%WHITE%Heart of the Oak: %ORANGE%KoVexPulThul}

Descriptions are processed separately from name and map actions, so a line with only a description will not set an ignore rule. For example, the following would still result in the item being visible in game.

ItemDisplay[NMAG !RW (fla OR 9fl OR 7fl) SOCK=4]: {%WHITE%Heart of the Oak: %ORANGE%KoVexPulThul}
ItemDisplay[NMAG !RW (fla OR 9fl OR 7fl) SOCK=4]: %NAME%

Descriptions do not white list items. So an item with only a description can still be hidden. For example:

ItemDisplay[NMAG !RW (fla OR 9fl OR 7fl) SOCK=4]: {%WHITE%Heart of the Oak: %ORANGE%KoVexPulThul}
ItemDisplay[NMAG !RW (fla OR 9fl OR 7fl) SOCK=4]:

Descriptions support any keywords that the normal item name does with the exception of %CONTINUE%. The %CONTINUE% keyword is not valid inside curly braces, but it can still be used outside curly braces to further modify descriptions. For example:

ItemDisplay[NMAG !RW (fla OR 9fl OR 7fl) SOCK=4]: {%WHITE%Heart of the Oak: %ORANGE%KoVexPulThul}%CONTINUE%
ItemDisplay[NMAG !RW ETH fla SOCK=4]: {%NAME% (best base)}

Above, the description will be "Heart of the Oak: KoVexPulThul (best base)" for an eth 4 socket flail. The %NAME% keyword becomes a replacement token for the description up to that point.

Native ilvl display

The item level is now displayed within the item properties. Similarly, affix level is shown for magic, rare, and crafted quality items. Affix level is only shown if it is different than item level. Additionally, the user must set "Advanced Item Display" and "Show iLvl" for these features to be active. Below shows some rare gloves with item level and affix level display.

image

In-game item filter modes

This release adds support in game filter modes. The in-game menu supports four options for "Filter Level": None, Minimal, Moderate, and Aggressive. It is up to the BH.cfg to set the behavior for the filter modes. There is a new keyword FILTLVL to support these modes. The modes described previously correspond to FILTLVL 0, 1, 2, and 3, respectively.

Here's an example of what can be done using the "Filter Level":

image

The skull cap is blocked when the filter level is set to moderate but not when it is set to None. This is because of the FILTLVL>0 condition in the blocking line.

In-game configurable ping levels

The "Ping Tiers" setting allows the user to control which lines in the config will ping and be drawn on the map. There is a new keyword, TIER-x that supports this. For example:

image

image

Above we set the skull cap as a TIER-2 item. This means that "Ping Tiers" must be set to 2 or more in game in order for this item to ping. The TIER-x command impacts only the map-box and notification. It does not impact the item name. All items with an explicit name or a map condition are whitelisted regardless of the "Ping Tiers" setting in game.

For example, in the following situation, the skull cap would be displayed in game regardless of "Ping Tiers", but it will only notify and map when "Ping Tiers" is set to 2 or more.

ItemDisplay[!RW NMAG skp]: %NAME%%MAP%%TIER-2%
ItemDisplay[!RW NMAG skp]:

If no TIER level is specified, it defaults to TIER-0. This is essentially an unconditional map + notification.

Craft affix level condition and display

New as of 1.9.9-b10.

There is a new keyword CRAFTALVL that evaluates to the affix level of an item if it were to be crafted by the character holding it. For example, the below displays the new affix level as part of the item description.

 // Magic Amulets [VERBOSE]
 ItemDisplay[MAG amu]: %NAME%{%WHITE%Caster: %ORANGE%Ral %PURPLE%O%WHITE%Perfect %BLUE%Jewel %WHITE%(%CRAFTALVL%)}

image

The keyword can also be used as part of the filter condition. For example:

 // Magic Amulets [VERBOSE]
 ItemDisplay[MAG amu CRAFTALVL>89]: %NAME%%MAP%

New Behavior

Split configuration file

The in-game settings have been stripped out of BH.cfg and placed in a new file called BH_settings.cfg. This new file contains all the settings that the in-game menu can change. The new file is largely up to the user to maintain, though they can start with a template.

BH.cfg contains all of the advanced item display lines. This file will be updated by the Slash Diablo Launcher.

In particular, BH.cfg contains only ItemDisplay, SkillList, and TabSkillList lines. BH_settings.cfg contains everything else. The in-game menu can change only BH_settings.cfg.

Item Name Whitelisting

This change impacts the priority of display rules that set item names vs. block them. Item display lines that set a name without the use of %CONTINUE% will take priority over blocking lines after this change. This makes it easier to white-list items without causing them to be drawn on the map or generate a notification. Here are some examples.

Below, Before refers to behavior before this change (1.9.8). After is behavior after this change.

ItemDisplay[blah]: %NAME%
ItemDisplay[blah]:

Before: Item is blocked. After: Item is displayed.


ItemDisplay[blah]: %NAME%%CONTINUE%
ItemDisplay[blah]:

Before: Item is blocked. After: Item is blocked.


ItemDisplay[blah]: %NAME%%MAP%
ItemDisplay[blah]:

Before: Item is displayed and pinged. After: Item is displayed and pinged.


ItemDisplay[blah]: %NAME%%MAP%%CONTINUE%
ItemDisplay[blah]:

Before: Item is displayed and pinged. After: Item is displayed and pinged.

Notify color behavior changes

The behavior of notify colors has been changed. This only has an effect when "Item Detailed Notifications" is off. The main change is to make notify-color respect %CONTINUE%. We also never overwrite a defined notify-color with an undefined or dead color.

Before below means behavior as of 1.9.8. After means after this change.

Colors below refer to notification text. Example is a bit contrived, but the second ItemDisplay line could be a larger group that includes blah.

ItemDisplay[blah]: %NAME%%MAP%%notify-1%
ItemDisplay[blah]: %NAME%%MAP%%notify-2%

Before: The color of blah is 2. After: The color of blah is 1.


ItemDisplay[blah]: %NAME%%MAP%%notify-1%%CONTINUE%
ItemDisplay[blah]: %NAME%%MAP%%notify-2%

Before: The color of blah is 2. After: The color of blah is 2.


ItemDisplay[blah]: %NAME%%MAP%%notify-1%
ItemDisplay[blah]: %NAME%%MAP%%notify-dead%

Before: No notification. After: The color of blah is 1.


ItemDisplay[blah]: %NAME%%MAP%%notify-1%%CONTINUE%
ItemDisplay[blah]: %NAME%%MAP%%notify-dead%

Before: No notification. After: The color of blah is 1.


ItemDisplay[blah]: %NAME%%MAP%%notify-1%
ItemDisplay[blah]: %NAME%%MAP%

Before: Default notification color (UNDEFINED_COLOR). After: The color of blah is 1.


ItemDisplay[blah]: %NAME%%MAP%%notify-1%%CONTINUE%
ItemDisplay[blah]: %NAME%%MAP%

Before: Default notification color (UNDEFINED_COLOR). After: The color of blah is 1.


ItemDisplay[blah]: %NAME%%MAP%%notify-dead%
ItemDisplay[blah]: %NAME%%MAP%

Before: Default notification color (UNDEFINED_COLOR). After: No notification.


ItemDisplay[blah]: %NAME%%MAP%%notify-dead%%CONTINUE%
ItemDisplay[blah]: %NAME%%MAP%

Before: Default notification color (UNDEFINED_COLOR). After: No notification.


ItemDisplay[blah]: %NAME%%MAP%%notify-dead%%CONTINUE%
ItemDisplay[blah]: %NAME%%MAP%%notify-2%

Before: The color of blah is 2. After: The color of blah is 2.

Item Detailed Notifications improvements

  • "Item detailed notifications" works as before when "Item Close Notifications" is enabled.
  • %notify-dead% is now supported with detailed notifications. This can be used to disable the notification while keeping a map box.
  • When "Item Close Notifications" is disabled, the detailed notifications are no longer generated when you leave an area and return to the item or when you drop an item. This uses ITEMFLAG_NEW described here. Also see the 4th hex digit in the test below, i.e., a02010.

image

No blank item names

This release tweaks the item rules slightly so that more conditions are required to create a ignore rules (rules that block items from dropping). Before, an ignore rule would be created in the following situations.

ItemDisplay[blah]: %MAP%
ItemDisplay[blah]: %NAME%

The above previously resulted in a blank item name. The item was not blocked because of the `%MAP% command, but still this is probably not desirable behavior. In this release, the item name is no longer be blank.

ItemDisplay[blah]: %CONTINUE%
ItemDisplay[blah]: %NAME%

The above would also result in a blank item name. Additionally, the item was blocked in this case. In this release, the item name is preserved, and no ignore rule is created. This is kind of a corner case, but I think this is the more desirable behavior.

Summary

In this release, an ignore rule is only created when the item name and description are not blank, there is no map action, and there is no %CONTINUE% statement. Essentially only blank lines can create ignore rules now.

Blank item names should no longer be generated as a result of the above changes. To warn users that an item they see in game will be blocked by the packet filter, a [blocked] tag is added to the item. For example:

image

The blocked tag is only generated when the item has an ignore rule and not an explicit whitelist rule (could be any valid name or a map condition).

This change also fixes some other undesirable behavior.

ItemDisplay[blah]: %NAME%%MAP%%CONTINUE%
ItemDisplay[blah]: 

Previously, the above would result in a blank item name, but the item would still spawn in game and ping. After the fix, the item name will no longer be blank. The item will ping as before.