This project is abandoned and its default file will likely not work with the most recent version of World of Warcraft. Whether this project is out of date or its author has marked it as abandoned, this project is no longer maintained.

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.


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:
-- $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 )

if not equip then
    currentZone = GetMinimapZoneText()
    for _, zoneName in ipairs(setting.minimapZoneList) do
        if zoneName == currentZone then
            equip = ( Baldrick ~= nil ) and Baldrick.HasQuestAndNotComplete( 11880 )

if didEquip and equip == nil then
    equip = false
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.


"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


Baldrick:RegisterQuestModule( "Daily Quests", dailyQuestList )


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.


    --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"],
    func = function() return UnitOnTaxi( "player" ) end,

Future Plans

  • Possibly integration into quest addons?
Official Thread


  • To post a comment, please or register a new account.
Posts Quoted:
Clear All Quotes

About This Project

  • Project ID
  • Created
    Sep 26, 2008
  • Last Released File
    Dec 9, 2008
  • Total Downloads
  • License



Recent Files