BorrowerAndLender = {} LibStub("AceTimer-3.0"):Embed(BorrowerAndLender) local LAM = LibStub:GetLibrary("LibAddonMenu-1.0") local originalLevel local inBank local control = ZO_OptionsWindow.controlTable[2][9] local currentLevels local currentWait = nil local settings function EndsWith(String,End) return End=='' or string.sub(String,-string.len(End))==End end local function Hush() if control.currentChoice ~= 0 then currentLevels = control.currentChoice or control.value SetSetting(control.system, control.settingId, 0) end end local function SpeakUpLad() if currentWait then BorrowerAndLender:CancelTimer(currentWait) end currentWait = nil control.currentChoice = currentLevels or settings.defaultSoundLevel SetSetting(control.system, control.settingId, control.currentChoice) end local function WhoAmI(eventCode, options) if EndsWith(ZO_ChatterOption1:GetText(), GetString(SI_INTERACT_OPTION_BANK)) then if currentWait then BorrowerAndLender:CancelTimer(currentWait) end currentWait = BorrowerAndLender:ScheduleTimer(SpeakUpLad, (#ZO_InteractWindowTargetAreaBodyText:GetText()/15) + 5) Hush() end end local function FilterNPC(eventCode, channel, npc, chat) if channel ~= CHAT_CHANNEL_MONSTER_SAY and channel ~= CHAT_CHANNEL_MONSTER_YELL then return end if not settings.chats[npc] then settings.chats[npc] = {} end if not settings.chats[npc][chat] then settings.chats[npc][chat] = 0 return end settings.chats[npc][chat] = settings.chats[npc][chat] + 1 if currentWait then BorrowerAndLender:CancelTimer(currentWait) end currentWait = BorrowerAndLender:ScheduleTimer(SpeakUpLad, (#chat/15) + 2) Hush() end local function BorrowerAndLenderLoaded(eventCode, addOnName) if(addOnName ~= "BorrowerAndLender") then return end local defaults = { chats = {}, defaultSoundLevel = control.currentChoice or control.value or 0 } settings = ZO_SavedVars:NewAccountWide("BorrowerAndLender_Settings", 1, nil, defaults) local panel = LAM:CreateControlPanel("BAL", "Borrower And Lender") LAM:AddHeader(panel, "BAL_General", "Settings") LAM:AddSlider(panel, "defaultSound", "Set the standard voice over volume ", "Set this value to your standard voice over volume", 0, 100, 1, function() return settings.defaultSoundLevel end, function(value) settings.defaultSoundLevel = value end) EVENT_MANAGER:RegisterForEvent("BALWho", EVENT_CHATTER_BEGIN, WhoAmI) EVENT_MANAGER:RegisterForEvent("BALWho", EVENT_CHATTER_END, SpeakUpLad) EVENT_MANAGER:RegisterForEvent("BALChat", EVENT_CHAT_MESSAGE_CHANNEL, FilterNPC) end EVENT_MANAGER:RegisterForEvent("BorrowerAndLenderLoaded", EVENT_ADD_ON_LOADED, BorrowerAndLenderLoaded)