Baldrick adds a button to your interface which automatically picks the best daily quest item to use based on all the information it can gather (location, status of the quest, etc).
Usage & Commands
The chat command is /baldrick or /br, however it's easier to configure from WoW's Interface->Addons configuration dialog.
Some options can only be set by using WoW's Interface->Addons dialog. These include the profile.
Baldrick supports
ButtonFacade, use /bf to configure the skin and color settings for the button if you have it installed.
Baldrick supports
LibKeyBound, use /kb to enter key binding mode.
Baldrick's button will stick to other frames that support
LibStickyFrames
Baldrick outputs the current item it will use using LibDataBroker-1.1. Note that clicking on the item in a Broker addon will not activate the item. You must have Baldrick bound to a key to use it in a Broker addon and hide its own button.
Localisations
Many thanks to thrillseeker for the deDE localisation. :)
Quest Quirks
- To tell Baldrick you want to cook for Super Hot Stew, you need to target a dead Abyssal Flamebringer.
- To tell Baldrick you want to free some murlocks for Disrupt the Greengill Coast, you need to target a live Greengill Slave.
Handy Outfitter Scripts
A handy script for Outfitter to automatically equip and unequip your Multiphase Spectrographic Goggles is:
-- $EVENTS ZONE_CHANGED_INDOORS ZONE_CHANGED ZONE_CHANGED_NEW_AREA QUEST_LOG_UPDATE
-- $DESC Equips the outfit when you are in one of the zones or minimap sub-zones listed below and "The Multiphase Survey" is not already complete
-- $SETTING zoneList={Type="ZoneList", Label="Zones"}
-- $SETTING minimapZoneList={Type="ZoneList", ZoneType="MinimapZone", Label="Minimap zones"}
local currentZone = GetZoneText()
local Baldrick = Baldrick
for _, zoneName in ipairs(setting.zoneList) do
if zoneName == currentZone then
equip = ( Baldrick ~= nil ) and Baldrick.HasQuestAndNotComplete( 11880 )
break
end
end
if not equip then
currentZone = GetMinimapZoneText()
for _, zoneName in ipairs(setting.minimapZoneList) do
if zoneName == currentZone then
equip = ( Baldrick ~= nil ) and Baldrick.HasQuestAndNotComplete( 11880 )
break
end
end
end
if didEquip and equip == nil then
equip = false
end
Just set Minimap zones to be either just the localized name for "Spirit Fields" or that and "Nagrand" depending on your preference.
API to add a quest module
Baldrick includes a quest module for daily quests. An API is exposed to add new quest modules.
Baldrick:RegisterQuestModule( moduleName, questList, checkLoadFunc )
This function allows for the registration of a quest module.
Args
- "moduleName" : string - the name of your module, presented to the user on Baldrick's configuration screen
- questList : table of questInfos - see below for definition of a [[#questInfo]]
- [checkLoadFunc] : function - a function, that returns a boolean, to call to check if the module should be added to the list of quests
Example
Baldrick:RegisterQuestModule( "Daily Quests", dailyQuestList )
questInfo
A questInfo is a table of values which describe a quest.
These are the availiable fields; required fields are in bold:
- questIDs: Either a number with a questID or a table of numbers with questIDs.
- questItems: A table of items required for the quest. The one with an index of default is what will show on the button. The fields for items are:
- questItem: the itemID of the item
- questItemCount: the MINIMUM number required (the comparison will be >= )
- subZones: A string of subzones/zones this quest is valid for. Zone names will be checked if in a null subzone. Separate entries with |.
- target: String that has the name of a mob that must be the current target, in the player's locale.
- addionalEvents: Either a string with the name of an additional event that this quest should be checked when fired, or a table of strings with names. In addition to the WoW events, mounting and dismounting can be checked by using !Mounted and !Dismounted respectively.
- func: A function that takes two parameters. The first parameter is the quest data iself, the second parameter will hold the questID being used. If used this function must return a boolean, true if this quest is valid to show on the button.
Example
{
--Distraction at the Dead Scar
--The Air Strikes Must Continue
questIDs = { 11532, 11533, },
--Arcane Charges
questItems = { default = { questItem = 34475, questItemCount = 1, }, },
subZones = L["The Dead Scar"],
additionalEvents = { "PLAYER_CONTROL_LOST", "PLAYER_CONTROL_GAINED", "TAXIMAP_CLOSED" },
func = function() return UnitOnTaxi( "player" ) end,
},
Future Plans
- Possibly integration into quest addons?
Official Thread