Details
Addon ID:
1479
Addon Version:
1.5.1
Expansion:
3.3.5
Upload date:
Nov 06, 2024
Last Updated:
Nov 06, 2024
Downloads:
1K
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.
You must be logged in to leave a comment.