Get an Epic Experience with Premium

RSA - Raeli's Spell Announcer

Buffs & Debuffs Login to Add Favorites
  • World of Warcraft
  • 15,538 Monthly Downloads
  • Supports: 6.1.0
  • 1,136,526 Total Downloads
  • Updated 05/22/2015
  • Created 12/01/2009
  • 800 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: All Rights Reserved
  • Newest File: v3.005
Support development! **

About RSA - Raeli's Spell Announcer

Requests, Bugs & Known issues

Please use Curse's Curseforge ticket tracker to create requests, suggestions, or post bug reports:


RSA, Raeli's Spell Announcer, by Raeli of Arathor-EU (Now Maintained by Jenneth), is an addon that aims to help players with the announcement of certain spells, as well as reminding you of important missing buffs. For example, it can detect when you cast Divine Protection, and it will send a message like so:
Divine Protection Example
As you can see, it can announce when it first is cast, and then again when it ends, not only that, but you can customise the messages that are sent.

Type /rsa in game to open in game configuration, or access it through the Blizzard Interface panel.

Spell Announcements

There is the ability to create custom message announcements, you can use certain tags to say what the target is and so on:

  • [SPELL] will be replaced with the name of the spell
  • [LINK] will be replaced by a clickable spell link of the spell cast
  • [TARGET] will be replaced with the target of the spell (only works with spells that can be put on targets other than yourself)
  • [AMOUNT] will be replaced with the amount of damage or healing done (only applicable to certain spells)
  • [MISSTYPE] will be replaced with the type of spell miss (Such as Miss, Immune, Resist again, only available to certain spells)
  • [AURA] will be replaced with the buff or debuff that is removed by dispels
  • [AURALINK] will be replaced with a clickable spell link of the buff or debuff that is removed by dispels
  • [TARCAST] will be replaced by the spell that you have just interrupted
  • [TARLINK] will be replaced by a clickable spell link of the spell that you have just interrupted

Some of these are only usable for certain spells, each spell lists what is available for you to use in game.

If you want to use a percent sign in your message you need to type it twice: %% to allow it to show, else you will receive errors.

If you leave a Start or End message empty, it will simply not announce that part. So if you only want, to say, announce when Divine Protection ends, you leave the Start message empty, and only have an End message set.

You can set where to announce spells:

  • Local - This sends messages to your own chat window, or the raid warning frame or both depending on your setting
  • Raid - Sends a message to the raid chat, if you are in a raid.
  • Party - Sends a message to the party chat, if you are in a party.
  • Smart Party - Sends a message to either instance chat, raid chat or party chat, depending on group size and location.
  • Say
  • Yell
  • Whisper - only when the target it someone else than yourself.
  • Custom Channel - You can send it to a custom channel, like, say, your healing channel. This option is now unique for each spell, so you can send different spell announcements to different places.
  • You can disable Raid/Party/Say/Custom Channel announcements while you have PvP active, if you are Ungrouped, or if you are not in an instance. Whispers and Local messages will always announce if checked.

Buff Reminder Options

You can set what spell you want to track. You can also:

  • Disable reminding while you have PvP active
  • Enable or disable reminding in your primary or secondary specs
  • Set how often you want to be reminded
  • Set where you want the announcements to be sent (local only - visible only to yourself)

r268 | jenneth | 2015-05-22 21:09:37 +0000 (Fri, 22 May 2015) | 1 line
Changed paths:
   A /tags/v3.005 (from /trunk:267)

Tagging as v3.005
r267 | jenneth | 2015-05-22 21:02:53 +0000 (Fri, 22 May 2015) | 1 line
Changed paths:
   M /trunk/Core.lua
   M /trunk/Monk/Monk.lua
   M /trunk/Options/Options.lua
   M /trunk/RSA.toc

(Monk) Added Leg Sweep and Ring of Peace (ticket 253)
r266 | jenneth | 2015-05-22 15:44:28 +0000 (Fri, 22 May 2015) | 1 line
Changed paths:
   M /trunk/AnnouncementsMonitor.lua
   M /trunk/Core.lua
   M /trunk/Locale-enUS.lua
   M /trunk/Monk/Monk.lua
   M /trunk/Options/Options.lua

(Monk) Converted module to use the new core. Added Revival (tickets 190, 292), Touch of Karma (ticket 263), fixed Spear Hand Strike (tickets 196, 220, 242). Added support for handling SPELL_MISSED events to the new core.
r265 | jenneth | 2015-05-17 07:57:00 +0000 (Sun, 17 May 2015) | 1 line
Changed paths:
   M /trunk/Core.lua
   M /trunk/Options/Options.lua
   M /trunk/Rogue/Rogue.lua

