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.
Is there a way to scale the chat bubble to make it smaller? An alternative was to change the font size of the text bubble to 12pt. This look alright in the open world, but when i enter a dungeon it seems to revert back to 14pt. Thank you for any insight!
I still cannot make this addon work. Why does it not copy my settings from one character to another character? I have used prifles. that didnt help and i ahve also used the "extra stuff" memory and used load. it didnt give me anytabs. all my characters except my main have the default shitty tabs with jsut General and Combat log. please help
Made a post on this on github, but just in case these comments get more visibility - I'm having an odd issue with Prat where BNet friends won't suggest for tab completion until I completely type out their name. This doesn't happen when I disable Prat (while keeping all other addons running). More details/screenshots: https://github.com/Legacy-of-Sylvanaar/prat-3-0/issues/241
In reply to toludin: I am having a similar issue, and some Bnet friends just never work. I type their name letter for letter and it doesnt initiate a bnet whisper. I have to open my friends list and initiate a whisper from there. I have tested with Prat off and behaviour goes back to normal.
Edit - Upon further testing the issue of names not working is when they are offline from bnet completely. So that one is on me. Just updating! But I have the same issue where I need to type out the full Bnet name or if they are on real ID and have a two part name, just the first portion suffices.
For some reason now I can not click on a players name to bring up a whisper or I cant click achievements anymore
In reply to CooongaDelRay: You getting any errors. Enable them with /console scriptErrors 1
is there any reason to why when i am trying to whisper someone it constantly comes up as /cw (name) instead of just going into the whisper?
cata/mop classic
i have gone through my addons one at a time and the only one doing it is when i have prat turned on.
In reply to Killmory: Can you post a screenshot of the erroneous behaviour. I'm not clear on what's happening.
is anyone else having system messages in classic stop working after a while, everything from /rolls to party invites/leaves are no longer showing after around 20-30 mins. Relogging or reloading will haveit work again but again goes away after a while.
Hi, when I try to change the chat bubble font size sliders, nothing happens, it seems to have stopped working.
Any tips? Thanks for the addon!
Hey. Prat is not having the same layout on my alt chars as my main. all the tabs are gone along with settings. changing profiles does not fix it?
In reply to s1lver1one: you've been answered twice already, just for good measure: prat does not save tabs
Current version is not saving state (specifically font size) on logout.
In reply to gouges2: You probably have another addon updating the chat font size on login.
In reply to gouges2: Problem seems to happen when you change the font thru the blizzard UI (right clicking the chat tabs). If you open Prat and use the font size sliders, the Font size stays persistent. Hope this helps!
I remember back in the days we used to be able to add more names for "highlight self" example if my name is Vladiator, some ppl would sometimes write "vlad" in chats, which doesn't pick up the self highlighting except if its fully written vladiator, I would love to add list of names to highlight, i.e. adding for example:
vlad, vladi, vla
then if anyone writes vladi or vlad or vla or vladiator all will pick up the green highlighting color in chat? is that possible? I thought we had that unless I am mistaken this feature with chatter which is not working atm.
In reply to pawnzee: Prat only has the functionality to highlight your full name
i logged into a new char. and the Default Profile was not the same. chat tabs are missing. is it possible to fix?
In reply to s1lver1one: Prat doesn't handle tabs (unless you use the Memory module, which has bugs)
89x Prat-3.0-3.9.68/modules/Font.lua:753: attempt to index field 'size' (a nil value)
[string "@Prat-3.0-3.9.68/modules/Font.lua"]:753: in function `ConfigureAllChatFrames'
[string "@Prat-3.0-3.9.68/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/Wrath/Blizzard_CombatLog.lua"]:3283: in function <...dOns/Blizzard_CombatLog/Wrath/Blizzard_CombatLog.lua:3269>
[string "@Blizzard_CombatLog/Wrath/Blizzard_CombatLog.lua"]:3336: in function `FCF_DockUpdate'
[string "@Blizzard_UIParentPanelManager/Classic/UIParentPanelManager_Shared.lua"]:1035: in function `UIParentManageFramePositions'
[string "@Blizzard_UIParentPanelManager/Classic/UIParentPanelManager_Shared.lua"]:325: in function <...PanelManager/Classic/UIParentPanelManager_Shared.lua:312>
[string "=[C]"]: in function `SetAttribute'
[string "@Blizzard_UIParentPanelManager/Classic/UIParentPanelManager_Shared.lua"]:1045: in function `UIParent_ManageFramePositions'
[string "@Blizzard_BuffFrame/Classic/BuffFrame.lua"]:364: in function `BuffFrame_UpdateAllBuffAnchors'
[string "@Blizzard_BuffFrame/Classic/BuffFrame.lua"]:105: in function `BuffFrame_Update'
[string "@Blizzard_SettingsDefinitions_Frame/Classic/InterfaceOverrides.lua"]:103: in function <...ingsDefinitions_Frame/Classic/InterfaceOverrides.lua:102>
[string "=[C]"]: ?
[string "@Blizzard_SharedXMLBase/CallbackRegistry.lua"]:144: in function <...eBlizzard_SharedXMLBase/CallbackRegistry.lua:143>
[string "=[C]"]: ?
[string "@Blizzard_SharedXMLBase/CallbackRegistry.lua"]:147: in function `TriggerEvent'
[string "@Blizzard_SharedXMLBase/CvarUtil.lua"]:114: in function <Blizzard_SharedXMLBase/CvarUtil.lua:106>
Locals:
self = <table> {
modules = <table> {
}
db = <table> {
}
defaultModuleLibraries = <table> {
}
baseName = "Prat-3.0"
oldsize = <table> {
}
defaultModuleState = true
name = "Prat_Font"
orderedModules = <table> {
}
PL = <table> {
}
enabledState = true
hooks = <table> {
}
moduleName = "Font"
}
db = <table> {
}
(for state) = <table> {
ChatFrame5 = ChatFrame5 {
}
ChatFrame4 = ChatFrame4 {
}
ChatFrame3 = ChatFrame3 {
}
ChatFrame7 = ChatFrame7 {
}
ChatFrame6 = ChatFrame6 {
}
ChatFrame10 = ChatFrame10 {
}
ChatFrame2 = ChatFrame2 {
}
ChatFrame8 = ChatFrame8 {
}
ChatFrame9 = ChatFrame9 {
}
ChatFrame1 = ChatFrame1 {
}
}
(for control) = "ChatFrame5"
k = "ChatFrame5"
v = ChatFrame5 {
onDisplayRefreshedCallbacks = <table> {
}
oldestFadingLineTimestamp = 374367.054000
tellTimer = 374349.294000
shouldFadeAfterInactivity = true
buttonSide = "left"
checkedGMOTD = true
textIsCopyable = false
ResizeButton = ChatFrame5ResizeButton {
}
overrideFadeTimestamp = 374367.054000
isScrollingMessageFrame = true
name = "world"
isUninteractable = false
minimizeButton = ChatFrame5MinimizeButton {
}
buttonFrame = ChatFrame5ButtonFrame {
}
isDocked = 1
alternativeDefaultLanguage = "Orcish"
isInitialized = 1
hasOwnFontObject = true
allowScroll = true
oldAlpha = 0.247059
channelList = <table> {
}
FontStringContainer = Frame {
}
messageTypeList = <table> {
}
flashTimer = 0
timeVisibleSecs = 120
fontObject = table: 0000020AB1A9FB30 {
}
zoneChannelList = <table> {
}
insertMode = 2
defaultLanguage = "Orcish"
isLayoutDirty = true
isDisplayDirty = true
fadeDurationSecs = 3
visibleLines = <table> {
}
scrollOffset = 0
historyBuffer = <table> {
}
clickAnywhereButton = ChatFrame5ClickAnywhereButton {
}
ScrollToBottomButton = Button {
}
editBox = ChatFrame5EditBox {
}
Background = ChatFrame5Background {
}
isLocked = true
}
(*temporary) = <table> {
modules = <table> {
}
db = <table> {
}
defaultModuleLibraries = <table> {
}
baseName = "Prat-3.0"
oldsize = <table> {
}
defaultModuleState = true
name = "Prat_Font"
orderedModules = <table> {
}
PL = <table> {
}
enabledState = true
hooks = <table> {
}
moduleName = "Font"
}
(*temporary) = ChatFrame5 {
onDisplayRefreshedCallbacks = <table> {
}
oldestFadingLineTimestamp = 374367.054000
tellTimer = 374349.294000
shouldFadeAfterInactivity = true
buttonSide = "left"
checkedGMOTD = true
textIsCopyable = false
ResizeButton = ChatFrame5ResizeButton {
}
overrideFadeTimestamp = 374367.054000
isScrollingMessageFrame = true
name = "world"
isUninteractable = false
minimizeButton = ChatFrame5MinimizeButton {
}
buttonFrame = ChatFrame5ButtonFrame {
}
isDocked = 1
alternativeDefaultLanguage = "Orcish"
isInitialized = 1
hasOwnFontObject = true
allowScroll = true
oldAlpha = 0.247059
channelList = <table> {
}
FontStringContainer = Frame {
}
messageTypeList = <table> {
}
flashTimer = 0
timeVisibleSecs = 120
fontObject = table: 0000020AB1A9FB30 {
}
zoneChannelList = <table> {
}
insertMode = 2
defaultLanguage = "Orcish"
isLayoutDirty = true
isDisplayDirty = true
fadeDurationSecs = 3
visibleLines = <table> {
}
scrollOffset = 0
historyBuffer = <table> {
}
clickAnywhereButton = ChatFrame5ClickAnywhereButton {
}
ScrollToBottomButton = Button {
}
editBox = ChatFrame5EditBox {
}
Background = ChatFrame5Background {
}
isLocked = true
}
(*temporary) = nil
(*temporary) = "attempt to index field 'size' (a nil value)"
MoP classic prepatch