Details

Addon ID: 1479
Addon Version: 1.5.1
Expansion: 3.3.5
Upload date: Nov 06, 2024
Last Updated: Nov 06, 2024
Downloads: 1.1K



Developers

Miratu
Miratu Creator

Having issues?

Questomatic streamlines your questing experience by allowing you to instantly accept and turn in quests.



You must be logged in to leave a comment.

Comments (5)
I
i2ichardt 2 months ago • #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
I
i2ichardt 2 months ago • #4
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
I
i2ichardt 2 months ago • #3
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
I
i2ichardt 2 months ago • #2
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
I
i2ichardt 2 months ago • #1
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.