All Projects → dschu012 → d2lootfilter

dschu012 / d2lootfilter

Licence: MIT license
No description or website provided.

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to d2lootfilter

d2dx
D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions.
Stars: ✭ 214 (+613.33%)
Mutual labels:  diablo, diablo2, diablo-ii
d2launcher
Diablo II • Median XL • Mod Launcher for Linux
Stars: ✭ 20 (-33.33%)
Mutual labels:  diablo2, diablo-ii
d2itemreader
C library for parsing items in Diablo II character/stash files
Stars: ✭ 30 (+0%)
Mutual labels:  diablo, diablo-ii
d2modmaker
A program that lets you mod Diablo II from a config
Stars: ✭ 82 (+173.33%)
Mutual labels:  diablo, diablo2
portal
Character Planner for Diablo II
Stars: ✭ 23 (-23.33%)
Mutual labels:  diablo, diablo2
gomule-d2r
GoMule enabled for D2R
Stars: ✭ 53 (+76.67%)
Mutual labels:  diablo2, diablo-ii
d2s edit recalc
Simple D2 LoD and D2R char save editor
Stars: ✭ 15 (-50%)
Mutual labels:  diablo2, diablo-ii
Opendiablo2
An open source re-implementation of Diablo 2
Stars: ✭ 10,057 (+33423.33%)
Mutual labels:  diablo, diablo2
Kolbot-SoloPlay
<The one bot to rule them all> This repo is depreciated. New development is at https://github.com/blizzhackers/kolbot-SoloPlay
Stars: ✭ 26 (-13.33%)
Mutual labels:  diablo2
equine
Mod manager/launcher for Diablo 1
Stars: ✭ 27 (-10%)
Mutual labels:  diablo
D2Dropper
Diablo 2 Dropper
Stars: ✭ 22 (-26.67%)
Mutual labels:  diablo2
d1-graphics-tool
Diablo 1 Graphics Tool
Stars: ✭ 15 (-50%)
Mutual labels:  diablo
Devilutionx
Diablo build for modern operating systems
Stars: ✭ 5,015 (+16616.67%)
Mutual labels:  diablo
ModdingDiablo2Resurrected
This repository contains some tools and guides on modding Diablo 2 Resurrected.
Stars: ✭ 75 (+150%)
Mutual labels:  diablo2
diablo2-runewizard
Runewizard for Diablo II. Find out what runewords you can make with the runes you have found.
Stars: ✭ 28 (-6.67%)
Mutual labels:  diablo2
Devilution
Diablo devolved - magic behind the 1996 computer game
Stars: ✭ 8,274 (+27480%)
Mutual labels:  diablo
d2client
Client able to write and read data over TCP on a Diablo II server.
Stars: ✭ 15 (-50%)
Mutual labels:  diablo-ii
wined3d-diablo
Wine Direct3D DLL patched for Diablo I game
Stars: ✭ 12 (-60%)
Mutual labels:  diablo
diablo2
The Tankazon Resource - a Diablo II mini site.
Stars: ✭ 80 (+166.67%)
Mutual labels:  diablo2
bncsutil
The Classic Battle.net™ client library
Stars: ✭ 19 (-36.67%)
Mutual labels:  diablo

d2lootfilter

d2lootfilter is a plugin that can be used with PlugY or other mod systems to filter loot on 1.10f, 1.13c, and 1.14d. The syntax for filtering loot was made to be similar to Path of Exile.

This has not been heavily tested, crashes may happen, and items may be lost

Features

  • Filter loot by various attributes (still a work in progress)
  • Notifications for loot
  • Minimap icons for loot
  • Custom name/descriptions/background colors for ground and inventory loot.

Still todo:

  • Error handling. Filter just silently ignores errors right now.
  • Disable sound for hidden drops
  • Tier system to change filter levels in game.

Example with custom item name/border/background color/inventory background color and chat notification.

image

See what rules in your config caused the item to be shown. Set background colors for charms/items to quickly find charms that need to be replaced etc...

image

Installing

Steps to install on PlugY:

  • Download the latest dll and item.filter
  • Copy both files to your PlugY directory.
  • Change DllToLoad= to DllToLoad=d2lootfilter.dll in PlugY.ini

Basic Syntax

The basic syntax is a collection of Show and Hide condition blocks. If an item matches all conditions on the block, the item will respectively be hidden or shown. Continue may be added to the end of a condition block if you would like the item to continue trying to match other condition blocks, otherwise processing stops after the first block is matched. A sample filter can be found here.

# hides all inferior items
Hide
    Rarity Inferior

# append the rune number to all runes
Show
    Class Rune
    SetName {Name} {Red}{Rune Number}
Continue

# since continue was specified on the last condiition block
# this one will also match. the name carries over from the
# previous condiition block
Show
    Rune >= Vex
    ChatNotify True
    MinimapIcon Purple

Operators

The operators are as followed. If no operator is specified = is implied.

Operator Description
= Equals
!= Not Equals
< Less Than
<= Less Than Equals
> Greater Than
>= Greater Than Equals
in X-Y Between values X and Y

Conditions

  • , essentially works as an or operator. i.e. Type Swirling Crystal, Dimensional Shard would match either item.
