PitBull Unit Frames 4.0
PitBull Unit Frames 4.0
Woof. Arf. Yip.
Getting Started:
You can help translate PitBull for your language with the localization tool.
Classic
PitBull works with WoW Classic! Classic Era/Vanilla is supported in
v4.3.x-vanilla releases. Other Classic versions are supported in v4.2.x releases
(the same releases retail use).
Download
CurseForge: https://www.curseforge.com/wow/addons/pitbull-unit-frames-4-0
Wago: https://addons.wago.io/addons/pitbull4
WoWInterface: https://www.wowinterface.com/downloads/info20021
-
View User Profile
-
Send Message
Posted Sep 4, 2026# PitBull4 for WoW 12.1 / Midnight – Rumorix Fork
I’ve been maintaining a PitBull4 fork for **WoW Retail 12.1 / Midnight**, mainly to restore compatibility with Blizzard’s new protected / secret-value system while keeping the classic PitBull4 workflow and customization intact.
## Download
https://1drv.ms/f/c/25688cb7a16be526/IgDvr810POcETbKR5MaoqZTgARoMWi3misaF8nw5m6yD2iU
Please replace the complete existing `PitBull4` folder instead of mixing files from different builds.
## Main additions / fixes
- Native 12.1 protected Aura support for normal Buffs/Debuffs
- New **Major Cooldown Auras** module with offensive/defensive cooldowns, per-class/per-spell options, test mode and activation glow
- New **Important Debuffs** module for boss/priority mechanics
- Extensive secret-value fixes for Health, Power, LuaTexts, Role Icons, Totems, reaction colors and unit identity
- Restored Class / Level / Race / NPC Type text where Blizzard still exposes the information
- Fixed empty / duplicate `0%` power rows on NPCs without resources
- Added readable fallback background for no-resource Class/Type rows
- Player Health/Power ping support
- Improved protected 3D portrait handling
- New **Exclude Main Tanks** option for normal Raid groups
- Main Tank support also works with oRA3 assignments
- Dynamic Target/Focus aura refresh fixes
- Raid performance improvements for HealthBar/PowerBar updates
- Full localization support for all PitBull4 locales, including the new modules
The fork also includes `/pitbull 121status` and an extended Debug / Scan All mode for troubleshooting.
If you find a problem, please include:
**full BugSack stack + `/pitbull 121status` + Debug Scan All + screenshot**.
The fork is still actively being developed, so feedback and test reports are very welcome.
-
View User Profile
-
Send Message
Posted Sep 8, 2026@Rumorix - thanks for working on it, you are doing a great job! I have a question - is there any possibility to restore the way your own buffs and debuffs were easily distinguishable from those of the other players thanks to a different icon size?
-
View User Profile
-
Send Message
Posted Sep 8, 2026@naoumovitch feel free to test patch 67 - you can change the color of the frame and the size from your buffs/debuffs and non-player buffs/debuffs
per default your buffs/debuffs will be green and same size - other buffs/debuffs will have a red frame
please provide me with feedback =)
-
View User Profile
-
Send Message
Posted Sep 9, 2026@Rumorix I've tried patch 67 and it works perfectly without any changes in the options, my own buffs and debuffs are shown just like it was before 12.1. Thanks a lot!
-
View User Profile
-
Send Message
Posted Sep 9, 2026@naoumovitch the default was disabled when switching to 12.1- red and green frames for buffs/debuffs - i reenabled it with the new system in mind and also added a simple slider for changing the size of player/non-player buffs aswell - you can also change the colour freely now
-
View User Profile
-
Send Message
Posted Aug 27, 2026Is it just me or is anyone else having issues with the target frame in raids being blank or just showing my character's information instead? I am running Rumorix's Patch 34 version.
Also, just wanted to say a huge thank you to Rumorix for working on this. I am lost without this addon.
-
View User Profile
-
Send Message
Posted Aug 27, 2026@loktarogar911 hi - i need a bit more input =)
Open PitBull4 → Debug Mode and enable it.
Reproduce the problem.
Run Scan or preferably Scan All.
Copy the complete debug output and send it to me.
Please also run:
/pitbull 121status
and include the complete output.
If you use BugSack/BugGrabber, please send the full error/stack trace, not only the first error line.
A screenshot showing the affected PitBull frame/UI would also be very helpful.
The most useful combination is therefore:
PitBull Debug Scan All + /pitbull 121status + full BugSack stack + screenshot
If the problem only occurs in combat, please also mention which frame is affected (Player/Target/Focus/Party/Raid), what you were doing when it happened, and whether it occurs after changing targets or entering/leaving comba
-
View User Profile
-
Send Message
Posted Aug 28, 2026@Rumorix I sent you a DM. I did figure out the cause and it is rather minor so hopefully it isn't a hard fix. I sent the Debug Scan All and BugSack. The /pitbull 121status brought up the same debug window with the same info so I probably did something wrong. If you still need a screenshot, I can upload somewhere and send to you. Thanks!
-
View User Profile
-
Send Message
Posted Aug 28, 2026@loktarogar911 Thanks! This is the same RoleIcon secret-value issue that has already been fixed in Patch 036.
UnitGroupRolesAssigned() can return a protected/secret role string in WoW 12.1, which the old PitBull code tried to compare directly. Patch 036 now handles this safely.
I’ll upload Patch 036 later today, around 19:00 German time (CEST).
If the error still occurs with Patch 036, please send the full BugSack stack and /pitbull 121status.
-
View User Profile
-
Send Message
Posted Aug 28, 2026@Rumorix patch uploaded - please test it again <3
-
View User Profile
-
Send Message
Posted Aug 28, 2026@Rumorix Seems to work great. Thank you so much!
-
View User Profile
-
Send Message
Posted Aug 29, 2026@loktarogar911 pleasure :)
-
View User Profile
-
Send Message
Posted Aug 27, 2026@Rumorix
I have found a bug with the midnight version concerning totems. Bug report below:
7x PitBull4/Modules/Totems/Totems.lua:473: attempt to compare local 'name' (a secret string value, while execution tainted by 'PitBull4')
[PitBull4/Modules/Totems/Totems.lua]:473: in function '?'
[AccountPlayed/Libs/CallbackHandler-1.0.lua]:109: in function <...ceAccountPlayed/Libs/CallbackHandler-1.0.lua:109>
[C]: ?
[AccountPlayed/Libs/CallbackHandler-1.0.lua]:19: in function <...ceAccountPlayed/Libs/CallbackHandler-1.0.lua:15>
[AccountPlayed/Libs/CallbackHandler-1.0.lua]:54: in function 'Fire'
[BeQuiet/libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua]:120: in function <...dOns/BeQuiet/libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua:119>
Locals:
self=<table>{
description="Show which Totems are dropped and the time left until they expire."
modules=<table>
defaultModuleLibraries=<table>
show_font_size_option=true
baseName="PitBull4"
module_type="indicator"
name="Totems"
button_scripts=<table>
orderedModules=<table>
can_set_side_to_center=false
id="Totems"
db=<table>
enabledState=true
show_font_option=true
defaultModuleState=true
moduleName="Totems"
}
event="PLAYER_TOTEM_UPDATE"
slot=1
haveTotem=<secret boolean>
name=<secret string>
(*temporary)=<secret boolean>
(*temporary)=<secret string>
(*temporary)=<secret number>
(*temporary)=<secret number>
(*temporary)=<secret number>
(*temporary)=<secret number>
(*temporary)=<secret number>
(*temporary)=nil
(*temporary)="attempt to compare local 'name' (a secret string value, while execution tainted by 'PitBull4')"
MAX_TOTEMS=4
DEFAULT_SOUND_PATH="Sound\Interface\DropOnGround.ogg"
LibSharedMedia=<table>{
OverrideMedia=<table>
callbacks=<table>
LOCALE_BIT_zhTW=8
LOCALE_BIT_ruRU=2
MediaType=<table>
LOCALE_BIT_western=128
MediaTable=<table>
LOCALE_BIT_zhCN=4
DefaultMedia=<table>
MediaList=<table>
LOCALE_BIT_koKR=1
}
-
View User Profile
-
Send Message
Posted Aug 27, 2026@MorelleNoir try patch 35 please =)
-
View User Profile
-
Send Message
Posted Aug 28, 2026@Rumorix Thanks! That worked. However, I found another thing which might be related to the post above mine:
20x PitBull4/Modules/RoleIcon/RoleIcon.lua:22: attempt to compare local 'role' (a secret string value, while execution tainted by 'PitBull4')
[PitBull4/Modules/RoleIcon/RoleIcon.lua]:22: in function 'GetTexture'
[PitBull4/ModuleHandling/IndicatorModule.lua]:32: in function <...ePitBull4/ModuleHandling/IndicatorModule.lua:25>
[PitBull4/ModuleHandling/IndicatorModule.lua]:110: in function 'UpdateFrame'
[PitBull4/ModuleHandling/Module.lua]:314: in function 'Update'
[PitBull4/UnitFrame.lua]:837: in function 'Update'
[PitBull4/UnitFrame.lua]:864: in function 'UpdateGUID'
[PitBull4/Main.lua]:1831: in function 'CheckGUIDForUnitID'
[PitBull4/Main.lua]:1883: in function '?'
[AccountPlayed/Libs/CallbackHandler-1.0.lua]:109: in function <...ceAccountPlayed/Libs/CallbackHandler-1.0.lua:109>
[C]: ?
[AccountPlayed/Libs/CallbackHandler-1.0.lua]:19: in function <...ceAccountPlayed/Libs/CallbackHandler-1.0.lua:15>
[AccountPlayed/Libs/CallbackHandler-1.0.lua]:54: in function 'Fire'
[BeQuiet/libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua]:120: in function <...dOns/BeQuiet/libs/Ace3/AceEvent-3.0/AceEvent-3.0.lua:119>
[C]: in function 'TurnOrActionStop'
[TURNORACTION]:4: in function <[string "TURNORACTION"]:1>
Locals:
self=<table>{
description="Show an icon on the unit frame based on which Role it is."
modules=<table>
defaultModuleLibraries=<table>
module_type="indicator"
name="Role icon"
orderedModules=<table>
baseName="PitBull4"
db=<table>
enabledState=true
id="RoleIcon"
defaultModuleState=true
moduleName="RoleIcon"
}
frame=PitBull4_Frames_Target <UnitFrame.lua:99>{
populated=true
guid=<secret string>
LuaTexts;Lua:Name=PitBull4_FontString_6 <Controls.lua:193>
layout_db=<table>
is_wacky=false
layout="Target"
overlay=PitBull4_Frame_3 <Controls.lua:216>
VisualHealMidnight=<table>
unit="target"
LuaTexts;Lua:PVPTimer=PitBull4_FontString_5 <Controls.lua:193>
LuaTexts=<table>
Background=PitBull4_Texture_13 <Controls.lua:190>
PowerBar=PitBull4_StatusBar_3 <Controls.lua:216>
LuaTexts;Lua:Health=PitBull4_FontString_8 <Controls.lua:193>
classification="Target"
HealthBar=PitBull4_StatusBar_4 <Controls.lua:216>
is_singleton=true
classification_db=<table>
}
role=<secret string>
(*temporary)="target"
(*temporary)="attempt to compare local 'role' (a secret string value, while execution tainted by 'PitBull4')"
-
View User Profile
-
Send Message
Posted Aug 28, 2026@MorelleNoir Thanks! This is the same RoleIcon secret-value issue that has already been fixed in Patch 036.
UnitGroupRolesAssigned() can return a protected/secret role string in WoW 12.1, which the old PitBull code tried to compare directly. Patch 036 now handles this safely.
I’ll upload Patch 036 later today, around 19:00 German time (CEST).
If the error still occurs with Patch 036, please send the full BugSack stack and /pitbull 121status.
-
View User Profile
-
Send Message
Posted Aug 24, 2026I'm sorry but can we please get Rumorix added to the white list or whatever it is to allow them to push updates to CurseForge? They've been far more communicative with the users here, and while I will always respect devs right to live life it's been basically an entire major patch cycle of "the update is coming soon". It looks like *an* update is basically available and it would be great if people actually had access to that plus all the libraries typically bundled with a CF release.
-
View User Profile
-
Send Message
Posted Aug 23, 2026How do I get pitbull to play well with bartender and carbonite , I can not use your add on because of lui errors caused by both . I used to use it with both but now….
-
View User Profile
-
Send Message
Posted Aug 23, 2026@user_5nd2njmjkm1o0w6r cheers mate- are you talkling about my fanfix or the official version? i sent you a DM with some questions, feel free to answer me and i can look into it
-
View User Profile
-
Send Message
Posted Aug 22, 2026Hello, thank you for the update!
The buffs displayed on the target unit frame don't change when I switch targets.