Addon Details
Addon ID:
1479
Addon Version:
1.5.1
Expansion:
3.3.5
Upload date:
Nov 06, 2024
Last Updated:
Nov 06, 2024
Downloads:
883
Expansion
Categories
Developers
Miratu
Creator
Having issues?
Questomatic streamlines your questing experience by allowing you to instantly accept and turn in quests.
Download Quest-o-matic
Wrath of the Lich King
3.3.5
Current
Comments (5)
function Questomatic:QUEST_COMPLETE(eventName, ...)
if (self.db.profile.toggle) and (self.db.profile.complete) and ( not IsControlKeyDown() ) then
local choices = GetNumQuestChoices()
if choices == 0 then
-- No choice needed, complete instantly
GetQuestReward(0);
elseif choices == 1 then
-- Only one choice available, take it automatically
GetQuestReward(1);
else
-- Multiple choices: Find the highest vendor sell value
local bestChoice = 1
local highestPrice = 0
for i = 1, choices do
local link = GetQuestItemLink("choice", i)
if link then
local _, _, _, _, _, _, _, _, _, _, itemSellPrice = GetItemInfo(link)
if itemSellPrice and itemSellPrice > highestPrice then
highestPrice = itemSellPrice
bestChoice = i
end
end
end
-- Select the most expensive item and complete
GetQuestReward(bestChoice)
end
end
end
if (self.db.profile.toggle) and (self.db.profile.complete) and ( not IsControlKeyDown() ) then
local choices = GetNumQuestChoices()
if choices == 0 then
-- No choice needed, complete instantly
GetQuestReward(0);
elseif choices == 1 then
-- Only one choice available, take it automatically
GetQuestReward(1);
else
-- Multiple choices: Find the highest vendor sell value
local bestChoice = 1
local highestPrice = 0
for i = 1, choices do
local link = GetQuestItemLink("choice", i)
if link then
local _, _, _, _, _, _, _, _, _, _, itemSellPrice = GetItemInfo(link)
if itemSellPrice and itemSellPrice > highestPrice then
highestPrice = itemSellPrice
bestChoice = i
end
end
end
-- Select the most expensive item and complete
GetQuestReward(bestChoice)
end
end
end
function Questomatic:QUEST_PROGRESS(eventName, ...)
if (self.db.profile.toggle) and (self.db.profile.complete) and ( not IsControlKeyDown() ) then
-- Verify the player actually has the items before attempting to complete
if IsQuestCompletable() then
CompleteQuest();
end
end
end
if (self.db.profile.toggle) and (self.db.profile.complete) and ( not IsControlKeyDown() ) then
-- Verify the player actually has the items before attempting to complete
if IsQuestCompletable() then
CompleteQuest();
end
end
end
function Questomatic:GOSSIP_SHOW(eventName, ...)
if UnitInRaid("player") and ( not self.db.profile.inraid ) then
return;
end
if (self.db.profile.toggle) and (self.db.profile.greeting) and ( not IsControlKeyDown() ) then
local activeQuests = {GetGossipActiveQuests()}
local availableQuests = {GetGossipAvailableQuests()}
-- In standard pre-9.0 WoW APIs, GetGossipActiveQuests returns 6 values per quest.
-- The 4th value in that sequence is the boolean 'isComplete' flag.
local stride = 6
-- 1. Try to turn in completed active quests
if #activeQuests > 0 then
for i = 1, #activeQuests / stride do
local isComplete = activeQuests[(i - 1) * stride + 4]
if isComplete then
SelectGossipActiveQuest(i)
return
end
end
end
-- 2. If no completed active quests, try to accept new available quests
if #availableQuests > 0 then
SelectGossipAvailableQuest(1)
return
end
end
end
if UnitInRaid("player") and ( not self.db.profile.inraid ) then
return;
end
if (self.db.profile.toggle) and (self.db.profile.greeting) and ( not IsControlKeyDown() ) then
local activeQuests = {GetGossipActiveQuests()}
local availableQuests = {GetGossipAvailableQuests()}
-- In standard pre-9.0 WoW APIs, GetGossipActiveQuests returns 6 values per quest.
-- The 4th value in that sequence is the boolean 'isComplete' flag.
local stride = 6
-- 1. Try to turn in completed active quests
if #activeQuests > 0 then
for i = 1, #activeQuests / stride do
local isComplete = activeQuests[(i - 1) * stride + 4]
if isComplete then
SelectGossipActiveQuest(i)
return
end
end
end
-- 2. If no completed active quests, try to accept new available quests
if #availableQuests > 0 then
SelectGossipAvailableQuest(1)
return
end
end
end
function Questomatic:QUEST_GREETING(eventName, ...)
if UnitInRaid("player") and ( not self.db.profile.inraid ) then
return;
end
if (self.db.profile.toggle) and (self.db.profile.greeting) and ( not IsControlKeyDown() ) then
local numact, numava = GetNumActiveQuests(), GetNumAvailableQuests()
if numact + numava == 0 then return end
-- 1. Try to turn in completed active quests first
for i = 1, numact do
local title, isComplete = GetActiveTitle(i)
if isComplete then
SelectActiveQuest(i)
return -- Stop here to prevent overwriting the selection
end
end
-- 2. If no active quests are complete, accept new available quests
if numava > 0 then
SelectAvailableQuest(1)
return
end
-- 3. If there are only incomplete active quests, the addon will do nothing,
-- allowing you to interact manually without getting stuck.
end
end
if UnitInRaid("player") and ( not self.db.profile.inraid ) then
return;
end
if (self.db.profile.toggle) and (self.db.profile.greeting) and ( not IsControlKeyDown() ) then
local numact, numava = GetNumActiveQuests(), GetNumAvailableQuests()
if numact + numava == 0 then return end
-- 1. Try to turn in completed active quests first
for i = 1, numact do
local title, isComplete = GetActiveTitle(i)
if isComplete then
SelectActiveQuest(i)
return -- Stop here to prevent overwriting the selection
end
end
-- 2. If no active quests are complete, accept new available quests
if numava > 0 then
SelectAvailableQuest(1)
return
end
-- 3. If there are only incomplete active quests, the addon will do nothing,
-- allowing you to interact manually without getting stuck.
end
end
Here are fixes for getting stuck on first quest in list. Replace functions in (core.lua). I can't past the whole files code due to character limit.
Prioritization: The addon will now prioritize quests you have the items for over quests you don't.
Stuck Loop Avoided: Incomplete active quests are entirely ignored by the automation so you don't end up locked in a useless dialogue frame.
Clean Exits: Utilizing return statements ensures that once a valid quest is selected, the code execution safely stops, preventing it from immediately clicking the next thing and confusing the UI.
Prioritization: The addon will now prioritize quests you have the items for over quests you don't.
Stuck Loop Avoided: Incomplete active quests are entirely ignored by the automation so you don't end up locked in a useless dialogue frame.
Clean Exits: Utilizing return statements ensures that once a valid quest is selected, the code execution safely stops, preventing it from immediately clicking the next thing and confusing the UI.
More addons for Wrath of the Lich King
Discover other addons that might interest you
HandyNotes
Handy notes for your maps.
Kader’s Raid Utilities
Raid Menu, Loot Method, Auto Invites, Paladin Auras, Healers Mana, Sunder Armor, Raid Cooldowns and…
Watto
Sell & Purchase lots of items all at once.
YurysRuneDisplay
Very simple and lightweight addon for display of a Death Knight's runes.
BigBrother
Checks raid buffs and consumables and reports combat events.
WoWEquip
Try on different gear and see their total stats and their differences. In short, an…
AutoGratzer
Autograts to relevant chat on achievement.
Soundtrack
Soundtrack
You must be logged in to leave a comment.