Compact Percents, 3D Portraits, ToT Buffs, Perl_Raid Frames
Perl Classic Unit Frames
Rate:
If you like this mod, please vote for it!
What is Perl Classic?
Perl Classic Unit Frames are a complete rewrite of the original mods by Perl. They replace the default Player, Pet, Target, Target of Target, Party, and Party Pet frames and add dedicated frames for many other units (Focus, Focus Target, Party Target, Target of Target of Target). It has been a high priority to maintain the look and feel or the original Perl mods while expanding functionality. The mod has been recoded for performance and is built around the Blizzard UI usage of events.
Slash Commands
--------------
/perl
Known Issues
------------
None!
Todo
------
Optimize code
Q&A
-----
Q: I'm seeing double party buffs for some reason, what gives?
A: 99% of the time this is caused by CT_PartyBuffs. Simply remove the mod and you will return to having one set of party buffs.
Q: I am having massive dead spots for clicking on some of the unit frames, what's wrong?
A: This can be caused by a number of mods, but the most common seems to be CT_MovableParty. Please remove this mod as Perl can be moved without the use of this mod.
Q: The default party frames are showing up with red lightning bolts. What's going on?
A: As of version 1.503 of CT_RaidAssist this should no longer be caused by CTRA. The settings for this are now located in the WoW settings under Interface Options -> Basic -> Raid -> Hide Party Interface.
Q: Do you support ArcaneBar?
A: Yes, it is included in your download of Perl Classic.
Q: Will you be adding any features to Perl_PlayerBuff?
A: No, my coding for this mod goes as far as making sure it 'works.' If anyone would like to expand upon it, feel free to do so.
Q: Where are the raid frames?
A: As of 2.0 I no longer code raid frames for Perl Classic. Luckily, X-Perl's raid frames work great alongside Perl Classic. X-Perl's raid frames (and the unit frames themselves) can be found here: http://www.curse.com/downloads/details/3416/
Q: The scaling is all messed up! What do i do?
A: I recommend setting the scale to that of the UI if you are having issues. Open the options menu via "/perl" or the Black Pearl icon on the minimap and set the scale accordingly under the "All" tab.
Q: I am having an issue not listed in this FAQ, what can I do?
A: First, update *every* mod. I do not support ancient outdated and unmaintained mods. If you have double checked that everything is up to date, post on any of the Perl Classic mod pages and I'll be glad to help you narrow down the issue or give suggestions to help find a solution.
Q: Can you add this feature?
A: I'm sure it's possible, but the primary purpose of this mod is to 'modernize' the original Perl mod so that it doesn't slow your game down.
Dependency Notes
----------------
Mods that Perl Classic will take advantage of:
Clique - http://www.wowinterface.com/downloads/fileinfo.php?id=5108
Druid Bar - http://wow.curse.com/downloads/details/129/
IFrameManager - http://www.wowinterface.com/downloads/fileinfo.php?id=4865
MobHealth2 - http://wow.curse.com/downloads/details/793/
MobHealth3 - http://www.curse.com/downloads/details/3619/
myAddOns - http://wow.curse.com/downloads/details/207/
Mods that take advantage of Perl Classic:
BeneCaster - http://wowui.incgamers.com/?p=mod&m=3606
Change Log - Perl Classic Unit Frames
2.18 - May 14, 2008
- All: Fixed a possible scope issue in the MobHealth and MobInfo support code
- All: Cleaned up some code syntax and file uniformity
- Config: Added a frame positioning mode to help with some of those more rare frames
- Config: Fixed a potential incorrect minimap button default setting
2.17 - April 8, 2008
- All: Class specific features should now work in languages other than English
- Pet: Fixed a reference to a global variable
2.16 - March 25, 2008
- All: Updated TOC Interface version to 20400
- All: Adjusted the frame borders so that they no longer clip
- All: Slightly adjusted the default frame positions
- All: The name, class, and guild text now truncates more accurately
- All: Changed the default scale from 100 to 90 to match the default Blizzard UI scale
- ArcaneBar: Cast times of 100 seconds or higher now display correctly
- ArcaneBar: Text tunating no longer takes place while casting
- Config: Added support for the Blizzard options menu in the interface options
- Config: Added an Align Horizontally button for the CombatDisplay
- Config: The pet target scale slider now shows its correct value
- Config: The Set to Current UI Scale checkbox for the player pet target is now visible
- Config: The scale slider on the All tab now correctly sets focus target and player pet target scales
- Config: The Reset Frame Positions button on the All tab now dynamically positions frames
- Config: The Reset Frame Positions button now also resets the player pet target frame
- Config: The Reset Frame Positions button now also resets the focus frame
- Config: ArcaneBar textures on party cast bars are now correctly textured
- Party: Changed the default spacing from 90 to 95
- PartyPet/Pet: The clickable surface for the portrait frame no longer extends outside of the portrait
- Pet: There is no longer a dead zone where the name frame used to be when hiding the name frame
- Pet: The combat text is now correctly centered for the pet portrait frame
- Pet: Buffs and debuffs in positions 6 and 7 now show up correctly for warlocks
- Pet: There is now less space below the experience bar when it is visible
- Focus/Pet/Player/Target: There is no longer a dead zone to the right of the name frame in compact mode
- Player: Added support for the Blizzard totem timers
- Player: Added support for the five second rule
- Player: The master looter icon will now correctly hide when leaving a party or raid
- Target: The master looter icon will now correctly display in raids
- Target: The elite, rare, and rare elite dragon graphics no longer display the Blizzard target frame
- Target: The PvP status icon will now correctly hide when entering a non PvP area
- Target: The combo point text no longer looks distorted
- Target: The combo point text for zero combo points is now always green
- ToT: There is no longer a dead zone below the stats frame under certain circumstances
Is it possible to put in an option to not hide the self portrait frame built in by blizz? I use both the blizz self portrait and the perl_classic one. the blizz is in my upper left part of the screen, and the perl one is part of my party display (positioned above the party frame). i'm always commenting out the hide code every release.
also, is it at all possible to add options to the pet frame so that buffs go into more than 1 row? in raids, my warlock pet ends up with like 20 buffs that hang off the end of the frame and into my gamespace.
@halpmeh: I'm waiting on an email from someone over on Curse who updated Perl_Player_Buff and added totem timer support to it. As soon as I receive that code I'll put another version out.
@Striph: Thanks for the bug report. Oddly enough, this is fixed already in the beta for the next version as an attempt to fix a MobHealth2/MobInfo issue someone was reporting.
Everyonce in a while i see this in my taint log, and Perl Classic is the only UI mods i run aside from the stock blizzard ones.
Interface\AddOns\Perl_Target\Perl_Target.lua:657: attempt to compare number with nil
Stack trace:
-----------
Interface\AddOns\Perl_Target\Perl_Target.lua:153: in function `func'
Interface\AddOns\Perl_Target\Perl_Target.lua:128: in function <Interface\AddOns\Perl_Target\Perl_Target.lua:125>
Not sure why, or what causes it, just thought i'd post it.
Perl_Player_Buff is not working in 2.4, it show's the buffs you gain like 20 seconds after you actually gain it. Any way to fix it for 2.4? Thanks i really need it for arenas ~_~.
@helohelo: I've noticed this too and from what I can tell, other mods can affect whether or not this option actually works. I'll do some further testing and see if there's any better way to implement this.
@vonCroy & Olivierj: I'll make some changes and release a beta on my Curse page and see if the changes work. Expect this release before the week is over.
@Castus: 1) I haven't decided yet if I will add this into Perl 3.x, but as for 2.x, you can probable do something like "/script Perl_Player_NameFrame:Hide()" and "/script Perl_Player_Name:Hide()"
2) It's been on my todo list for a long time. I'll see if I can bring myself to code it into the next version. No promises though.
3) I won't be making any further visual changes to Perl 2.x. This is something I will have fully customizable though in Perl 3.x as I want to make Perl more viable for a central unit frame layout.
@CaptCrunch: Another long time feature on my todo list. I'll try some things I think may work, but like always, no eta on this.
I may have already posted this suggestion, so my apologies if I have, but it's still something I want, so I'm posting it again
Could you please add a "test bar" mode where every single frame (player, targets, party, pets, etc) appears on the screen at one time? I'd love to have this so I can adjust where I want everything to be just ONCE instead of having to wait for a hunter to join the party at slot 3, or whatever, just so I can place his pet frame (assuming he doesn't dismiss it right when I'm moving it!!)
This would be extremely cool. Love these frames, would not want to play without them.
Love this addon, but I have a few SERIOUS annoyances with it:
- You can't hide the frame for your own name in the player frame. WHY? I don't need to see my own name constantly!
- Target of target's buffs can't change location. We can invert target's buffs/debuffs, but not target's target, so it makes for some really annoying layout issues as well as some headscratching as to why this isn't possible!!
- Target's bars are shorter than player's bars. There's basically no way to make them the same length. If a slider to adjust bar length's could be added that'd be even better.
I have the same problem with the french version:
Rogue: Voleur (male) / Voleuse (female)
Chaman: Chaman (male) / Chamane (female)
Druid: Druide / Druidesse
Warrior: Guerrier / Guerrière
Paladin: Paladin / Paladin
Priest: Prêtre / Prêtresse
Warlock: Démoniste / Démoniste (no changes)
Mage: Mage / Mage (no changes)
I don't know if it could cause any problem but for the record, the races have also being renamed:
Draenei: Draeneï / Draeneï
Night Elves: Elfe de la nuit / Elfe de la nuit
Blood Elves : Elfe de sang / Elfe de sang
Gnomes: Gnome / Gnome
Undead: Mort-vivant / Morte-vivante
Dwarves: Nain / Naine
Orcs: Orc / Orque
Tauren: Tauren / Taurène
Trolls: Troll / Trollesse
i am a fan of your addon, because no other unit frames mod, that i know of, has such a great, simple combat display. I couldnt play without it. And now i have a problem: When i play my rogue, no combo points are shown anymore in either the target frame or the combat display frame.
Am i making a mistake or is there a problem with the mod ?
I deleted all perl-folders in the interface/addon folder and downloaded the latest version of perl classic unit frames (2.16)...
I want my combopoint bar back, please
Can someone help ?
Chris
EDIT:
The Problem exists only for female rogues with the german version/localization... Thats because Blizz has changed to names of the classes with respect to their gender. So "rogue" in german can now be "Schurke" (male version, same as before) or "Schurkin" (didnt exist before, was Schurke as well)
I changed [PERL_LOCALIZED_ROGUE = "Schurke"] to [PERL_LOCALIZED_ROGUE = "Schurkin"] in the file Interface/AddOns/PerlConfig/localization.de.lua
Now the mod recognizes me as a rogue and it displays the combo point bar for me again...
Its the same for every class, btw (Jäger/Jägerin, Krieger/Kriegerin, Priester/Priesterin, Druide/Druidin etc)
so i turned this on on the target frame and found out it was pretty annoying, when i turned it off i found out that it still plays a sound whenever my target is changing his target, this gets really annoying at times and i tried to turn it off but it won't work. anyway you can fix this?
Just wanted to give everyone a heads up that version 2.16 is meant for use *only* on WoW 2.4. Please do not report the 4/5 errors that are thrown when running it on WoW 2.3. As always, if you run across any oddities other than the ones I just mentioned, please report them.
@Monki: I haven't tried out your code yet so I can't really say if it's something I will add into Perl. Once 2.4 settles down I'll check it out and go from there
I was playing around with the Perl_Target portion and came up with the following code that I would love if you could implement as a feature into Perl_Target.
I like how when you select Class buffs Only it only shows the buffs you can dispel off your enemies (I play a priest), however, then I can't see other important buffs that help me identify their spec etc... So my change was to highlight the dispell buffs with a red border using your debuff frame if the buff is dispellable.
I would call this option Highlight Class Buffs on Enemy Targets. I stored all the buff names returned from calling UnitBuff with CastableBuffs set to True in a table, then as you display the buffs I check to see if the the target is non friendly then if the buff is found in the table and if it is I set the debuffframe to red and show it. The net result is all non friendly targets dispelable buffs are highlighted with a red border.
It is a quick and dirty implementation and could be cleaned up, this is my first venture into LUA so I am sure it could be implemented better. Also you prob would only want to run this option if it was selected, and you wouldnt allow user to select both Class Buffs Only and Highlist Class Buffs on Enemy Targets.
--function Perl_Target_Buff_UpdateAll()
Code:
function Perl_Target_Buff_UpdateAll()
if (UnitName("target")) then
if (nameframecombopoints == 1 or comboframedebuffs == 1) then
Perl_Target_Buff_UpdateCPMeter();
end
local button, buffCount, buffTexture, buffApplications, color, debuffType, duration, timeLeft, cooldown, startCooldownTime; -- Variables for both buffs and debuffs (yes, I'm using buff names for debuffs, wanna fight about it?)
--MONKI
local buffName;
local castableBuffs = {};
for buffnum=1, numbuffsshown do
buffName, _, buffTexture, _, _, _ = UnitBuff("target", buffnum, 1);
if (buffTexture) then
castableBuffs[buffName] = 1;
end
end
--MONKI
local numBuffs = 0; -- Buff counter for correct layout
for buffnum=1,numbuffsshown do -- Start main buff loop
--MONKI
buffName, _, buffTexture, buffApplications, duration, timeLeft = UnitBuff("target", buffnum, displaycastablebuffs); -- Get the texture and buff stacking information if any
button = getglobal("Perl_Target_Buff"..buffnum); -- Create the main icon for the buff
if (buffTexture) then -- If there is a valid texture, proceed with buff icon creation
getglobal(button:GetName().."Icon"):SetTexture(buffTexture); -- Set the texture
getglobal(button:GetName().."DebuffBorder"):Hide(); -- Hide the debuff border
buffCount = getglobal(button:GetName().."Count"); -- Declare the buff counting text variable
if (buffApplications > 1) then
buffCount:SetText(buffApplications); -- Set the text to the number of applications if greater than 0
buffCount:Show(); -- Show the text
else
buffCount:Hide(); -- Hide the text if equal to 0
end
if (displaybufftimers == 1) then
cooldown = getglobal(button:GetName().."Cooldown"); -- Handle cooldowns
if (duration) then
if (duration > 0) then
startCooldownTime = GetTime() - (duration - timeLeft);
CooldownFrame_SetTimer(cooldown, startCooldownTime, duration, 1);
cooldown:Show();
else
CooldownFrame_SetTimer(cooldown, 0, 0, 0);
cooldown:Hide();
end
else
CooldownFrame_SetTimer(cooldown, 0, 0, 0);
cooldown:Hide();
end
end
numBuffs = numBuffs + 1; -- Increment the buff counter
--MONKI
if (UnitIsFriend("player", "target")) then
button:Show(); -- Show the final buff icon
else
if (castableBuffs[buffName] == 1) then
getglobal(button:GetName().."DebuffBorder"):SetVertexColor(1, 0, 0); -- Set the debuff border color
getglobal(button:GetName().."DebuffBorder"):Show();
end
button:Show();
end
--MONKI
else
button:Hide(); -- Hide the icon since there isn't a buff in this position
end
end
Originally posted by GTPoompt Great Mod. Started using Perl Classic today, moved over from Xperl since there was too much baggage on that side . 2 things,
1. Any chance on making a 5 sec rule timer for the player mana section?
2. Some of the bars are a little funny in the configuration menu, the one of note would be on the player pet menu for scaling size. I have my pet frame scaled at 70%, while the pet target at around 40% or so. The settings seem to be saved correctly, but everytime I come back into the player pet menu, both the bars read 70% for some reason.
1) It's on my todo list. I'd like to get it added into Perl 2.x, but I haven't decided yet if I'm just gonna add it to the new rewrite version.
2) Thanks for the bug report. Coding late at night is fun and typo filled sometimes
Great Mod. Started using Perl Classic today, moved over from Xperl since there was too much baggage on that side . 2 things,
1. Any chance on making a 5 sec rule timer for the player mana section?
2. Some of the bars are a little funny in the configuration menu, the one of note would be on the player pet menu for scaling size. I have my pet frame scaled at 70%, while the pet target at around 40% or so. The settings seem to be saved correctly, but everytime I come back into the player pet menu, both the bars read 70% for some reason.