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?
Facts
- Date created
- 26 Sep 2008
- Category
- Last update
- 28 Sep 2009
- Development stage
- Release
- Language
- enUS
- License
- BSD License
- Curse link
- Baldrick
- Reverse relationships
- 1
- Recent files
- B: 1.6.135-beta for 3.1.0 on 28 Sep 2009
- A: r134 for 3.1.0 on 28 Sep 2009
- B: 1.6.133-beta for 3.0.9 on 27 Sep 2009
- B: 1.6.132-beta for 3.0.9 on 12 Sep 2009
- A: r131 for 3.0.9 on 12 Sep 2009
Authors
Relationships
- Optional dependency
- ButtonFacade
- Embedded library
- Ace3
- LibBabble-Zone-3.0
- LibGratuity-3.0
- LibKeyBound-1.0
- LibLordFarlander-2.0
- LibQuixote-2.0
- LibStickyFrames-2.0