Prat 3.0
In loving memory of Jon Akthar (Sylvanaar)
Hello WoW community, I'm LuciferCatnip, Sylvanaar was my coworker and my mentor. It goes without saying that Jon was an amazingly talented individual. He always seemed to know everything… but he once said to me "It's not about knowing the answers, it's about asking the right questions", he always challenged me to ask me the right questions until I would arrive at the answer on my own terms. Jon was also a champion of the open source movement, and so with special thanks to Gil from Curseforge as well as Sylvanaar's family, there's no better way to honor Sylvanaar's legacy than to keep his project going strong in the community.
If you'd like to help maintain Prat, please reach out to MysticalOS or LuciferCatnip directly. Thank you so much.
About
Prat-3.0 is a chat enhancement addon for World of Warcraft.
It is made up of 30+ smaller "modules" which each provide additional functionality, and can be enabled or disabled individually.
In game, type /prat for a menu. Or use the icon on one of the many data broker hosts.
Prat has just about every feature you can think of, and then some. Really. When I get some more time, I'll try and put together a full list (Even I have lost count)
(Thanks to Dreamsight for this partial list)
- Sync your chat settings across your account (Beta)
- Machine learning powered spam filter (Beta)
- Change arrows, buttons, mouse scroll for chat scroll, scroll speed
- you can add player color per channel, color per level, color per class
- timestamps (styled)
- Whether to show timestamp (what format the timestamp should be in)
- Whether to show players level
- You can select the option for channel "stickys" (last channel you used you auto use when hitting enter, that sort of thing – or last thing someone said)
- Change the looks of the chat's editbox - as well as where it appears (you can even undock it and move it to where you'd like it to be)
- Chat fading, fading delay
- You can change the font to a list of fonts, add an outline to it, monochrome it (if you don’t mind messing with files a bit you could probably even add other fonts to that list)
- Change the chat frame/chat box appearance
- Keep chat history between game sessions
- Set channel abbreviations
- Set brackets and color(or something instead of brackets)round player/lvl
- Alt invite option (press keyboard “alt” button and click on the player’s name to auto inv them)
- Raid icon
- Invite links - click them to invite the person
- URL copying
- Full chat copying + copy button
- Click timestamp to copy line
- Configurable alerts when your name or other word is mentioned
- Enables tell target /tt which whispers your target
- Alias options - make macros into short commands
- See names of players Alt characters
- Change chat sounds (incoming and outgoing as well as per channel)
- Achievements info and grats
- Full chat search and search box
- Customizable filters for advanced users
- Show item icon next to item links and player class icon next to player names
- Icon-only options for newcomers chat
- Optional flashing or font color change for chat tabs when a new message comes in.
You can enable/disable all Prat modules - don't have to have the ones you don't use running
While trying to reduce resource utilization, it is also important to note that some people prefer the features, and don't care that an addon uses 500k more.

