Quantcast
local addonName, addonTable = ...

addonTable.Funcs = {}

local MyFuncs = addonTable.Funcs

local f = CreateFrame("Frame", nil, UIParent)

local emotes = {
	"MOURN",
	"SNIFF",
	"LICK",
	"SNICKER",
	"GUFFAW",
	"GLOAT",
	"PITY",
	"VIOLIN",
	"BYE",
	"BITE",
	"CACKLE",
	"SHOO",
	"SLAP",
	"TEASE",
	"TAUNT",
	"MOCK",
	"MOO",
	"CHUCKLE",
	"BONK",
	"FLEX",
	"GRIN",
	"LAUGH",
	"MOON",
	"NO",
	"ROAR",
	"ROFL",
	"SCRATCH",
	"SIGH",
	"SNARL",
	"TAP",
	"INSULT",
	"BARK",
	"BECKON",
	"CALM",
	"CHICKEN",
	"COMFORT",
	"CUDDLE",
	"CURTSEY",
	"GIGGLE",
	"GROWL",
	"NOSEPICK",
	"RASP",
	"RUDE",
	"SMIRK",
	"SNUB",
	"SOOTHE",
	"THANK",
	"TICKLE",
	"VETO",
	"YAWN",
	--[["POUNCE",]]
	--[["CRACK",]]
	--[["AGREE",]]
	--[["AMAZE",]]
	--[["ANGRY",]]
	--[["APOLOGIZE",]]
	--[["APPLAUD",]]
	--[["BASHFUL",]]
	--[["BEG",]]
	--[["BLEED",]]
	--[["BLINK",]]
	--[["BLUSH",]]
	--[["COMMEND",]]
	--[["TRAIN",]]
	--[["RAISE",]]
	--[["INTRODUCE",]]
	--[["JK",]]
	--[["LISTEN",]]
	--[["TALK",]]
	--[["TALKEX",]]
	--[["TALKQ",]]
	--[["BORED",]]
	--[["BOUNCE",]]
	--[["BRB",]]
	--[["BOW",]]
	--[["BURP",]]
	--[["CHEER",]]
	--[["CLAP",]]
	--[["CONFUSED",]]
	--[["CONGRATULATE",]]
	--[["UNUSED",]]
	--[["COUGH",]]
	--[["COWER",]]
	--[["CRINGE",]]
	--[["CRY",]]
	--[["CURIOUS",]]
	--[["DANCE",]]
	--[["DRINK",]]
	--[["DROOL",]]
	--[["EAT",]]
	--[["EYE",]]
	--[["FART",]]
	--[["FIDGET",]]
	--[["FROWN",]]
	--[["GASP",]]
	--[["GAZE",]]
	--[["GLARE",]]
	--[["GREET",]]
	--[["GROAN",]]
	--[["GROVEL",]]
	--[["HAIL",]]
	--[["HAPPY",]]
	--[["HELLO",]]
	--[["HUG",]]
	--[["HUNGRY",]]
	--[["KISS",]]
	--[["KNEEL",]]
	--[["LAYDOWN",]]
	--[["MASSAGE",]]
	--[["MOAN",]]
	--[["NOD",]]
	--[["PANIC",]]
	--[["PEER",]]
	--[["PLEAD",]]
	--[["POINT",]]
	--[["POKE",]]
	--[["PRAY",]]
	--[["SALUTE",]]
	--[["SEXY",]]
	--[["SHAKE",]]
	--[["SHOUT",]]
	--[["SHRUG",]]
	--[["SHY",]]
	--[["SIT",]]
	--[["SLEEP",]]
	--[["SPIT",]]
	--[["STARE",]]
	--[["SURPRISED",]]
	--[["SURRENDER",]]
	--[["THREATEN",]]
	--[["TIRED",]]
	--[["VICTORY",]]
	--[["WAVE",]]
	--[["WELCOME",]]
	--[["WHINE",]]
	--[["WHISTLE",]]
	--[["WORK",]]
	--[["BOGGLE",]]
	--[["COLD",]]
	--[["DUCK",]]
	--[["LOST",]]
	--[["PONDER",]]
	--[["PRAISE",]]
	--[["PURR",]]
	--[["PUZZLE",]]
	--[["READY",]]
	--[["SHIMMY",]]
	--[["SHIVER",]]
	--[["STINK",]]
	--[["THIRSTY",]]
	--[["STAND",]]
	--[["SMILE",]]
	--[["SCARED",]]
	--[["FLOP",]]
	--[["LOVE",]]
}

function MyFuncs.GetRandomEmote()
	return emotes[math.random(1, #(emotes))]
end

function MyFuncs.OnEvent(self, event, ...)
	--[[local instanceType = select(2, IsInInstance())

	if event == "COMBAT_LOG_EVENT_UNFILTERED" and ( instanceType == "pvp" or instanceType == "arena" ) then
		local timestamp, subEvent, hideCaster, srcGUID, srcName, srcFlags, srcRaidFlags, dstGUID, dstName, dstFlags, dstRaidFlags = ...

		if subEvent == "PARTY_KILL" and bit.band(dstFlags, COMBATLOG_OBJECT_REACTION_HOSTILE) > 0 and bit.band(dstFlags, COMBATLOG_OBJECT_TYPE_PLAYER) > 0 and dstName ~= nil and srcName ~= nil then
			if srcName == UnitName("player") and dstName ~= UnitName("player") then
				if select(4, GetAchievementInfo(247)) then
					DoEmote(MyFuncs.GetRandomEmote(), dstName)
				else
					DoEmote("HUG", dstName)
				end
			end
		end
	end]]

	local _, subEvent, _, srcGUID, srcName, srcFlags, _, dstGUID, dstName, dstFlags = ...

	if subEvent == "PARTY_KILL" then
		if srcGUID == UnitGUID("player") and ( bit.band(dstFlags, COMBATLOG_OBJECT_REACTION_HOSTILE) > 0 and bit.band(dstFlags, COMBATLOG_OBJECT_TYPE_PLAYER) > 0 ) and not ( bit.band(dstFlags, COMBATLOG_OBJECT_AFFILIATION_RAID) > 0 or bit.band(dstFlags, COMBATLOG_OBJECT_AFFILIATION_PARTY) > 0 or bit.band(dstFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) > 0 ) then
			if select(4, GetAchievementInfo(247)) then
				DoEmote(MyFuncs.GetRandomEmote(), dstName)
			else
				DoEmote("HUG", dstName)
			end
		end
	end
end

f:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")

f:SetScript("OnEvent", MyFuncs.OnEvent)