Go to Page... |
Updated: | 03-03-14 11:18 AM |
Created: | 03-30-12 03:18 PM |
Downloads: | 22,925 |
Favorites: | 68 |
MD5: |
File Name |
Version |
Size |
Author |
Date |
1.16 |
317kB |
Solsis00 |
02-23-14 01:32 AM |
|
1.13 |
314kB |
Solsis00 |
11-12-13 04:43 AM |
|
1.12 |
314kB |
Solsis00 |
11-06-13 06:57 AM |
|
1.11 |
296kB |
Solsis00 |
10-01-13 09:27 AM |
|
1.10 |
296kB |
Solsis00 |
10-01-13 12:22 AM |
|
1.10 |
296kB |
Solsis00 |
10-01-13 12:09 AM |
|
1.9.1 |
276kB |
Solsis00 |
09-26-13 07:05 AM |
|
1.9 |
276kB |
Solsis00 |
09-25-13 04:04 PM |
|
1.8.10 |
274kB |
Solsis00 |
09-19-13 04:12 PM |
|
1.8.9 |
274kB |
Solsis00 |
09-17-13 06:45 AM |
|
1.8.8 |
281kB |
Solsis00 |
09-11-13 05:32 PM |
|
1.8.7 |
275kB |
Solsis00 |
09-08-13 05:27 PM |
|
1.8.6 |
275kB |
Solsis00 |
09-04-13 07:17 AM |
|
1.8.5 |
275kB |
Solsis00 |
09-02-13 01:43 PM |
|
1.8.4 |
275kB |
Solsis00 |
08-30-13 06:40 AM |
|
1.8.3 |
274kB |
Solsis00 |
08-28-13 07:38 AM |
|
1.8.2 |
273kB |
Solsis00 |
08-11-13 04:31 AM |
|
1.8.1 |
277kB |
Solsis00 |
08-08-13 04:17 PM |
|
1.8 |
277kB |
Solsis00 |
08-07-13 04:02 PM |
|
1.7.15 |
277kB |
Solsis00 |
08-06-13 02:25 PM |
|
1.7.14 |
277kB |
Solsis00 |
08-05-13 02:28 PM |
|
1.7.13 |
277kB |
Solsis00 |
08-05-13 06:56 AM |
|
1.7.11 |
275kB |
Solsis00 |
08-04-13 10:54 AM |
|
1.7.10 |
276kB |
Solsis00 |
08-03-13 06:35 AM |
|
1.7.9 |
271kB |
Solsis00 |
07-30-13 01:29 AM |
|
1.7.8 |
270kB |
Solsis00 |
07-28-13 07:39 AM |
|
1.7.7 |
272kB |
Solsis00 |
07-28-13 04:04 AM |
|
1.7.6.fix |
287kB |
Solsis00 |
07-25-13 11:35 PM |
|
1.7.6 |
286kB |
Solsis00 |
07-19-13 05:30 PM |
|
1.7.5 |
286kB |
Solsis00 |
07-17-13 01:28 PM |
|
1.7.3 |
287kB |
Solsis00 |
07-16-13 04:33 PM |
|
1.7.2 |
287kB |
Solsis00 |
07-15-13 10:32 PM |
|
1.7.1 |
287kB |
Solsis00 |
07-15-13 06:19 PM |
|
1.6.6 |
286kB |
Solsis00 |
07-04-13 01:53 PM |
|
1.6.5 |
285kB |
Solsis00 |
07-02-13 08:55 PM |
|
1.6.4 |
286kB |
Solsis00 |
06-17-13 02:56 AM |
|
1.6.3 |
286kB |
Solsis00 |
06-16-13 08:55 AM |
|
1.6.2 |
273kB |
Solsis00 |
06-14-13 05:31 PM |
|
1.6.1r |
273kB |
Solsis00 |
06-12-13 05:27 PM |
|
1.6r |
273kB |
Solsis00 |
06-12-13 11:26 AM |
|
1.5.7 |
245kB |
Solsis00 |
05-31-13 04:32 PM |
|
1.5.6 |
243kB |
Solsis00 |
05-28-13 05:02 PM |
|
1.5.5 |
241kB |
Solsis00 |
05-27-13 07:01 PM |
|
1.5.4 |
276kB |
Solsis00 |
05-22-13 11:34 PM |
|
1.5.3 |
265kB |
Solsis00 |
12-18-12 02:15 AM |
|
1.5.2 |
265kB |
Solsis00 |
12-05-12 03:27 AM |
|
1.5.1 |
265kB |
Solsis00 |
12-04-12 04:11 AM |
|
1.5 |
265kB |
Solsis00 |
11-29-12 02:16 AM |
|
1.4 |
263kB |
Solsis00 |
11-05-12 05:14 AM |
|
1.3 |
262kB |
Solsis00 |
09-16-12 05:08 PM |
|
1.2 |
262kB |
Solsis00 |
07-18-12 04:22 AM |
|
1.1 |
258kB |
Solsis00 |
07-11-12 05:28 AM |
Comment Options |
niemassacre |
View Public Profile |
Send a private message to niemassacre |
Find More Posts by niemassacre |
Add niemassacre to Your Buddy List |
12-20-12, 02:07 AM | |
|
Congratulations
I just wanted to thank Niemassacre for doing such a great job with keeping up this addon. I have passed full ownership to him as he continues to push this forward. I have had a lack of time to work on this as much myself, but we continue to work on this together answering questions and ideas and will do what we can to make this the best we can. Thanks everyone for your continued support, ideas, comments, and feedback. This is all very helpful and allows us the opportunity to shape this into an all-around awesome addon that is suitable for all.
Thanks again to everyone and especially thanks to Niemassacre. ~Solsis |
|
Solsis00 |
View Public Profile |
Send a private message to Solsis00 |
Send email to Solsis00 |
Find More Posts by Solsis00 |
Add Solsis00 to Your Buddy List |
12-20-12, 08:56 PM | ||
|
Re: Congratulations
Quote:
|
|
|
niemassacre |
View Public Profile |
Send a private message to niemassacre |
Send email to niemassacre |
Find More Posts by niemassacre |
Add niemassacre to Your Buddy List |
12-22-12, 03:22 PM | ||
|
Quote:
If possible, could you (or anyone else who has experienced this problem) try to recreate the issue and see if you can narrow down when and how this is occurring? Thanks! |
|
|
niemassacre |
View Public Profile |
Send a private message to niemassacre |
Send email to niemassacre |
Find More Posts by niemassacre |
Add niemassacre to Your Buddy List |
12-27-12, 03:10 AM | |
Forum posts: 0
File comments: 9
Uploads: 0
|
I'm finding the same issue every warfront I run, and a /reloadui isn't fixing it.
I've switched back to version 1.5.1 and have had no issues, just missing being able to track link of *. |
|
Yell |
View Public Profile |
Send a private message to Yell |
Send email to Yell |
Find More Posts by Yell |
Add Yell to Your Buddy List |
12-27-12, 04:33 PM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
I have a request for a few features / bugfixes so that I won't need to hack the code myself every update
- Improve burnout tracking -- when unit has no remaining absorption (because it's been knocked off), then it is impossible to know whether unit still has burnout (because you can't see absorption bar color when there's no bar ). It needs something extra, I'm currently using unit name fade-out. - Improve debuff tracking when (a) 'color whole frame when debuffed' is unchecked AND (b) 'hide health percent on frames' is checked. Currently with these options you only get tiny-tiny dot for tracking. I'm currently 'fixing' it by setting groupStatus text to " " (four spaces) instead of "" (empty string). - nameCalc function that estimates number of characters that can be set in frame is badly off (in my case it allows way too little characters). Unit Frame Font Size is set to 13, frame width is 100. - absorption bar really needs an option to set its width (it's far too small currently for my tastes) - an option to fix absorb bar position regardless of whether unit has mana -- currently it shifts depending on mana bar presence which breaks (imo) units look (when there are multiple with different bar positions) and (which is worse) it is overlayed by 'taking damage' highlight if unit has no mana - an option for CBH to be shown only in-combat would be nice Other than that -- great addon -- thanks! |
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
12-29-12, 04:16 PM | ||
|
Good suggestions - I'm currently on a family vacation, but will try to address these when I get back. Some things to consider though:
nameCalc - this should be leaving enough room for the top right HoT icon as well as a raid marker icon. With that in mind, do you think it's still not showing enough? The rest of the points are all very valid and things I'd like to address. Thanks! Quote:
|
|
|
niemassacre |
View Public Profile |
Send a private message to niemassacre |
Send email to niemassacre |
Find More Posts by niemassacre |
Add niemassacre to Your Buddy List |
12-29-12, 05:27 PM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
Another bug-report -- I notice that sometimes -- particularly in instances against some bosses -- debuff indication seems to get stuck (it shows debuff notification even after they are gone). Since it's been happening in instances, it's difficult to diagnose properly.
I've been trying to understand what might be wrong, I found one thing: in main.lua line: cbhBuffRemove(unitID, cbh.UnitBuffTable[xunitident][buffID]) it needs to be completely rewritten to something like: local bs = {} bs[buffID] = "something" cbhBuffRemove(unitID.id, bs) otherwise it simply doesn't work, because cbhBuffRemove API is different (and do I hate script languages for this kind of stuff!). Anyway, my fix certainly fixes issue with this invocation, however I doubt it'll fix the problem I had -- there must be something else going on. In general, I dislike code that relies on counting events (+buff, -buff, etc.) -- in my experience it WILL break sooner or later. I would propose to completely rewrite debuff tracking to actively re-check unit debuffs every second or so (in addition to doing it on 'buff remove event'). That is, if there's Rift API that provides buff/debuff info for a unit. P.S. On the subject of nameCalc -- yes, I think it is way too short, screenshot can be found here: http://www.filedropper.com/unitname |
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
12-29-12, 05:56 PM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
Actually... I decided to take my own advice, so I went ahead and rewrote section that "Catches debuffs that are expired but did not trigger BuffRemove call":
Code:
if cbh.UnitBuffTable[xunitident] ~= nil then local unitBuffList = nil -- lazy init for performance reasons for buffID, buffTable in pairs(cbh.UnitBuffTable[xunitident]) do -- Catches debuffs that are expired but did not trigger BuffRemove call if cbh.UnitBuffTable[xunitident][buffID].buffType ~= "buff" then if unitBuffList == nil then unitBuffList = buffList(unitID.id) -- lazy init end -- Sometimes the buff list isn't available so we need to prevent nil operations -- if (unitBuffList == nil) or (not unitBuffList[buffID]) then local bs = {} bs[buffID] = "something" -- print("removing: "..cbh.UnitBuffTable[xunitident][buffID].name) cbhBuffRemove(unitID.id, bs) end elseif cbh.UnitBuffTable[xunitident][buffID].duration ~= nil and cbh.UnitBuffTable[xunitident][buffID].begin ~= nil and cbh.UnitBuffTable[xunitident][buffID].remaining ~= nil and cbh.UnitBuffTable[xunitident][buffID].slot ~= nil then ... I tested it and it appears to work properly (at least on the player character). Stuff under elseif (buffs) probably needs to be redone in the same way, but since I didn't have significant problems with it so far, I left it as is. |
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
01-02-13, 02:41 PM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
Yeah, well, that debuff removing code alone didn't help -- and I actually had a chance to examine state when debuff indicator got stuck.
I had something like -2 poisons and +1 curses according to ClickBox counters, so something is definitely off with debuff tracking. So with that in mind I added the following to the cbhBuffRemove: Code:
-- Count how many debuffs we have remaining... local dRem = 0 local di, dv for di, dv in pairs(cbh.UnitBuffTable[retIdent]) do if dv.buffType ~= "buff" then dRem = dRem + 1 end end -- If we have one debuff, it's the one currently being removed, so make sure we have no remaining debuff flags. if dRem < 2 then cbh.UnitStatus[retnum][22] = 0 cbh.UnitStatus[retnum][23] = 0 cbh.UnitStatus[retnum][24] = 0 cbh.UnitStatus[retnum][25] = 0 recolor = true end -- If you need to recolor, figure out which color to change to if recolor then This seems to work so far, but I hadn't much chance to test it out. P.S. The previous fix to catching out debuffs needs to be applied too.
Last edited by Solf : 01-02-13 at 02:41 PM.
|
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
01-05-13, 05:50 PM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
Kind of a bug report -- looks like something is not exactly right with pets -- when changing specs / letting them die their buff indicators and 'taking damage' alerts sometimes get stuck.
|
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
01-06-13, 04:06 PM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
Tracked down some issues with buffs / aggro indicators 'sticking'.
First of all, in main.lua, in cbhUnitUpdate() around line 145 or so, need to add resetting of buff indicators & aggro: Code:
cbh.UnitBuffTable[unitident] = {} for i = 1, 5 do cbh.groupHoTs[j][i]:SetVisible(false) end cbhBuffAdd(unitID.id, buffList(unitident)) --cbhBuffRemove(unitID.id, buffList(unitident)) -- Reset aggro indicator cbh.groupBF[j]:SetTexture("ClickBoxHealer", "Textures/nbackframe.png") -- Also fix debuff indicator cbh.groupStatus[j]:SetBackgroundColor(0, 0, 0, 0) Also, on the basis that "it shouldn't hurt", I suggest to rewrite debuff removal fix that I proposed earlier in the same method as follows: Code:
if cbh.UnitBuffTable[xunitident] ~= nil then local unitBuffList = buffList(unitID.id) for buffID, buffTable in pairs(cbh.UnitBuffTable[xunitident]) do -- Catches debuffs that are expired but did not trigger BuffRemove call -- Sometimes the buff list isn't available so we need to prevent nil operations -- if (unitBuffList == nil) or (not unitBuffList[buffID]) then local bs = {} bs[buffID] = "something" -- print("removing: "..cbh.UnitBuffTable[xunitident][buffID].name) cbhBuffRemove(unitID.id, bs) elseif cbh.UnitBuffTable[xunitident][buffID].buffType ~= "buff" then elseif cbh.UnitBuffTable[xunitident][buffID].duration ~= nil and cbh.UnitBuffTable[xunitident][buffID].begin ~= nil and cbh.UnitBuffTable[xunitident][buffID].remaining ~= nil and cbh.UnitBuffTable[xunitident][buffID].slot ~= nil then Note that it still needs fix to cbhBuffRemove that is a couple of posts down.
Last edited by Solf : 01-08-13 at 04:44 AM.
|
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
01-07-13, 06:37 AM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
And while I was at it, I've added what I call "action tracking" functionality to CBH:
- When your CBH action (say heal) is accepted by the game, target unit frame flashes green. - When your action cannot be accepted because of GCD or spell cast, target unit frame glows red until such time as next action can be accepted. - If you have command queuing enabled ('full' in my case), red glow is replaced by green flash once current command ends and your queued action takes place. I find this functionality extremely helpful when there's "a situation" and I have to manage my GCDs and casts. Note: by default this works with actions set via CBH. To make your existing @mouseover macros work with this functionality, simply add to them this line (probably somewhere in the beginning): Code:
/script cbha() To make this work, I've made tiny change optionWindow1Abilities.lua in the processMacroText() function: Code:
for i = 1, cbhConstants.buttons do if string.find(cbhMacroText[cbhValues.roleset][i], "\13") then -- string.gsub("Hello banana", "banana", "Lua user") tt[i] = "suppressmacrofailures\13"..cbhMacroText[cbhValues.roleset][i] tt[i] = string.gsub(string.gsub(tt[i], "##", "@" .. k), "\13", "\n") elseif string.find(cbhMacroText[cbhValues.roleset][i], "group##") then tt[i] = string.gsub(cbhMacroText[cbhValues.roleset][i], "@group##", "@"..k) elseif string.find(cbhMacroText[cbhValues.roleset][i], "##") then tt[i] = string.gsub(cbhMacroText[cbhValues.roleset][i], "##", "@"..k) else tt[i] = cbhMacroText[cbhValues.roleset][i] end tt[i] = "/script cbha("..tnum..")\n"..tt[i] end The rest of the stuff is localized in another file (which I have as an another addon since I'm not the code owner for CBH): Code:
-- Registers event handler. function solfRegisterEventHandler(eventTable, handler, addonName, handlerDescription) table.insert(eventTable, {handler, addonName, handlerDescription}) end -- Create CBH frames for showing 'action in process' stuff... cbh.groupAction = {} for i = 1, 20 do cbh.groupAction[i] = UI.CreateFrame("Text", "CBH Action "..i, cbh.groupBF[i]) end local orig_cbhCreateGroups = cbhCreateGroups; function solfCBH_addlCreateGroups() for a = 1, kMaxGroups do -- 4 groups of 5 for i = 1, kMaxGroupMembers do -- creates each of the 5 units for each group frameNumber = i + ((a-1) * kMaxGroupMembers) -- Step through each frame number (1-20 currently) cbh.groupAction[frameNumber]:SetFontColor(1, 1, 1, 1) cbh.groupAction[frameNumber]:SetLayer(1) cbh.groupAction[frameNumber]:SetPoint("BOTTOMCENTER", cbh.groupBF[frameNumber], "BOTTOMCENTER", 0, -(cbhValues.mbheight)) cbh.groupAction[frameNumber]:SetFontSize(cbhValues.fontsize) cbh.groupAction[frameNumber]:SetText(" ") cbh.groupAction[frameNumber]:SetBackgroundColor(1,1,1,0) cbh.groupAction[frameNumber]:SetVisible(true) -- cbh.groupStatus[frameNumber]:SetBackgroundColor(1,0,0,1) end end end function solfCBH_cbhCreateGroups() orig_cbhCreateGroups() solfCBH_addlCreateGroups() end cbhCreateGroups = solfCBH_cbhCreateGroups --solfCBH_addlCreateGroups() -- self invoke to build stuff since we are too late to hook initial invocation local cbhActionFrameNumber; local cbhActionStatus = "idle" -- idle, executing (notification that action is being executed), maybe (when action may start executing shortly or not), pending (when action will execute later) local cbhActionMaybeTime = 0 -- when 'maybe' status was set local cbhActionMaybeWindow = 0.3 -- time frame allowed for 'maybe' action to actually happen local cbhActionExecutionStart = 0 -- time when execution started local cbhActionExecutionDuration = 0.2 -- how long execution 'flashes' local cbhGCD = false -- GCD indicator local cbhPlayerCasting = false function cbha(frameNumber) -- print(frameNumber) if frameNumber == nil then -- Try to find mouseover unit local moUnit = Inspect.Unit.Detail("mouseover") if moUnit == nil then return -- Unknown unit, just return end frameNumber = GetIndexFromID(moUnit.id) if frameNumber == nil then return -- Unknown frame, just return end end if (cbhActionFrameNumber ~= nil) then cbh.groupAction[cbhActionFrameNumber]:SetBackgroundColor(1,1,1,0) end if cbhPlayerCasting then cbh.groupAction[frameNumber]:SetBackgroundColor(1,0,0,1) cbhActionStatus = "pending" else cbhActionStatus = "maybe" cbhActionMaybeTime = Inspect.Time.Frame() end cbhActionFrameNumber = frameNumber end -- Determines whether cooldown-related event is because of GCD. true -- GCD, false -- not (something off-gcd for example) function cbhIsGCDAction(cooldowns) local gcds = 0 local ability, cd; for ability, cd in pairs(cooldowns) do if (cd == 0) or (cd == 1) or (cd == 1.5) then gcds = gcds + 1 end if (gcds > 2) then -- print("GCD!") return true end end -- print("not gcd") return false end function cbhCDStart(cooldowns) if cbhIsGCDAction(cooldowns) then cbhGCD = true cbhPlayerCasting = true -- print("GCD!") end -- This executes regardless of whether it was GCD or off-gcd action. if (cbhActionStatus == "pending") or (cbhActionStatus == "maybe") then if cbhValues.solfHideGreenFlash then cbhActionStatus = "idle" cbh.groupAction[cbhActionFrameNumber]:SetBackgroundColor(0,0,0,0) else cbhActionStatus = "executing" cbh.groupAction[cbhActionFrameNumber]:SetBackgroundColor(0,1,0,1) cbhActionExecutionStart = Inspect.Time.Frame() end end end solfRegisterEventHandler(Event.Ability.New.Cooldown.Begin, cbhCDStart, "ClickBoxHealer", "CD start") function cbhCDEnd(cooldowns) if cbhIsGCDAction(cooldowns) then cbhGCD = false -- print("gcd over") if (Inspect.Unit.Castbar("player") == nil) then cbhPlayerCastOver() end end end solfRegisterEventHandler(Event.Ability.New.Cooldown.End, cbhCDEnd, "ClickBoxHealer", "CD end") function cbhAddlOnUpdate() local time = Inspect.Time.Frame() if (cbhActionStatus == "maybe") then local diff = time - cbhActionMaybeTime if (diff < 0) or (diff > cbhActionMaybeWindow) then cbhActionStatus = "idle" cbhActionFrameNumber = nil end end if cbhPlayerCasting then if not cbhGCD then if (Inspect.Unit.Castbar("player") == nil) then cbhPlayerCastOver() end end end if (cbhActionStatus == "executing") then local diff = time - cbhActionExecutionStart local alpha = 1.0 - (diff / cbhActionExecutionDuration) if alpha <= 0 then cbh.groupAction[cbhActionFrameNumber]:SetBackgroundColor(1,1,1,0) cbhActionStatus = "idle" cbhActionFrameNumber = nil else cbh.groupAction[cbhActionFrameNumber]:SetBackgroundColor(0,1,0,alpha) end end end solfRegisterEventHandler(Event.System.Update.Begin, cbhAddlOnUpdate, "ClickBoxHealer", "Additional OnUpdate handler") function cbhPlayerCastOver() -- print("cast over") cbhPlayerCasting = false if cbhActionStatus == "pending" then if (cbhActionFrameNumber ~= nil) then cbh.groupAction[cbhActionFrameNumber]:SetBackgroundColor(1,1,1,0) cbhActionStatus = "maybe" cbhActionMaybeTime = Inspect.Time.Frame() end end end There's half-hearted option implementation to hide green flash (cbhValues.solfHideGreenFlash) which I've added since I'm not 100% sure which way is better. There's no option for the "red light" since it was basically the whole goal of adding this functionality. I'd really appreciate if you'd consider including this into CBH itself as it'll save me from having to maintain my separate 'hack' For inclusion it needs two things: - Options to enable / disable. - A better implementation of actual 'flashing' UI -- current version simply uses text field with bunch of spaces in it -- it works okay for my current frame setup, but won't work if someone makes his/her frames significantly smaller. |
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
01-08-13, 03:03 AM | |
|
Thanks for all the suggestions and help Solf. Niemassacre should be back on the scene before too long. Appreciate all the support.
|
|
Solsis00 |
View Public Profile |
Send a private message to Solsis00 |
Send email to Solsis00 |
Find More Posts by Solsis00 |
Add Solsis00 to Your Buddy List |
01-08-13, 04:50 AM | |
Forum posts: 0
File comments: 14
Uploads: 0
|
You're welcome
I'm using it, so I have vested interest in it working properly Oh, by the way, I've added additional line to the fix in cbhUnitUpdate() a couple of posts down (edited original post). And also another bug report that I didn't have time yet to track or fix -- summoning pet (in my case defiler's totem or whatsitsname was) in combat breaks its unit frame in the sense that @mouseover macros don't target it. I don't know if this can be fixed in-combat (due to lockdown), but it ought to be fixable after combat ends (and it doesn't fix itself right now). Also considering the relatively high likelyhood of this actually happening (at least for defiler), some thought ought to be given as to how to make it work during the combat where pet is summoned. |
|
Solf |
View Public Profile |
Send a private message to Solf |
Send email to Solf |
Find More Posts by Solf |
Add Solf to Your Buddy List |
You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.