Name Valid Values
Type <Operator> <Value> Name of item in strings.txt lookup from weapons.txt, armor.txt, or misc.txt . i.e. Swirling Crystal. For 1.13c and 1.14d these can be found here.
Code <Operator> <Value> 3 character item code found in weapons.txt, armor.txt, or misc.txt. For 1.13c and 1.14d these can be found here.
Class <Operator> <Value> ItemType column from itemtypes.txt. For 1.13c and 1.14d these can be found here.
Ethereal <Boolean> Boolean True or False
Rarity <Rarity> Inferior, Normal, Superior, Magic, Set, Rare, Unique, Crafted
Runeword <Boolean> Boolean True or False
Prefix <Operator> <Value> Prefix ID from magicprefix.txt (todo... human readable name)
Suffix <Operator> <Value> Suffix ID from magicsuffix.txt (todo... human readable name)
ItemLevel <Operator> <Value> Number
Quality <Operator> <Quality> Normal, Exceptional, Elite
CharacterLevel <Operator> <Value> Number
Difficulty <Operator> <Value> Normal, Nightmare, Hell
Rune <Operator> <Value> Rune Name or Number. For 1.13c and 1.14d these can be found here.
Id <Operator> <Value> Unique or Set ID from sets.txt or uniques.txt
Gold <Operator> <Value> Gold value
Defense <Operator> <Value> Defense
Price <Operator> <Value> Price when vendoring item
Identified <Boolean> Boolean True or False
Armor <Boolean> Boolean True or False. True if item is any armor.
Weapon <Boolean> Boolean True or False. True if item is any weapon.
Sockets <Operator> <Number> Number of sockets
Width <Operator> <Number> Width of item in inventory
Height <Operator> <Number> Height of item in inventory
Stats <Expression> Expression that evaluates to true or false to filter an item based on stats. More details can be found in Stats

Stats

Stats are expressions that evaluate to true or false. i.e "All Resists > 0 and "Life" > 0 would match items with both all resists and life. A list of keywords that can be used in stats expressions can be found here. Stats, Skills. These keywords must be quoted ".

Functions Description
Stat Use other stats that are not in Stats. 2 arg function. The first arg is the stat id from itemcoststats.txt. The second arg is optional layer (used for skill stats). Returns the unsigned value of the stat.
ChargedSkill Check the skill level of a charged skill. i.e. ChargedSkill(54) > 0 will check if an item has charges of teleport
ClassSkill Check if an item has a certain class skill. i.e. ClassSkill(1) > 0 will check if an item has +To All Sorc skills.
TabSkill Check if an item has a certain tab skill. i.e. TabSkill(34) > 0 will check if an item has +To to Warcries skills.
Class Check if an item is a certain type/class. 1 arg function of the class from itemtypes.txt.
Min varargs. returns the minimum (non-zero, exclude stats that don't exist) value from a list
MinIn varargs. returns the minimum (including zeros, i.e. stats that don't exist on the item) value from a list
Max varargs. returns the maximum (non-zero, exclude stats that don't exist) value from a list

e.x. Max(Stat(39), Stat(43), Stat(41), Stat(45)) > 0 can be used to filter the existance of any resistance and MinIn(Stat(39), Stat(43), Stat(41), Stat(45)) > 0 for all resistances

Actions

  • Name and Description can use the following color tokens. {White}, {Red}, {Green}, {Blue}, {Gold}, {Gray}, {Black}, {Tan}, {Orange}, {Yellow}, {Purple}, {Dark Green}.
  • Name and Description can use the following special tokens: {Price} (Item Price), {Sockets} (Number of sockets)
Name Valid Values
SetStyle <Value> Sets the styling for an item. A style is a group of actions that will be applied. See Styles.
SetName <Value> Sets the name for an item. Special token {Name} is the base name for the item. When using continue it will append from the previous condition block.
SetDescription <Value> Sets the description for an item. Special token {Description} is the base name for the item. When using continue it will append from the previous condition block.
SetBackgroundColor <Value> Sets the background color of the item when on the ground. Pallette index color or White, Red, Green, Blue, Gold, Gray, Black, Tan, Orange, Yellow, Purple, Dark Green
SetInventoryColor <Value> Sets the background color of the item when in your inventory. Value is a pallette index color.
SetBorderColor <Value> Sets the border color of the item when on the ground. Value is a pallette index color.
ChatNotify <Boolean> Notify when the item drops in chat. True or False
MinimapIcon <Value> Sets the color of the item on your minimap when on the ground. Value is a pallette index color.

Styles

Lets you apply a group of actions to an item. i.e.

Style Tier 1 Items
    SetName {Purple}T1 {Name}
    ChatNotify True
    MinimapIcon Purple
    SetInventoryColor Purple

Show
    Type Diadem
    Rarity Unique
    SetStyle Tier 1 Items

Show
    Type Unearthed Wand
    Rarity Unique
    SetStyle Tier 1 Items

will apply all of the Tier 1 Items styles to the items.

Settings

The first time you join a game with the plugin loaded it should create a d2lootfilter.ini settings file in your Diablo II directory. These are the following settings that can be changed.

Setting Description
Path Path to your filter file. Default: ./item.filter
FilterLevel Used to dynamically change how strict your filter while playing. (Currently unused, still a planned feature) Default: 6
PingLevel Used to dynamically change how strict drop notification are while playing. Default: 6

In Game Commands

The filter has a few in-game commands for changing settings.

Command Description
/reload Reloads your filter.
/debug Toggles debugging.
/test <number> Tests a specific rule (by line number) against your currently hovered mouse item.
/filterlevel <number> Change the filter level.
/pinglevel <number> Change the ping/notification level.

Credits

Special thanks to everyone that has shared their work at Phrozen-Keep (Discord).

To name a few Necrolis, Lectem, Kingpin, whist, Revan, etc...

Thanks to coffin_spirit on Discord for the 1.10f implementation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].