diff --git a/AltSystem.toc b/AltSystem.toc index 3be4abb..969c40b 100644 --- a/AltSystem.toc +++ b/AltSystem.toc @@ -2,7 +2,7 @@ ## Title: AltSystem ## Notes: Enhances RP gameplay with a custom rolling system ## Author: Rukira -## Version: 0.4 +## Version: 0.3 ## Dependencies: totalRP3, totalRP3_Extended ## SavedVariables: AltSystemDB diff --git a/Roll.lua b/Roll.lua index 71b4438..49e890c 100644 --- a/Roll.lua +++ b/Roll.lua @@ -26,11 +26,17 @@ local function BuildModifierString(modifiers) return table.concat(parts, " ") end --- Send a message to the given channel. --- Note: EMOTE channel uses SendChatMessage like all others. The WoW API --- SendChatMessage(msg, "EMOTE") sends a proper /e emote from any context, --- unlike RunMacroText which is a protected function requiring a hardware event. +-- Send a message to the given channel, handling EMOTE specially +-- to avoid the message being redirected to raid chat when in a raid group. local function SendToChannel(msg, channel) + if channel == "EMOTE" then + local editBox = ChatFrame1 and ChatFrame1.editBox or ChatFrame1EditBox + if editBox then + ChatFrame_OpenChat("/e " .. msg, ChatFrame1) + ChatEdit_SendText(editBox) + end + return + end SendChatMessage(msg, channel) end @@ -41,23 +47,14 @@ local function AnnounceRoll(rollValue, modifiers, total) local channelDef = AltSystem.AnnounceChannels[AltSystem.State.announceChannelIndex] if not channelDef then return end - local isEmote = channelDef.channel == "EMOTE" + local name = GetCharacterName() local modStr = BuildModifierString(modifiers) local msg - if isEmote then - if modStr ~= "" then - msg = "rolled " .. rollValue .. " " .. modStr .. " = " .. total - else - msg = "rolled " .. rollValue .. " = " .. total - end + if modStr ~= "" then + msg = name .. " rolled " .. rollValue .. " " .. modStr .. " = " .. total else - local name = GetCharacterName() - if modStr ~= "" then - msg = name .. " rolled " .. rollValue .. " " .. modStr .. " = " .. total - else - msg = name .. " rolled " .. rollValue .. " = " .. total - end + msg = name .. " rolled " .. rollValue .. " = " .. total end SendToChannel(msg, channelDef.channel) @@ -97,10 +94,7 @@ function AltSystem:CalculateAndDisplayResult(rollType, rollValue) if AltSystem.State.announceEnabled then local channelDef = AltSystem.AnnounceChannels[AltSystem.State.announceChannelIndex] if channelDef then - local critMsg = channelDef.channel == "EMOTE" - and "rolled a Critical Failure!" - or (GetCharacterName() .. " rolled a Critical Failure!") - SendToChannel(critMsg, channelDef.channel) + SendToChannel(GetCharacterName() .. " rolled a Critical Failure!", channelDef.channel) end end return @@ -111,10 +105,7 @@ function AltSystem:CalculateAndDisplayResult(rollType, rollValue) if AltSystem.State.announceEnabled then local channelDef = AltSystem.AnnounceChannels[AltSystem.State.announceChannelIndex] if channelDef then - local critMsg = channelDef.channel == "EMOTE" - and "rolled a Critical Success!" - or (GetCharacterName() .. " rolled a Critical Success!") - SendToChannel(critMsg, channelDef.channel) + SendToChannel(GetCharacterName() .. " rolled a Critical Success!", channelDef.channel) end end return