diff -ruN TankWarnings.svn/Core.lua TankWarnings.WIP/Core.lua
--- TankWarnings.svn/Core.lua	2012-12-07 08:09:03.000000000 -0700
+++ TankWarnings.WIP/Core.lua	2012-12-07 09:05:56.000000000 -0700
@@ -274,46 +274,22 @@
     if message == nil then return end
 
     -- Message output
-    if self.db.profile.messages.sendraid then
-        -- First check if our sink is sending to raid already, if it is, bail out no need to send this
-        if self.db.profile.messages.sinkOptions.sink20OutputSink ~= "RaidWarning" then
-            -- Check if were in a raid, if we are, check if we have permissions to send the message there
-            if IsInRaid() then
-                if self:IsPromoted() then
-                    SendChatMessage(message, "RAID_WARNING")
-                else
-                    --self:Print(L["Cannot send message to raid, not promoted"])
-                    SendChatMessage(message, "RAID")
-                end
-            elseif GetNumGroupMembers() > 0 then -- in a party ? send to raid warning anyway, doesn't need promotion
-                SendChatMessage(message, "PARTY")
-            end
+
+    -- Check if were in a raid, if we are, check if we have permissions
+    -- to send the message there
+    -- And check if our sink to avoid sending it twice
+    if IsInRaid() then
+        if self:IsPromoted() and self.db.profile.messages.sendraidwarn and self.db.profile.messages.sinkOptions.sink20OutputSink ~= "RaidWarning" and self.db.profile.messages.sinkOptions.sink20ScrollArea ~= "Raid Warning" then
+            SendChatMessage(message, "RAID_WARNING")
+        -- in a raid but no permission to Raid Warning
+        elseif self.db.profile.messages.sendraid and self.db.profile.messages.sinkOptions.sink20ScrollArea ~= "Raid" then
+            SendChatMessage(message, "RAID")
         end
+    -- in a party so no raid warning or raid channels fallback to party
+    elseif GetNumGroupMembers() > 0 and self.db.profile.messages.sendparty and self.db.profile.messages.sinkOptions.sink20ScrollArea ~= "Party" then
+        SendChatMessage(message, "PARTY")
     end
     
-    -- Raid to party fallback hack, if the user has sink sending the messages to raid
-    -- but he is in a party instead, falls back to party
-    -- ticket #1 by Castnicke
-    if self.db.profile.messages.sinkOptions.sink20OutputSink == "Channel" and self.db.profile.messages.sinkOptions.sink20ScrollArea == "Raid" then
-        if IsInRaid() then
-            -- Set the sink to temporarily be PARTY, doesn't get saved on user options
-            self.db.profile.messages.sinkOptions.sink20ScrollArea = "Party"
-            
-            -- Send the message now so we can restore the setting after
-            -- send it only if were on a party, if were not in a party then don't, restore the setting below and leave
-            if GetNumGroupMembers() > 0 then
-                self:Pour(message, 1, 0, 0, nil, 24, "OUTLINE", true)
-            end
-            
-            -- set it back to raid or else if the user after leaving this party and joining a raid will still send to party
-            -- so we need to keep the current working settings reflected on state of the configuration
-            self.db.profile.messages.sinkOptions.sink20ScrollArea = "Raid"
-            
-            -- stop processing here so we don't get repeated messages and more useless elseif's etc
-            return
-        end
-    end
-
     -- send our message through the sink
     self:Pour(message, 1, 0, 0, nil, 24, "OUTLINE", true)
 end
@@ -1013,13 +989,31 @@
                     order = 2,
                     width = "full",
                 },
-                sendraid = {
+                sendraidwarn = {
                     type = "toggle",
                     name = L["Send messages to raid warning regardless"],
-                    desc = L["Displays the messages in raid warning regardles of your output config, usefull if you choose to output to somewhere else that is not Raid Warning"],
+                    desc = L["Displays the messages in raid warning regardless of your output config, usefull if you choose to output to somewhere else that is not Raid Warning"],
+                    get = function(info) return db.profile.messages.sendraidwarn end,
+                    set = function(info, v) db.profile.messages.sendraidwarn = v end,
+                    order = 3,
+                    width = "full",
+                },
+                sendraid = {
+                    type = "toggle",
+                    name = L["Send messages to raid regardless (if raid warning is unavailable)"],
+                    desc = L["Displays the messages in raid regardless of your output config, usefull if you are in raid but are not the raid leader or assistant but still want to announce to raid as a fallback"],
                     get = function(info) return db.profile.messages.sendraid end,
                     set = function(info, v) db.profile.messages.sendraid = v end,
-                    order = 3,
+                    order = 4,
+                    width = "full",
+                },
+                sendparty = {
+                    type = "toggle",
+                    name = L["Send messages to party regardless (if raid is unavailable)"],
+                    desc = L["Displays the messages in party regardless of your output config, usefull if you are not in a raid and would still like the output to fallback to party"],
+                    get = function(info) return db.profile.messages.sendparty end,
+                    set = function(info, v) db.profile.messages.sendparty = v end,
+                    order = 5,
                     width = "full",
                 },
                 alertimmune = {
@@ -1028,7 +1022,7 @@
                     desc = L["Warn when the NPC is immune to your ability"],
                     get = function(info) return db.profile.messages.alertimmune end,
                     set = function(info, v) db.profile.messages.alertimmune = v end,
-                    order = 4,
+                    order = 6,
                     width = "full",
                 },
                 immunemessage = {
@@ -1038,7 +1032,7 @@
                     get = function(info) return db.profile.messages.immunemessage end,
                     set = function(info, v) db.profile.messages.immunemessage = v end,
                     width = "full",
-                    order = 5,
+                    order = 7,
                     disabled = function() return not db.profile.messages.alertimmune end,
                 },
                 output = tw:GetSinkAce3OptionsDataTable(),
@@ -1570,7 +1564,9 @@
       },
       messages = {
 	 disableinpvp = true,
+	 sendraidwarn = true,
 	 sendraid = true,
+	 sendparty = true,
 	 sinkOptions = {},
 	 alertimmune = true,
 	 immunemessage = L["ImmuneMessage"],
diff -ruN TankWarnings.svn/Localization.lua TankWarnings.WIP/Localization.lua
--- TankWarnings.svn/Localization.lua	2012-12-07 08:09:03.000000000 -0700
+++ TankWarnings.WIP/Localization.lua	2012-12-07 09:06:18.000000000 -0700
@@ -78,7 +78,11 @@
 L["Disable in PvP"] = true
 L["Disable when player is in Battlegrounds/Arenas"] = true
 L["Send messages to raid warning regardless"] = true
-L["Displays the messages in raid warning regardles of your output config, usefull if you choose to output to somewhere else that is not Raid Warning"] = true
+L["Send messages to raid regardless (if raid warning is unavailable)"] = true
+L["Send messages to party regardless (if raid is unavailable)"] = true
+L["Displays the messages in raid warning regardless of your output config, usefull if you choose to output to somewhere else that is not Raid Warning"] = true
+L["Displays the messages in raid regardless of your output config, usefull if you are in raid but are not the raid leader or assistant but still want to announce to raid as a fallback"] = true
+L["Displays the messages in party regardless of your output config, usefull if you are not in a raid and would still like the output to fallback to party"] = true
 L["Warn when immune"] = true
 L["Warn when the NPC is immune to your ability"] = true
 L["Immune Message"] = true
