• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Question - Detecting Heal Over Time recourse on target

Joined
Mar 20, 2024
RedCents
1,051¢
Before casting a Heal Over Time with my cleric, I am trying to detect whether the target already has the recourse running, so I dont cast it again.

I am using the standard mq.TLO.Target.Buff("name_of_heal_over_time")() which should return the name of the buff. However, it returns "nil". It works with all buffs except Heals Over Time. I have also tried using mq.TLO.Target.Song , but it obviously doesnt work even though HOT recourses are displayed in the songs window.

Is there any way to know whether my target has a particular HoT recourse running at the moment? Thanks!
 
Before casting a Heal Over Time with my cleric, I am trying to detect whether the target already has the recourse running, so I dont cast it again.

I am using the standard mq.TLO.Target.Buff("name_of_heal_over_time")() which should return the name of the buff. However, it returns "nil". It works with all buffs except Heals Over Time. I have also tried using mq.TLO.Target.Song , but it obviously doesnt work even though HOT recourses are displayed in the songs window.

Is there any way to know whether my target has a particular HoT recourse running at the moment? Thanks!
By .target, no.

You'd have to ask them directly, via dannet query/observer or using actors (these require local toons)
 
Thank you Sic. Any way to check whether I, not my target, have the HOT recourse running? I tried mq.TLO.Me.Buff("name_of_heal_over_time")() but didnt work :(
 
Thank you Sic. Any way to check whether I, not my target, have the HOT recourse running? I tried mq.TLO.Me.Buff but didnt work :(
If it goes to the song window, you would use song instead of buff.
(Checking by ID is also possible)


If you aren't sure which it goes to, you can check with/lua parse mq.TLO.Spell(foo).DurationWindow() (or any similar TLOs that accesses your spell data). 0 is Buff window, 1 is Song (short duration) window


Note that you may need to check a recourse, not the main spell, in the above.
The recourse can be revealed in a couple of ways but if you already know the name/id in this case, I don't need to make this longer.
 
you should be able to get the id of the reocurse spell from your HOT spell, then you need to check if the target has that on them.
 
you should be able to get the id of the reocurse spell from your HOT spell, then you need to check if the target has that on them.
Thank you. This is new to me, could you please explain how to do it, or point me in the right direction please? Thanks a lot in advance!
 
Simplest method is to examine it while it's on.

Second simplest is to look it up on raidloot or another spell parser (Triggers will be hyperlinked when you search for the main spell).

To find it via TLO, you could use mq.TLO.Spell(foo).ID()
Where foo is "Exact Name of Recourse Spell"

If you don't have the name, you should check the original spell. Usually, a recourse effect is a trigger. Generally, it is the first trigger. There are exceptions.

mq.TLO.Spell("Original Spell Exact Name").Trigger(1).ID()

You can use a TLO like Me as well as Spell, and use members like .RankName or even .Book to automatically show the rank you have scribed, depending on the TLO you are using.

Everything I discuss here should be searchable on the document site I listed. I encourage you to experiment.
 
I have found out that I can simply check mq.TLO.Me.Song("Celestial Health")() to check whether I have the recourse running in my song window or not. It would be better if it worked with Target instead of Me, but I can work around that.
 
it should work with target, for targets mq check everything they got on, there is no songs on target, they are all buffs, and many years ago they figured out also how to get the short term buffs, so it should be there.
 
it should work with target, for targets mq check everything they got on, there is no songs on target, they are all buffs, and many years ago they figured out also how to get the short term buffs, so it should be there.
Unfortunately, the cleric line of Heal Over Time spells are not detected on Target (neither via Buff or Song check). It is detected on Me though via Song check. I confirmed this last night.
 
There is a way, I built a cleric GUI that shows you at-a-glance if your target has Vie, a HOT, a Promised heal on them plus their correct buffs. I’m at work but happy to try to explain once I’m near my code.
 
There is a way, I built a cleric GUI that shows you at-a-glance if your target has Vie, a HOT, a Promised heal on them plus their correct buffs. I’m at work but happy to try to explain once I’m near my code.
That would be fantastic. Thank you!!!
 
There is a way, I built a cleric GUI that shows you at-a-glance if your target has Vie, a HOT, a Promised heal on them plus their correct buffs. I’m at work but happy to try to explain once I’m near my code.
Hi! Just wondering whether you had the opportunity to look at your code? Thanks!
 
Hi! Just wondering whether you had the opportunity to look at your code? Thanks!
OK so it's a bit "work intensive" but the way I solved this was by making an "index" counter for the number of buff slots you can have, then querying mq.TLO.Target.Buff(index). It does some stuff with that information when it returns positive. I was hoping to be able to show you this as an example but the GUI that I used to call it seems to be borked right now. It did pull recourses for short duration buffs too when it was working, IIRC they get glomed on to the end of the list of all your buffs in the Target.Buff info. It looked like this when it was working. Showing they have 2hrs left on their spell in the "Virtue" line, plus 40s left on that HoT, plus 100% HP.

1756687592195.png
 
OK so it's a bit "work intensive" but the way I solved this was by making an "index" counter for the number of buff slots you can have, then querying mq.TLO.Target.Buff(index). It does some stuff with that information when it returns positive. I was hoping to be able to show you this as an example but the GUI that I used to call it seems to be borked right now. It did pull recourses for short duration buffs too when it was working, IIRC they get glomed on to the end of the list of all your buffs in the Target.Buff info. It looked like this when it was working. Showing they have 2hrs left on their spell in the "Virtue" line, plus 40s left on that HoT, plus 100% HP.

View attachment 71499

Thank you very much for the response. Unfortunately, after having tried multiple variations of your proposed "index" counter approach, I still cannot get the Target TLO to recognize Heals Over Time spells, such as for example "Celestial Health".

I am using the following code:

Code:
for i = 1, mq.TLO.Target.BuffCount() do
    if mq.TLO.Target.Buff(i)() and mq.TLO.Target.Buff(i).Name() == "Celestial Health" then
        print("Success!")
        break
    end
    mq.delay(100)
end

Even though the target does indeed have Celestial Health running, the message "Success!" wont print.

Any ideas what I am doing wrong? Thanks in advance!
 
Any ideas what I am doing wrong? Thanks in advance!
Code:
local mq = require('mq')

for i = 1, mq.TLO.Target.BuffCount() do
    if mq.TLO.Target.Buff(i)() and mq.TLO.Target.Buff(i)() == "Celestial Health" then
        print("Success!")
        break
    end
    mq.delay(100)
end
 
did you copy my code, I removed the .Name
and it works for me.

I just copy/pasted your exact code, cast Celestial Health on the target, and still nothing.
Can you please tell me how exactly you made it to have the TLO mq.TLO.Target.Buff() to detect Celestial Health on your target?
 
I'm so confused at this thread. Just tested in-game and after casting Celestial Health on a target I can do /lua parse mq.TLO.Target.Buff('Celestial Health')() and it returns Celestial Health, meaning it found the spell on the target. No need for looping through every buff on the target.

Are you sure you typed it correctly? What recourse are you trying to track specifically, because Celestial Health doesn't have a recourse.
 
Yeah, the whole recourse thing I discussed was largely answering a question about your own buffs anyways.
I think some stuff is being mixerified
 
I'm so confused at this thread. Just tested in-game and after casting Celestial Health on a target I can do /lua parse mq.TLO.Target.Buff('Celestial Health')() and it returns Celestial Health, meaning it found the spell on the target. No need for looping through every buff on the target.
I am going crazy here, because it just doesnt work for me like that.

Check the screenshot below. I have typed both mq.TLO.Target.Buff('Celestial Health')() and mq.TLO.Target.Buff("Celestial Health")() and my target has Celestial Health running at this precise moment. Unfortunately, both entries return "nil" :( However, if I try with any other buff, such as for example "Ward of Vie", the output returned is as expected.

In short, it works well with all buffs except Heals Over Time.

WTF?
Screenshot 2025-09-05 231021.png
 
That makes no sense. Try mq.TLO.Target.MyBuffDuration('Celestial Health')() and see if it returns nil as well. Maybe triple check that the buff is actually on the target as well and that you don't have it blocked or anything like that.
 
That makes no sense. Try mq.TLO.Target.MyBuffDuration('Celestial Health')() and see if it returns nil as well. Maybe triple check that the buff is actually on the target as well and that you don't have it blocked or anything like that.
I have tried with buff duration too, and believe me I have quadruple confirmed that Celestial Healing was running on the target. I am starting to believe that Sic is right (post #2 in this thread) in that the Target TLO simply cannot read Heals Over Time spells.
 
If you are writing your own scripts to do this, I recommend actors or dannet for buff reporting. No targeting required.

If you would like to see how mercs does it, our code is out there.
 
Question - Detecting Heal Over Time recourse on target

Users who are viewing this thread

Back
Top
Cart