PassLoot
What this mod does
This mod will allow you to automatically roll greed, need, pass, or if the setting is disabled, let you manually roll on loot based on customized loot rules.
By adding customized rules, you can do things like roll greed on all Bind on Equip items, except in Karazhan. You could also let it ignore all Bind on Pickup items, to let you manually roll on them.
Features
Automatic loot settings for each category:
- Need - This will roll need on the loot in this rule.
- DE - If an enchanter is present this will roll disenchant
- Greed - This will roll greed on the loot in this rule.
- Pass - This will automatically pass on the loot in this rule.
- If no loot method is selected, you will have to manually roll on the items.
- You may select multiple methods.
Loot rules can filter loot based on the following:
- Bind on status
- Can I Roll filter - Checks if you can roll differently
- Class / Spec - Checks if you are on a certain class / spec (does not check if the item is good for your spec)
- Equip slot
- Equipable - Only checks if you can actually equip the item. (does not check if the item is good for your spec)
- Group/Raid - Checks when in a group or raid - Use ZoneType for normal/heroic types.
- Guild Group - When the group has a percentage of guild mates.
- Inventory - Can check if you already own an item.
- Item Level (or formula based on current equipped level)
- Item Name (partial or exact)
- Item Price - Vendor value.
- Item Type and SubType
- Learned Item (recipes/mounts)
- Loot Won Counter/Comparison - How often you have won an item with the rule
- Player Name
- Quality
- Required Level (or formula based on current level)
- Uniqueness
- Usable Items - Checks for red text in tooltip - Good for recipes/mounts/pets.
- Zone
- Zone Type - Outside/Group/Raid - Raid Finder / Normal / Heroic
- Confirm BoP filter to accept BoP item popups
- Confirm DE filter to accept DE item popups (use care with this one)
Stat Matching
- Grab the PassLoot_ItemScales addon - Currently has support for Pawn.
- If you would like support for other addons let me know which ones.
Logic
- Rules are checked for a match in the order they appear.
- You may have more than one of the same type of filter.
- Each filter type must have at least one match.
- Items may not match any exception.
- If ( matched rule ) then ( roll ) else ( skip rule )
- Rolling is attempted in the following order: Need > DE > Greed > Pass. (Depending on what is selected)
Logic Example 1
- Quality -> Rare
- Quality -> Epic
- Binds on -> None
- Binds on -> Equip
- Binds on -> Use
This will match IF (Rare OR Epic) AND (None OR Equip OR Use)
Logic Example 2
- Item Type -> Armor
- Item Type -> Weapon
- Item Type -> Plate Armor (exception)
- Item Type -> 2H Maces (exception)
This will match IF (Armor OR Weapons) AND NOT (Plate OR 2H Mace)
Logic Example 3
- Quality -> Rare
- Quality -> Epic
- Binds on -> Pickup
- Usable -> Unsuable
- Zone Name -> Halls of Reflection (exception)
- Zone Name -> Pit of Saron (exception)
This will match IF (Rare OR Epic) AND (BoP) AND (Unusable) AND NOT (HoR OR PoS)
Roll Logic Examples
- -Need +DE +Greed -Pass = DE > Greed
- +Need -DE +Greed -Pass = Need > Greed
- +Need -DE -Greed +Pass = Need > Pass
- -Need +DE -Greed -Pass = DE > Manual roll
Basic Usage
- To open the configuration menu, type /passloot
- Use Add button to create a new rule (Rules are processed in the order they are listed)
- To remove a rule, select the rule and click the remove button
- To move a rule up and down in the list, select the rule and click the up/down buttons
- Once a rule has been selected, you can edit the description or change it's filters.
- To add a filter to the selected rule, select the filter you wish to add and click add.
- To remove a filter, select the filter in the Active Filters window and click remove. (You can also shift-right click the filter)
- To edit an active filter, select the filter in the Active Filters window and change it's properties. (You may have multiple filters of the same type to match)
- To test an item to see how PassLoot would roll, type /passloot test <shift-click an item>
Example 1 If you want to roll greed on all BoE items, except when on a raid in Karazhan, you can do the following:
-
Rule 1: (Greed)
- Zone -> Karazhan (Exception)
- Binds on -> Equip
(You can add more Bind On filters to the rule if you wish to add Bind on None or Bind on Use.)
Example 2 The only way to have it roll Need if condition X is met, and Greed if condition Y is met is to have 2 separate rules.
You wish to manually roll on all epic items, roll greed on all rare non-bop items items, and roll Disenchant on anything else (and greed if no disenchant option is available)
-
Rule 1: (nothing checked)
- Quality -> Epic
-
Rule 2: (Greed)
- Binds on -> Pickup (exception)
- Quality -> Rare
-
Rule3: (Greed + Disenchant)
- (no filters added)
Notes
-
Default settings
- Mod: On (If this setting is off, it won't do automatic pass/greed/need on anything)
- Quiet: disabled (If this setting is enabled, you won't see what it rolls on)
- All loot categories are disabled by default to let you manually roll on them.
- When rolling greed or need on BoP items, WoW will still ask you if you are sure you want to roll since it will bind on pickup. If you want to auto click yes on the BoP confirmations, add a Confirm BoP filter to the rule.
- The Loot Won Counters are only incremented when you win loot. It will remember what rule was matched and will increment that counter accordingly.
Translation
- Translation is done through the localization system on WoWAce.
1 - Include a library to support item prices (ItemPrice-1.1 or some other library).
2 - Make the itemprice module it's own addon that includes ItemPrice-1.1
I was presented with a 3rd option from someone: Check for GetSellValue() which is provided by many addons that use an vendor item price library. I decided this was my best choice. I now check for GetSellValue(), if it isn't available, it checks for ItemPrice-1.1 library and creates GetSellValue(). If neither are available, it will give you an error message saying that one or the other is missing. PassLoot will work, but the itemprice filter will NOT.
Updated the UI a bit.
I have also made it so you can add multiple filters of the same type (ie - add rare and epic quality filters at the same time) Each filter must have at least one match in order to match the entire rule.
An example of the logic:
Quality:
Rare
Epic
Binds on:
None
Equip
Use
This will match all (Rare OR Epic) AND (None OR Equip OR Use)
When it upgrades your old database, you'll still see a lot of 'Any's. You can remove them from the active filters to clean it up if you so choose.
Also, you can select a filter to remove individually, or select the title of the filter to remove all of that type. (You can also shift-right-click to remove instead of clicking the remove button)
Ok, after playing with it for awhile, I couldn't figure out why you were having this problem. I ran with a fresh copy with no other mods and other mods running, all sorts of crap trying to figure it out.
And then it hit me. Scroll the window :)
I took it for granted since I made the UI, but I realized the scroll window is kinda invisible isn't it?
When I was making the addon modular, I was getting concerned with the lack of space to work with. My options (that I could think of) were to make it bigger (which then gets too ugly), or make a scroll window.
If scrolling was NOT the issue, let me know and I'll continue to try to figure out why you can't see anything else.
Oh, and I'm testing an alpha version currently that I redesigned the UI again. Someone gave me a great idea on the ace forums with having a scrollable filter window, that you can add filters to. I've made it so you can add multiple filters too, and remove ones that are unnecessary. The scroll windows are a bit more visible in that one though.
Any hope that the version on Ace will be updated anytime soon?
WAU keeps trying to overwrite with an older version all the time.
The version on ace is the latest. (77429.1 currently) I am not sure why WAU is trying to overwrite with an older version.
It wasn't when i posted :p
At the time i posted the version on wowace was predation the addintion of the new options.
But now the versions seem to match properly.
But i miss loads of options now :(
Can't set itemtype filter anymore.
Hrm, I suspect if it got downgraded somehow, and then upgraded back.. it might be trying to upgrade the database multiple times, and messing up the formatting. You might have to delete the saved variables.
Maybe try creating a new profile and setting options there?
Are you getting any errors?
Its a clean install, no saved variables.
No errors, the options simply arent there.
Avalable settings with all modules checked:
(Description) (Zone)
(Zone type) (Quality)
(Bind on) (Unique)
(Equip slot)
(Item list)
No trace of any of the more advanced options found in the old version (like itemtype/subtype, despite it being checked in the option)
I love this tool. i'm using it to pass on marks, sunmotes epic gems etc. but the dropdowns do not populate (like Bind On, Quality, etc). I'm getting the following error on load, don't know if its related. But, i'd love to get it working so i can make some more advanced rules!
Date: 2008-06-11 20:11:15
ID: 61
Error occured in: Global
Count: 185
Message: ..\AddOns\PassLoot\PassLoot.lua line 697:
attempt to compare number with nil
Debug:
(tail call): ?
PassLoot\PassLoot.lua:697: DisplayCurrentRule()
PassLoot\PassLoot.lua:539: ResetProfileLootWonCounters()
PassLoot\PassLoot.lua:303: ?()
...rat\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146:
...rat\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146
[string "safecall Dispatcher[1]"]:4:
[string "safecall Dispatcher[1]"]:4
[C]: ?
[string "safecall Dispatcher[1]"]:13: ?()
...rat\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: Fire()
...\GridStatusThreat\libs\AceEvent-3.0\AceEvent-3.0.lua:70:
...\GridStatusThreat\libs\AceEvent-3.0\AceEvent-3.0.lua:69
Thanks for the email, update should fix it. (yet another bug from trying to upgrade older databases that has cropped up).. Sometime I am just going to have to stop trying to upgrade older databases :)
PassLoot hasn't worked correctly for a while now. I have defined a rule to automatically roll greed on all BoE drops in raids, yet it only does this for green BoE drops. For blue or epic BoE drops, I still get the loot window popping up with need/greed/pass buttons. I'm an officer and I want to roll greed on all BoE items to collect them for the guild bank without having to click the loot window every time. PassLoot used to do this for me but it stopped working since last patch even though I haven't changed my defined rules. What seems to be the problem? I'm using WAU to always get the latest version.
Another thought I had, is that you are using a WoW client that isn't using English localization. My function that checks for Bind/Unique stuff is checking the global strings that the WoW client provides. If those do not match what is displayed in the tooltip, this could be the problem.
(need more info)
While I try to test and debug most of the code before committing to the ace site, one of the biggest problems I have is trying to convert older databases to a newer version, so that it will be compatible. Sometimes the UpgradeDatabase() function doesn't work right, and an option that should be set to an 'any' type gets set wrong or something. (This is also why I try to commit to ace as unstable before I turn it to stable there and also submit it to curse and other sites)
This is what I suspect has happened. An option in one of your old rules is now set improperly, and you havn't noticed it yet. ie - maybe the BoE rule (if it's first rule) had Green quality items added to it by accident or something.
Check your messages on curse here, I sent ya an email to send the passloot saved variables file, to see if I can figure out why it's not working right.
Thank you for the raid/group filter, that seems to work well :)
A little other suggestion for lazy people:
if we enter the word 'zone' in the zone field, then the name of the current zone is automagically filled
I added in an ability to shift-right-clicking the zone edit box to fill in the current zone.
I also added in tracking of how many times you have won loot based on the rule they match. The loot won counter can be reset on joining a raid/group, manually reset, or not.
The loot tracking seems to be working for me. I have not updated to this site yet, still letting you beta testers test it out for me. haha :)
Getting this error in bugsack as soon as I log in:
2008/05/14 09:44:54-297-x1]: PassLoot-3.0\PassLoot.lua:468: bad argument #1 to 'pairs' (table expected, got nil)
PassLoot-3.0\PassLoot.lua:468: in function `UpgradeDatabase'
PassLoot-3.0\PassLoot.lua:21: in function <Interface\AddOns\PassLoot\PassLoot.lua:11>
(tail call): ?:
<in C code>: ?
<string>:"safecall Dispatcher[1]":9: in function <[string "safecall Dispatcher[1]"]:5>
(tail call): ?:
AceAddon-3.0\AceAddon-3.0.lua:316: in function `InitializeAddon'
AceAddon-3.0\AceAddon-3.0.lua:404: in function <Interface\AddOns\Ace3\AceAddon-3.0\AceAddon-3.0.lua:397>
Should be fixed in 73894.
I should be able to add a group/raid/any type selection without much problem.
As for a filter for the number in your inventory... I started thinking about how this would be implemented and several questions came to mind.
Would it check against the number already in your inventory prior to the raid you joined?
If not, when would it reset this number checking?
Also, if you had a rule that was to greed all BoE greens but only twice, would it then check your inventory for ALL BoE greens? Or would it match just the BoE green that it matched that one time (For example you get a giant axe of the monkey, does it check your inventory for giant axes of the monkey, or should it check for just all BoE greens that the rule originally inteded to be made for?
Not sure if that made any sense to you.