Thread Tools Display Modes
06-16-23, 04:22 AM   #1
Yukka
A Theradrim Guardian
 
Yukka's Avatar
AddOn Author - Click to view addons
Join Date: Feb 2020
Posts: 60
health% sound alert (help)

Hello, can you please tell me what to add to this addon so there's a sound alert playing when my life goes below 99%?

There's already sounds alerts when my life goes below 50% and 25%, but I need to add an alert for 99% if possible.

Thanks.

Code:
local version = "2.4"
-- www.curse.com/addons/wow/low-hp-alert
-- quick and dirty, what else.
-- Author: Fratzi, Puriya (creator)

-- Frame for updating variables after addon load (used for new addon releases)
local name, addon = ...
local f = CreateFrame("Frame")

local function onevent(self, event, arg1, ...)
    if((event == "ADDON_LOADED" and name == arg1)) then
-- Fresh Install, setting globals
        if(LowHPAlert_Options == nil) then
			LowHPAlert_Options = {
				["tankmode"] = false,
				["soundcombatonly"] = false,
				["soundalwaysoff"] = false,
				["showtext"] = true,
				["version"] = version
			}
		elseif(LowHPAlert_Options.version == nil) then
-- Version is below 2.4, adding new rows into tables, clear up deprecated variables
			LowHPAlert_Options.version = "2.4"
			LowHPAlert_Options.showtext = true
			LowHPAlert_Options.cockpit = nil
			DEFAULT_CHAT_FRAME:AddMessage("----------------------------------------------", 1.0, 0.0, 0.0, nil, true)
			DEFAULT_CHAT_FRAME:AddMessage("Low HP Alert updated - new option to turn off all text messages: /lowhpalert text", 1.0, 0.0, 0.0, nil, true)
			DEFAULT_CHAT_FRAME:AddMessage("----------------------------------------------", 1.0, 0.0, 0.0, nil, true)
		elseif(LowHPAlert_Options.version ~= version) then
-- version is below current version, placeholder for future updates
		elseif(LowHPAlert_Options.version == version) then
--  Everything is ok, placeholder
		end
        f:UnregisterAllEvents()
    end
end

f:RegisterEvent("ADDON_LOADED")
f:SetScript("OnEvent", onevent)


local sounds = true
-- sets player HP to OK!
local LastHealth = 0

-- event caller
function LowHPAlert_OnUpdate()
	if (LowHPAlert_Options.soundalwaysoff) then
		sounds = false
	elseif (LowHPAlert_Options.soundcombatonly and not UnitAffectingCombat("player")) then
		sounds = false
	else
		sounds = true
	end
	
	-- some hardcore math
	hp = UnitHealth("player")
	hpPct = hp / UnitHealthMax("player")
	
	if (LowHPAlert_Options.tankmode) then
		LowHPAlert_OnUpdate_tank()
	else
		LowHPAlert_OnUpdate_default()
	end	
end

-- tankmode 0 = warning at 50% and 25%
function LowHPAlert_OnUpdate_default()
    if (hpPct > 0.5) then
    	LastHealth = 0
		return
    elseif (hpPct > 0.25) then
    	if (LastHealth == 0) then
			if (LowHPAlert_Options.showtext) then HealthMessageFrame:AddMessage("", 1, 1, 0, 1, 3) end
			if (sounds) then PlaySoundFile("Interface\\AddOns\\LowHPAlert\\20.mp3", "master") end
		end
    	LastHealth = 1
		return
     -- HP < 25%
    elseif (LastHealth ~= 2) then
    	if (LowHPAlert_Options.showtext) then HealthMessageFrame:AddMessage("", 1, 0, 0, 1, 3) end
		if (sounds) then PlaySoundFile("Interface\\AddOns\\LowHPAlert\\30.mp3", "master") end
	end
	LastHealth = 2
end

-- slash commands
SLASH_LOWHPALERT1 = '/lowhpalert'
local function slashhandler(msg, editbox)
	if msg == 'tankmode' then
		if(LowHPAlert_Options.tankmode) then
			LowHPAlert_Options.tankmode = false
			print("Tankmode OFF!")
		else
			LowHPAlert_Options.tankmode = true
			LowHPAlert_Options.cockpit = false
			print("Tankmode ON!")
		end
	elseif msg == 'combatmode' then
		if(LowHPAlert_Options.soundcombatonly) then
			LowHPAlert_Options.soundcombatonly = false
			print("Alerts always ON!")
		else
			LowHPAlert_Options.soundcombatonly = true
			print("Alertts will be only played in combat!")
		end
	elseif msg == 'sound' then
		if(LowHPAlert_Options.soundalwaysoff) then
			LowHPAlert_Options.soundalwaysoff = false
			print("Sounds ON!")
		else
			LowHPAlert_Options.soundalwaysoff = true
			print("Sounds always OFF!")
		end
	elseif msg == 'text' then
		if(LowHPAlert_Options.showtext) then
			LowHPAlert_Options.showtext = false
			print("Text OFF!")
		else
			LowHPAlert_Options.showtext = true
			print("Text ON!")
		end
	else
		print(" ")
		print("LowHPAlert version " .. version)
		print("-----------------------------")
		print("/lowhpalert tankmode - only alerts at 30% HP")
		print("/lowhpalert combatmode - only play alert sounds in combat")
		print("/lowhpalert sound - turns off all sounds")
		print("/lowhpalert text - turns off all text messages on screen")
	end
end
SlashCmdList["LOWHPALERT"] = slashhandler

function LowHPAlert_OnLoad()
	DEFAULT_CHAT_FRAME:AddMessage("Low HP Alert version " .. version .. " loaded - Options: /lowhpalert", 0.0, 0.8, 0.0, nil, true)
end
  Reply With Quote
06-18-23, 11:02 AM   #2
Dridzt
A Pyroguard Emberseer
 
Dridzt's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2005
Posts: 1,360
If you are already using WeakAuras for other things, it's ideal for such small 'concept' addons.

I'd get rid of the addon and just make an aura tbh.
  Reply With Quote

WoWInterface » AddOns, Compilations, Macros » AddOn Search/Requests » health% sound alert (help)


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off