Baldrick

From WowAce Wiki
Jump to: navigation, search
Summary
Baldrick
Quest helping: fetching items to use, that sort of thing.
TOC 2.4 (20400)
Category Quest Addons
Author LordFarlander
Details
Version 1.5
Embeds LibStub, Ace3, LibQuixote-2.0, LibGratuity-3.0, LibKeyBound-1.0, LibStickyFrames-2.0, LibLordFarlander-2.0, LibBabble-Zone-3.0
OptionalDeps ButtonFacade, ClosetGnome
Links
Website wowinterface.com
Betas Ace SVN Zip
Changelog FishEye

Official Thread

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?