(Rogue) Fixed smoke bomb, was broken due to changes in combat log messages (ticket 296)
r264 | jenneth | 2015-04-21 22:51:31 +0000 (Tue, 21 Apr 2015) | 1 line
Changed paths:
   M /trunk/Core.lua
   M /trunk/Options/Options.lua
   M /trunk/Priest/Priest.lua

(Priest) Removing Guardian Spirit's Proc message, as the combat log messages have changed and there is no longer a reliable way to determine if the spell has procced or not. (ticket 290)
r263 | jenneth | 2015-04-21 20:31:35 +0000 (Tue, 21 Apr 2015) | 1 line
Changed paths:
   M /trunk/Core.lua
   M /trunk/Hunter/Hunter.lua
   M /trunk/Locale-enUS.lua
   M /trunk/Options/Options.lua

(Hunter) Combining battle res spells, (General) Adding Blingtrons, MOLL-E, GUMM-E and Walter


First Previous Page 10 of 76 Next Last
  • #1033

    totally agree.. thanks for keeping the addon up to date!

  • #1023

    I modified the Priest.lua file in the \World of Warcraft\Interface\AddOns\RSA_Priest\ folder

    Since 5.3 the Shadow version of Void Shift is a different spell ID. So I just copypasted the original one and replaced the spell ID with the correct one.

    So now Void Shift announcing should work as Shadow.

    Lua file downloadable at:


  • #1028

    Added, available in alpha 201 and later.

  • #1022

    Hi, could you remove this section from the Paladin.lua file

    if spellID == 82327 then -- HOLY RADIANCE
    spellinfo = GetSpellInfo(spellID)
    spelllinkinfo = GetSpellLink(spellID)
    RSA_Replacements = {["[SPELL]"] = spellinfo, ["[LINK]"] = spelllinkinfo,}
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Messages.Start ~= "" then
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Local == true then
    RSA_Print_LibSink(string.gsub(RSA.db.profile.Paladin.Spells.HolyRadiance.Messages.Start, ".%a+.", RSA_String_Replace))
    if RSA.db.profile.Paladin.Spells.HolyRadiance.CustomChannel.Enabled == true then
    RSA_Print_Channel(string.gsub(RSA.db.profile.Paladin.Spells.HolyRadiance.Messages.Start, ".%a+.", RSA_String_Replace), RSA.db.profile.Paladin.Spells.HolyRadiance.CustomChannel.Channel)
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Smart.Say == true then
    RSA_Print_Say(string.gsub(RSA.db.profile.Paladin.Spells.HolyRadiance.Messages.Start, ".%a+.", RSA_String_Replace))
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Smart.RaidParty == true then
    RSA_Print_Smart_RaidParty(string.gsub(RSA.db.profile.Paladin.Spells.HolyRadiance.Messages.Start, ".%a+.", RSA_String_Replace))
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Party == true then
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Smart.RaidParty == true and GetNumGroupMembers() == 0 and InstanceType ~= "arena" then return end
    RSA_Print_Party(string.gsub(RSA.db.profile.Paladin.Spells.HolyRadiance.Messages.Start, ".%a+.", RSA_String_Replace))
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Raid == true then
    if RSA.db.profile.Paladin.Spells.HolyRadiance.Smart.RaidParty == true and GetNumGroupMembers() > 0 then return end
    RSA_Print_Raid(string.gsub(RSA.db.profile.Paladin.Spells.HolyRadiance.Messages.Start, ".%a+.", RSA_String_Replace))
    end -- HOLY RADIANCE

    Not needed and shoots out lua errors.  


    Last edited by sargbsu on 6/1/2013 1:32:38 PM
  • #1025

    I'm not too familiar with paladins, but quick lookup shows it used to be 1 minute cooldown that became usual ability in MoP. Yep, not useful anymore, will remove in next version.

  • #1021

    plz some one add Ring of Peace for monks! 

  • #1020

    well as of the latest patch RSA options are not auto-loading have to manually load them using addon control panel don't know if anyone else has run into this problem

  • #1019

    RSA by default seems to spam the say channel in 5 mans, but not in raids.  I can't see any difference in settings between the two; I get chat bubbles galore in 5 mans, but not in raids.

  • #1017

    Thanks for patch rowaasr13 :)

    If you can look upon enemy target dispel skills (purge,shiv etc.) it would be great and far more enough for now, when you have time ofc.

  • #1013

    I've been asked by my guild's member to look at RSA not reporting druid's dispels, so I took some time to fix it for him and prepare more streamlined core for announcements. I'd be happy if Raeli would integrate those changes to main distribution:

    To anybody who wants to test, note that NOT ALL events/classes were changed to this core, read changelog for fixed stuff.

  • #1014


    If you would be willing to take over the project I will happily give you rights to contribute to the main repository - I haven't played wow since the Deathwing patch, aside from a few free trial days of Mists, so I'm very much out of date on what changed and also how the API changed.

    I had someone else updating the project for a while, and I was able to make a few small changes myself, but I don't have a huge amount of free time to really go read through everything and get myself caught up. There are a lot of issues with RSA, and it was poorly coded from the start, but people still like it, so it would be nice if someone could take the reins and maintain it.

    Even if you don't continue to maintain it, I'm sure just a few updates when you can would be appreciated, and more than I am realistically able to do anymore.

    Last edited by Raeli87 on 4/21/2013 10:35:55 PM
  • #1016


    Well I added you as a maintainer on curseforge, if I recall that should be all you need. Thanks :D

  • #1015

    Well, I'm busy over here too with MoP being quite taxing to the alts and RL stuff so I can't promise full time maintenance, but I'd be happy to integrate stuff I've already wrote and drop some patches in from time to time.

  • #1012

    Date: 2013-04-19 21:41:29
    ID: 1
    Error occured in: Global
    Count: 1
    Message: ..\AddOns\RSA_Paladin\Paladin.lua line 471:
    attempt to index field 'HolyRadiance' (a nil value)
    _ = RSA:CLM {
    0 = <userdata>
    _ = 1366418496.111
    event = "SPELL_CAST_SUCCESS"
    _ = false
    _ = "0x0480000005BEFC60"
    source = "Hynlan"
    _ = 1297
    _ = 0
    destGUID = "0x0480000005BEFC60"
    dest = "Hynlan"
    _ = 1297
    _ = 0
    spellID = 82327
    spellName = "Resplendor Sagrado"
    _ = 2
    missType = nil
    overheal = nil
    petName = nil
    (*temporary) = nil
    (*temporary) = "[Resplendor Sagrado]"
    (*temporary) = "[Resplendor Sagrado]"
    (*temporary) = nil
    (*temporary) = "INTERFACE\ICONS\spell_paladin_divinecircle"
    (*temporary) = "attempt to index field 'HolyRadiance' (a nil value)"
    pName = "Hynlan"
    RSA = <table> {
    SetDefaultModuleLibraries = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:383
    Enable = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:315
    RegisterChatCommand = <function> defined @Interface\AddOns\Bagnon\libs\AceConsole-3.0\AceConsole-3.0.lua:85
    EnableModule = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:348
    modules = <table> {
    GetModule = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:231
    IterateEmbeds = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:458
    defaultModuleLibraries = <table> {
    UnregisterChatCommand = <function> defined @Interface\AddOns\Bagnon\libs\AceConsole-3.0\AceConsole-3.0.lua:111
    Printf = <function> defined @Interface\AddOns\Bagnon\libs\AceConsole-3.0\AceConsole-3.0.lua:69
    SetDefaultModulePrototype = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:425
    GetSinkAce3OptionsDataTable = <function> defined @Interface\AddOns\Chatter\Libs\LibSink-2.0\LibSink-2.0.lua:603
    name = "RSA"
    IsEnabled = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:467
    orderedModules = <table> {
    Pour = <function> defined @Interface\AddOns\Chatter\Libs\LibSink-2.0\LibSink-2.0.lua:436
    DisableModule = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:366
    GetArgs = <function> defined @Interface\AddOns\Bagnon\libs\AceConsole-3.0\AceConsole-3.0.lua:144
    RegisterSink = <function> defined @Interface\AddOns\Chatter\Libs\LibSink-2.0\LibSink-2.0.lua:714
    IsModule = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:484
    db = <table> {
    SetDefaultModuleState = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:403
    SetEnabledState = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:440
    enabledState = true
    baseName = "RSA"
    OnProfileEnable = <function> defined @Interface\AddOns\RSA\Core.lua:3855
    ChatCommand = <function> defined @Interface\AddOns\RSA\Core.lua:3860
    OnInitialize = <function> defined @Interface\AddOns\RSA\Core.lua:3706
    defaultModuleState = true
    IterateModules = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:453
    GetSinkAce2OptionsDataTable = <function> defined @Interface\AddOns\Chatter\Libs\LibSink-2.0\LibSink-2.0.lua:539
    NewModule = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:256
    Print = <function> defined @Interface\AddOns\Bagnon\libs\AceConsole-3.0\AceConsole-3.0.lua:54
    SetSinkStorage = <function> defined @Interface\AddOns\Chatter\Libs\LibSink-2.0\LibSink-2.0.lua:752
    GetName = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:300
    Disable = <function> defined @Interface\AddOns\Masque\Libs\AceAddon-3.0\AceAddon-3.0.lua:330
    L = <table> {
    OptionsClass = " If you want to use RSA with this class, please enable the module."
    is Missing! = " is Missing!"
    Enable_In_Tol_Barad_Desc = "Enabling this will allow you to announce while in Tol Barad."
    Whisper = "Whisper"
    End = "End"
    Raid = "Raid"
    Smart Group = "Smart Group"
    OptionsDisabled = "Module disabled, please enable it."
    Whisper_Desc = "Whispers the target of the spell.
    This setting also does not follow the global announcement settings, and will, i
    Swatter, v4.2.0 (<%codename%>)
    NPCScan, v5.0.0.5
    Auctionator, v3.1.3
    Babylonian, v5.1.DEV.332(/embedded)
    BagBrother, v
    Bagnon, v5.2.1
    Bartender4, v4.5.9
    BittensSpellFlashLibrary, v4.6.4
    ButtonFacade, v5.2.391
    Chatter, v1.4.4
    Configator, v5.1.DEV.344(/embedded)
    DBMCore, v
    DBMLDB, v
    DBMSpellTimers, v
    Gatherer, v4.2.0
    GladiatorlosSA, v2.0
    GTFO, v4.23.1
    HaloPro, v(v2.1.0)
    HealBot, v5.2.0.4
    HealBotbr, v5.2.0.0
    HealBotTips, v5.2.0.2
    Hermes, v
    HermesUI, v
    Incoming, v1.11
    kgPanels, v1.15
    MacroBank, v1.11
    MacroToolkit, vv5.2.0.1
    MacroToolkitMacroBox, vv5.2.0.0
    MagicSell, v5.2.1
    MapCoords, v0.15
    Mappy, v3.3.2
    Masque, v5.2.391
    MikScrollingBattleText, v5.7.128
    MogIt, v3.1.2
    MuchMoreMacro, v1.3.2
    Omen, v3.1.8
    OmniCC, v5.2.3
    Pawn, v1.8.4
    Postal, v3.5.1
    Quartz, v3.1.2
    QuartzProcs, v3.42
    RSA, v2.854
    RSAPaladin, v
    SaySapped, v2012-10-01
    ShadowedUnitFrames, vv3.8.6
    Skada, v1.4-11
    SkadaAbilityTracker, v1.1
    SkadaCC, v1.0
    SkadaDamage, v1.0
    SkadaDamageTaken, v1.0
    SkadaDeaths, v1.0
    SkadaDebuffs, v1.0
    SkadaDispels, v1.0
    SkadaEnemies, v1.0
    SkadaHealAbsorbs, v
    SkadaHealing, v1.0
    SkadaPower, v1.0
    SkadaThreat, v1.0
    SlideBar, v4.2.0 (<%codename%>)
    SmartTabTarget, v
    SpellFlash, v6.6
    SpellFlashCore, v2.0.2
    TellMeWhen, v6.1.5
    TidyPlates, v6.9.8
    TidyPlatesGraphite, v
    TidyPlatesGrey, v
    TidyPlatesNeon, v
    TidyPlatesQuatre, v
    TidyPlatesHub, v
    TidyPlatesWidgets, v
    Titan, v5.1.18.50200
    TitanBag, v5.1.18.50200
    TitanClock, v5.1.18.50200
    TitanCurrency, v5.7
    TitanGold, v5.1.18.50200
    TitanHealBot, v5.2.0.3
    TitanHonorPoints, v4.0.001
    TitanLocation, v5.1.18.50200
    TitanLootType, v5.1.18.50200
    TitanPerformance, v5.1.18.50200
    TitanRepair, v5.1.18.50200
    TitanRoll, v
    TitanSpec, v2.3.0
    TitanVolume, v5.1.18.50200
    TitanXP, v5.1.18.50200
    TomTom, vv50200-1.0.2
    TomTomPing, v1.1 r026
    VuhDo, v3.37
    VuhDoOptions, v3.37
    VulcanRepair, v3.07
    XToLevel, v5.2.0_35
    BlizRuntimeLib_ptBR v5.2.0.50200 <us>


  • #1011

    I hope some wonderful, talented person, helps Raeli out and takes over this. We appreciate your time on this Raeli. :) Thank you and best wishes.

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Gamepedia Free-shirt Giveaway