What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Be careful, many weapon loot rules ignored!

GilesSmith

New Member
Joined
Jun 2, 2012
Messages
1,564
Reaction score
34
Be careful, many loot rules ignored!

Further to my post on various issues with DB looting (see here), I've tried to compile a list of absolute, definite issues for the DB team to focus on. These are things that are not affected by your routine, plugins or anything else, but are core to DB itself:

Note: See this post: [url]http://www.thebuddyforum.com/demonbuddy-forum/demonbuddy-support/58860-careful-many-weapon-loot-rules-ignored.html#post607881[/url] for fuller analysis & detail on some of these issues.

* DB sometimes stashes the wrong item - even if ItemManager.EvaluateItem(item, ItemManager.RuleType.Keep) returns false, it can stash an item sometimes, and other times IGNORE a valid item.
-- May be down to DB randomly reading item.name, item.ItemBaseType, item.itemtype incorrectly at times.
* LifeOnHit is not supported. (due next update)
* LifeSteal is not supported. (due next update)
* PickupRadius is not supported. (due next update)
* Total block % would be a great addition (not the "+block %" bonus, but the *TOTAL* block% of a shield, if possible?).
* Following stats are supposed to be supported by DB, but DB doesn't read the values (thinks they are always at 0):
- Attack Speed ("AttackSpeedPercent"). (due next update)
- Damage Bonuses ("MinDamage", "MaxDamage") (eg from tooltip saying "+62-219 damage" or "+18 minimum damage")
- Reduce damage from melee attacks % (DamageReductionPhysicalPercent") (NB: May be the same/difference for reduce damage from range, and reduce damage from elites?)
- Thorns ("Thorns")
- Arcane Resist ("ResistArcane").
- Cold Resist ("ResistCold").
- Fire Resist ("ResistFire")
- Holy Resist ("ResistHoly")
- Lightning Resist ("ResistLightning")
- Physical Resist ("ResistPhysical")
- Poison Resist ("ResistPoison").
* Many item types are unsupported by DemonBuddy and will be IGNORED by most filters!. These item types are;
-- Polearm weapons (treated as "Misc - Unknown")
-- Barbarian Mighty weapons (treated as "Misc - Unknown")
-- Monk Daibo weapons (treated as "Misc - Unknown")
-- Wizard Wands (treated as "Misc - Unknown")
-- Demon Hunter 1-handed hand crossbows (treated as "Misc - Unknown")
-- Barbarian Mighty Belts (treated as "Misc - Unknown")
-- Demon Hunter Cloaks (treated as "Misc - Unknown")
-- Monk Spirit Stones (treated as "Misc - Unknown")
-- Witch Doctor Masks (treated as "Misc - Unknown")
-- Many wizard sources (often treated as "Gem - Unknown") - *SOME* sources recognised as "Armor - Orb".
-- Many Witch Doctor Mojos (often treated as "Gem - Unknown") - *SOME* mojos recognised as "Armor - Mojo".
* Rulesets are definitely (and rightly) AND lists, not OR lists. Therefore only the highest "quality" flag will be matched in a single ruleset, and so "quality" should really be a flag set at <itemrule> level, not <rule> level. Having multiple, differing qualities on different rules within the same ruleset will cause only the highest quality listed to be used.
 
Last edited:
Below are some of the experiments I did for certain weapon types, and two-handed/one-handed weapons. Take for example these two very simple weapon keep rules I used for testing (in an otherwise very clean lootruleset)
Code:
   <ItemRule itemBaseType="Weapon" twoHanded="false" description="1 hander">
    <StatRules>
     <Rule stat="DPS" minValue="330" quality="Magic1" />
    </StatRules>
   </ItemRule>
   <ItemRule itemBaseType="Weapon" twoHanded="true" description="2 hander">
    <StatRules>
     <Rule stat="DPS" minValue="100" quality="Magic1" />
    </StatRules>
   </ItemRule>

I applied the lootrules to 6 test items, which have the following stats:
2-handed bow: 210.7 DPS
2-hand monk Daibo: 376.2 DPS
2-hand axe: 406.0 DPS
2-hand mighty barbarian hammer: 834.7 DPS
1-hand axe: 132.6 DPS
1-hand spear: 346.2 DPS

Now, it should have matched ALL 4 2-handers (as they all have more than 100 DPS), and only one 1-hander (only 1 has more than 330 DPS). The loot rules however only matched against these items:

2-handed bow (210.7 DPS) - matched against the two-hander rule.
1-hand spear (346.2) - matched against the one-hander rule.
2-hand axe (406.0) - matched against the one-hander rule.

The 2-handed "mighty weapon" (barbarian-only with 834.7 DPS) was ignored, as was the 2-handed "Daibo" (monk-only with 376.2 DPS). The 2-handed axe was somehow matched with the 1-handed rule even though it's a 2-hander. I couldn't get the monk-only or barbarian-only weapons matched against anything, and I couldn't get any 2-hander rule to match the 2-handed axe, only 1-handed rules worked. 2-handed rules only worked for the bow.

This is only after a quick test - I've no doubt there are many other cases where weapons that should be matched are being ignored.

I tried to get the Daibo or Mighty Weapon to be accepted by any loot rule, but even this rule ignored the Daibo and Mighty weapon:
Code:
   <ItemRule itemBaseType="Weapon" description="Any weapon">
    <StatRules>
     <Rule stat="level" minValue="1" quality="Magic1" />
    </StatRules>
   </ItemRule>
It would seem that they don't count as a "Weapon" whatsoever.

And the below rule ignored all weapons;
Code:
   <ItemRule itemBaseType="Weapon" quality="Magic1" description="Any weapon" />
 
Last edited:
Thank you!
The default loot rules are defiantly lacking.
 
Decided to do some testing on the idea of having different quality listings within a single ruleset, as per the Item Rules QuickStart Guide;

Code:
   <ItemRule itemBaseType="Weapon">
    <StatRules>
     <Rule stat="DPS" minValue="400" quality="Magic1" />
     <Rule stat="DPS" minValue="500" quality="Rare4" />
    </StatRules>
   </ItemRule>

Against these items:
- Blue 238.2 DPS
- Yellow 368.9 DPS
- Blue 447.7 DPS
- Yellow 525.2 DPS
- Blue 531.0 DPS
- Blue 736.8 DPS
ONLY the yellow 525.2 DPS was matched (all other weapons were ignored). Trying this rule backwards, with the blue listed 2nd and needing higher DPS than the yellow;

Code:
   <ItemRule itemBaseType="Weapon">
    <StatRules>
     <Rule stat="DPS" minValue="400" quality="Rare4" />
     <Rule stat="DPS" minValue="500" quality="Magic1" />
    </StatRules>
   </ItemRule>
Against these items:
- Blue 238.2 DPS
- Yellow 368.9 DPS
- Blue 447.7 DPS
- Yellow 525.2 DPS
- Blue 531.0 DPS
- Blue 736.8 DPS

And the same thing again - only the yellow 525.2 DPS weapon was picked up.

These lists are definitely AND lists. They never act like OR lists. If you try to have two separate "qualities" listed, only the highest quality rule will be matched (since a RARE4 is greater than or equal to MAGIC1 and greater than or equal to RARE4... but a MAGIC1 is greater than or equal to MAGIC1 but less than RARE4, so it will never match).

This does show that "quality" definitely needs to be removed from <rule> level and applied only at <itemrule> level, the same as itemtype, itembasetype and the (slightly broken) twohanded stats are.
 
You just managed to solve the mystery of me not finding any 1.2k dps weapons from 6 bots that's been running for more than a week.
 
You just managed to solve the mystery of me not finding any 1.2k dps weapons from 6 bots that's been running for more than a week.

Hah, well, I don't think you're the only one that's been potentially missing out on huge DPS weapons and valuable items because of loot rule "oddities". Check out my loot rules (link in the sig) for something pretty reliable in the meantime, until DB can sort out some of these root issues! :)
 
Wow, I had a feeling I was missing out on a lot of good items. I noticed that DB regularly will pick up 1 or 2 items, and then leave the last item laying on the ground and TP and exit game for no reason, even though I have loot rules set to pick up ALL blue+ items. I've often wondered how many times this "last' item has been a legendary, or even a set piece. Add to that the loot rules fuck ups, and I'm surprised I've found anything good.. (come to think of it, I haven't found a single good item with DB, except ONE legendary)..
 
And still no dev comment on this issue.
 
Danger!

I've found that DB can sometimes ignore it's own rulecheck routine results. This routine;
ItemManager.EvaluateItem(item, ItemManager.RuleType.Keep)

Would check if an item qualifies for a specific category of rules (above example would be if it matched any Keep category items). But sometimes it returns invalid results.

I've forced DB to stash an inventory full of random items I have, with a couple of good items in, over and over again and again and watched the output each time - and sometimes it'll stash an item that doesn't match any rules, and other times can even ignore an item that does match rules.

I haven't yet found out the cause of this - but I do wonder if it comes back to ZetaDia data not always being available (sometimes being null/blank - see this thread) - and this happening at the same time as DB is checking loot data while it stashes might be causing it to think there are no loot rules at all or read the wrong loot rules. But this is a very nasty bug IMO, and needs fixing as priority in terms of item/looting related bugs.
 
Last edited:
Danger!

I've found that DB can sometimes ignore it's own rulecheck routine results. This routine;
ItemManager.EvaluateItem(item, ItemManager.RuleType.Keep)

Would check if an item qualifies for a specific category of rules (above example would be if it matched any Keep category items). But sometimes it returns invalid results.

I've forced DB to stash an inventory full of random items I have, with a couple of good items in, over and over again and again and watched the output each time - and sometimes it'll stash an item that doesn't match any rules, and other times can even ignore an item that does match rules.

I haven't yet found out the cause of this - but I do wonder if it comes back to ZetaDia data not always being available (sometimes being null/blank - see this thread) - and this happening at the same time as DB is checking loot data while it stashes might be causing it to think there are no loot rules at all or read the wrong loot rules. But this is a very nasty bug IMO, and needs fixing as priority in terms of item/looting related bugs.

I confirm that it happens, I've seen DB pick up white items and stash crap blues that didn't match any rules.

The lack of support for some kinds of items \ attributes also make it a pain sometimes to filter out the good stuff, either we pick crap up or we pass on great items.

This has to be reported and noted by the devs.
 
Item stats in diablo3 are actually decimal values, the UI just rounds them for you. Most people will want to set useRoundedValues="true" in your lootrules. This means that if an item does have 17.5 MF, the XML rules will treat it as 18.
 
ive loaded my own loot rules yet DB says this

[10:23:19.269 N] Creating new game, Params: <Act:A1 Difficulty:Inferno Quest:72095 QuestStep:51 ResumeFromSave:True IsPrivate:True>
[10:23:33.823 N] [Items] Loaded Item Rules: Default Item Rules
 
ive loaded my own loot rules yet DB says this

[10:23:19.269 N] Creating new game, Params: <Act:A1 Difficulty:Inferno Quest:72095 QuestStep:51 ResumeFromSave:True IsPrivate:True>
[10:23:33.823 N] [Items] Loaded Item Rules: Default Item Rules

Just down to the name in the rules. Load the XML file up, and right at the top;
<ItemRules name="Giles Ultimate Inferno Loot" useRoundedValues="true">

Whatever "name" is given there, will be shown when the rules load!
 
Just down to the name in the rules. Load the XML file up, and right at the top;
<ItemRules name="Giles Ultimate Inferno Loot" useRoundedValues="true">

Whatever "name" is given there, will be shown when the rules load!
DoH! thanks! =) it has that in my rules xml file im changing!
 
How come the no gems profile is still transferring gems in my stash, it suppose to sell it. or never loot it at all.
 
Great work finding this out.

I knew there was something wrong with the loot rules, having 200+ MF and not finding any weapons in my stash using the default rules ever since DB came out.
 
Further to my post on various issues with DB looting (see here, I've tried to compile a list of absolute, definite issues for the DB team to focus on. These are things that are not affected by your routine, plugins or anything else, but are core to DB itself:

* DB sometimes stashes the wrong item - even if ItemManager.EvaluateItem(item, ItemManager.RuleType.Keep) returns false, it can stash an item sometimes, and other times IGNORE a valid item.
* LifeOnHit is not supported.
* LifeSteal is not supported.
* PickupRadius is not supported.
* The "MinDamage" and "MaxDamage" stats (used mostly by amulets, rings, mojos and sources) are not working - any filter requiring them will never match an item.
* Many item types are unsupported by DemonBuddy and will be IGNORED by most filters!. These item types are;
-- Polearm weapons (treated as "Misc - Unknown")
-- Barbarian Mighty weapons (treated as "Misc - Unknown")
-- Monk Daibo weapons (treated as "Misc - Unknown")
-- Wizard Wands (treated as "Misc - Unknown")
-- Demon Hunter 1-handed hand crossbows (treated as "Misc - Unknown")
-- Barbarian Mighty Belts (treated as "Misc - Unknown")
-- Demon Hunter Cloaks (treated as "Misc - Unknown")
-- Monk Spirit Stones (treated as "Misc - Unknown")
-- Witch Doctor Masks (treated as "Misc - Unknown")
-- Many wizard sources (often treated as "Gem - Unknown") - *SOME* sources recognised as "Armor - Orb".
-- Many Witch Doctor Mojos (often treated as "Gem - Unknown") - *SOME* mojos recognised as "Armor - Mojo".
* The "twohanded" flag is ignored on some weapons/weapon types, and so a two-handed weapon can be treated as a one-handed weapons in the filters at times.
* Stats are sometimes incorrectly read as a decimal by DB. For example a Magic Find of 16 (listed in Diablo client tooltips), is sometimes read by DemonBuddy as being 15.99, so will not be filtered if you require 16 Magic Find.
* Rulesets are definitely (and rightly) AND lists, not OR lists. Therefore only the highest "quality" flag will be matched in a single ruleset, and so "quality" should really be a flag set at <itemrule> level, not <rule> level. Having multiple, differing qualities on different rules within the same ruleset will cause only the highest quality listed to be used.

LifeOnHit, LifeSteal and PickupRadius will be easy fixes. Thanks for the heads up. (There's a lot of stats, and its a bit hard to ensure we got them all covered. Some are just plain useless (like +%damage, and other + damage types), and some are not.

The MinDamage/MaxDamage should be working fine. Can you give me an example? I tested it with amulets, rings, and a few weapons. They all gave the proper values back. I'll be more than happy to check it again though.

As for the missing item types, I'm aware of missing monk helms, and barbarian mighty weapons/belts. Unfortunately, they're rare enough to be a pain to get, and expensive enough on the AH to make it even worse. Wizard sources and WD mojo's should be working. Can you give me specific examples?

The "twoHanded" attribute; can you give me an example? I can't seem to reproduce this one.

Stats are never read incorrectly! The game itself just rounds values when displayed to the end-user. That's what the "useRoundedValues" attribute is for. Use that, and they should match up with whats shown in game. For those people who want *actual* stat values, they can turn the rounding off. (There will eventually be 3rd party tools that provide full item stats, down to their actual %s. Hence the support for it now. Also, it helps for min/maxing your characters!)

Rulesets are AND lists, correct.

I'll be looking into the evaluator again for the item rules. Unfortunately, the way its implemented now, is a bit backwards. It works great most of the time, but the flexibility in the XML can make it cause issues.
 
Thanks for the feedback Apoc. I'll see what help I can give you. I made a plugin that reads all backpack items and outputs every internal DB item stat to try and help you. So you can make sure I am seeing DB internal stats, here's the code that does it;
Code:
private void OutputStats(ACDItem item)
{
 Log("== Name: " + item.Name);
 Log("== InternalName: " + item.InternalName);
 Log("== ItemBaseType: " + item.ItemBaseType);
 Log("== ItemType: " + item.ItemType);
 if (item.IsUnidentified) { Log("(***Unidentified***)"); }
 Log("  (IsArmor=" + item.IsArmor.ToString() + ")");
 Log("  (IsGem=" + item.IsGem.ToString() + ")");
 Log("  (IsMisc=" + item.IsMiscItem.ToString() + ")");
 Log("  (Is2Square=" + item.IsTwoSquareItem.ToString() + ")");
 Log("  (Is2Handed=" + item.IsTwoHand.ToString() + ")");

 foreach (var itemStat in item.Stats.GetType().GetProperties())
 {
  Object rawValue = itemStat.GetValue(item.Stats, null);
  Log(String.Format("---- {0}: {1} ({2})", itemStat.Name, rawValue.GetType(), rawValue.ToString()));
 }
}
I've tried and tested it, it seems to work correctly - it's outputting whatever DB has stored for every single item-stat and variable.

Rulesets and Random Errors:
Rulesets are AND lists, correct. I'll be looking into the evaluator again for the item rules. Unfortunately, the way its implemented now, is a bit backwards. It works great most of the time, but the flexibility in the XML can make it cause issues.
After doing loads of testing with viewing what DemonBuddy is seeing item stats as, it seems that seemingly at random it will totally get the item name, itemtype, and baseitemtype of an item wrong - and then later on get it right. I can't pin down the exact cause, but it does it quite often (especially with multiple items being read in a row). Eg entirely at random it can decide an amulet is an unknown gem, or a crossbow is a boot-type armour with the odd scan. This is likely the cause of the incorrect stashing it sometimes does. Is it a screw up in the reading of D3 memory, confusion from reading stats that DB can't actually handle correctly atm (like the min/max damage and fire resistance stats), or something to do with the way DB refreshes Zeta data perioriodically, causing all the data to be Null/blank at the same time DB is trying to read item data in?

What confused me though is the "InternalName" was always correct, even if the name, itemtype, and baseitemtype were wrong. How about a failsafe check - like, "if internalname is *amulet* and baseitemtype is anything but jewelry or itemtype is anything but amulet then re-read the stats until valid, or log as error & debug.

Also I really do think it'd be helpful if you could make the "Quality" be set at, and read from, the "<itemrule>" level (no point having differing quality levels within the same ruleset, since it's an AND list).

Missing Item Types:
As for the missing item types, I'm aware of missing monk helms, and barbarian mighty weapons/belts. Unfortunately, they're rare enough to be a pain to get, and expensive enough on the AH to make it even worse. Wizard sources and WD mojo's should be working. Can you give me specific examples?
Below is the Internal Name of every item I can find that DB reads incorrectly. Most are just read by DB as "Misc - Unknown", some are read as other items. Be sure to scroll down the box! :D
Code:
Legendary Helm
== InternalName: Helm_norm_unique_08-132

Barbarian Mighty Belts (belts)
== InternalName: BarbBelt_norm_base_04-128
== InternalName: BarbBelt_norm_base_04-134
== InternalName: BarbBelt_norm_base_01-135
== InternalName: BarbBelt_norm_base_02-139

Demon hunter Cloaks (chest pieces)
== InternalName: Cloak_norm_base_04-129
== InternalName: Cloak_norm_base_02-137
== InternalName: Cloak_norm_base_01-138
== InternalName: Cloak_norm_base_03-97

Monk Spirit Stones (helms)
== InternalName: spiritStone_norm_base_03-96 
== InternalName: spiritStone_norm_base_02-100 
== InternalName: spiritStone_norm_base_04-102
== InternalName: spiritStone_norm_base_01-103 

Voodoo Masks (helms)
== InternalName: voodooMask_norm_base_01-64
== InternalName: voodooMask_norm_base_03-133
== InternalName: voodooMask_norm_base_02-147
== InternalName: voodooMask_norm_base_04-35
== InternalName: voodooMask_norm_unique_04-90

Wands (wizard one-hand weapons)
== InternalName: Wand_norm_base_04-123
== InternalName: Wand_norm_base_07-129

Ceremonial Daggers (Witch Doctor one-hand weapons)
== InternalName: ceremonialDagger_norm_base_02-128

Hand Crossbows (Demon Hunter one-hand weapons)
== InternalName: handXbow_norm_base_06-129
== InternalName: handXbow_norm_base_05-133
== InternalName: handXbow_norm_base_03-132
== InternalName: handXbow_norm_base_02-135

One-hand mighty weapons (barbarian one-handers)
== InternalName: mightyWeapon_1H_norm_base_02-65
== InternalName: mightyWeapon_1H_norm_base_02-134
== InternalName: mightyWeapon_1H_norm_base_04-129
== InternalName: mightyWeapon_1H_norm_base_03-133

Two-hand mighty weapons (barbarian two-handers)
== InternalName: mightyWeapon_2H_norm_base_01-136
== InternalName: mightyWeapon_2H_norm_base_03-17
== InternalName: mightyWeapon_2H_norm_base_02-16

Daibos (Monk two-handers)
== InternalName: combatStaff_norm_base_01-152
== InternalName: combatStaff_norm_base_02-65
== InternalName: combatStaff_norm_base_03-150

Polearms (generic two-handers)
== InternalName: Polearm_norm_base_04-135
== InternalName: Polearm_norm_base_03-23
== InternalName: Polearm_norm_base_02-147

Staffs (generic two-handers)
== InternalName: Staff_norm_base_02-64
== InternalName: Staff_norm_base_03-35
== InternalName: Staff_norm_base_01-15

Two-Handed Issues:
The "twoHanded" attribute; can you give me an example? I can't seem to reproduce this one.
The internal stat "Is2Handed" appears to be correct within DB (shows True or False correctly), but it seems that a ruleset with "twohanded="false"" has that requirement ignored altogether (a two-handed item will still rule-match with a ruleset that has twohanded="false" set). DB just matches the first rule it can find REGARDLESS of if it has twohanded="true" set in the rules or not. For example these rules;
Code:
   <!-- One Handed -->
   <ItemRule twoHanded="false" description="One Handed Match">
    <StatRules>
     <Rule stat="DPS" minValue="1" />
    </StatRules>
   </ItemRule>
   <!-- Two Handed -->
   <ItemRule twoHanded="true" description="Two Handed Match">
    <StatRules>
     <Rule stat="DPS" minValue="1" />
    </StatRules>
   </ItemRule>
Matched the "One Handed Match" on EVERY SINGLE two handed weapon I tried. The Two handed Match never hit, as DB matches the first rule it thinks it can match then stops (which is the correct behaviour).
All two-handed weapons had "Is2Handed" value set to true in the DB internal stats, but that was ignored for the actual rule-matching. Note however that one-handed items seem to be correctly being ignored by a rule in which TwoHanded is set to "True" (might not always, but did for items I tested).

MinDamage/MaxDamage Issues (also broken Thorns stat and broken Fire Resist stat):
The MinDamage/MaxDamage should be working fine. Can you give me an example? I tested it with amulets, rings, and a few weapons. They all gave the proper values back. I'll be more than happy to check it again though.
(note: fire resistance is also not being read, and always being listed as a 0. So is Thorns on some/all item-types. Other specific stats may be doing likewise)
Here's a ring that in D3 tooltip shows "+9-18 damage";
Code:
[GilesItemCheck 1.0]
== Name: Radiance Doctrine
== InternalName: Ring_20-151
== ItemBaseType: Jewelry
== ItemType: Ring
   (IsArmor=False)
   (IsGem=False)
   (IsMisc=False)
   (Is2Square=False)
   (Is2Handed=False)
 ---- Item: Zeta.Internals.Actors.ACDItem ([Ring_20-151] - Radiance Doctrine)
 ---- MinDamage: System.Single (0)
 ---- MaxDamage: System.Single (0)
(the "(0)" in brackets are the actual values DB is seeing)

Here's an amulet that in D3 tooltip shows "+24 Minimum Damage";
Code:
[GilesItemCheck 1.0]
== Name: The Course
== InternalName: Amulet_norm_base_14-59
== ItemBaseType: Gem
== ItemType: Unknown
   (IsArmor=False)
   (IsGem=True)
   (IsMisc=False)
   (Is2Square=False)
   (Is2Handed=False)
 ---- Item: Zeta.Internals.Actors.ACDItem ([Amulet_norm_base_14-59] - The Course)
 ---- MinDamage: System.Single (0)
 ---- MaxDamage: System.Single (0)

(note that the amulet had a baseitem type of "Gem" and an itemType of "Unknown")

Here's a wizard source (off-hander item) with "+62-219 damage" in the tooltip;
Code:
[GilesItemCheck 1.0]
== Name: Banished Haunt
== ItemBaseType: Gem
== ItemType: Unknown
   (IsArmor=False)
   (IsGem=True)
   (IsMisc=False)
   (Is2Square=False)
   (Is2Handed=False)
 ---- Item: Zeta.Internals.Actors.ACDItem ([orb_norm_base_03-92] - Banished Haunt)
 ---- MinDamage: System.Single (0)
 ---- MaxDamage: System.Single (0)
(note that the source/orb had a baseitem type of "Gem" and an itemType of "Unknown")

Basically - MinDamage/MaxDamage seems to always be returning 0 for everything? Or at least those items I tested against. Continued to be the same for things like Witch Doctor Mojos (which can have damage like the wizard sources).

LifeOnHit, LifeSteal, PickupRadius:
LifeOnHit, LifeSteal and PickupRadius will be easy fixes. Thanks for the heads up. (There's a lot of stats, and its a bit hard to ensure we got them all covered. Some are just plain useless (like +%damage, and other + damage types), and some are not.
Great, and yeah there's a *LOT* of stats - and as you say most are bloody useless, or if not useless then not massively needed for DemonBuddy to be able to filter by. But LifeOnHit, LifeSteal and PickupRadius are three that I think are important enough to need their own filters.

Stats As Decimals:
Stats are never read incorrectly! The game itself just rounds values when displayed to the end-user. That's what the "useRoundedValues" attribute is for. Use that, and they should match up with whats shown in game.
I think for safety then, all stat rules should have rounding set to true, possibly! Missing out on, for example, a +40% magic find amulet if you had very strict stats, just because it was "39.9998" internally, would be painful! But then I suppose if people specifically only wanted attack speeds of 4%+, with rounding they'd also receive 3.5%+ items... but it's better to get items slightly below than miss out on the good ones.
 
Last edited:
Back
Top