AutoGossip - add ignore list

it needs to be populated with innkeepers IDs, to not automate gossip for them
This commit is contained in:
Sattva
2023-05-21 07:38:57 +03:00
parent e7ade3ac5e
commit e775ff8353
2 changed files with 121 additions and 79 deletions
+62 -27
View File
@@ -1,40 +1,75 @@
TODO List:
Backport:
--------------------------------------------------------------------------------
-- Backport to-do:
--------------------------------------------------------------------------------
Need to fix transparency of settings in Settings main window.
May be backport retail quest accept.
Main Panel - Need to fix transparency of settings in Settings main window.
AutoQuest - May be backport retail quest accept.
--------------------------------------------------------------------------------
-- What needs to be tested:
--------------------------------------------------------------------------------
Functions:
Auto-Ress in BG - With option "Exclude Alterac" will it not auto-res in Alterac BG?
--------------------------------------------------------------------------------
-- Functions to-do:
--------------------------------------------------------------------------------
AutoGossip - Add user defined NPCID to automate gossipX (any option)
AutoGossip - Add ability to automate gossip cycles. (if after first gossip need to select more gossips)
AutoGossip - Add
Minimap enhance - Add NPC specific tracking icons on minimap.
Ready Timer - for RDF/BG
Automation - Remove transforms ( Jack-o'-Lantern, Hallowed Wand, Witch, Turkey and Spraybot transformations? etc. )
Interraction bindings - Add Quest / Vendor Bindings ( e.g. keyboard keys for Inkeepeer: 1 - Set Home, 2 - Vendor; )
World Map - Reveal Map
Action Bar - Make buttons full red if out of range (instead of blizzard red text only)
Auto-Spirit Res. - Add function to auto ressurect once interracted with Spirit Healer
Error Frame - Allow some error texts like mining, herbing
Error Frame - Allow only one line of error text option
Tooltip - If player has tooltip hidden in combat, make an option to toggle tooltip if "Alt" key is hold.
Faster Loot - Make the config options (disable sound, change sound, error filter, smaller error frame, faster fading - make all this optional)
--------------------------------------------------------------------------------
-- Not sure if need to do yet:
--------------------------------------------------------------------------------
Add NPC specific tracking icons on minimap.
Improve Quest Accept conditions (aka skip welcome window and block shared aka escort quests)
Frame mover
Square minimap
Restore Chat Messages history after relog
Hide keybind text
Hide macro text
Resize mail text
Train All Button
Ready Timer for RDF/BG
Copy chat links
Links to wowhead-wotlk in Quest Log for every quest.
Remove transforms (Jack-o'-Lantern, Hallowed Wand, Witch, Turkey and Spraybot transformations? etc.)
Flight Path timer
Import Quest / Vendor Bindings
Make Action Bar buttons full red if out of range (instead of blizzard text red only)
Auto-Spirit Res.
Allow some error texts like mining, herbing
Allow only one line of error text option
If player has tooltip hidden in combat, make an option to toggle tooltip if "Alt" key is hold.
Improve Quest Accept conditions (aka skip welcome window and block shared aka escort quests)
Add more tweaks to Auction House extras module.
Need to add exceptions for automating the gossip. (But first need to find NPCs that need exceptions, or make user be able to add exceptions)
Make the config options for Faster Loot module. (disable sound, change sound, error filter, smaller error frame, faster fading - make all this optional)
Square minimap
Restore Chat Messages history after relog
Hide keybind text
Hide macro text
Resize mail text
Train All Button
Copy chat links
+59 -52
View File
@@ -1524,24 +1524,24 @@
end
end
-- Reset Message flag when gossip window is closed
local function ResetMessageFlag()
isMessagePrinted = false
end
-- Create gossip event frame
local gossipFrame = CreateFrame("FRAME")
-- Function to setup events
local function SetupEvents()
if LeaPlusLC["AutomateGossip"] == "On" then
gossipFrame:RegisterEvent("GOSSIP_SHOW")
gossipFrame:RegisterEvent("GOSSIP_CLOSED") -- Added line to register GOSSIP_CLOSED event
else
gossipFrame:UnregisterEvent("GOSSIP_SHOW")
gossipFrame:UnregisterEvent("GOSSIP_CLOSED") -- Added line to unregister GOSSIP_CLOSED event
-- Reset Message flag when gossip window is closed
local function ResetMessageFlag()
isMessagePrinted = false
end
-- Create gossip event frame
local gossipFrame = CreateFrame("FRAME")
-- Function to setup events
local function SetupEvents()
if LeaPlusLC["AutomateGossip"] == "On" then
gossipFrame:RegisterEvent("GOSSIP_SHOW")
gossipFrame:RegisterEvent("GOSSIP_CLOSED") -- Added line to register GOSSIP_CLOSED event
else
gossipFrame:UnregisterEvent("GOSSIP_SHOW")
gossipFrame:UnregisterEvent("GOSSIP_CLOSED") -- Added line to unregister GOSSIP_CLOSED event
end
end
end
-- Setup events when option is clicked and on startup (if option is enabled)
LeaPlusCB["AutomateGossip"]:HookScript("OnClick", SetupEvents)
@@ -1577,44 +1577,51 @@
}
--===== create ignore NPC table to not mess with npcTable and for future user options =====--
local npcIgnore = {
-- Innkeepers
5111, 6740
}
-- Event handler
gossipFrame:SetScript("OnEvent", function(self, event, ...)
if event == "GOSSIP_SHOW" then
-- Special treatment for specific NPCs
local npcGuid = UnitGUID("target") or nil
if npcGuid and not IsShiftKeyDown() then
local npcID = LibCompat.GetUnitCreatureId("target")
-- print(npcID)
if npcID then
-- Open rogue doors in Dalaran (Broken Isles) automatically
if npcID == "96782" -- Lucian Trias
or npcID == "93188" -- Mongar
or npcID == "97004" -- "Red" Jack Findle
then
SkipGossip()
return
end
-- Skip gossip with no alt key requirement
if npcID == "132969" -- Katy Stampwhistle (toy)
or npcID == "104201" -- Katy Stampwhistle (npc)
or tContains(npcTable, tonumber(npcID))
then
SkipGossip(true) -- true means skip alt key requirement
return
-- Event handler
gossipFrame:SetScript("OnEvent", function(self, event, ...)
if event == "GOSSIP_SHOW" then
-- Special treatment for specific NPCs
local npcGuid = UnitGUID("target") or nil
if npcGuid and not IsShiftKeyDown() then
local npcID = LibCompat.GetUnitCreatureId("target")
-- print(npcID)
if npcID then
-- Open rogue doors in Dalaran (Broken Isles) automatically
if npcID == "96782" -- Lucian Trias
or npcID == "93188" -- Mongar
or npcID == "97004" -- "Red" Jack Findle
then
SkipGossip()
return
end
-- Skip gossip with no alt key requirement
if npcID == "132969" -- Katy Stampwhistle (toy)
or npcID == "104201" -- Katy Stampwhistle (npc)
or tContains(npcTable, tonumber(npcID))
and not tContains(npcIgnore, tonumber(npcID))
then
SkipGossip(true) -- true means skip alt key requirement
return
end
end
end
-- Process gossip
SkipGossip()
elseif event == "GOSSIP_CLOSED" then
-- Reset Message flag when gossip window is closed
ResetMessageFlag()
end
-- Process gossip
SkipGossip()
elseif event == "GOSSIP_CLOSED" then
-- Reset Message flag when gossip window is closed
ResetMessageFlag()
end
end)
end)
end
@@ -7034,11 +7041,11 @@
-- Release in battlegrounds
hooksecurefunc("StaticPopup_Show", function(sType)
if sType and sType == "DEATH" and LeaPlusLC["AutoReleasePvP"] == "On" then
if C_DeathInfo.GetSelfResurrectOptions() and #C_DeathInfo.GetSelfResurrectOptions() > 0 then return end
if HasSoulstone() then return end
local InstStat, InstType = IsInInstance()
if InstStat and InstType == "pvp" then
-- Exclude specific maps
local mapID = C_Map.GetBestMapForUnit("player") or nil
local mapID = GetCurrentMapAreaID() or nil -- 2.4.3 need test
if mapID then
if mapID == 1459 and LeaPlusLC["AutoReleaseNoAlterac"] == "On" then return end -- Alterac Valley
end