-
View User Profile
-
Send Message
Posted Oct 18, 2024Why does this addon break so bad while using ElvUI?
The editbox is out of place, clicking a chat tab causes the editbox to pop up but like half transparency for some reason (??????)
-
View User Profile
-
Send Message
Posted Dec 18, 2024In reply to DulcetSounds: Its not Prat, its the ElvUI background that needs to be resized,
-
View User Profile
-
Send Message
Posted Sep 26, 2024Has this addon been abandon ?
-
View User Profile
-
Send Message
Posted Sep 25, 2024sod update 5 lua error on login
2x ...Blizzard_ChatFrameBase/Classic/FloatingChatFrame.lua:975: attempt to index local 'self' (a nil value)
[string "@Blizzard_ChatFrameBase/Classic/FloatingChatFrame.lua"]:975: in function <...Blizzard_ChatFrameBase/Classic/FloatingChatFrame.lua:970>
[string "=[C]"]: in function `FCF_SetChatWindowFontSize'
[string "@Prat-3.0-3.9.58/modules/Font.lua"]:765: in function `SetFontSize'
[string "@Prat-3.0-3.9.58/modules/Font.lua"]:753: in function `ConfigureAllChatFrames'
[string "@Prat-3.0-3.9.58/modules/ChatFrames.lua"]:636: in function <Prat-3.0/modules/ChatFrames.lua:630>
[string "=(tail call)"]: ?
[string "=[C]"]: in function `FloatingChatFrame_UpdateBackgroundAnchors'
[string "@Blizzard_CombatLog/Classic/Blizzard_CombatLog.lua"]:3345: in function <...ns/Blizzard_CombatLog/Classic/Blizzard_CombatLog.lua:3331>
[string "@Blizzard_CombatLog/Classic/Blizzard_CombatLog.lua"]:3399: in function `FCF_DockUpdate'
[string "@Blizzard_UIParentPanelManager/Classic/UIParentPanelManager_Shared.lua"]:1039: in function `UIParentManageFramePositions'
[string "@Blizzard_UIParentPanelManager/Classic/UIParentPanelManager_Shared.lua"]:328: in function <...PanelManager/Classic/UIParentPanelManager_Shared.lua:315>
[string "=[C]"]: in function `SetAttribute'
-
View User Profile
-
Send Message
Posted Sep 24, 2024Editbox goes back to it's default position after rl/restart. I can make it go back to the position I set it in by setting it to another mode and settings it back to freefloat locked but it's annoying AF to do every time.
-
View User Profile
-
Send Message
Posted Sep 18, 2024I'm having an issue where Prat doesn't remember the settings for a tab I created. I made a tab for party/raid/instance and any time I log out, switch characters or reload my ui the tab defaults to a state where it those chat types aren't shown. Am I missing a setting somewhere? Please help.
-
View User Profile
-
Send Message
Posted Sep 12, 2024Please tell me how can I disable chat tab flashing on certain tabs and how to add a possibility for a whisper tab. Been looking for settings for around 15 minutes and cannot find anything.
-
View User Profile
-
Send Message
Posted Aug 22, 2024Could use a small update to include player levels above 70 for WW. Shift-clicking will display the correct level, but not in front of their names by default.
-
View User Profile
-
Send Message
Posted Aug 22, 2024Why is my name green? And why is there no option anywhere to change that?
-
View User Profile
-
Send Message
Posted Aug 12, 2024Is there a way to use the search function to look for only posts made by myself? or by usename? I tried to do this using just the first three letters of my toon's name (Jor) and it found 1 entry by another user named Jorvic but nothing by me. Unsure how this is supposed to work but a filter for just things I have said and no one else would be rad. Getting a random warning from blizzard about conduct on the game when I havent said anything i could see as warranting it is just baffling. If I could pull up what I alone said I could at least figure out what might have been the post.
-
View User Profile
-
Send Message
Posted Aug 9, 2024Is there a way to save the positions of the various chat windows I have pulled out and use those locations on other characters? It seems that window position remains defined per-character no matter what I do. I'd like to move a window (not the default wow chat window) and then have it moved on all of my other characters too.
-
View User Profile
-
Send Message
Posted Aug 3, 2024The latest version continues with the problems with the text scale, it continues to reset to scale 12 in any situation (opening a whisper, /reload, entering another character, etc).
-
View User Profile
-
Send Message
Posted Aug 2, 2024feature request- a chat timeout timer, for channels that have one so we know when we can type again. yeah, I know but still would be neat! XD
-
View User Profile
-
Send Message
Posted Jul 30, 202462x Prat-3.0-3.9.55/modules/PlayerNames.lua:1366: attempt to index local 'Name' (a nil value)
[string "@Prat-3.0-3.9.55/modules/PlayerNames.lua"]:1366: in function `?'
Locals:
self = <table> {
modules = <table> {
}
Classes = <table> {
}
defaultModuleState = true
Subgroups = <table> {
}
hooks = <table> {
}
db = <table> {
}
enabledState = true
PL = <table> {
}
defaultModuleLibraries = <table> {
}
pluginopts = <table> {
}
NEEDS_INIT = true
baseName = "Prat-3.0"
name = "Prat_PlayerNames"
orderedModules = <table> {
}
Levels = <table> {
}
moduleName = "PlayerNames"
}
Name = nil
Class = nil
Level = nil
_ = nil
(for index) = 1
(for limit) = 244
(for step) = 1
i = 1
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index local 'Name' (a nil value)"
-
View User Profile
-
Send Message
Posted Aug 1, 2024In reply to cpljaide: getting the same error here as well
78x Prat-3.0-3.9.55/modules/PlayerNames.lua:1366: attempt to index local 'Name' (a nil value)
[string "@Prat-3.0-3.9.55/modules/PlayerNames.lua"]:1366: in function `?'
[string "@Altoholic/Libs/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:109: in function <...lic/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:109>
[string "=[C]"]: ?
[string "@Altoholic/Libs/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:19: in function <...lic/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:15>
[string "@Altoholic/Libs/CallbackHandler-1.0-8/CallbackHandler-1.0.lua"]:54: in function `Fire'
[string "@Scrap/libs/AceEvent-3.0-4/AceEvent-3.0.lua"]:120: in function <...faceScrap/libs/AceEvent-3.0/AceEvent-3.0.lua:119>
Locals:
self = <table> {
modules = <table> {
}
Classes = <table> {
}
defaultModuleState = true
Subgroups = <table> {
}
hooks = <table> {
}
db = <table> {
}
enabledState = true
PL = <table> {
}
defaultModuleLibraries = <table> {
}
pluginopts = <table> {
}
baseName = "Prat-3.0"
name = "Prat_PlayerNames"
orderedModules = <table> {
}
Levels = <table> {
}
moduleName = "PlayerNames"
}
Name = nil
Class = nil
Level = nil
_ = nil
(for index) = 1
(for limit) = 962
(for step) = 1
i = 1
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index local 'Name' (a nil value)"
-
View User Profile
-
Send Message
Posted Jul 29, 2024Hi,
First of all, great addon!
I am playing WoW Classic Era Version 1.15.3.
Is it possible to only display the "Show Social Menu" Button under "Buttons" without needing to also "Show Arrows"?
Additionally it would be awesome if you could move the "Show Social Menu" Button along the chat frame to the desired position.
Would be awesome.
Thanks a lot in advance!
-
View User Profile
-
Send Message
Posted Jul 28, 2024Hello.
Is there any fix for scaling text itself ? I set 14 and still getting 12 in my party window.
Thanks
Czecher
-
View User Profile
-
Send Message
Posted Jul 27, 2024The latest retail version (3.9.55) can throw an error in the PlayerNames module:
```
PlayerNames.lua:1366: attempt to index local 'Name' (a nil value)
```
As a simple fix, I added a nil check to updateGuild:
```
function module:updateGuild()
if IsInGuild() then
self.GuildRoster()
local Name, Class, Level, _
for i = 1, GetNumGuildMembers(true) do
Name, _, _, Level, _, _, _, _, _, _, Class = GetGuildRosterInfo(i)
if Name ~= nil then
local plr, svr = Name:match("([^%-]+)%-?(.*)")
self:addName(plr, nil, Class, Level, nil, "GUILD")
self:addName(plr, svr, Class, Level, nil, "GUILD")
end
end
end
end
```
-
View User Profile
-
Send Message
Posted Jul 28, 2024In reply to ratbastaayyyyy: Thank you very much.
-
View User Profile
-
Send Message
Posted Jul 24, 2024Right now the text scaling resets every time you do /reload, enter a new character, open a new whisper, etc, it's honestly quite annoying.